mapbox / mapbox/mapbox-navigation-android

Crash with DeadSystemException due to notification update on Android

Open
#7,948 0 comments 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.