OneSignal-Android-SDK
OneSignal-Android-SDK copied to clipboard
ANR: Executing service com.onesignal.SyncJobService `LocationController.onFocusChange`
Description:
16% of our Application's ANRs are resulted from OneSignal since we integrated 3 months ago.
Environment
- What version of the Android SDK are you using? 4.7.0 - 4.7.2
- How did you add the SDK to your project ? Maven
Steps to Reproduce Issue: None. Only evidence is the ANR reports on Play store.
Anything else: A lot of these instances don't have any stack traces and the ones that have as the thread with below stack trace blocked.
"main" prio=5 tid=1 Blocked
at com.onesignal.LocationController.onFocusChange (LocationController.java:324)
at com.onesignal.OneSignal.onAppFocus (OneSignal.java:1402)
at com.onesignal.OSFocusHandler.startOnFocusWork (OSFocusHandler.kt:49)
at com.onesignal.ActivityLifecycleHandler.handleFocus (ActivityLifecycleHandler.java:191)
at com.onesignal.ActivityLifecycleHandler.onActivityResumed (ActivityLifecycleHandler.java:95)
at com.onesignal.ActivityLifecycleListener.onActivityResumed (ActivityLifecycleListener.java:91)
at android.app.Application.dispatchActivityResumed (Application.java:455)
at android.app.Activity.dispatchActivityResumed (Activity.java:1418)
at android.app.Activity.onResume (Activity.java:1950)
at androidx.fragment.app.FragmentActivity.onResume (FragmentActivity.java:455)
at com.keeptruckin.android.view.BaseFragmentActivity.onResume (BaseFragmentActivity.java:103)
at com.keeptruckin.android.view.logs.log.LogActivity.onResume (LogActivity.java:278)
at android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1456)
at android.app.Activity.performResume (Activity.java:8361)
at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4902)
at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4949)
at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:52)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2325)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:247)
at android.app.ActivityThread.main (ActivityThread.java:8656)
at java.lang.reflect.Method.invoke (Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
Hi @russellkondaveti,
Thank you for reporting this issue. This is an ANR we are investigating. I know you mentioned not being able to see many stack traces, but any chance some of the crashes show the other threads? This will give us more information on what the main thread is waiting on.
Also, could you please let us know:
- What Android versions and devices are seeing this ANR?
- How many users, and what percent of users are getting this?
Thanks for your help and patience as we investigate this issue.
Hi @nan-li ,
Here is the full stack trace,
Type
"Signal Catcher" daemon prio=10 tid=6 Runnable
#00 pc 00000000004b09a4 /apex/com.android.art/lib64/libart.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+140)
#00 pc 00000000005c0234 /apex/com.android.art/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool, BacktraceMap*, bool) const+372)
#00 pc 00000000005dd7d4 /apex/com.android.art/lib64/libart.so (art::DumpCheckpoint::Run(art::Thread*)+924)
#00 pc 00000000005d7644 /apex/com.android.art/lib64/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+532)
#00 pc 00000000005d67c4 /apex/com.android.art/lib64/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool)+1876)
#00 pc 00000000005d5c80 /apex/com.android.art/lib64/libart.so (art::ThreadList::DumpForSigQuit(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)+792)
#00 pc 0000000000580d74 /apex/com.android.art/lib64/libart.so (art::Runtime::DumpForSigQuit(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)+196)
#00 pc 0000000000596834 /apex/com.android.art/lib64/libart.so (art::SignalCatcher::HandleSigQuit()+1396)
#00 pc 00000000005957b8 /apex/com.android.art/lib64/libart.so (art::SignalCatcher::Run(void*)+384)
#00 pc 00000000000ed098 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
#00 pc 000000000008cb10 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
Type
"main" prio=5 tid=1 Blocked
at com.onesignal.LocationController.onFocusChange (LocationController.java:324)
at com.onesignal.OneSignal.onAppFocus (OneSignal.java:1402)
at com.onesignal.OSFocusHandler.startOnFocusWork (OSFocusHandler.kt:49)
at com.onesignal.ActivityLifecycleHandler.handleFocus (ActivityLifecycleHandler.java:191)
at com.onesignal.ActivityLifecycleHandler.onActivityResumed (ActivityLifecycleHandler.java:95)
at com.onesignal.ActivityLifecycleListener.onActivityResumed (ActivityLifecycleListener.java:91)
at android.app.Application.dispatchActivityResumed (Application.java:455)
at android.app.Activity.dispatchActivityResumed (Activity.java:1413)
at android.app.Activity.onResume (Activity.java:1945)
at androidx.fragment.app.FragmentActivity.onResume (FragmentActivity.java:455)
at com.keeptruckin.android.view.BaseFragmentActivity.onResume (BaseFragmentActivity.java:100)
at com.keeptruckin.android.view.RxBaseFragmentActivity.onResume (RxBaseFragmentActivity.java:31)
at android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1456)
at android.app.Activity.performResume (Activity.java:8353)
at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4908)
at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4955)
at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:52)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2336)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:246)
at android.app.ActivityThread.main (ActivityThread.java:8653)
at java.lang.reflect.Method.invoke (Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
Type
"Jit thread pool worker thread 0" daemon prio=5 tid=7 Native
#00 pc 0000000000086f8c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
#00 pc 00000000001b27a4 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
#00 pc 00000000005df550 /apex/com.android.art/lib64/libart.so (art::ThreadPool::GetTask(art::Thread*)+120)
#00 pc 00000000005de7d8 /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Run()+144)
#00 pc 00000000005de278 /apex/com.android.art/lib64/libart.so (art::ThreadPoolWorker::Callback(void*)+192)
#00 pc 00000000000ed098 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
#00 pc 000000000008cb10 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
Type
"HeapTaskDaemon" daemon prio=5 tid=8 WaitingForTaskProcessor
#00 pc 0000000000086f8c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
#00 pc 00000000001b27a4 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
#00 pc 00000000002ea45c /apex/com.android.art/lib64/libart.so (art::gc::TaskProcessor::GetTask(art::Thread*)+548)
#00 pc 00000000002eadac /apex/com.android.art/lib64/libart.so (art::gc::TaskProcessor::RunAllTasks(art::Thread*)+92)
at dalvik.system.VMRuntime.runHeapTasks (Native method)
at java.lang.Daemons$HeapTaskDaemon.runInternal (Daemons.java:531)
at java.lang.Daemons$Daemon.run (Daemons.java:139)
at java.lang.Thread.run (Thread.java:923)
Type
"ReferenceQueueDaemon" daemon prio=5 tid=9 Waiting
at java.lang.Object.wait (Native method)
at java.lang.Object.wait (Object.java:442)
at java.lang.Object.wait (Object.java:568)
at java.lang.Daemons$ReferenceQueueDaemon.runInternal (Daemons.java:217)
at java.lang.Daemons$Daemon.run (Daemons.java:139)
at java.lang.Thread.run (Thread.java:923)
Type
"FinalizerDaemon" daemon prio=5 tid=10 Waiting
at java.lang.Object.wait (Native method)
at java.lang.Object.wait (Object.java:442)
at java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:190)
at java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:211)
at java.lang.Daemons$FinalizerDaemon.runInternal (Daemons.java:273)
at java.lang.Daemons$Daemon.run (Daemons.java:139)
at java.lang.Thread.run (Thread.java:923)
Type
"FinalizerWatchdogDaemon" daemon prio=5 tid=11 Waiting
at java.lang.Object.wait (Native method)
at java.lang.Object.wait (Object.java:442)
at java.lang.Object.wait (Object.java:568)
at java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded (Daemons.java:341)
at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal (Daemons.java:321)
at java.lang.Daemons$Daemon.run (Daemons.java:139)
at java.lang.Thread.run (Thread.java:923)
Type
"Binder:4690_1" prio=5 tid=12 Native
#00 pc 00000000000d7f64 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
#00 pc 00000000000945f8 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+160)
#00 pc 0000000000052c6c /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+300)
#00 pc 0000000000052f28 /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
#00 pc 0000000000053b64 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+68)
#00 pc 000000000007bcc4 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+388)
#00 pc 000000000001567c /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260)
#00 pc 00000000000a47b4 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
#00 pc 0000000000014f14 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412)
#00 pc 00000000000ed098 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
#00 pc 000000000008cb10 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
Type
"Binder:4690_2" prio=5 tid=13 Native
#00 pc 00000000000d7f64 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
#00 pc 00000000000945f8 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+160)
#00 pc 0000000000052c6c /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+300)
#00 pc 0000000000052f28 /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
#00 pc 0000000000053b64 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+68)
#00 pc 000000000007bcc4 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+388)
#00 pc 000000000001567c /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260)
#00 pc 00000000000a47b4 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
#00 pc 0000000000014f14 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412)
#00 pc 00000000000ed098 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
#00 pc 000000000008cb10 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
Type
"Binder:4690_3" prio=5 tid=14 Native
#00 pc 00000000000d7f64 /apex/com.android.runtime/lib64/bionic/libc.so (__ioctl+4)
#00 pc 00000000000945f8 /apex/com.android.runtime/lib64/bionic/libc.so (ioctl+160)
#00 pc 0000000000052c6c /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+300)
#00 pc 0000000000052f28 /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+24)
#00 pc 0000000000053b64 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+68)
#00 pc 000000000007bcc4 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+388)
#00 pc 000000000001567c /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+260)
#00 pc 00000000000a47b4 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
#00 pc 0000000000014f14 /system/lib64/libutils.so (thread_data_t::trampoline(thread_data_t const*)+412)
#00 pc 00000000000ed098 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
#00 pc 000000000008cb10 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
Type
"Profile Saver" daemon prio=5 tid=15 Native
#00 pc 0000000000086f8c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)
#00 pc 00000000001b27a4 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks(art::Thread*)+148)
#00 pc 00000000003621a4 /apex/com.android.art/lib64/libart.so (art::ProfileSaver::Run()+484)
#00 pc 0000000000367048 /apex/com.android.art/lib64/libart.so (art::ProfileSaver::RunProfileSaverThread(void*)+176)
#00 pc 00000000000ed098 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64)
#00 pc 000000000008cb10 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
Type
"Crashlytics Exception Handler1" prio=5 tid=20 Waiting
at sun.misc.Unsafe.park (Native method)
at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2067)
at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at com.google.firebase.crashlytics.internal.common.w$a$a.a (SourceFile:1)
at com.google.firebase.crashlytics.internal.common.d.run (SourceFile:2)
at java.lang.Thread.run (Thread.java:923)
Type
"com.google.firebase.crashlytics.startup1" prio=5 tid=21 Waiting
at sun.misc.Unsafe.park (Native method)
at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2067)
at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at com.google.firebase.crashlytics.internal.common.w$a$a.a (SourceFile:1)
at com.google.firebase.crashlytics.internal.common.d.run (SourceFile:2)
at java.lang.Thread.run (Thread.java:923)
Type
"pool-6-thread-1" prio=5 tid=22 Waiting
at sun.misc.Unsafe.park (Native method)
at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2067)
at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:923)
Type
"awaitEvenIfOnMainThread task continuation executor1" prio=5 tid=23 Waiting
at sun.misc.Unsafe.park (Native method)
at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2067)
at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at com.google.firebase.crashlytics.internal.common.w$a$a.a (SourceFile:1)
at com.google.firebase.crashlytics.internal.common.d.run (SourceFile:2)
at java.lang.Thread.run (Thread.java:923)
Type
"queued-work-looper" prio=5 tid=25 Native
#00 pc 00000000000d8f28 /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+8)
#00 pc 0000000000019d88 /system/lib64/libutils.so (android::Looper::pollInner(int)+184)
#00 pc 0000000000019c68 /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112)
#00 pc 00000000001185e4 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)
at android.os.MessageQueue.nativePollOnce (Native method)
at android.os.MessageQueue.next (MessageQueue.java:335)
at android.os.Looper.loop (Looper.java:206)
at android.os.HandlerThread.run (HandlerThread.java:67)
Type
"WM.task-1" prio=5 tid=27 Waiting
at sun.misc.Unsafe.park (Native method)
at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2067)
at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:923)
Type
"ConnectivityThread" prio=5 tid=28 Native
#00 pc 00000000000d8f28 /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+8)
#00 pc 0000000000019d88 /system/lib64/libutils.so (android::Looper::pollInner(int)+184)
#00 pc 0000000000019c68 /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+112)
#00 pc 00000000001185e4 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)
at android.os.MessageQueue.nativePollOnce (Native method)
at android.os.MessageQueue.next (MessageQueue.java:335)
at android.os.Looper.loop (Looper.java:206)
at android.os.HandlerThread.run (HandlerThread.java:67)
Type
"WM.task-2" prio=5 tid=29 Waiting
at sun.misc.Unsafe.park (Native method)
at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2067)
at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
at java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1092)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
at java.lang.Thread.run (Thread.java:923)
Type
"WM.task-3" prio=5 tid=30 Waiting
at sun.misc.Unsafe.park (Native method)
at java.util.concurrent.locks.LockSupport.park (LockSupport.java:190)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2067)
at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:442)
What Android versions and devices are seeing this ANR?
Android 10 (SDK 29) | 246 | 37.60% |
---|---|---|
Android 11 (SDK 30) | 152 | 23.20% |
Android 9 (SDK 28) | 122 | 18.60% |
Android 7.1 (SDK 25) | 55 | 8.40% |
Android 8.1 (SDK 27) | 34 | 5.20% |
Android 8.0 (SDK 26) | 25 | 3.80% |
Android 5.1 (SDK 22) | 10 | 1.50% |
Android 7.0 (SDK 24) | 7 | 1.10% |
Android 6.0 (SDK 23) | 4 | 0.60% |
How many users, and what percent of users are getting this?
650 occurrences across 471 users. This is one of the top ANRs caused by OneSignal in our app.