Onesignal-android-sdk: How to fix crash IllegalThreadStateException?

Created on 27 Dec 2019  路  48Comments  路  Source: OneSignal/OneSignal-Android-SDK

Hello, how to fix this error?

Caused by java.lang.IllegalThreadStateException
       at java.lang.Thread.start(Thread.java:724)
       at com.onesignal.OneSignalPrefs$WritePrefHandlerThread.startDelayedWrite(OneSignalPrefs.java:117)
       at com.onesignal.OneSignalPrefs.startDelayedWrite(OneSignalPrefs.java:183)
       at com.onesignal.OneSignal.setAppContext(OneSignal.java:601)
       at com.onesignal.OneSignalSyncServiceUtils.doBackgroundSync(OneSignalSyncServiceUtils.java:175)
       at com.onesignal.SyncJobService.onStartJob(SyncJobService.java:40)
       at android.app.job.JobService$1.onStartJob(JobService.java:62)
       at android.app.job.JobServiceEngine$JobHandler.handleMessage(JobServiceEngine.java:108)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:280)
       at android.app.ActivityThread.main(ActivityThread.java:6748)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Medium Priority

Most helpful comment

Hey @rgomezp @jkasten2 @mikechoch

It's been a couple of weeks since I first reported this not being fixed, and we haven't really had any info here since. Any chance we can get an update on the situation? Sorry for asking, but I need to decide whether I make a release of my application with the OneSignal functionality removed, and knowing if this is going to take a long time to fix would really help!

Thanks in advance!

All 48 comments

Do you have steps to reproduce this issue?
What OneSignal SDK version are you using?
What device(s) cause the issue?

Unfortunately, I can't reproduce this issue. All crashes come from Crashlytics reports.
SDK version 3.12.4
Devices:
1) Samsung: Galaxy A5(2017), Galaxy S8, Galaxy A50, Galaxy S10+, Galaxy S10
2) Xiaomi: Mi A2, Mi A2 lite, Mi A1, Mi A3, Redmi Note 5 Pro
3) Oneplus: ONEPLUS A6010, OnePlus5T, GM191011, GM19008, OnePlus58

version of Android: 10 9, 8, 7

Same issue (

I'm getting the same issue from crashlytics and no reproducible steps.

@mikechoch here are 2 screenshots from Google Play Crashes with the device that triggered the crash.

  • Device: Galaxy A8
  • Android version: 9
  • OneSignal Android SDK: 3.12.4

Screen Shot 2020-01-14 at 11 25 06

and

Screen Shot 2020-01-14 at 11 25 29

hope it helps

image

Same here...

same problem occurs here - any timeframe for an update?

From the stack traces we have received it seems to point to a rare race condition of multiplier threads initializing the OneSignalPrefs but we haven't confirmed this.

Could you provide a full stack trace of all thread from your crash reports to confirm?

@jkasten2 hopefully it will help. My firebase Crashlitics stack trace:

100% samsung
Operating systems
100% Android 9
Fatal Exception: java.lang.IllegalThreadStateException
       at java.lang.Thread.start(Thread.java:724)
       at com.onesignal.OneSignalPrefs$WritePrefHandlerThread.startDelayedWrite(OneSignalPrefs.java:117)
       at com.onesignal.OneSignalPrefs.startDelayedWrite(OneSignalPrefs.java:183)
       at com.onesignal.OneSignal.setAppContext(OneSignal.java:601)
       at com.onesignal.RestoreKickoffJobService.startProcessing(RestoreKickoffJobService.java:15)
       at com.onesignal.OneSignalJobServiceBase$1.run(OneSignalJobServiceBase.java:22)
       at java.lang.Thread.run(Thread.java:764)
Measurement Worker
       at java.lang.Object.wait(Object.java)
       at java.lang.Object.wait(Object.java:422)
       at com.google.android.gms.measurement.internal.zzfx.run(com.google.android.gms:play-services-measurement-impl@@17.2.1:25)
OS_JOBSERVICE_BASE
OS_JOBSERVICE_BASE
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
       at java.util.concurrent.FutureTask.get(FutureTask.java:192)
       at com.crashlytics.android.core.CrashlyticsBackgroundWorker.submitAndWait(CrashlyticsBackgroundWorker.java:43)
       at com.crashlytics.android.core.CrashlyticsController.handleUncaughtException(CrashlyticsController.java:321)
       at com.crashlytics.android.core.CrashlyticsController$6.onUncaughtException(CrashlyticsController.java:301)
       at com.crashlytics.android.core.CrashlyticsUncaughtExceptionHandler.uncaughtException(CrashlyticsUncaughtExceptionHandler.java:42)
       at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)
       at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1063)
       at java.lang.Thread.dispatchUncaughtException(Thread.java:1955)



md5-0946e5a9ad926d489597e33fee90b140



OS_HTTPConnection
       at libcore.io.Linux.poll(Linux.java)
       at libcore.io.BlockGuardOs.poll(BlockGuardOs.java:219)
       at libcore.io.IoBridge.isConnected(IoBridge.java:259)
       at libcore.io.IoBridge.connectErrno(IoBridge.java:187)
       at libcore.io.IoBridge.connect(IoBridge.java:129)
       at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:137)
       at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
       at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
       at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
       at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
       at java.net.Socket.connect(Socket.java:621)
       at com.android.okhttp.internal.Platform.connectSocket(Platform.java:145)
       at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:1416)
       at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:1368)
       at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:219)
       at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:142)
       at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:104)
       at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:392)
       at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:325)
       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:470)
       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:258)
       at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218)
       at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:26)
       at com.onesignal.OneSignalRestClient.startHTTPConnection(OneSignalRestClient.java:160)
       at com.onesignal.OneSignalRestClient.access$100(OneSignalRestClient.java:44)
       at com.onesignal.OneSignalRestClient$4.run(OneSignalRestClient.java:108)
       at java.lang.Thread.run(Thread.java:764)



md5-0946e5a9ad926d489597e33fee90b140



OSH_WritePrefs
       at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
       at android.os.MessageQueue.next(MessageQueue.java:326)
       at android.os.Looper.loop(Looper.java:181)
       at android.os.HandlerThread.run(HandlerThread.java:65)



md5-0946e5a9ad926d489597e33fee90b140



Queue
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:548)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(DependencyPriorityBlockingQueue.java:197)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(DependencyPriorityBlockingQueue.java:236)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:65)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:46)
       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:764)



md5-0946e5a9ad926d489597e33fee90b140



OS_SYNCSRV_BG_SYNC
       at java.lang.Object.wait(Object.java)
       at java.lang.Object.wait(Object.java:422)
       at java.lang.Thread.join(Thread.java:1270)
       at com.onesignal.OneSignalRestClient.makeRequest(OneSignalRestClient.java:116)
       at com.onesignal.OneSignalRestClient.postSync(OneSignalRestClient.java:97)
       at com.onesignal.FocusTimeController$FocusTimeProcessorBase.sendOnFocusToPlayer(FocusTimeController.java:234)
       at com.onesignal.FocusTimeController$FocusTimeProcessorBase.sendOnFocus(FocusTimeController.java:255)
       at com.onesignal.FocusTimeController$FocusTimeProcessorBase.syncOnFocusTime(FocusTimeController.java:213)
       at com.onesignal.FocusTimeController$FocusTimeProcessorBase.syncUnsentTimeFromSyncJob(FocusTimeController.java:201)
       at com.onesignal.FocusTimeController$FocusTimeProcessorBase.access$100(FocusTimeController.java:139)
       at com.onesignal.FocusTimeController.doBlockingBackgroundSyncOfUnsentTime(FocusTimeController.java:70)
       at com.onesignal.OneSignalSyncServiceUtils$SyncRunnable$1.complete(OneSignalSyncServiceUtils.java:226)
       at com.onesignal.LocationGMS.fireComplete(LocationGMS.java:254)
       at com.onesignal.LocationGMS.fireFailedComplete(LocationGMS.java:239)
       at com.onesignal.LocationGMS.getLocation(LocationGMS.java:166)
       at com.onesignal.OneSignalSyncServiceUtils$SyncRunnable.run(OneSignalSyncServiceUtils.java:230)
       at java.lang.Thread.run(Thread.java:764)



md5-0946e5a9ad926d489597e33fee90b140



FinalizerDaemon
       at java.lang.Object.wait(Object.java)
       at java.lang.Object.wait(Object.java:422)
       at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:188)
       at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:209)
       at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:232)
       at java.lang.Daemons$Daemon.run(Daemons.java:103)
       at java.lang.Thread.run(Thread.java:764)



md5-0946e5a9ad926d489597e33fee90b140



Queue
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:548)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(DependencyPriorityBlockingQueue.java:197)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(DependencyPriorityBlockingQueue.java:236)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:65)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:46)
       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:764)



md5-0946e5a9ad926d489597e33fee90b140



Answers Events Handler1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1120)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:849)
       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 io.fabric.sdk.android.services.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:75)
       at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:30)
       at java.lang.Thread.run(Thread.java:764)



md5-0946e5a9ad926d489597e33fee90b140



firebase-iid-executor
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:868)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1021)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1328)
       at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:232)
       at com.google.android.gms.tasks.Tasks$zza.await(:9)
       at com.google.android.gms.tasks.Tasks.await(:22)
       at com.google.firebase.iid.zzao.zza(com.google.firebase:firebase-iid@@20.0.1:82)
       at com.google.firebase.iid.zzl.zza(com.google.firebase:firebase-iid@@20.0.1:78)
       at com.google.firebase.iid.zzn.run(:6)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at java.lang.Thread.run(Thread.java:764)



md5-0946e5a9ad926d489597e33fee90b140



Queue
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:548)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(DependencyPriorityBlockingQueue.java:197)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(DependencyPriorityBlockingQueue.java:236)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:65)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:46)
       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:764)



md5-0946e5a9ad926d489597e33fee90b140



Queue
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:548)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(DependencyPriorityBlockingQueue.java:197)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(DependencyPriorityBlockingQueue.java:236)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:65)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:46)
       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:764)



md5-0946e5a9ad926d489597e33fee90b140



FinalizerWatchdogDaemon
       at java.lang.Thread.sleep(Thread.java)
       at java.lang.Thread.sleep(Thread.java:373)
       at java.lang.Thread.sleep(Thread.java:314)
       at java.lang.Daemons$FinalizerWatchdogDaemon.sleepFor(Daemons.java:342)
       at java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization(Daemons.java:364)
       at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:281)
       at java.lang.Daemons$Daemon.run(Daemons.java:103)
       at java.lang.Thread.run(Thread.java:764)



md5-0946e5a9ad926d489597e33fee90b140



firebase-iid-executor
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
       at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
       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:764)



md5-0946e5a9ad926d489597e33fee90b140



Crashlytics Exception Handler1
       at dalvik.system.VMStack.getThreadStackTrace(VMStack.java)
       at java.lang.Thread.getStackTrace(Thread.java:1538)
       at java.lang.Thread.getAllStackTraces(Thread.java:1588)
       at com.crashlytics.android.core.CrashlyticsController.writeSessionEvent(CrashlyticsController.java:1340)
       at com.crashlytics.android.core.CrashlyticsController.writeFatal(CrashlyticsController.java:1027)
       at com.crashlytics.android.core.CrashlyticsController.access$500(CrashlyticsController.java:69)
       at com.crashlytics.android.core.CrashlyticsController$7.call(CrashlyticsController.java:328)
       at com.crashlytics.android.core.CrashlyticsController$7.call(CrashlyticsController.java:321)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at io.fabric.sdk.android.services.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:75)
       at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:30)
       at java.lang.Thread.run(Thread.java:764)



md5-0946e5a9ad926d489597e33fee90b140



Queue
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:548)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(DependencyPriorityBlockingQueue.java:197)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(DependencyPriorityBlockingQueue.java:236)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:65)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:46)
       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:764)



md5-0946e5a9ad926d489597e33fee90b140



Thread-16
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
       at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
       at com.google.android.gms.common.BlockingServiceConnection.getServiceWithTimeout(:11)
       at com.google.android.gms.ads.identifier.AdvertisingIdClient.zza(:4)
       at com.google.android.gms.ads.identifier.AdvertisingIdClient.zza(:27)
       at com.google.android.gms.ads.identifier.AdvertisingIdClient.getAdvertisingIdInfo(:47)
       at java.lang.reflect.Method.invoke(Method.java)
       at io.fabric.sdk.android.services.common.AdvertisingInfoReflectionStrategy.getInfo(AdvertisingInfoReflectionStrategy.java:106)
       at io.fabric.sdk.android.services.common.AdvertisingInfoReflectionStrategy.isLimitAdTrackingEnabled(AdvertisingInfoReflectionStrategy.java:91)
       at io.fabric.sdk.android.services.common.AdvertisingInfoReflectionStrategy.getAdvertisingInfo(AdvertisingInfoReflectionStrategy.java:66)
       at io.fabric.sdk.android.services.common.AdvertisingInfoProvider.getAdvertisingInfoFromStrategies(AdvertisingInfoProvider.java:118)
       at io.fabric.sdk.android.services.common.AdvertisingInfoProvider.access$000(AdvertisingInfoProvider.java:28)
       at io.fabric.sdk.android.services.common.AdvertisingInfoProvider$1.onRun(AdvertisingInfoProvider.java:70)
       at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:30)
       at java.lang.Thread.run(Thread.java:764)



md5-0946e5a9ad926d489597e33fee90b140



OkHttp ConnectionPool
       at java.lang.Object.wait(Object.java)
       at com.android.okhttp.ConnectionPool$1.run(ConnectionPool.java:101)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at java.lang.Thread.run(Thread.java:764)



md5-0946e5a9ad926d489597e33fee90b140



main
       at java.lang.Runtime.nativeLoad(Runtime.java)
       at java.lang.Runtime.load0(Runtime.java:926)
       at java.lang.System.load(System.java:1633)
       at com.facebook.soloader.SoLoader$1.load(SoLoader.java:393)
       at com.facebook.soloader.DirectorySoSource.loadLibraryFrom(DirectorySoSource.java:77)
       at com.facebook.soloader.UnpackingSoSource.loadLibrary(UnpackingSoSource.java:458)
       at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:731)
       at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:639)
       at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:587)
       at com.facebook.soloader.DirectorySoSource.loadDependencies(DirectorySoSource.java:111)
       at com.facebook.soloader.DirectorySoSource.loadLibraryFrom(DirectorySoSource.java:71)
       at com.facebook.soloader.UnpackingSoSource.loadLibrary(UnpackingSoSource.java:458)
       at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:731)
       at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:639)
       at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:587)
       at com.facebook.soloader.DirectorySoSource.loadDependencies(DirectorySoSource.java:111)
       at com.facebook.soloader.DirectorySoSource.loadLibraryFrom(DirectorySoSource.java:71)
       at com.facebook.soloader.UnpackingSoSource.loadLibrary(UnpackingSoSource.java:458)
       at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:731)
       at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:639)
       at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:577)
       at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:525)
       at com.facebook.react.ReactInstanceManagerBuilder.getDefaultJSExecutorFactory(ReactInstanceManagerBuilder.java:290)
       at com.facebook.react.ReactInstanceManagerBuilder.build(ReactInstanceManagerBuilder.java:265)
       at com.facebook.react.ReactNativeHost.createReactInstanceManager(ReactNativeHost.java:86)
       at com.facebook.react.ReactNativeHost.getReactInstanceManager(ReactNativeHost.java:38)
       at com.facebook.react.ReactDelegate.loadApp(ReactDelegate.java:103)
       at com.facebook.react.ReactActivityDelegate.loadApp(ReactActivityDelegate.java:88)
       at com.facebook.react.ReactActivityDelegate.onCreate(ReactActivityDelegate.java:83)
       at com.facebook.react.ReactActivity.onCreate(ReactActivity.java:44)
       at com.core.MainActivity.onCreate(MainActivity.java:24)
       at android.app.Activity.performCreate(Activity.java:7327)
       at android.app.Activity.performCreate(Activity.java:7318)
       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3094)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3257)
       at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
       at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1948)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:214)
       at android.app.ActivityThread.main(ActivityThread.java:7050)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)



md5-0946e5a9ad926d489597e33fee90b140



Queue
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:548)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(DependencyPriorityBlockingQueue.java:197)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(DependencyPriorityBlockingQueue.java:236)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:65)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:46)
       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:764)



md5-0946e5a9ad926d489597e33fee90b140



FirebaseInstanceId
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:1061)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1352)
       at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:278)
       at com.google.android.gms.tasks.Tasks$zza.await(:11)
       at com.google.android.gms.tasks.Tasks.await(:31)
       at com.google.firebase.iid.FirebaseInstanceId.zza(com.google.firebase:firebase-iid@@20.0.1:72)
       at com.google.firebase.iid.FirebaseInstanceId.getToken(com.google.firebase:firebase-iid@@20.0.1:68)
       at com.google.firebase.iid.FirebaseInstanceId.zzc(com.google.firebase:firebase-iid@@20.0.1:71)
       at com.google.firebase.iid.zzav.zzc(com.google.firebase:firebase-iid@@20.0.1:43)
       at com.google.firebase.iid.zzav.run(com.google.firebase:firebase-iid@@20.0.1:24)
       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:459)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at com.google.android.gms.common.util.concurrent.zza.run(:6)
       at java.lang.Thread.run(Thread.java:764)



md5-0946e5a9ad926d489597e33fee90b140



Queue
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:548)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(DependencyPriorityBlockingQueue.java:197)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(DependencyPriorityBlockingQueue.java:236)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:65)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:46)
       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:764)



md5-0946e5a9ad926d489597e33fee90b140



FocusHandlerThread
       at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
       at android.os.MessageQueue.next(MessageQueue.java:326)
       at android.os.Looper.loop(Looper.java:181)
       at android.os.HandlerThread.run(HandlerThread.java:65)



md5-0946e5a9ad926d489597e33fee90b140



MessengerIpcClient
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1132)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:849)
       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.android.gms.common.util.concurrent.zza.run(:6)
       at java.lang.Thread.run(Thread.java:764)



md5-0946e5a9ad926d489597e33fee90b140



queued-work-looper
       at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
       at android.os.MessageQueue.next(MessageQueue.java:326)
       at android.os.Looper.loop(Looper.java:181)
       at android.os.HandlerThread.run(HandlerThread.java:65)



md5-0946e5a9ad926d489597e33fee90b140



Queue
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:548)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(DependencyPriorityBlockingQueue.java:197)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(DependencyPriorityBlockingQueue.java:236)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:65)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:46)
       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:764)



md5-0946e5a9ad926d489597e33fee90b140



Queue
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
       at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:548)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.performOperation(DependencyPriorityBlockingQueue.java:197)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.get(DependencyPriorityBlockingQueue.java:236)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:65)
       at io.fabric.sdk.android.services.concurrency.DependencyPriorityBlockingQueue.take(DependencyPriorityBlockingQueue.java:46)
       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:764)



md5-0946e5a9ad926d489597e33fee90b140



ReferenceQueueDaemon
       at java.lang.Object.wait(Object.java)
       at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:178)
       at java.lang.Daemons$Daemon.run(Daemons.java:103)
       at java.lang.Thread.run(Thread.java:764)



md5-0946e5a9ad926d489597e33fee90b140



Crashlytics Report Uploader
       at java.lang.Thread.sleep(Thread.java)
       at java.lang.Thread.sleep(Thread.java:373)
       at java.lang.Thread.sleep(Thread.java:314)
       at com.crashlytics.android.core.ReportUploader$Worker.attemptUploadWithRetry(ReportUploader.java:200)
       at com.crashlytics.android.core.ReportUploader$Worker.onRun(ReportUploader.java:185)
       at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:30)
       at java.lang.Thread.run(Thread.java:764)

@alimek Thanks, there are 2 threads active that are or did go through the OneSignalPrefs.startDelayedWrite flow so this further points to this. We will add a synchronized or other safe guards to this in a future update.

Hey @mikechoch and @jkasten2 thanks for the fix! Do we have a timeline for when this is patched? I've been getting quite a few crashes in production in the past couple of days so just want to have an idea on whether I should stop OneSignal functionality temporarily or wait for fix if it's quick. Thanks again!

Hi all,

It seems this issue is not yet fixed. I just had a production crash on this after updating to the latest version. Screenshot of stack trace attached. Any chance you guys can have another look?

2020-02-04_18h08_11

I'm using the latest version of react-native-onesignal which is in turn using version 3.12.6 of this library.

2020-02-04_18h07_19

2020-02-04_18h11_00

Any help you guys can provide would be immensely helpful! Thanks!

@mikechoch the issue is still happening. 2 crashes on an updated version of our app. Can we open this again?

2020-02-06_10h44_31

Thanks!

Hey @rgomezp @jkasten2 @mikechoch

It's been a couple of weeks since I first reported this not being fixed, and we haven't really had any info here since. Any chance we can get an update on the situation? Sorry for asking, but I need to decide whether I make a release of my application with the OneSignal functionality removed, and knowing if this is going to take a long time to fix would really help!

Thanks in advance!

Hi everyone, we're working hard to resolve issues as soon as possible. Thank you for your patience and sorry for the inconvenience!

same we also had many crashes after upgrade to the latest version.

java.lang.Error: FATAL EXCEPTION [OS_JOBSERVICE_BASE]
Unity version : 2019.2.20f1
Device model : samsung SM-T590
Device fingerprint: samsung/gta2xlwifixx/gta2xlwifi:9/PPR1.180610.011/T590XXU3BTA1:user/release-keys
Caused by
at java.lang.Thread.start (Thread.java:724)
at com.onesignal.OneSignalPrefs$WritePrefHandlerThread.startDelayedWrite (OneSignalPrefs.java:117)
at com.onesignal.OneSignalPrefs.startDelayedWrite (OneSignalPrefs.java:183)
at com.onesignal.OneSignal.setAppContext (OneSignal.java:602)
at com.onesignal.RestoreKickoffJobService.startProcessing (RestoreKickoffJobService.java:15)
at com.onesignal.OneSignalJobServiceBase$1.run (OneSignalJobServiceBase.java:22)
at java.lang.Thread.run (Thread.java:764)

Any timeline for this fix? Our vitals are going for a toss , just because of this issue. It's costing us a lot.A timeline for this fix would be highly appreciated.

same we also had many crashes after upgrade to the 3.12.6 version.

Same here, our DAU on Android falling down, because of this error.

We first reported this as not fixed 4 weeks ago, and it is causing over 90% of the crashes on our app. Any chance of an ETA on the fix?

45% crash free users and this problem is still medium priority.

UPD: Can version downgrade solve the problem? If yes, please, provide version to downgrade.
@rgomezp

I've created problem on stackoverflow. Hope someone has workaround, feel free to contribute.

I came to know about this issue via this StackOverflow post.

I have been looking into the stack trace and library code and going to share the insights.

Issue: As per the logs, The issue is happening because start() is being called twice which is causing the java.lang.IllegalThreadStateException

Solution: After looking at the code and comment history, this should have been fixed with the synchronized commit by @mikechoch in 3.12.6 release.

The exception makes perfect sense without synchronized fix as startDelayedWrite can be invoked with save data and initContext , etc which will result in multiple invocations of start()

So either the old version is being used (could be Android studio cache ) or seems like the thread is in the process of termination and another one is being instantiated and threadStatus is mapped to older state with a non-zero value.

A possible quick fix would be creating new thread for each request or if (mHandler == null && !isAlive()) but it can further cause issue due to null handler.

or the SDK client (@Erumaru ) can override global-exception-handling for time being but it can affect the whole app behavior and strongly not recommended in production for long time, considering this case.

Summary - App Developers

  1. Confirm you have built your app with the OneSignal SDK 3.12.6 or newer.

    • You can confirm this by checking the All Users page on the OneSignal dashboard and showing the SDK version field. You should see 031206 for example for this version.

    • Check that any current crashes are also from the most recent version of your app only.

  2. I recommend checking if any calls made to OneSignal are wrapped with a try and catching a generic Throwable or Exception in your application code. If so you could be suppressing a java.lang.InternalError or java.lang.OutOfMemoryError error when OneSignal starts a thread, hiding this as the root cause.
  3. Please fix all other crashes in your app, the reported OneSignal crash could be a false positive. See https://github.com/OneSignal/OneSignal-Android-SDK/issues/917#issuecomment-602016660 for more details.
  4. Lastly reproducing the error is key. We haven't been able to do so yet and it is key to verify changes being made fix the issue.

@Pavneet-Sing Thanks for investigating as well.

First run of Thread.start

I took a deeper look at the Java Thread.start() implementation and wasn't able to see any cases where IllegalThreadStateException could be thrown on the first call as you have noted.
Source from Android-28 for reference:

 /**
     * Causes this thread to begin execution; the Java Virtual Machine
     * calls the <code>run</code> method of this thread.
     * <p>
     * The result is that two threads are running concurrently: the
     * current thread (which returns from the call to the
     * <code>start</code> method) and the other thread (which executes its
     * <code>run</code> method).
     * <p>
     * It is never legal to start a thread more than once.
     * In particular, a thread may not be restarted once it has completed
     * execution.
     *
     * @exception  IllegalThreadStateException  if the thread was already
     *               started.
     * @see        #run()
     * @see        #stop()
     */
    public synchronized void start() {
        /**
         * This method is not invoked for the main method thread or "system"
         * group threads created/set up by the VM. Any new functionality added
         * to this method in the future may have to also be added to the VM.
         *
         * A zero status value corresponds to state "NEW".
         */
        // Android-changed: throw if 'started' is true
        if (threadStatus != 0 || started)
            throw new IllegalThreadStateException();

        /* Notify the group that this thread is about to be started
         * so that it can be added to the group's list of threads
         * and the group's unstarted count can be decremented. */
        group.add(this);

        started = false;
        try {
            nativeCreate(this, stackSize, daemon);
            started = true;
        } finally {
            try {
                if (!started) {
                    group.threadStartFailed(this);
                }
            } catch (Throwable ignore) {
                /* do nothing. If start0 threw a Throwable then
                  it will be passed up the call stack */
            }
        }
    }

2nd run of Thread.start

However what could be happening is if the call to nativeCreate() in Thread.start() is throwing, but before it does if threadStatus is set to a non-zero value. When this happens OneSignal SDK maybe catching this exception somewhere lower in the stack and proceeding silently. This would then result in mHandler still being null on WritePrefHandlerThread. Then startDelayedWrite maybe calling Thread.start() 2nd time resulting in the stack trace that is being reported here on Thread.java:724.

if (threadStatus != 0 || started)
   throw new IllegalThreadStateException();

Thread's nativeCreate can throw

The call to nativeCreate() can throw an exception in some specific cases, some of which have been reported to OneSignal in the past such as:

  • java.lang.InternalError - Thread starting during runtime shutdown
  • java.lang.OutOfMemoryError - pthread_create (XXXXKB stack) failed: Try again

Native C code writes to threadStatus

The last question to confirm is if threadStatus is really modified, if you view the source of Thread.java in Android Studio when using compileSDK 28 you won't see any writes to threadStatus. This is a commit that removes threadStatus for Android 10 (API 29) but adds an note to confirm threadStatus was being modified by native code before this commit.
https://cs.android.com/android/_/android/platform/libcore/+/8c9f027e9d487ff67070318db14fa5fc1bcfe908:ojluni/src/main/java/java/lang/Thread.java;l=233-248;dlc=4a3e77d13263a41633a5522561e7bec4a2301716;drc=4e17ca1a1f05e1d9064ab964df5bf3ea0e167875;bpv=1;bpt=0

    // BEGIN Android-changed: Replace unused threadStatus field with started field.
    // Upstream this is modified by the native code and read in the start() and getState() methods
    // but in Android it is unused. The threadStatus is essentially an internal representation of
    // the Thread.State enum. Android uses two sources for that information, the native thread
    // state and the started field. The reason two sources are needed is because the native thread
    // is created when the thread is started and destroyed when the thread is stopped. That means
    // that the native thread state does not exist before the Thread has started (in State.NEW) or
    // after it has been stopped (in State.TERMINATED). In that case (i.e. when the nativePeer = 0)
    // the started field differentiates between the two states, i.e. if started = false then the
    // thread is in State.NEW and if started = true then the thread is in State.TERMINATED.
    // private volatile int threadStatus = 0;
    /**
     * True if the the Thread has been started, even it has since been stopped.
     */
    boolean started = false;
    // END Android-changed: Replace unused threadStatus field with started field.

Also noted in this Android 10 commit the throw for IllegalThreadStateException now looks like this and is on line 867.

        if (started)
            throw new IllegalThreadStateException();

Summary - OneSignal SDK Issue

So to conclude, the next steps for this will be to investigate all entry points into startDelayedWrite in the OneSignal SDK that could be catching more than it should. Such as anything that might be catching Throwable. Since all writes made to SharedPreferences will first call startDelayedWrite the case noted above is likely, however this means searching through the code base will be more extensive. However replacing all overly generic catches in the SDK would most likely resolve this exact crash. This will then uncover the root cause where nativeCreate() is most likely throwing
java.lang.InternalError or java.lang.OutOfMemoryError.

@jkasten2 Great insights.

  1. The first run should be fine though the mystery is mHandler should be null to trigger the start() so it seems like the exception is being thrown during the first run(considering the synchronized change) as the mHandler won't be null next time.

  2. 2nd run of Thread.start : I went through this Thread starting during runtime shutdown crash issue and it make sense though I did spend some time during my R&D last time and couldn't find any implementation of exception suppression in SDK for OneSignalPrefs initialization though i didn't use any IDE so there could be a slight possibility that I missed something with global search in SDK although could be possible that some clients(user) are suppressing the exceptions etc.

  3. Android R is still unstable and even has some issues with UI (Bubble) etc so there's a slight possibility that it's due to the platform itself.

As you've said, the need to reproduce the issue is the key though I would prefer the reproduction steps on stable release for further R&D consideration.

Summary - App Developers

1. Fix other crash reports in your app

The number of IllegalThreadStateException crashes you are seeing with OneSignal could be a function of the number of other crashes you are getting in your app. I recommend addressing all other high count crashes in your app.
See the "Related Crash" section below on why this is most likely the case.

2. Related Crash

Please check if you have the following exception as well in your crash reports, regardless if they included com.onesignal in the stack trace or not.

java.lang.InternalError: Thread starting during runtime shutdown`
   at java.lang.Thread.nativeCreate(Native Method)
   at java.lang.Thread.start(Thread.java:1063)

If present, this will confirm the crash reporter (such as Crashlytics) in your app taking too long to report the crash and other threads are starting while it is reporting the crash. If the above InternalError error has com.onesignal in the stack trace then this would case the IllegalThreadStateException reported here too. However the InternalError crash may not be reported if OneSignal or your app is catching that exception. So even if you don't see this it can't be ruled out.

SDK Details

Another red herring to this issue is that Crashlytics in some case maybe taking to long to log the exception. If Crashlytics Thread.UncaughtExceptionHandler takes more than a few seconds any calls to Thread.start will start throwing with java.lang.InternalError: Thread starting during runtime shutdown.
For reference, here is one of the Crashlytics threads running when OneSignal got a java.lang.IllegalThreadStateException thrown when it tried to call Thread.start

Crashlytics Exception Handler1
       at dalvik.system.VMStack.getThreadStackTrace(VMStack.java)
       at java.lang.Thread.getStackTrace(Thread.java:1538)
       at java.lang.Thread.getAllStackTraces(Thread.java:1588)
       at com.crashlytics.android.core.CrashlyticsController.writeSessionEvent(CrashlyticsController.java:1340)
       at com.crashlytics.android.core.CrashlyticsController.writeFatal(CrashlyticsController.java:1027)
       at com.crashlytics.android.core.CrashlyticsController.access$500(CrashlyticsController.java:69)
       at com.crashlytics.android.core.CrashlyticsController$7.call(CrashlyticsController.java:328)
       at com.crashlytics.android.core.CrashlyticsController$7.call(CrashlyticsController.java:321)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at io.fabric.sdk.android.services.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:75)
       at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:30)
       at java.lang.Thread.run(Thread.java:764)

See https://github.com/OneSignal/OneSignal-Android-SDK/issues/917#issuecomment-577347301 above for the stack trace of all threads. This comment added before the synchronized was put into place in the OneSignal SDK but if java.lang.IllegalThreadStateException thrown when it tried to call Thread.start was thrown then caught (by the SDK or app codebase) then the IllegalThreadStateException will happen next.

For reference here is the Crashlytics codebase where the report is uploaded where it could be waiting for a while:
https://github.com/firebase/firebase-android-sdk/blob/3f5146f6908b46e9db917e2af5e555f25b045973/firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/report/ReportUploader.java#L155-L165

The IllegalThreadStateException will no longer be thrown in the 3.13.0 Release. You will now see the root exception being thrown instead so these crashes can be diagnosed further.

The following PRs were included in 3.13.0 for reference:

@jkasten2 ok thanks for the work, hopefully we will be able to see what's causing the crashes in our respective apps now. @mikechoch can we get an updated version of the react native port using the latest Android SDK? Thanks!

Are you planning to updated UnitySDK soon? Experiencing lots of crashes due to this error with the latest 2.11.4 release as well

Same thing here, I also see a lot of crashes in our Unity game. Thank you for your work!

Same here

Same here

Caused by java.lang.IllegalThreadStateException
       at java.lang.Thread.start(Thread.java:724)
       at com.onesignal.OneSignalPrefs$WritePrefHandlerThread.startThread(OneSignalPrefs.java:174)
       at com.onesignal.OneSignalPrefs$WritePrefHandlerThread.startDelayedWrite(OneSignalPrefs.java:137)
       at com.onesignal.OneSignalPrefs.startDelayedWrite(OneSignalPrefs.java:238)
       at com.onesignal.OneSignal.setAppContext(OneSignal.java:609)
       at com.onesignal.OneSignalSyncServiceUtils.doBackgroundSync(OneSignalSyncServiceUtils.java:178)
       at com.onesignal.SyncJobService.onStartJob(SyncJobService.java:40)
       at android.app.job.JobService$1.onStartJob(JobService.java:62)
       at android.app.job.JobServiceEngine$JobHandler.handleMessage(JobServiceEngine.java:108)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:214)
       at android.app.ActivityThread.main(ActivityThread.java:7099)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)

Devices
100% samsung

Operating systems
100% Android 9

Device states
100% background

@iballan Thanks for reporting. From the stacktrace I see you are using the 3.13.0+SDK but it seems it did not fix the IllegalThreadStateException for you. We will need so more details to find what the next action is.

  1. Are you able to reproduce this issue? If so:

    • Please provide exact steps

    • Any errors / warnings in the logcat before this crash?

    • Which device models

  2. What is exception message after java.lang.IllegalThreadStateException:?

    • Crash reporters don't always include this but if you reproduce it is included in the logcat.

@jkasten2
Yes I used latest version OneSignal:3.13.1.
This is probably the same user's crash report but from Google Play, the one above was from Firebase Crashlytics:

Samsung Galaxy A30 (a30), 3840MB RAM, Android 9

java.lang.RuntimeException: 
  at android.app.job.JobServiceEngine$JobHandler.handleMessage (JobServiceEngine.java:112)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:214)
  at android.app.ActivityThread.main (ActivityThread.java:7099)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:494)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)

Caused by: java.lang.IllegalThreadStateException: 
  at java.lang.Thread.start (Thread.java:724)
  at com.onesignal.OneSignalPrefs$WritePrefHandlerThread.startThread (OneSignalPrefs.java:174)
  at com.onesignal.OneSignalPrefs$WritePrefHandlerThread.startDelayedWrite (OneSignalPrefs.java:137)
  at com.onesignal.OneSignalPrefs.startDelayedWrite (OneSignalPrefs.java:238)
  at com.onesignal.OneSignal.setAppContext (OneSignal.java:609)
  at com.onesignal.OneSignalSyncServiceUtils.doBackgroundSync (OneSignalSyncServiceUtils.java:178)
  at com.onesignal.SyncJobService.onStartJob (SyncJobService.java:40)
  at android.app.job.JobService$1.onStartJob (JobService.java:62)
  at android.app.job.JobServiceEngine$JobHandler.handleMessage (JobServiceEngine.java:108)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loop (Looper.java:214)
  at android.app.ActivityThread.main (ActivityThread.java:7099)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:494)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)

No, unfortunately I am not able to reproduce it, While i was testing on my device and simulators it was working fine. I recently updated my app and got this report.

@iballan Thanks for checking, it looks like the same stack trace.

Can you attach the stacktraces of all threads from Crashlytics as a log file? It should look like this https://github.com/OneSignal/OneSignal-Android-SDK/issues/917#issuecomment-577347301

Hello @jkasten2

Fatal Exception: java.lang.IllegalThreadStateException
Thread already started
java.lang.Thread.checkNotStarted (Thread.java:849)
java.lang.Thread.start (Thread.java:1059)
com.onesignal.OneSignalPrefs$WritePrefHandlerThread.startThread (OneSignalPrefs.java:174)
com.onesignal.OneSignalPrefs$WritePrefHandlerThread.startDelayedWrite (OneSignalPrefs.java:137)
com.onesignal.OneSignalPrefs.startDelayedWrite (OneSignalPrefs.java:238)
com.onesignal.OneSignal.setAppContext (OneSignal.java:609)
com.onesignal.RestoreKickoffJobService.startProcessing (RestoreKickoffJobService.java:15)
com.onesignal.OneSignalJobServiceBase$1.run (OneSignalJobServiceBase.java:22)
java.lang.Thread.run (Thread.java:818)

GoogleApiHandler
android.os.MessageQueue.nativePollOnce (MessageQueue.java)
android.os.MessageQueue.next (MessageQueue.java:143)
android.os.Looper.loop (Looper.java:130)
android.os.HandlerThread.run (HandlerThread.java:61)

pool-15-thread-1
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:197)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2055)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1060)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:776)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
java.lang.Thread.run (Thread.java:818)

pool-3-thread-1
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:157)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2016)
java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:410)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
java.lang.Thread.run (Thread.java:818)

AsyncTask #4
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:157)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2016)
java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:410)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
java.lang.Thread.run (Thread.java:818)

Measurement Worker
android.database.sqlite.SQLiteConnection.nativeClose (SQLiteConnection.java)
android.database.sqlite.SQLiteConnection.dispose (SQLiteConnection.java:390)
android.database.sqlite.SQLiteConnection.close (SQLiteConnection.java:307)
android.database.sqlite.SQLiteConnectionPool.closeConnectionAndLogExceptionsLocked (SQLiteConnectionPool.java:593)
android.database.sqlite.SQLiteConnectionPool.closeAvailableConnectionsAndLogExceptionsLocked (SQLiteConnectionPool.java:566)
android.database.sqlite.SQLiteConnectionPool.dispose (SQLiteConnectionPool.java:256)
android.database.sqlite.SQLiteConnectionPool.close (SQLiteConnectionPool.java:235)
android.database.sqlite.SQLiteDatabase.dispose (SQLiteDatabase.java:300)
android.database.sqlite.SQLiteDatabase.onAllReferencesReleased (SQLiteDatabase.java:277)
android.database.sqlite.SQLiteClosable.releaseReference (SQLiteClosable.java:74)
android.database.sqlite.SQLiteClosable.close (SQLiteClosable.java:106)
com.google.android.gms.measurement.internal.zzff.zza (zzff.java:58)
com.google.android.gms.measurement.internal.zzff.zza (zzff.java:100)
com.google.android.gms.measurement.internal.zziz.zza (zziz.java:62)
com.google.android.gms.measurement.internal.zzhr.zza (zzhr.java:326)
com.google.android.gms.measurement.internal.zzhw.run (zzhw.java:2)
java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:422)
java.util.concurrent.FutureTask.run (FutureTask.java:237)
com.google.android.gms.measurement.internal.zzgn.run (zzgn.java:21)

GAC_Executor[1]
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:197)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2055)
java.util.concurrent.LinkedBlockingQueue.poll (LinkedBlockingQueue.java:435)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
com.google.android.gms.common.util.concurrent.zza.run (zza.java:6)
java.lang.Thread.run (Thread.java:818)

pool-2-thread-1
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:197)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2055)
java.util.concurrent.LinkedBlockingQueue.poll (LinkedBlockingQueue.java:435)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
java.lang.Thread.run (Thread.java:818)

AsyncTask #1
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:157)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2016)
java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:410)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
java.lang.Thread.run (Thread.java:818)

AsyncTask #3
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:157)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2016)
java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:410)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
java.lang.Thread.run (Thread.java:818)

GCDaemon
java.lang.Object.wait (Object.java)
java.lang.Daemons$GCDaemon.run (Daemons.java:359)
java.lang.Thread.run (Thread.java:818)

Firebase-Messaging-Trigger-Topics-Io
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:197)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2055)
java.util.concurrent.LinkedBlockingQueue.poll (LinkedBlockingQueue.java:435)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
com.google.android.gms.common.util.concurrent.zza.run (zza.java:6)
java.lang.Thread.run (Thread.java:818)

Crashlytics Exception Handler1
dalvik.system.VMStack.getThreadStackTrace (VMStack.java)
java.lang.Thread.getStackTrace (Thread.java:580)
java.lang.Thread.getAllStackTraces (Thread.java:522)
com.google.firebase.crashlytics.internal.common.CrashlyticsController.writeSessionEvent (CrashlyticsController.java:1426)
com.google.firebase.crashlytics.internal.common.CrashlyticsController.writeFatal (CrashlyticsController.java:1174)
com.google.firebase.crashlytics.internal.common.CrashlyticsController.access$600 (CrashlyticsController.java:91)
com.google.firebase.crashlytics.internal.common.CrashlyticsController$6.call (CrashlyticsController.java:401)
com.google.firebase.crashlytics.internal.common.CrashlyticsController$6.call (CrashlyticsController.java:393)
com.google.firebase.crashlytics.internal.common.CrashlyticsBackgroundWorker$3.then (CrashlyticsBackgroundWorker.java:106)
com.google.android.gms.tasks.zzg.run (zzg.java:2)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1112)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun (ExecutorUtils.java:60)
com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run (BackgroundPriorityRunnable.java:27)
java.lang.Thread.run (Thread.java:818)

firebase-installations-executor-佟
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:197)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2055)
java.util.concurrent.LinkedBlockingQueue.poll (LinkedBlockingQueue.java:435)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
java.lang.Thread.run (Thread.java:818)

OkHttp ConnectionPool
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:197)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2055)
java.util.concurrent.LinkedBlockingQueue.poll (LinkedBlockingQueue.java:435)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
java.lang.Thread.run (Thread.java:818)

firebase-installations-executor-佗
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:197)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2055)
java.util.concurrent.LinkedBlockingQueue.poll (LinkedBlockingQueue.java:435)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
java.lang.Thread.run (Thread.java:818)

OSH_WritePrefs
android.os.MessageQueue.nativePollOnce (MessageQueue.java)
android.os.MessageQueue.next (MessageQueue.java:143)
android.os.Looper.loop (Looper.java:130)
android.os.HandlerThread.run (HandlerThread.java:61)
HeapTrimmerDaemon
dalvik.system.VMRuntime.trimHeap (VMRuntime.java)
java.lang.Daemons$HeapTrimmerDaemon.run (Daemons.java:328)
java.lang.Thread.run (Thread.java:818)

pool-13-thread-1
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:197)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2055)
java.util.concurrent.LinkedBlockingQueue.poll (LinkedBlockingQueue.java:435)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
java.lang.Thread.run (Thread.java:818)

OSH_LocationHandlerThread
android.os.MessageQueue.nativePollOnce (MessageQueue.java)
android.os.MessageQueue.next (MessageQueue.java:143)
android.os.Looper.loop (Looper.java:130)
android.os.HandlerThread.run (HandlerThread.java:61)

ReferenceQueueDaemon
java.lang.Object.wait (Object.java)
java.lang.Daemons$ReferenceQueueDaemon.run (Daemons.java:149)
java.lang.Thread.run (Thread.java:818)

AsyncTask #2
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:157)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2016)
java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:410)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
java.lang.Thread.run (Thread.java:818)

OS_SYNCSRV_BG_SYNC
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:157)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2016)
java.util.concurrent.ArrayBlockingQueue.take (ArrayBlockingQueue.java:373)
com.onesignal.OneSignalSyncServiceUtils$SyncRunnable.run (OneSignalSyncServiceUtils.java:236)
java.lang.Thread.run (Thread.java:818)

firebase-iid-executor
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:197)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2055)
java.util.concurrent.LinkedBlockingQueue.poll (LinkedBlockingQueue.java:435)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
com.google.android.gms.common.util.concurrent.zza.run (zza.java:6)
java.lang.Thread.run (Thread.java:818)

pool-6-thread-1
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:157)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2016)
java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:410)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
java.lang.Thread.run (Thread.java:818)

com.google.firebase.crashlytics.startup1
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:157)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2016)
java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:410)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun (ExecutorUtils.java:60)
com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run (BackgroundPriorityRunnable.java:27)
java.lang.Thread.run (Thread.java:818)

AsyncTask #5
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:157)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2016)
java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:410)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
java.lang.Thread.run (Thread.java:818)

FinalizerDaemon
java.lang.Object.wait (Object.java)
java.lang.Object.wait (Object.java:422)
java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:101)
java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:72)
java.lang.Daemons$FinalizerDaemon.run (Daemons.java:189)
java.lang.Thread.run (Thread.java:818)

OS_GMS_LOCATION_FALLBACK
java.lang.Thread.sleep (Thread.java)
java.lang.Thread.sleep (Thread.java:1031)
java.lang.Thread.sleep (Thread.java:985)
com.onesignal.LocationGMS$2.run (LocationGMS.java:283)
java.lang.Thread.run (Thread.java:818)

GAC_Executor[0]
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:197)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos (AbstractQueuedSynchronizer.java:2055)
java.util.concurrent.LinkedBlockingQueue.poll (LinkedBlockingQueue.java:435)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
com.google.android.gms.common.util.concurrent.zza.run (zza.java:6)
java.lang.Thread.run (Thread.java:818)

main
android.os.MessageQueue.nativePollOnce (MessageQueue.java)
android.os.MessageQueue.next (MessageQueue.java:143)
android.os.Looper.loop (Looper.java:130)
android.app.ActivityThread.main (ActivityThread.java:6917)
java.lang.reflect.Method.invoke (Method.java)
java.lang.reflect.Method.invoke (Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1404)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1199)

TokenRefresher
android.os.MessageQueue.nativePollOnce (MessageQueue.java)
android.os.MessageQueue.next (MessageQueue.java:143)
android.os.Looper.loop (Looper.java:130)
android.os.HandlerThread.run (HandlerThread.java:61)

pool-16-thread-1
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:157)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2016)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:1048)
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take (ScheduledThreadPoolExecutor.java:776)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
java.lang.Thread.run (Thread.java:818)

OS_JOBSERVICE_BASE
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:157)
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt (AbstractQueuedSynchronizer.java:813)
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly (AbstractQueuedSynchronizer.java:973)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly (AbstractQueuedSynchronizer.java:1281)
java.util.concurrent.CountDownLatch.await (CountDownLatch.java:202)
com.google.firebase.crashlytics.internal.common.Utils.awaitEvenIfOnMainThread (Utils.java:185)
com.google.firebase.crashlytics.internal.common.CrashlyticsController.handleUncaughtException (CrashlyticsController.java:447)
com.google.firebase.crashlytics.internal.common.CrashlyticsController$5.onUncaughtException (CrashlyticsController.java:365)
com.google.firebase.crashlytics.internal.common.CrashlyticsUncaughtExceptionHandler.uncaughtException (CrashlyticsUncaughtExceptionHandler.java:54)
java.lang.ThreadGroup.uncaughtException (ThreadGroup.java:693)
java.lang.ThreadGroup.uncaughtException (ThreadGroup.java:690)

FinalizerWatchdogDaemon
java.lang.Thread.sleep (Thread.java)
java.lang.Thread.sleep (Thread.java:1031)
java.lang.Thread.sleep (Thread.java:985)
java.lang.Daemons$FinalizerWatchdogDaemon.sleepFor (Daemons.java:273)
java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization (Daemons.java:284)
java.lang.Daemons$FinalizerWatchdogDaemon.run (Daemons.java:232)
java.lang.Thread.run (Thread.java:818)

awaitEvenIfOnMainThread task continuation executor1
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.park (LockSupport.java:157)
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:2016)
java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:410)
java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1035)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1097)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun (ExecutorUtils.java:60)
com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run (BackgroundPriorityRunnable.java:27)
java.lang.Thread.run (Thread.java:818)

pool-17-thread-1
java.lang.Object.wait (Object.java)
java.lang.Thread.parkFor (Thread.java:1220)
sun.misc.Unsafe.park (Unsafe.java:299)
java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:197)
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos (AbstractQueuedSynchronizer.java:1014)
java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos (AbstractQueuedSynchronizer.java:1304)
java.util.concurrent.CountDownLatch.await (CountDownLatch.java:248)
com.google.firebase.crashlytics.internal.common.CrashlyticsController$BlockingCrashEventListener.awaitEvent (CrashlyticsController.java:1743)
com.google.firebase.crashlytics.internal.common.CrashlyticsController$23.call (CrashlyticsController.java:1793)
com.google.firebase.crashlytics.internal.common.CrashlyticsController$23.call (CrashlyticsController.java:1769)
com.google.android.gms.tasks.zzz.run (zzz.java:2)
java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:422)
java.util.concurrent.FutureTask.run (FutureTask.java:237)
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201 (ScheduledThreadPoolExecutor.java:152)
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run (ScheduledThreadPoolExecutor.java:265)
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1112)
java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
java.lang.Thread.run (Thread.java:818)

Wish this helps

I noticed that the issue happened when i moved the OneSignal.startInit from Application class to Splash Activity

@iballan It possible moving that could be related, but hard to say. Anyway it is recommend initialize OneSignal from your Application.onCreate class to rule out any possibles where it may not be called.

We are now catching even Throwable to find the root cause of the error in PR #993. It will be included in the next release.

We just released the PR #993 today in our 3.12.2 release. As noted above, since we are catching Throwable now this time all possible exceptions will be accounted for so the root cause should found on future exceptions.

same we also had many crashes after upgrade to the 3.13.2 version.

@M2dL1fe Can you post the full ANR stacktrace like https://github.com/OneSignal/OneSignal-Android-SDK/issues/917#issuecomment-615873549?

Also let us know Android versions and device manufacturers getting the crash with the 3.13.2 SDK

@jkasten2
image
image

@M2dL1fe Thanks, this was helpful in finding the root cause!

We have fixed the issue in PR #1019 and it will be included in the next release.

Thanks for everyone's help on reporting these stacktrace and @Pavneet-Sing deep dive into the issue as well.

@jkasten2 Welcome and Thanks.

I have a lot of this type of error in crashlytics.
Can someone help me? How can i fix this?

image

@jkasten2

OneSignal v3.13.2

Devices:
Galaxy J8
Galaxy J8
Galaxy J7 Pro
Galaxy S9
Galaxy A20s
Galaxy A20
Galaxy J4
Galaxy A8(2018)
Galaxy Note9
LGE(K50S, LM-X520, LG K40)
TCL (ALCATEL ONETOUCH POP 3)

Android versions:
Android 9
Android 10
Android 5

Screenshot 2020-08-18 at 09 32 24

Fatal Exception: java.lang.IllegalThreadStateException: Thread has state: RUNNABLE
       at java.lang.Thread.start(Thread.java:724)
       at com.onesignal.OneSignalPrefs$WritePrefHandlerThread.startThread(OneSignalPrefs.java:201)
       at com.onesignal.OneSignalPrefs$WritePrefHandlerThread.startDelayedWrite(OneSignalPrefs.java:142)
       at com.onesignal.OneSignalPrefs$WritePrefHandlerThread.access$200(OneSignalPrefs.java:125)
       at com.onesignal.OneSignalPrefs.startDelayedWrite(OneSignalPrefs.java:282)
       at com.onesignal.OneSignal.setAppContext(OneSignal.java:607)
       at com.onesignal.RestoreKickoffJobService.startProcessing(RestoreKickoffJobService.java:15)
       at com.onesignal.OneSignalJobServiceBase$1.run(OneSignalJobServiceBase.java:22)
       at java.lang.Thread.run(Thread.java:764)

Measurement Worker
       at android.os.BinderProxy.transactNative(BinderProxy.java)
       at android.os.BinderProxy.transact(BinderProxy.java:1145)
       at com.google.android.gms.internal.measurement.zza.zzb(zza.java:21)
       at com.google.android.gms.measurement.internal.zzeo.zza(zzeo.java:11)
       at com.google.android.gms.measurement.internal.zzir.zza(zzir.java:41)
       at com.google.android.gms.measurement.internal.zziw.run(zziw.java:8)
       at com.google.android.gms.measurement.internal.zzir.zzan(zzir.java:285)
       at com.google.android.gms.measurement.internal.zzir.zza(zzir.java:245)
       at com.google.android.gms.measurement.internal.zzjn.run(zzjn.java:6)
       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:459)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       at com.google.android.gms.measurement.internal.zzfz.run(zzfz.java:21)

FinalizerWatchdogDaemon
       at java.lang.Thread.sleep(Thread.java)
       at java.lang.Thread.sleep(Thread.java:373)
       at java.lang.Thread.sleep(Thread.java:314)
       at java.lang.Daemons$FinalizerWatchdogDaemon.sleepFor(Daemons.java:342)
       at java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization(Daemons.java:364)
       at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:281)
       at java.lang.Daemons$Daemon.run(Daemons.java:103)
       at java.lang.Thread.run(Thread.java:764)

OS_HTTPConnection
       at libcore.io.Linux.poll(Linux.java)
       at libcore.io.BlockGuardOs.poll(BlockGuardOs.java:219)
       at libcore.io.IoBridge.isConnected(IoBridge.java:259)
       at libcore.io.IoBridge.connectErrno(IoBridge.java:187)
       at libcore.io.IoBridge.connect(IoBridge.java:129)
       at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:137)
       at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
       at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
       at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
       at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
       at java.net.Socket.connect(Socket.java:621)
       at com.android.okhttp.internal.Platform.connectSocket(Platform.java:145)
       at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:1416)
       at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:1368)
       at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:219)
       at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:142)
       at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:104)
       at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:392)
       at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:325)
       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:488)
       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131)
       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:262)
       at 

com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218)
       at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:26)
       at com.google.firebase.perf.network.zzf.getOutputStream(zzf.java:67)
       at com.google.firebase.perf.network.zzc.getOutputStream(zzc.java:13)
       at com.onesignal.OneSignalRestClient.startHTTPConnection(OneSignalRestClient.java:163)
       at com.onesignal.OneSignalRestClient.access$100(OneSignalRestClient.java:44)
       at com.onesignal.OneSignalRestClient$4.run(OneSignalRestClient.java:110)
       at java.lang.Thread.run(Thread.java:764)


Firebase-Messaging-Trigger-Topics-Io
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
       at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at com.google.android.gms.common.util.concurrent.zza.run(zza.java:6)
       at java.lang.Thread.run(Thread.java:764)


pool-12-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:461)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:937)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
       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:764)


queued-work-looper
       at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
       at android.os.MessageQueue.next(MessageQueue.java:326)
       at android.os.Looper.loop(Looper.java:181)
       at android.os.HandlerThread.run(HandlerThread.java:65)


ScionFrontendApi
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
       at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
       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:764)


firebase-installations-executor-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
       at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
       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:764)


pool-19-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
       at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
       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:764)


pool-25-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
       at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
       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:764)


main
       at java.lang.reflect.Constructor.newInstance0(Constructor.java)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
       at android.view.LayoutInflater.createView(LayoutInflater.java:686)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:829)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:531)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:461)
       at com.google.android.material.internal.NavigationMenuPresenter.getMenuView(NavigationMenuPresenter.java:108)
       at com.google.android.material.navigation.NavigationView.<init>(NavigationView.java:227)
       at com.google.android.material.navigation.NavigationView.<init>(NavigationView.java:119)
       at java.lang.reflect.Constructor.newInstance0(Constructor.java)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
       at android.view.LayoutInflater.createView(LayoutInflater.java:686)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:829)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:902)
       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:863)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:554)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:461)
       at com.rightdisha.portuguese.ui._core.fragment.BaseFragment.onCreateView(BaseFragment.java:101)
       at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
       at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320)
       at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
       at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224)
       at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997)
       at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953)
       at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
       at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2629)
       at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:2577)
       at androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722)
       at androidx.fragment.app.FragmentStateManager.activityCreated(FragmentStateManager.java:346)
       at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188)
       at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
       at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
       at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
       at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447)
       at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2169)
       at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1992)
       at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1947)
       at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
       at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413)
       at android.os.Handler.handleCallback(Handler.java:873)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:214)
       at android.app.ActivityThread.main(ActivityThread.java:7078)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)


OS_SYNCSRV_BG_SYNC
       at java.lang.Object.wait(Object.java)
       at java.lang.Object.wait(Object.java:422)
       at java.lang.Thread.join(Thread.java:1270)
       at com.onesignal.OneSignalRestClient.makeRequest(OneSignalRestClient.java:118)
       at com.onesignal.OneSignalRestClient.postSync(OneSignalRestClient.java:99)
       at com.onesignal.FocusTimeController$FocusTimeProcessorBase.sendOnFocusToPlayer(FocusTimeController.java:231)
       at com.onesignal.FocusTimeController$FocusTimeProcessorBase.sendOnFocus(FocusTimeController.java:252)
       at com.onesignal.FocusTimeController$FocusTimeProcessorBase.syncOnFocusTime(FocusTimeController.java:210)
       at com.onesignal.FocusTimeController$FocusTimeProcessorBase.syncUnsentTimeFromSyncJob(FocusTimeController.java:198)
       at com.onesignal.FocusTimeController$FocusTimeProcessorBase.access$100(FocusTimeController.java:136)
       at com.onesignal.FocusTimeController.doBlockingBackgroundSyncOfUnsentTime(FocusTimeController.java:67)
       at com.onesignal.OneSignalSyncServiceUtils$SyncRunnable.run(OneSignalSyncServiceUtils.java:247)
       at java.lang.Thread.run(Thread.java:764)


pool-24-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
       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:764)


pool-13-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:461)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:937)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
       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:764)


OSH_WritePrefs
       at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
       at android.os.MessageQueue.next(MessageQueue.java:326)
       at android.os.Looper.loop(Looper.java:181)
       at android.os.HandlerThread.run(HandlerThread.java:65)


GoogleApiHandler
       at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
       at android.os.MessageQueue.next(MessageQueue.java:326)
       at android.os.Looper.loop(Looper.java:181)
       at android.os.HandlerThread.run(HandlerThread.java:65)


OS_JOBSERVICE_BASE
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:868)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1021)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1328)
       at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:232)
       at com.google.firebase.crashlytics.internal.common.Utils.awaitEvenIfOnMainThread(Utils.java:185)
       at com.google.firebase.crashlytics.internal.common.CrashlyticsController.handleUncaughtException(CrashlyticsController.java:444)
       at com.google.firebase.crashlytics.internal.common.CrashlyticsController$5.onUncaughtException(CrashlyticsController.java:361)
       at com.google.firebase.crashlytics.internal.common.CrashlyticsUncaughtExceptionHandler.uncaughtException(CrashlyticsUncaughtExceptionHandler.java:54)
       at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)
       at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1063)
       at java.lang.Thread.dispatchUncaughtException(Thread.java:1955)


FinalizerDaemon
       at java.lang.Object.wait(Object.java)
       at java.lang.Object.wait(Object.java:422)
       at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:188)
       at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:209)
       at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:232)
       at java.lang.Daemons$Daemon.run(Daemons.java:103)
       at java.lang.Thread.run(Thread.java:764)


OkHttp ConnectionPool
       at java.lang.Object.wait(Object.java)
       at com.android.okhttp.ConnectionPool$1.run(ConnectionPool.java:101)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at java.lang.Thread.run(Thread.java:764)


ReferenceQueueDaemon
       at java.lang.Object.wait(Object.java)
       at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:178)
       at java.lang.Daemons$Daemon.run(Daemons.java:103)
       at java.lang.Thread.run(Thread.java:764)


pool-24-thread-2
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
       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:764)


com.google.firebase.crashlytics.startup1
       at com.android.org.conscrypt.NativeCrypto.get_X509_ex_kusage(NativeCrypto.java)
       at com.android.org.conscrypt.OpenSSLX509Certificate.getKeyUsage(OpenSSLX509Certificate.java:342)
       at sun.security.provider.certpath.AlgorithmChecker.check(AlgorithmChecker.java:213)
       at sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(PKIXMasterCertPathValidator.java:125)
       at sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:222)
       at sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:140)
       at sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(PKIXCertPathValidator.java:79)
       at com.android.org.conscrypt.DelegatingCertPathValidator.engineValidate(DelegatingCertPathValidator.java:44)
       at java.security.cert.CertPathValidator.validate(CertPathValidator.java:301)
       at com.android.org.conscrypt.TrustManagerImpl.verifyChain(TrustManagerImpl.java:715)
       at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:543)
       at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:564)
       at com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:609)
       at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:499)
       at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:422)
       at com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:343)
       at android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94)
       at android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:88)
       at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:208)
       at com.android.org.conscrypt.ConscryptFileDescriptorSocket.verifyCertificateChain(ConscryptFileDescriptorSocket.java:426)
       at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(NativeCrypto.java)
       at com.android.org.conscrypt.NativeSsl.doHandshake(NativeSsl.java:383)
       at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:231)
       at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:367)
       at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:325)
       at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:197)
       at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.java:249)
       at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.java:108)
       at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.java:76)
       at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.java:245)
       at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:32)
       at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:100)
       at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:96)
       at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:100)
       at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:83)
       at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:100)
       at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:76)
       at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:100)
       at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.java:197)
       at okhttp3.internal.connection.RealCall.execute(RealCall.java:148)
       at com.google.firebase.crashlytics.internal.network.HttpRequest.execute(HttpRequest.java:129)
       at com.google.firebase.crashlytics.internal.settings.network.DefaultSettingsSpiCall.invoke(DefaultSettingsSpiCall.java:86)
       at com.google.firebase.crashlytics.internal.settings.SettingsController$1.then(SettingsController.java:200)
       at com.google.firebase.crashlytics.internal.settings.SettingsController$1.then(SettingsController.java:193)
       at com.google.android.gms.tasks.zzp.run(zzp.java:2)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:60)
       at com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:27)
       at java.lang.Thread.run(Thread.java:764)


pool-8-thread-2
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:461)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:937)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
       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:764)


pool-8-thread-2
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:461)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:937)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
       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:764)


Firebase-Messaging-Topics-Io
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1120)
       at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:849)
       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.android.gms.common.util.concurrent.zza.run(zza.java:6)
       at java.lang.Thread.run(Thread.java:764)


firebase-iid-executor
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2101)
       at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at com.google.android.gms.common.util.concurrent.zza.run(zza.java:6)
       at java.lang.Thread.run(Thread.java:764)


pool-10-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:461)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:937)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
       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:764)


pool-16-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
       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:764)


kotlinx.coroutines.DefaultExecutor
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at kotlinx.coroutines.DefaultExecutor.run(DefaultExecutor.java:81)
       at java.lang.Thread.run(Thread.java:764


Crashlytics Report Uploader
       at java.lang.Thread.sleep(Thread.java)
       at java.lang.Thread.sleep(Thread.java:373)
       at java.lang.Thread.sleep(Thread.java:314)
       at com.google.firebase.crashlytics.internal.report.ReportUploader$Worker.attemptUploadWithRetry(ReportUploader.java:162)
       at com.google.firebase.crashlytics.internal.report.ReportUploader$Worker.onRun(ReportUploader.java:149)
       at com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:27)
       at java.lang.Thread.run(Thread.java:764)


Okio Watchdog
       at java.lang.Object.wait(Object.java)
       at okio.AsyncTimeout$Companion.awaitTimeout$okio(AsyncTimeout.java:316)
       at okio.AsyncTimeout$Watchdog.run(AsyncTimeout.java:187)


pool-9-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:461)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:937)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
       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:764)


Crashlytics Exception Handler1
       at dalvik.system.VMStack.getThreadStackTrace(VMStack.java)
       at java.lang.Thread.getStackTrace(Thread.java:1538)
       at java.lang.Thread.getAllStackTraces(Thread.java:1588)
       at com.google.firebase.crashlytics.internal.common.CrashlyticsController.writeSessionEvent(CrashlyticsController.java:1427)
       at com.google.firebase.crashlytics.internal.common.CrashlyticsController.writeFatal(CrashlyticsController.java:1167)
       at com.google.firebase.crashlytics.internal.common.CrashlyticsController.access$600(CrashlyticsController.java:87)
       at com.google.firebase.crashlytics.internal.common.CrashlyticsController$6.call(CrashlyticsController.java:396)
       at com.google.firebase.crashlytics.internal.common.CrashlyticsController$6.call(CrashlyticsController.java:388)
       at com.google.firebase.crashlytics.internal.common.CrashlyticsBackgroundWorker$3.then(CrashlyticsBackgroundWorker.java:106)
       at com.google.android.gms.tasks.zzf.run(zzf.java:2)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:60)
       at com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:27)
       at java.lang.Thread.run(Thread.java:764)


awaitEvenIfOnMainThread task continuation executor1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2059)
       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.ExecutorUtils$1$1.onRun(ExecutorUtils.java:60)
       at com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:27)
       at java.lang.Thread.run(Thread.java:764)


pool-14-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:461)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:937)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
       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:764)


pool-8-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Object.wait(Object.java:422)
       at com.google.android.gms.internal.measurement.zzt.zzb(zzt.java:14)
       at com.google.android.gms.internal.measurement.zzag.zza(zzag.java:151)
       at com.google.android.gms.measurement.api.AppMeasurementSdk.getUserProperties(AppMeasurementSdk.java:16)
       at com.google.firebase.analytics.connector.AnalyticsConnectorImpl.getUserProperties(AnalyticsConnectorImpl.java:44)
       at com.google.firebase.remoteconfig.internal.ConfigFetchHandler.getUserProperties(ConfigFetchHandler.java:494)
       at com.google.firebase.remoteconfig.internal.ConfigFetchHandler.fetchFromBackend(ConfigFetchHandler.java:299)
       at com.google.firebase.remoteconfig.internal.ConfigFetchHandler.fetchFromBackendAndCacheResponse(ConfigFetchHandler.java:267)
       at com.google.firebase.remoteconfig.internal.ConfigFetchHandler.lambda$fetchIfCacheExpiredAndNotThrottled$1(ConfigFetchHandler.java:205)
       at com.google.firebase.remoteconfig.internal.ConfigFetchHandler$$Lambda$2.then(ConfigFetchHandler.java:4)
       at com.google.android.gms.tasks.zzf.run(zzf.java:2)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
       at java.lang.Thread.run(Thread.java:764)


pool-11-thread-1
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2137)
       at sun.misc.Unsafe.park(Unsafe.java:358)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:230)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:461)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:937)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1091)
       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:764)


TokenRefresher
       at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
       at android.os.MessageQueue.next(MessageQueue.java:326)
       at android.os.Looper.loop(Looper.java:181)
       at android.os.HandlerThread.run(HandlerThread.java:65)

Howdy
@deputat007 ,
I just realized you're on quite an old version of the SDK. That's why the fix didn't work for you. Please upgrade to the latest.

@lucazin ,
I suspect you have the same issue. Please make sure you're on the latest.

Enjoy!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

pedrofurtado picture pedrofurtado  路  5Comments

joelfernandes19 picture joelfernandes19  路  6Comments

kovrizhin picture kovrizhin  路  6Comments

SebastienTainon picture SebastienTainon  路  6Comments

kareemzok picture kareemzok  路  4Comments