firebase-android-sdk icon indicating copy to clipboard operation
firebase-android-sdk copied to clipboard

[ANR] Main thread blocking issue, 100% reproducible

Open park671 opened this issue 7 months ago • 8 comments

  • Android Studio version: Android 15
  • Firebase Component: Firebase crashlytics
  • Component version: 18.5.1

[REQUIRED] Step 3: Describe the problem

Firebase crashlytics blocks main thread till system kill app due to anr. our app is a launcher, directBootAware is true with the first activity and out app listen to lock boot complete broadcast. firebase auto start by itself, and init Firebase crashlytics after user unlock, but it blocks on main thread. here is

Steps to reproduce:

android 15

  1. one app with direct boot aware activity
  2. listen to lock boot complete broadcast.
  3. start 1st activity from background on 2nd broadcast.

100% ANR crash on the 2nd time reboot.

Relevant Code:

jdk.internal.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:717)
java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1074)
java.util.concurrent.CountDownLatch.await(CountDownLatch.java:276)
com.google.firebase.crashlytics.internal.common.Utils.awaitEvenIfOnMainThread(Utils.java:121)
com.google.firebase.crashlytics.internal.common.CrashlyticsCore.checkForPreviousCrash(CrashlyticsCore.java:492)
com.google.firebase.crashlytics.internal.common.CrashlyticsCore.onPreExecute(CrashlyticsCore.java:189)
com.google.firebase.crashlytics.FirebaseCrashlytics.init(FirebaseCrashlytics.java:173)
com.google.firebase.crashlytics.CrashlyticsRegistrar.buildCrashlytics(CrashlyticsRegistrar.java:71)
com.google.firebase.crashlytics.CrashlyticsRegistrar.$r8$lambda$Pfd5XmDCFzNyAT9o9H6rDnTBQE4(Unknown Source:0)
com.google.firebase.crashlytics.CrashlyticsRegistrar$$ExternalSyntheticLambda0.create(Unknown Source:2)
com.google.firebase.tracing.ComponentMonitor.lambda$processRegistrar$0(ComponentMonitor.java:38)
com.google.firebase.tracing.ComponentMonitor$$ExternalSyntheticLambda0.create(Unknown Source:4)
com.google.firebase.components.ComponentRuntime.lambda$discoverComponents$0$com-google-firebase-components-ComponentRuntime(ComponentRuntime.java:160)
com.google.firebase.components.ComponentRuntime$$ExternalSyntheticLambda1.get(Unknown Source:4)
com.google.firebase.components.Lazy.get(Lazy.java:53)
com.google.firebase.components.ComponentRuntime.doInitializeEagerComponents(ComponentRuntime.java:322)
com.google.firebase.components.ComponentRuntime.initializeEagerComponents(ComponentRuntime.java:312)
com.google.firebase.FirebaseApp.initializeAllApis(FirebaseApp.java:607)
com.google.firebase.FirebaseApp.access$300(FirebaseApp.java:91)
com.google.firebase.FirebaseApp$UserUnlockReceiver.onReceive(FirebaseApp.java:672)
android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1968)
android.app.LoadedApk$ReceiverDispatcher$Args.$r8$lambda$mcNAAl1SQ4MyJPyDg8TJ2x2h0Rk(Unknown Source:0)
android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
android.os.Handler.handleCallback(Handler.java:959)
android.os.Handler.dispatchMessage(Handler.java:100)
android.os.Looper.loopOnce(Looper.java:282)
android.os.Looper.loop(Looper.java:387)
android.app.ActivityThread.main(ActivityThread.java:9485)
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:600)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1005)

park671 avatar Aug 01 '24 10:08 park671