firebase / firebase-android-sdk

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

ANRs after switching to custom Firebase initialization via ContentProvider #6393

Open nesterenko1pavel opened 2 hours ago

nesterenko1pavel commented 2 hours ago

[READ] Step 1: Are you in the right place?

Yes

[REQUIRED] Step 2: Describe your environment

[REQUIRED] Step 3: Describe the problem

Steps to reproduce:

After changes in application (according to Take Control of Your Firebase Init on Android) i.e. after custom ContentProvider was created I started getting crashes in crashlytics. There are 10k crashes so far. But problem dose not occur locally - I tried a lot different devices but without success to reproduce.

Relevant Code: DynamicContentProvider

override fun onCreate(): Boolean {
    val nonNullableContext = context ?: return false

    val firebaseSecuredWrapper = FirebaseSecuredWrapper(...)

    val model = firebaseSecuredWrapper.get()

    val options = if (model != null) {
        FirebaseOptions.Builder()
            .setGcmSenderId(model.gcmSenderId)
            .setApiKey(model.apiKey)
            .setApplicationId(model.applicationId)
            .setStorageBucket(model.storageBucket)
            .setProjectId(model.projectId)
            .build()
    } else {
        FirebaseOptions.fromResource(nonNullableContext)
    }

    FirebaseApp.initializeApp(nonNullableContext, requireNotNull(options))

    return false
}

I am getting Triggered ANR Root blocking at my.application.provider.DynamicContentProvider.onCreate(DynamicContentProvider.kt:45), i.e at FirebaseApp.initializeApp(nonNullableContext, requireNotNull(options))

Messages from crashlytics:

          main (runnable):tid=1 systid=8338 
       at java.lang.String.concat(Native method)
       at com.google.firebase.crashlytics.internal.common.ExecutorUtils.addDelayedShutdownHook(ExecutorUtils.java:96)
       at com.google.firebase.crashlytics.internal.common.ExecutorUtils.addDelayedShutdownHook(ExecutorUtils.java:87)
       at com.google.firebase.crashlytics.internal.common.ExecutorUtils.buildSingleThreadExecutorService(ExecutorUtils.java:40)
       at com.google.firebase.crashlytics.FirebaseCrashlytics.init(FirebaseCrashlytics.java:87)
       at com.google.firebase.crashlytics.CrashlyticsRegistrar.buildCrashlytics(CrashlyticsRegistrar.java:57)
       at com.google.firebase.components.ComponentRuntime.lambda$discoverComponents$0(ComponentRuntime.java:140)
       at com.google.firebase.components.Lazy.get(Lazy.java:53)
       at com.google.firebase.components.ComponentRuntime.doInitializeEagerComponents(ComponentRuntime.java:302)
       at com.google.firebase.components.ComponentRuntime.initializeEagerComponents(ComponentRuntime.java:292)
       at com.google.firebase.FirebaseApp.initializeAllApis(FirebaseApp.java:607)
       at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:300)
       at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:264)
       at my.application.provider.DynamicContentProvider.onCreate(DynamicContentProvider.kt:45)
          main (runnable):tid=1 systid=11199 
       at com.google.firebase.crashlytics.CrashlyticsRegistrar.getComponents(CrashlyticsRegistrar.java:39)
       at com.google.firebase.tracing.ComponentMonitor.processRegistrar(ComponentMonitor.java:28)
       at com.google.firebase.components.ComponentRuntime.discoverComponents(ComponentRuntime.java:117)
       at com.google.firebase.components.ComponentRuntime.<init>(ComponentRuntime.java:99)
       at com.google.firebase.components.ComponentRuntime.<init>(ComponentRuntime.java:46)
       at com.google.firebase.components.ComponentRuntime$Builder.build(ComponentRuntime.java:387)
       at com.google.firebase.FirebaseApp.<init>(FirebaseApp.java:439)
       at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:296)
       at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:264)
       at my.application.provider.DynamicContentProvider.onCreate(DynamicContentProvider.kt:45)
          main (runnable):tid=1 systid=5685 
       at java.util.Formatter$FormatSpecifier.precision(Formatter.java:2989)
       at java.util.Formatter$FormatSpecifier.<init>(Formatter.java:3042)
       at java.util.Formatter$FormatSpecifierParser.<init>(Formatter.java:2804)
       at java.util.Formatter.parse(Formatter.java:2737)
       at java.util.Formatter.format(Formatter.java:2686)
       at java.util.Formatter.format(Formatter.java:2640)
       at java.lang.String.format(String.java:4068)
       at com.google.firebase.concurrent.CustomThreadFactory.newThread(CustomThreadFactory.java:50)
       at java.util.concurrent.ThreadPoolExecutor$Worker.<init>(ThreadPoolExecutor.java:639)
       at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:929)
       at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1362)
       at com.google.firebase.concurrent.DelegatingScheduledExecutorService.execute(DelegatingScheduledExecutorService.java:104)
       at com.google.android.gms.tasks.Tasks.call(Tasks.java:5)
       at com.google.firebase.heartbeatinfo.DefaultHeartBeatController.registerHeartBeat(DefaultHeartBeatController.java:62)
       at com.google.firebase.FirebaseApp.initializeAllApis(FirebaseApp.java:608)
       at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:300)
       at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:264)
       at my.application.provider.DynamicContentProvider.onCreate(DynamicContentProvider.kt:45)
google-oss-bot commented 2 hours ago

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.