[Crashlytics] ANR on main thread due to awaitEvenIfOnMainThread when third-party SDKs are present in the UncaughtExceptionHandler chain

Aperta
#8,052 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Da chiarire
Stato di attività
Attiva
Stack tecnologico
android, java
Ambito
mobile-dev

Direzione di ricerca

Inizia da com.google.firebase.crashlytics.internal.common.Utils.awaitEvenIfOnMainThread e CrashlyticsController.handleUncaughtException, quindi esamina CrashlyticsUncaughtExceptionHandler. Esamina lo stack trace di Android 11 e l’interazione con com.huawei.hms.network.embedded.t4; nel report non sono presenti passaggi per la riproduzione né test denominati. Il lavoro è completato quando si determina se questa attesa può causare l’ANR segnalato e si documenta o si testa il comportamento risultante.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

api: crashlytics
Environment:
  • Firebase Component: firebase-crashlytics
  • Component version: com.google.firebase:firebase-crashlytics:20.0.4
  • Android versions: 100% android 11
  • Devices: 80% Samsung, Xiaomi, Oppo
  • Device state: 100% background

The project includes HMS push notifications, location. But we don't use hms crashlytics or hms analytics.

Describe the problem

We're seeing ANRs on the main thread that occur during crash handling. The stack trace consistently points to Crashlytics waiting inside awaitEvenIfOnMainThread:

   main (timed waiting):tid=1 systid=12425 
       at sun.misc.Unsafe.park(Native method)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:1063)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1358)
       at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:278)
       at com.google.firebase.crashlytics.internal.common.Utils.awaitEvenIfOnMainThread(Utils.java:62)
       at com.google.firebase.crashlytics.internal.common.CrashlyticsController.handleUncaughtException(CrashlyticsController.java:262)
       at com.google.firebase.crashlytics.internal.common.CrashlyticsController.handleUncaughtException(CrashlyticsController.java:181)
       at com.google.firebase.crashlytics.internal.common.CrashlyticsController$1.onUncaughtException(CrashlyticsController.java:168)
       at com.google.firebase.crashlytics.internal.common.CrashlyticsUncaughtExceptionHandler.uncaughtException(CrashlyticsUncaughtExceptionHandler.java:54)
       at com.huawei.hms.network.embedded.t4.uncaughtException(:141)
       at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1073)
       at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)
       at java.lang.Thread.dispatchUncaughtException(Thread.java:2203)

Also I can see com.huawei.hms.network.embedded.t4.uncaughtException

Steps to reproduce:

Unknown

Question
  1. Now awaitEvenIfOnMainThread is @Deprecated. What are your plans about this function?
  2. Could this function affect ANR?
Lingua principale
Java
Stelle
2.6k
Fork
733
Merge medio
2g 15h
PR unite (30g)
72

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di firebase/firebase-android-sdk

Tutte le issue di firebase/firebase-android-sdk

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.