firebase-android-sdk
firebase-android-sdk copied to clipboard
[ANR] Main thread blocking issue, 100% reproducible
- 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
- one app with direct boot aware activity
- listen to lock boot complete broadcast.
- 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)