quickstart-unity: [Bug] ANR In Firebase Unity SDK 8.3.0

[REQUIRED] Please fill in the following fields:

  • Unity editor version: 2019.4.29F1
  • Firebase Unity SDK version: 8.3.0
  • Source you installed the SDK: UPM with tgz
  • Problematic Firebase Component: Initialization
  • Other Firebase Components in use: Crashlytics, Messaging, Analytics, Dynamic Links
  • Additional SDKs you are using: Facebook, Ironsource, Admob, Vungle, AdColony
  • Platform you are using the Unity editor on: Mac, Windows
  • Platform you are targeting: iOS, Android
  • Scripting Runtime: IL2CPP

[REQUIRED] Please describe the issue here:

We have recently updated Firebase Unity SDK From 8.1.0 to 8.3.0, A new ANR seems to appear on 5% Install on Google Play Store,

image image

ANR
Bootup
 Input dispatching timed out (com.company.game/com.google.firebase.MessagingUnityPlayerActivity, Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago.  Wait queue length: 18.  Wait queue head age: 53764.5ms.)
Oct 1st, 2021, 11:51:52 UTC

STACKTRACE

ANR:  Input dispatching timed out (com.company.game/com.google.firebase.MessagingUnityPlayerActivity, Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago.  Wait queue length: 18.  Wait queue head age: 53764.5ms.)
        at com.google.firebase.app.internal.cpp.JniResultCallback.onCompletion(JniResultCallback.java:149)
        at com.google.firebase.app.internal.cpp.JniResultCallback$TaskCallback.onFailure(JniResultCallback.java:77)
        at com.google.android.gms.tasks.zzk.run(com.google.android.gms:play-services-tasks@@17.2.1:1)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:224)
        at android.app.ActivityThread.main(ActivityThread.java:7561)
        at java.lang.reflect.Method.invoke(Method.java:-2)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)

THREADS

Thread 2 - main
        at com.google.firebase.app.internal.cpp.JniResultCallback.onCompletion(JniResultCallback.java:149)
        at com.google.firebase.app.internal.cpp.JniResultCallback$TaskCallback.onFailure(JniResultCallback.java:77)
        at com.google.android.gms.tasks.zzk.run(com.google.android.gms:play-services-tasks@@17.2.1:1)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:224)
        at android.app.ActivityThread.main(ActivityThread.java:7561)
        at java.lang.reflect.Method.invoke(Method.java:-2)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)

Thread 5869 - Jit thread pool worker thread 0
        at unknown method(unknown file)

Thread 5870 - Signal Catcher
        at unknown method(unknown file)

Thread 5871 - HeapTaskDaemon
        at unknown method(unknown file)

Thread 5872 - ReferenceQueueDaemon
        at java.lang.Object.wait(Object.java:-2)
        at java.lang.Object.wait(Object.java:442)
        at java.lang.Object.wait(Object.java:568)
        at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:217)
        at java.lang.Daemons$Daemon.run(Daemons.java:139)
        at java.lang.Thread.run(Thread.java:919)

Thread 5873 - FinalizerDaemon
        at java.lang.Object.wait(Object.java:-2)
        at java.lang.Object.wait(Object.java:442)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:190)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:211)
        at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:273)
        at java.lang.Daemons$Daemon.run(Daemons.java:139)
        at java.lang.Thread.run(Thread.java:919)

Thread 5874 - FinalizerWatchdogDaemon
        at java.lang.Object.wait(Object.java:-2)
        at java.lang.Object.wait(Object.java:442)
        at java.lang.Object.wait(Object.java:568)
        at java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded(Daemons.java:341)
        at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:321)
        at java.lang.Daemons$Daemon.run(Daemons.java:139)
        at java.lang.Thread.run(Thread.java:919)

Thread 5875 - Binder:2023_1
        at unknown method(unknown file)

Thread 5876 - Binder:2023_2
        at unknown method(unknown file)

Thread 5877 - Binder:2023_3
        at unknown method(unknown file)

Thread 5878 - Profile Saver
        at unknown method(unknown file)

Thread 5884 - Crashlytics Exception Handler1
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:64)
        at com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:27)
        at java.lang.Thread.run(Thread.java:919)

Thread 5887 - GmsDynamite
        at java.lang.Object.wait(Object.java:-2)
        at java.lang.Object.wait(Object.java:442)
        at java.lang.Object.wait(Object.java:568)
        at cw.run(:com.google.android.gms.dynamite_dynamiteloader@213614081@21.36.14 (120400-0):2)

Thread 5888 - pool-6-thread-1
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

Thread 5889 - awaitEvenIfOnMainThread task continuation executor1
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:64)
        at com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:27)
        at java.lang.Thread.run(Thread.java:919)

Thread 5890 - com.google.firebase.crashlytics.startup1
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:64)
        at com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:27)
        at java.lang.Thread.run(Thread.java:919)

Thread 5892 - Firebase-Messaging-Init
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1120)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:849)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at com.google.android.gms.common.util.concurrent.zza.run(com.google.android.gms:play-services-basement@@17.6.0:2)
        at java.lang.Thread.run(Thread.java:919)

Thread 5893 - Firebase-Messaging-Topics-Io
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1120)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:849)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at com.google.android.gms.common.util.concurrent.zza.run(com.google.android.gms:play-services-basement@@17.6.0:2)
        at java.lang.Thread.run(Thread.java:919)

Thread 5897 - queued-work-looper
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:336)
        at android.os.Looper.loop(Looper.java:181)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 5900 - FirebaseInstanceId
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1120)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:849)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at com.google.android.gms.common.util.concurrent.zza.run(com.google.android.gms:play-services-basement@@17.6.0:2)
        at java.lang.Thread.run(Thread.java:919)

Thread 5905 - AsyncTask #1
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:459)
        at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
        at java.util.concurrent.SynchronousQueue.take(SynchronousQueue.java:920)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

Thread 5907 - pool-17-thread-1
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2109)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1132)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:849)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

Thread 5910 - pool-19-thread-1
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1120)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:849)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

Thread 5916 - pool-21-thread-1
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

Thread 5919 - pool-18-thread-1
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1120)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:849)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

Thread 5920 - pool-21-thread-2
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

Thread 5922 - UnityMain
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:868)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1023)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1334)
        at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:232)
        at com.google.firebase.crashlytics.internal.common.Utils.awaitEvenIfOnMainThread(Utils.java:112)
        at com.google.firebase.crashlytics.internal.common.CrashlyticsController.handleUncaughtException(CrashlyticsController.java:231)
        at com.google.firebase.crashlytics.internal.common.CrashlyticsController$1.onUncaughtException(CrashlyticsController.java:153)
        at com.google.firebase.crashlytics.internal.common.CrashlyticsUncaughtExceptionHandler.uncaughtException(CrashlyticsUncaughtExceptionHandler.java:54)
        at com.unity3d.player.n.uncaughtException(Unknown:94)
        at com.bugsnag.android.ExceptionHandler.uncaughtException(ExceptionHandler.java:71)
        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1073)
        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)
        at java.lang.Thread.dispatchUncaughtException(Thread.java:2187)

Thread 5923 - pool-21-thread-3
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

Thread 5925 - pool-21-thread-4
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

Thread 5929 - AssetPackBackgroundExecutor
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

Thread 5930 - AssetPackService
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:336)
        at android.os.Looper.loop(Looper.java:181)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 5933 - Binder:2023_4
        at unknown method(unknown file)

Thread 5936 - AudioPortEventHandler
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:336)
        at android.os.Looper.loop(Looper.java:181)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 5937 - AudioTrack
        at unknown method(unknown file)

Thread 5941 - bugsnag-anr-collector
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:336)
        at android.os.Looper.loop(Looper.java:181)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 5942 - process reaper
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
        at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:461)
        at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
        at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:937)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

Thread 5946 - ConnectivityThread
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:336)
        at android.os.Looper.loop(Looper.java:181)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 5953 - Thread-12
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:336)
        at android.os.Looper.loop(Looper.java:181)
        at com.ironsource.mediationsdk.sdk.j$a.run(Unknown:10)

Thread 5954 - Timer-0
        at java.lang.Object.wait(Object.java:-2)
        at java.lang.Object.wait(Object.java:442)
        at java.util.TimerThread.mainLoop(Timer.java:559)
        at java.util.TimerThread.run(Timer.java:512)

Thread 5955 - Timer-1
        at java.lang.Object.wait(Object.java:-2)
        at java.lang.Object.wait(Object.java:442)
        at java.util.TimerThread.mainLoop(Timer.java:559)
        at java.util.TimerThread.run(Timer.java:512)

Thread 5956 - UnityChoreographer
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:336)
        at android.os.Looper.loop(Looper.java:181)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 5960 - logThread
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:336)
        at android.os.Looper.loop(Looper.java:181)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 5961 - httpThread
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:336)
        at android.os.Looper.loop(Looper.java:181)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 5967 - pool-27-thread-1
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

Thread 5968 - pool-28-thread-1
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

Thread 5969 - Thread-18
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1120)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:849)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at com.appsflyer.AFExecutor$1$4.run(unknown:31)
        at java.lang.Thread.run(Thread.java:919)

Thread 5971 - Thread-20
        at com.google.firebase.app.internal.cpp.JniResultCallback.nativeOnResult(JniResultCallback.java:-2)
        at com.google.firebase.app.internal.cpp.JniResultCallback.onCompletion(JniResultCallback.java:151)
        at com.google.firebase.app.internal.cpp.JniResultCallback.cancel(JniResultCallback.java:143)

Thread 5972 - GoogleApiHandler
        at android.os.MessageQueue.nativePollOnce(MessageQueue.java:-2)
        at android.os.MessageQueue.next(MessageQueue.java:336)
        at android.os.Looper.loop(Looper.java:181)
        at android.os.HandlerThread.run(HandlerThread.java:67)

Thread 5975 - Thread-22
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1120)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:849)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at com.appsflyer.AFExecutor$1$4.run(unknown:31)
        at java.lang.Thread.run(Thread.java:919)

Thread 5976 - MessengerIpcClient
        at sun.misc.Unsafe.park(Unsafe.java:-2)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1120)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:849)
        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at com.google.android.gms.common.util.concurrent.zza.run(com.google.android.gms:play-services-basement@@17.6.0:2)
        at java.lang.Thread.run(Thread.java:919)

Thread 5986 - Thread-31
        at com.google.firebase.app.internal.cpp.JniResultCallback.onCompletion(JniResultCallback.java:149)
        at com.google.firebase.app.internal.cpp.JniResultCallback$TaskCallback.onFailure(JniResultCallback.java:77)
        at com.google.android.gms.tasks.zzk.run(com.google.android.gms:play-services-tasks@@17.2.1:1)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:224)
        at android.app.ActivityThread.main(ActivityThread.java:7561)
        at java.lang.reflect.Method.invoke(Method.java:-2)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)

Google Play Store Screenshot: image

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Reactions: 1
  • Comments: 18 (1 by maintainers)

Most upvoted comments

Although I’m not in a position to fix this bug, it piqued my interest. There seems to be a clear bug here.

According to the stack traces, the main thread is blocked at line 149 in JniResultCallback.java calling synchronized (this) in public void onCompletion(): https://github.com/firebase/firebase-cpp-sdk/blob/ef28f1058b4b0b920756ed9d2fd9f2848a12b4da/app/src_java/com/google/firebase/app/internal/cpp/JniResultCallback.java#L147-L150

Then, there is another thread, Thread 5971 - Thread-20, that appears to be a call from native C++ code to JniResultCallback.cancel(), which has acquired the “this” lock and called back down to native code. Here is an (adapted) excerpt from the stack from of this thread from the stack traces provided in the OP:

at JniResultCallback.nativeOnResult()
at JniResultCallback.onCompletion(JniResultCallback.java:151)
at JniResultCallback.cancel(JniResultCallback.java:143)

It would appear that the native code executed by nativeOnResult() has deadlocked. Since this is an intermittent issue, my guess is that this is caused by acquiring two different locks in different orders when being called from different places. The fact that cancel() is being called from native code suggests there is something being “cancelled” or “shut down” and is cleaning up all of the listeners.