OneSignal-Android-SDK icon indicating copy to clipboard operation
OneSignal-Android-SDK copied to clipboard

`DeadSystemException`: OneSignal Crash: OSUtils.java line 287 com.onesignal.OSUtils.packageInstalledAndEnabled

Open andpanda opened this issue 4 years ago • 18 comments

After I have updated OneSignal unity sdk to the latest version (2.13.1) some crashes was fixed (location gms crash of my other thread is gone) but a new crash appeared as the top crash in my app.

This issue has 250 crashes affecting 200 users Devices: Galaxy Note10+ 4% Galaxy S10 3% Galaxy Note8 HUAWEI Y9 Prime 2019 4% P30 Pro 2% HUAWEI nova 5T 1% Redmi Note 8 1% Redmi Note 5 Pro <1% Redmi Note 7 <1% Lenovo K8 Note 3%

Android Versions: 78% Android 10 15% Android 9 5% Android 8 1% Android 6 <1% Other (1)

Unity Version 2018.4.26 LTS OneSignal 2.13.1

Fatal Exception: java.lang.Error FATAL EXCEPTION [FocusHandlerThread] Unity version : 2018.4.26f1 Device model : samsung SM-A705FN Device fingerprint: samsung/a70qxx/a70q:10/QP1A.190711.020/A705FNXXU5BTH4:user/release-keys Fatal Exception: java.lang.Error: FATAL EXCEPTION [FocusHandlerThread] Unity version : 2018.4.26f1 Device model : samsung SM-A705FN Device fingerprint: samsung/a70qxx/a70q:10/QP1A.190711.020/A705FNXXU5BTH4:user/release-keys

Caused by java.lang.RuntimeException: android.os.DeadSystemException
       at android.app.ApplicationPackageManager.getPackageInfoAsUser(ApplicationPackageManager.java:264)
       at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:235)
       at com.onesignal.OSUtils.packageInstalledAndEnabled(OSUtils.java:287)
       at com.onesignal.OSUtils.isGMSInstalledAndEnabled(OSUtils.java:299)
       at com.onesignal.OSUtils.supportsGooglePush(OSUtils.java:341)
       at com.onesignal.OSUtils.getDeviceType(OSUtils.java:360)
       at com.onesignal.OSUtils.isAndroidDeviceType(OSUtils.java:382)
       at com.onesignal.LocationController.isGooglePlayServicesAvailable(LocationController.java:286)
       at com.onesignal.LocationController.onFocusChange(LocationController.java:274)
       at com.onesignal.OneSignal.onAppLostFocus(OneSignal.java:1251)
       at com.onesignal.ActivityLifecycleHandler$AppFocusRunnable.run(ActivityLifecycleHandler.java:263)
       at android.os.Handler.handleCallback(Handler.java:883)
       at android.os.Handler.dispatchMessage(Handler.java:100)
       at android.os.Looper.loop(Looper.java:237)
       at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by android.os.DeadSystemException
       at android.app.ApplicationPackageManager.getPackageInfoAsUser(ApplicationPackageManager.java:264)
       at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:235)
       at com.onesignal.OSUtils.packageInstalledAndEnabled(OSUtils.java:287)
       at com.onesignal.OSUtils.isGMSInstalledAndEnabled(OSUtils.java:299)
       at com.onesignal.OSUtils.supportsGooglePush(OSUtils.java:341)
       at com.onesignal.OSUtils.getDeviceType(OSUtils.java:360)
       at com.onesignal.OSUtils.isAndroidDeviceType(OSUtils.java:382)
       at com.onesignal.LocationController.isGooglePlayServicesAvailable(LocationController.java:286)
       at com.onesignal.LocationController.onFocusChange(LocationController.java:274)
       at com.onesignal.OneSignal.onAppLostFocus(OneSignal.java:1251)
       at com.onesignal.ActivityLifecycleHandler$AppFocusRunnable.run(ActivityLifecycleHandler.java:263)
       at android.os.Handler.handleCallback(Handler.java:883)
       at android.os.Handler.dispatchMessage(Handler.java:100)
       at android.os.Looper.loop(Looper.java:237)
       at android.os.HandlerThread.run(HandlerThread.java:67)

andpanda avatar Oct 01 '20 17:10 andpanda

@Jeasmine are you aware of this? There's an eta for a fix? Or could you recommend an older version that does not have these crashes? Thank you very much.

andpanda avatar Oct 05 '20 14:10 andpanda

Hey @andpanda! Are you able to reproduce this issue? The stack trace is pointing to android.os.DeadSystemException result of calling getPackageInfo, is not pointing to an issue with OneSignal perse. We will evaluate adding some more logging to see why can this be happening. But with that log, there is not much we can do. How much % of your total users are suffering from this error?

Jeasmine avatar Oct 06 '20 15:10 Jeasmine

Screenshot 2020-10-06 at 13 51 32

Screenshot 2020-10-06 at 13 44 38

Hi @Jeasmine thank you for your fast answer. Or app is pretty stable have 97.46% crashless users. We aim to have 99%+ like our older versions.

Right now the crash that is causing the most crashes are these from one signal.

If you want more information or the stack from other threads I could provide.

I highly believe that something is not right.

andpanda avatar Oct 06 '20 16:10 andpanda

I also have found one related thread on onesignal unity github: https://github.com/OneSignal/OneSignal-Unity-SDK/issues/316

andpanda avatar Oct 06 '20 16:10 andpanda

Hey @andpanda thanks for the information, yeah there is something not right, but likely to be related to unity integration. If you have the thread information or any additional information that might help you are very welcome!

Jeasmine avatar Oct 06 '20 17:10 Jeasmine

There are 640 threads and I would need to copy paste each one, one by one here.

I have found something interesting, there are a lot of duplicated threads with the same stack.

pool-1-thread-62 sun.misc.Unsafe.park (Unsafe.java) java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:230) java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill (SynchronousQueue.java:461) java.util.concurrent.SynchronousQueue$TransferStack.transfer (SynchronousQueue.java:362) java.util.concurrent.SynchronousQueue.poll (SynchronousQueue.java:937) java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1091) java.util.concurrent.ThreadPoolExecutor.processTask (ThreadPoolExecutor.java:1172) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152) java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) java.lang.Thread.run (Thread.java:929)

pool-1-thread-101 sun.misc.Unsafe.park (Unsafe.java) java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:230) java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill (SynchronousQueue.java:461) java.util.concurrent.SynchronousQueue$TransferStack.transfer (SynchronousQueue.java:362) java.util.concurrent.SynchronousQueue.poll (SynchronousQueue.java:937) java.util.concurrent.ThreadPoolExecutor.getTask (ThreadPoolExecutor.java:1091) java.util.concurrent.ThreadPoolExecutor.processTask (ThreadPoolExecutor.java:1172) java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152) java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641) java.lang.Thread.run (Thread.java:929)

There are over 100 threads with this exact same stack.

andpanda avatar Oct 06 '20 22:10 andpanda

There's another crash that seems related that only occours on Huawei devices.

HwApiCacheMangerEx.java line 194 huawei.android.app.HwApiCacheMangerEx.getPackageInfoAsUser

Fatal Exception: java.lang.Error: FATAL EXCEPTION [FocusHandlerThread] Unity version : 2018.4.26f1 Device model : HUAWEI JKM-LX1 Device fingerprint: HUAWEI/JKM-LX1/HWJKM-H:9/HUAWEIJKM-LX1/9.1.0.309C185:user/release-keys

Caused by java.lang.RuntimeException: android.os.DeadSystemException
       at huawei.android.app.HwApiCacheMangerEx.getPackageInfoAsUser(HwApiCacheMangerEx.java:194)
       at android.app.ApplicationPackageManager.getPackageInfoAsUser(ApplicationPackageManager.java:197)
       at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:174)
       at com.onesignal.OSUtils.packageInstalledAndEnabled(OSUtils.java:287)
       at com.onesignal.OSUtils.isGMSInstalledAndEnabled(OSUtils.java:299)
       at com.onesignal.OSUtils.supportsGooglePush(OSUtils.java:341)
       at com.onesignal.OSUtils.getDeviceType(OSUtils.java:360)
       at com.onesignal.OSUtils.isAndroidDeviceType(OSUtils.java:382)
       at com.onesignal.LocationController.isGooglePlayServicesAvailable(LocationController.java:286)
       at com.onesignal.LocationController.onFocusChange(LocationController.java:274)
       at com.onesignal.OneSignal.onAppLostFocus(OneSignal.java:1251)
       at com.onesignal.ActivityLifecycleHandler$AppFocusRunnable.run(ActivityLifecycleHandler.java:263)
       at android.os.Handler.handleCallback(Handler.java:907)
       at android.os.Handler.dispatchMessage(Handler.java:105)
       at android.os.Looper.loop(Looper.java:216)
       at android.os.HandlerThread.run(HandlerThread.java:65)
Caused by android.os.DeadSystemException
       at huawei.android.app.HwApiCacheMangerEx.getPackageInfoAsUser(HwApiCacheMangerEx.java:194)
       at android.app.ApplicationPackageManager.getPackageInfoAsUser(ApplicationPackageManager.java:197)
       at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:174)
       at com.onesignal.OSUtils.packageInstalledAndEnabled(OSUtils.java:287)
       at com.onesignal.OSUtils.isGMSInstalledAndEnabled(OSUtils.java:299)
       at com.onesignal.OSUtils.supportsGooglePush(OSUtils.java:341)
       at com.onesignal.OSUtils.getDeviceType(OSUtils.java:360)
       at com.onesignal.OSUtils.isAndroidDeviceType(OSUtils.java:382)
       at com.onesignal.LocationController.isGooglePlayServicesAvailable(LocationController.java:286)
       at com.onesignal.LocationController.onFocusChange(LocationController.java:274)
       at com.onesignal.OneSignal.onAppLostFocus(OneSignal.java:1251)
       at com.onesignal.ActivityLifecycleHandler$AppFocusRunnable.run(ActivityLifecycleHandler.java:263)
       at android.os.Handler.handleCallback(Handler.java:907)
       at android.os.Handler.dispatchMessage(Handler.java:105)
       at android.os.Looper.loop(Looper.java:216)
       at android.os.HandlerThread.run(HandlerThread.java:65)
pool-1-thread-32
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2163)
       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.processTask(ThreadPoolExecutor.java:1172)
       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:784)

andpanda avatar Oct 07 '20 03:10 andpanda

@Jeasmine Hello, sorry to bother, but there's any news regarding this issue?

Thank you!

andpanda avatar Oct 13 '20 17:10 andpanda

@andpanda The android.os.DeadSystemException exception happens due to app already being shutdown for another reason. See https://github.com/OneSignal/OneSignal-Android-SDK/issues/1013#issuecomment-633733684 for more details on this. This means the stacktrace isn't the root cause of why the app process is bing stopped so the cause is very difficult to pin point. The exact steps to reproduce the issue would be needed to help find the root of this issue. The app runtime shutdown my not be OneSignal related either.

jkasten2 avatar Dec 30 '20 19:12 jkasten2

I have downgraded one signal to 2.11.4, I will inform if this problem persist or disappear. Sadly I don't have a repro case. Thanks @jkasten2

andpanda avatar Dec 30 '20 21:12 andpanda

Is there any fix on this? I got the same error on version 3.15.4. Do you still have the problem after downgrading to 2.11.4 @andpanda?

hendrawd avatar Mar 01 '21 03:03 hendrawd

Hi @andpanda and @hendrawd, sorry it has been a while.

I am checking in if this is still an active crash for you?

nan-li avatar Feb 23 '22 19:02 nan-li

Why don't you just try catch all exception on getPackageInfo?

puderty avatar Apr 19 '22 04:04 puderty

We are still using version 3.15.4 @nan-li. I just checked, and we are still getting the crash. We are rarely updating our dependencies version except if there is a good reason to update. Can you confirm if the problem is already fixed on the newest version? If yes I think I can initiate a discussion to update OneSignal version.

hendrawd avatar May 30 '22 14:05 hendrawd

@hendrawd Can you provide more details on the android.os.DeadSystemException crash you are seeing?

  1. Steps to reproduce.
  2. Break down of Android version effected.
  3. Break down of device manufactures affected if available.

jkasten2 avatar May 30 '22 23:05 jkasten2

@jkasten2

  1. I'm not really sure because the crash is from the Crashlytics platform.
  2. 80% Android 5 20% Android 4
  3. 100% Samsung: 80% Galaxy Tab A 7.0 20% Galaxy Tab3V 7.0

hendrawd avatar Jun 10 '22 12:06 hendrawd

@hendrawd Thanks for letting us known, this seems to be an issue with older versions of Android based on your report. We however would need details on reproducing to investigate the issue. Or a full verbose logcat leading up to the crash to investigate the root cause.

jkasten2 avatar Jun 14 '22 18:06 jkasten2

@jkasten2

  1. I'm not really sure because the crash is from the Crashlytics platform.
  2. 80% Android 5 20% Android 4
  3. 100% Samsung: 80% Galaxy Tab A 7.0 20% Galaxy Tab3V 7.0

Same here, can't figure how to reproduce and got report by crashlytics and mostly happened on Samsung device

renopp avatar Jul 29 '22 07:07 renopp

Hello everyone!

This issue has become stale and will be closed. Please @ mention me if we need to revisit after upgrading to at least 4.8.7 SDK.

Also noting that we have an updated major release 5.x.x available for our Android SDK with many improvements and enhancements! Please refer to the migration guide for more information on upgrading.

Thanks!

jennantilla avatar Jan 31 '24 01:01 jennantilla