OneSignal / OneSignal-Android-SDK

OneSignal is a free push notification service for mobile apps. This plugin makes it easy to integrate your native Android or Amazon app with OneSignal. https://onesignal.com
Other
604 stars 368 forks source link

How to fix crash IllegalThreadStateException? #917

Closed Mura75 closed 4 years ago

Mura75 commented 4 years ago

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)
mikechoch commented 4 years ago

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

Mura75 commented 4 years ago

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

zhanlederzach commented 4 years ago

Same issue (

ramim94 commented 4 years ago

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

vforvasile commented 4 years ago

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

Screen Shot 2020-01-14 at 11 25 06

and

Screen Shot 2020-01-14 at 11 25 29

hope it helps

M2dL1fe commented 4 years ago

image

FCMHUB commented 4 years ago

Same here...

justanapp commented 4 years ago

same problem occurs here - any timeframe for an update?

jkasten2 commented 4 years ago

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?

alimek commented 4 years ago

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

Devices
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
jkasten2 commented 4 years ago

@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.

Rodrigo77777 commented 4 years ago

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!

Rodrigo77777 commented 4 years ago

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!

Rodrigo77777 commented 4 years ago

@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!

Rodrigo77777 commented 4 years ago

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!

rgomezp commented 4 years ago

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

jackatfp commented 4 years ago

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)

NeoTT commented 4 years ago

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.

M2dL1fe commented 4 years ago

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

Erumaru commented 4 years ago

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

Rodrigo77777 commented 4 years ago

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?

Erumaru commented 4 years ago

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

Erumaru commented 4 years ago

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

Pavneet-Sing commented 4 years ago

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.

jkasten2 commented 4 years ago

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:

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.

Pavneet-Sing commented 4 years ago

@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.

jkasten2 commented 4 years ago

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

jkasten2 commented 4 years ago

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:

Rodrigo77777 commented 4 years ago

@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!

flaengel commented 4 years ago

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

VGMFR commented 4 years ago

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

maitycyrus commented 4 years ago

Same here

iballan commented 4 years ago

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

jkasten2 commented 4 years ago

@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.
iballan commented 4 years ago

@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.

jkasten2 commented 4 years ago

@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

iballan commented 4 years ago

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

iballan commented 4 years ago

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

jkasten2 commented 4 years ago

@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.

jkasten2 commented 4 years ago

We just released the PR #993 today in our 3.13.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.

M2dL1fe commented 4 years ago

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

jkasten2 commented 4 years ago

@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

M2dL1fe commented 4 years ago

@jkasten2 image image

jkasten2 commented 4 years ago

@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.

Pavneet-Sing commented 4 years ago

@jkasten2 Welcome and Thanks.

lucazin commented 4 years ago

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

image

deputat007 commented 4 years ago

@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)
rgomezp commented 4 years ago

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!