firebase / firebase-android-sdk

Firebase Android SDK
https://firebase.google.com
Apache License 2.0
2.28k stars 580 forks source link

A NullPointerException occurs in the background when calling the getPackageName function related to FirebaseSession. #6222

Open Dev-Czle opened 2 months ago

Dev-Czle commented 2 months ago

[REQUIRED] Step 2: Describe your environment

[REQUIRED] Step 3: Describe the problem

Hello,

We are currently using Firebase BoM version 33.1.1 and utilizing Authentication, Firestore, FCM, Storage, Crashlytics, Config, FPM, Analytics, and Dynamic Links.

Since the latest version, the following error has suddenly been reported to Crashlytics. Additionally, the error only occurs when the app is in the background.

I have searched for a solution, but the error name itself is too common, making it difficult to find relevant information. However, since we can see that the error occurs in the FirebaseSessions part, we are reaching out with this question. Below is the full error log.

Here's the logs

          Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
       at android.content.ComponentName.<init>(ComponentName.java:132)
       at android.content.Intent.<init>(Intent.java:8043)
       at com.google.firebase.sessions.SessionLifecycleServiceBinderImpl.bindToService(SessionLifecycleServiceBinder.kt:40)
       at com.google.firebase.sessions.SessionLifecycleClient.bindToService(SessionLifecycleClient.kt:107)
       at com.google.firebase.sessions.FirebaseSessions$1.invokeSuspend(FirebaseSessions.kt:54)
       at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:30)
       at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
       at com.google.firebase.concurrent.CustomThreadFactory.lambda$newThread$0(CustomThreadFactory.java:45)
       at java.lang.Thread.run(Thread.java:1012)

image

google-oss-bot commented 2 months ago

I found a few problems with this issue:

lehcar09 commented 2 months ago

Hi @Dev-Czle, thank you for reaching out. I tried reproducing the issue, however, I wasn't able to encounter the error.

It's possible that the error you are seeing could be caused by a race condition or a behavioral change in Android 14.

A race condition occurs when two or more threads try to access the same resource at the same time. In this case, the FirebaseSessions component may be trying to access the application context while the application is in the background. If the application context is not available at that time, it could cause a NullPointerException.

Android 14 introduced behavioral changes regarding safer components and implicit intents that might contribute to this NullPointerException

Let me consult this with our engineers and get back to you.

Dev-Czle commented 2 months ago

@lehcar09 i found it started Firebase-Messaging-topic IO Thread

image

i will help you what you need