OneSignal-Android-SDK
OneSignal-Android-SDK copied to clipboard
[Bug]: ANR because of initializeFromJson
What happened?
com.onesignal.common.modeling.Model.initializeFromJson ANR triggered by slow operations in main thread
Steps to reproduce?
Initialise OneSignal on android 11, 12 and 13
What did you expect to happen?
No ANR please
OneSignal Android SDK version
5.1.2 and all others
Android version
13, 12, 11
Specific Android models
No response
Relevant log output
at kotlin.collections.ArraysKt___ArraysKt.firstOrNull(ArraysKt___Arrays.kt:1282)
at com.onesignal.common.modeling.Model.initializeFromJson(Model.kt:98)
at com.onesignal.common.modeling.SimpleModelStore.create(SimpleModelStore.kt:30)
at com.onesignal.common.modeling.ModelStore.load(ModelStore.kt:162)
at com.onesignal.common.modeling.SimpleModelStore.<init>(SimpleModelStore.kt:23)
at com.onesignal.session.internal.session.SessionModelStore.<init>(SessionModelStore.kt:8)
at java.lang.reflect.Constructor.newInstance0(Native method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at com.onesignal.common.services.ServiceRegistrationReflection.resolve(ServiceRegistration.kt:89)
at com.onesignal.common.services.ServiceProvider.getServiceOrNull(ServiceProvider.kt:79)
at com.onesignal.common.services.ServiceProvider.getService(ServiceProvider.kt:67)
at com.onesignal.common.services.ServiceProvider.getService$com_onesignal_core(ServiceProvider.kt:39)
at com.onesignal.internal.OneSignalImp.initWithContext(OneSignalImp.kt:200)
at com.onesignal.OneSignal.initWithContext(OneSignal.kt:208)
at com.onesignal.notifications.receivers.FCMBroadcastReceiver.onReceive(FCMBroadcastReceiver.kt:26)
Code of Conduct
- [X] I agree to follow this project's Code of Conduct
@ayushi-sk Hello thank you for reaching out. Is this happening on versions newer than 5.1.2? Are you able to reproduce this issue?
Couldn't reproduce it -> happening on all device Yes, it is in 5.1.6
updated to com.onesignal:OneSignal:5.1.9 also appeared
#00 pc 0x4bca80 libart.so (art::DumpNativeStack + 108) (BuildId: 735f12f804f88d62a2cb437261076ff7)
#01 pc 0x4b0dd4 libart.so (art::Thread::DumpStack const + 388) (BuildId: 735f12f804f88d62a2cb437261076ff7)
#02 pc 0x4b0714 libart.so (art::DumpCheckpoint::Run + 164) (BuildId: 735f12f804f88d62a2cb437261076ff7)
#03 pc 0x3c177c libart.so (art::Thread::RunCheckpointFunction + 148) (BuildId: 735f12f804f88d62a2cb437261076ff7)
#04 pc 0x5aea28 libart.so (artTestSuspendFromCode + 232) (BuildId: 735f12f804f88d62a2cb437261076ff7)
#05 pc 0x35521c libart.so (art_quick_test_suspend + 156) (BuildId: 735f12f804f88d62a2cb437261076ff7)
at java.lang.reflect.Executable.getMethodNameInternal(Native method)
at java.lang.reflect.Method.getName(Method.java:115)
at java.lang.reflect.Method$1.compare(Method.java:72)
at java.lang.reflect.Method$1.compare(Method.java:67)
at java.util.TimSort.mergeHi(TimSort.java:841)
at java.util.TimSort.mergeAt(TimSort.java:520)
at java.util.TimSort.mergeForceCollapse(TimSort.java:461)
at java.util.TimSort.sort(TimSort.java:254)
at java.util.Arrays.sort(Arrays.java:1344)
at java.util.ArrayList.sort(ArrayList.java:1738)
at java.util.Collections.sort(Collections.java:210)
at libcore.util.CollectionUtils.removeDuplicates(CollectionUtils.java:86)
at java.lang.Class.getMethods(Class.java:2226)
at com.onesignal.common.modeling.Model.initializeFromJson(Model.kt:98)
at com.onesignal.core.internal.operations.impl.OperationModelStore.create(OperationModelStore.kt:68)
at com.onesignal.core.internal.operations.impl.OperationModelStore.create(OperationModelStore.kt:30)
at com.onesignal.common.modeling.ModelStore.load(ModelStore.kt:162)
at com.onesignal.core.internal.operations.impl.OperationModelStore.<init>(OperationModelStore.kt:32)
at java.lang.reflect.Constructor.newInstance0(Native method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at com.onesignal.common.services.ServiceRegistrationReflection.resolve(ServiceRegistration.kt:89)
at com.onesignal.common.services.ServiceProvider.getServiceOrNull(ServiceProvider.kt:79)
at com.onesignal.common.services.ServiceProvider.getService(ServiceProvider.kt:67)
at com.onesignal.common.services.ServiceRegistrationReflection.resolve(ServiceRegistration.kt:82)
at com.onesignal.common.services.ServiceProvider.getServiceOrNull(ServiceProvider.kt:79)
at com.onesignal.common.services.ServiceProvider.getService(ServiceProvider.kt:67)
at com.onesignal.internal.OneSignalImp.initWithContext(OneSignalImp.kt:527)
at com.onesignal.OneSignal.initWithContext(OneSignal.kt:135)
at org.xxxxxxxxxxxxxxxxxxx.initOneSignal(XXXXXXApplication.java:121)
at org.xxxxxxxxxxxxxxxxxxx.onCreate(XXXXXXApplication.java:53)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1266)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7411)
at android.app.ActivityThread.-$$Nest$mhandleBindApplication(unavailable)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2410)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:223)
at android.os.Looper.loop(Looper.java:324)
at android.app.ActivityThread.main(ActivityThread.java:8630)
at java.lang.reflect.Method.invoke(Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:582)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1061)
Android version 14 ~1%,13 ~31% , 12 ~31%, 11 ~37%
launch from background 97% (data from firebase Crashlytics dashboard)
@ayushi-sk @gitByEOS Thank you for sharing the valuable info with us! We have released Android SDK 5.1.12 in an attempt to resolve the specific ANR issues. Please give it a try and let us know if the ANR still persists. https://github.com/OneSignal/OneSignal-Android-SDK/releases/tag/5.1.12