Skip to content

ANR when calling Statsig.initializeAsync #29

@aeramli

Description

@aeramli

Hello,

We noticed an ANR with the following Stack trace. It is related to Gson (syncLoadFromLocalStorage)

java.lang.Throwable.nativeFillInStackTrace (Native method)
java.lang.Throwable.fillInStackTrace (Throwable.java:819)
java.lang.Throwable.<init> (Throwable.java:286)
java.lang.Exception.<init> (Exception.java:67)
java.lang.ReflectiveOperationException.<init> (ReflectiveOperationException.java:57)
java.lang.NoSuchMethodException.<init> (NoSuchMethodException.java:50)
java.lang.Class.getConstructor0 (Class.java:3385)
java.lang.Class.getDeclaredConstructor (Class.java:3067)
com.google.gson.internal.ConstructorConstructor.newDefaultConstructor (ConstructorConstructor.java:212)
com.google.gson.internal.ConstructorConstructor.get (ConstructorConstructor.java:120)
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create (ReflectiveTypeAdapterFactory.java:129)
com.google.gson.Gson.getAdapter (Gson.java:556)
com.google.gson.internal.bind.MapTypeAdapterFactory.create (MapTypeAdapterFactory.java:125)
com.google.gson.Gson.getAdapter (Gson.java:556)
com.google.gson.Gson.fromJson (Gson.java:1226)
com.google.gson.Gson.fromJson (Gson.java:1137)
com.google.gson.Gson.fromJson (Gson.java:1047)
com.google.gson.Gson.fromJson (Gson.java:1014)
com.newrelic.agent.android.instrumentation.GsonInstrumentation.fromJson (GsonInstrumentation.java:101)
com.statsig.androidsdk.Store.syncLoadFromLocalStorage (Store.kt:72)
com.statsig.androidsdk.StatsigClient.setup (StatsigClient.kt:1096)
com.statsig.androidsdk.StatsigClient.access$setup (StatsigClient.kt:26)
com.statsig.androidsdk.StatsigClient$initializeAsync$1.invoke (StatsigClient.kt:90)
com.statsig.androidsdk.StatsigClient$initializeAsync$1.invoke (StatsigClient.kt:89)
com.statsig.androidsdk.ErrorBoundary.capture (ErrorBoundary.kt:54)
com.statsig.androidsdk.ErrorBoundary.capture$default (ErrorBoundary.kt:52)
com.statsig.androidsdk.StatsigClient.initializeAsync (StatsigClient.kt:88)
com.statsig.androidsdk.Statsig.initializeAsync (Statsig.kt:53)

We found another related ANR with a different stack trace, but we believe it is related to the same issue

          main (runnable):tid=1 systid=8778 
       at com.statsig.androidsdk.StatsigClient$initializeAsync$1$1.invokeSuspend(StatsigClient.kt:97)
       at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
       at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:101)
       at android.os.Handler.handleCallback(Handler.java:958)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loopOnce(Looper.java:205)
       at android.os.Looper.loop(Looper.java:294)
       at android.app.ActivityThread.main(ActivityThread.java:8385)
       at java.lang.reflect.Method.invoke(Native method)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:640)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:982)
        
// setup()
statsigScope = CoroutineScope(statsigJob + dispatcherProvider.main + exceptionHandler)

if (!this@StatsigClient.options.loadCacheAsync) {
            diagnostics.markStart(
                KeyType.INITIALIZE,
                StepType.LOAD_CACHE,
                Marker(isBlocking = true),
            )
            this@StatsigClient.store.syncLoadFromLocalStorage()
            diagnostics.markEnd(KeyType.INITIALIZE, true, StepType.LOAD_CACHE)
        }

Can you please help to patch this issue?

We are using the version = "4.44.1"

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions