[ANR] Deadlock in firebase messaging (WakeLockHolder.java)
See original GitHub issueEnvironment
- Firebase messaging 23.0.8
- Firebase BOM 30.5.0
The problem
We are seeing a lot of ANRs in the crashlytics console that originate from Firebase Messaging. Crashlytics claims they’re caused by a deadlock.
main (blocked):tid=1 systid=9247 | waiting to lock <0x0891a599> (java.lang.Object) held by thread 25 at com.google.firebase.messaging.WakeLockHolder.completeWakefulIntent(WakeLockHolder.java:141) at com.google.firebase.messaging.WakeLockHolder$$ExternalSyntheticLambda0.onComplete(R8$$SyntheticClass:3) at com.google.android.gms.tasks.zzi.run(zzi.java:1) at com.google.android.gms.measurement.internal.zzl.run$bridge(com.google.android.gms:play-services-measurement-sdk@@21.1.1:27) at com.google.firebase.messaging.FcmBroadcastProcessor$$InternalSyntheticLambda$1$20ad64d025a971aa803b176a540e5710ff1caab22d62957ae57bd1390f50ccfd$0.execute(FcmBroadcastProcessor.java) at com.google.android.gms.tasks.zzj.zzd(com.google.android.gms:play-services-tasks@@18.0.1:3) at com.google.android.gms.tasks.zzr.zzb(com.google.android.gms:play-services-tasks@@18.0.1:5) at com.google.android.gms.tasks.zzw.zze(zzw.java:3) at com.google.android.gms.tasks.TaskCompletionSource.trySetResult(com.google.android.gms:play-services-tasks@@18.0.1:1) at com.google.firebase.messaging.WithinAppServiceConnection$BindRequest.finish(WithinAppServiceConnection.java:88) at com.google.firebase.messaging.WithinAppServiceBinder.lambda$send$0(WithinAppServiceBinder.java:55) at com.google.firebase.messaging.WithinAppServiceBinder$$InternalSyntheticLambda$2$28aec3a1d612c50761b821163886dacf3adcb6f56220725f43c11adc87a189da$1.onComplete$bridge(WithinAppServiceBinder.java:14) at com.google.android.gms.tasks.zzi.run(zzi.java:1) at com.google.android.gms.measurement.internal.zzl.run$bridge(com.google.android.gms:play-services-measurement-sdk@@21.1.1:27) at com.google.firebase.messaging.FcmBroadcastProcessor$$InternalSyntheticLambda$1$20ad64d025a971aa803b176a540e5710ff1caab22d62957ae57bd1390f50ccfd$0.execute(FcmBroadcastProcessor.java) at com.google.android.gms.tasks.zzj.zzd(com.google.android.gms:play-services-tasks@@18.0.1:3) at com.google.android.gms.tasks.zzr.zzb(com.google.android.gms:play-services-tasks@@18.0.1:5) at com.google.android.gms.tasks.zzw.zzi(com.google.android.gms:play-services-tasks@@18.0.1:3) at com.google.android.gms.tasks.zzw.addOnCompleteListener(com.google.android.gms:play-services-tasks@@18.0.1:9) at com.google.firebase.messaging.WithinAppServiceBinder.send(WithinAppServiceBinder.java:55) at com.google.firebase.messaging.WithinAppServiceConnection.flushQueue(WithinAppServiceConnection.java:152) at com.google.firebase.messaging.WithinAppServiceConnection.onServiceConnected(WithinAppServiceConnection.java:209) at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:2084) at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:2116) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:246) at android.app.ActivityThread.main(ActivityThread.java:8653) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
firebase-iid-executor (blocked):tid=25 systid=9957 | waiting to lock <0x01fdfb47> (t7c) held by thread 1 at com.google.firebase.messaging.WithinAppServiceConnection.b(WithinAppServiceConnection.java:1) at com.google.firebase.messaging.WakeLockHolder.sendWakefulServiceIntent(WakeLockHolder.java:112) at com.google.firebase.messaging.FcmBroadcastProcessor.bindToMessagingService(FcmBroadcastProcessor.java:122) at com.google.firebase.messaging.FcmBroadcastProcessor.startMessagingService(FcmBroadcastProcessor.java:90) at com.google.firebase.messaging.FcmBroadcastProcessor.process(FcmBroadcastProcessor.java:73) at com.google.firebase.iid.FirebaseInstanceIdReceiver.onMessageReceive(FirebaseInstanceIdReceiver.java:52) at com.google.android.gms.cloudmessaging.CloudMessagingReceiver.zzb(com.google.android.gms:play-services-cloud-messaging@@17.0.0:9) at com.google.android.gms.cloudmessaging.CloudMessagingReceiver.zza(CloudMessagingReceiver.java:4) at com.google.android.gms.cloudmessaging.zze.run(com.google.android.gms:play-services-cloud-messaging@@17.0.0:35) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at com.google.android.gms.common.util.concurrent.zza.run(zza.java:2) at com.google.android.gms.ads.zzd.run$bridge(com.google.android.gms:play-services-ads-lite@@21.2.0:52) at java.lang.Thread.run(Thread.java:923)
Steps to reproduce:
We do not have steps to reproduce yet.
Issue Analytics
- State:
- Created 10 months ago
- Reactions:1
- Comments:6 (3 by maintainers)
Hi @RngNoah, we expect this fix to be in the M125 release that is targeted for next week. That said, since this has been merged. I’ll close this issue for now. Feel free to reopen if you encounter this issue on the new version (
23.1.1
). Thanks!May I ask when a new version will be released that fixes this anr issue? @gsakakihara