mapbox / mapbox/mapbox-navigation-android
Crash with DeadSystemException due to notification update on Android
Nobody has claimed this yet.
- Dominant language
- Kotlin
- Stars
- 651
- Forks
- 321
- PR merge metrics
- No merged PRs in 30d
Description
- **Navigation SDK version: 2.21.0**
- **Android version: 16**
Hi,
We are getting frequent crashes with the following stack trace, without clear pattern:
```kotlin
android.os.DeadSystemException: null
at android.app.NotificationManager.notifyAsUser(NotificationManager.java:991)
at android.app.NotificationManager.notify(NotificationManager.java:850)
at android.app.NotificationManager.notify(NotificationManager.java:826)
at com.mapbox.navigation.trip.notification.internal.MapboxTripNotification.updateNotification(MapboxTripNotification.kt:165)
at com.mapbox.navigation.core.trip.service.MapboxTripService.updateNotification(MapboxTripService.kt:153)
at com.mapbox.navigation.core.trip.session.MapboxTripSession.updateRouteProgress(MapboxTripSession.kt:725)
at com.mapbox.navigation.core.trip.session.MapboxTripSession.processNativeStatus(MapboxTripSession.kt:715)
at com.mapbox.navigation.core.trip.session.MapboxTripSession.access$processNativeStatus(MapboxTripSession.kt:62)
at com.mapbox.navigation.core.trip.session.MapboxTripSession$navigatorObserver$1.onStatus(MapboxTripSession.kt:355)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.nextLegacy(MessageQueue.java:950)
at android.os.MessageQueue.next(MessageQueue.java:1062)
at android.os.Looper.loopOnce(Looper.java:221)
at android.os.Looper.loop(Looper.java:363)
at android.app.ActivityThread.main(ActivityThread.java:10060)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
android.os.DeadSystemRuntimeException: android.os.DeadSystemException
at android.app.NotificationManager.notifyAsUser(NotificationManager.java:991)
at android.app.NotificationManager.notify(NotificationManager.java:850)
at android.app.NotificationManager.notify(NotificationManager.java:826)
at com.mapbox.navigation.trip.notification.internal.MapboxTripNotification.updateNotification(MapboxTripNotification.kt:165)
at com.mapbox.navigation.core.trip.service.MapboxTripService.updateNotification(MapboxTripService.kt:153)
at com.mapbox.navigation.core.trip.session.MapboxTripSession.updateRouteProgress(MapboxTripSession.kt:725)
at com.mapbox.navigation.core.trip.session.MapboxTripSession.processNativeStatus(MapboxTripSession.kt:715)
at com.mapbox.navigation.core.trip.session.MapboxTripSession.access$processNativeStatus(MapboxTripSession.kt:62)
at com.mapbox.navigation.core.trip.session.MapboxTripSession$navigatorObserver$1.onStatus(MapboxTripSession.kt:355)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.nextLegacy(MessageQueue.java:950)
at android.os.MessageQueue.next(MessageQueue.java:1062)
at android.os.Looper.loopOnce(Looper.java:221)
at android.os.Looper.loop(Looper.java:363)
at android.app.ActivityThread.main(ActivityThread.java:10060)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
com.mapbox.navigation.core.trip.session.NativeStatusProcessingError: Error processing native status update
at com.mapbox.navigation.core.trip.session.MapboxTripSession$navigatorObserver$1.onStatus(MapboxTripSession.kt:363)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.nextLegacy(MessageQueue.java:950)
at android.os.MessageQueue.next(MessageQueue.java:1062)
at android.os.Looper.loopOnce(Looper.java:221)
at android.os.Looper.loop(Looper.java:363)
at android.app.ActivityThread.main(ActivityThread.java:10060)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
java.lang.reflect.InvocationTargetException: null
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:642)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
Thread: main
at dalvik.system.VMStack.getThreadStackTrace(VMStack.java)
at java.lang.Thread.getStackTrace(Thread.java:2843)
at java.lang.Thread.getAllStackTraces(Thread.java:2910)
at org.chromium.base.JavaExceptionReporter.uncaughtException(chromium-TrichromeWebViewGoogle6432.aab-stable-744410233:31)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1098)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1093)
at java.lang.Thread.dispatchUncaughtException(Thread.java:3378)
```
We are using the Fused location provider from Google, if that matters.
I appreciate there are newer versions of the library, so if this was fixed in a new version please point me to its release and I will update the dependency.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with MapboxTripNotification.kt:165 and MapboxTripService.kt:153, following the notification update triggered by MapboxTripSession.kt:715-725. Reproduce or investigate the Android 16 DeadSystemException path and determine how notification updates should behave when the system notification service is unavailable; done means the crash is prevented and normal updates remain intact.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 45/100