mapbox / mapbox/mapbox-navigation-android
Crash with DeadSystemException due to notification update on Android
まだ誰も着手していません。
- 主要言語
- Kotlin
- スター
- 651
- フォーク
- 321
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
- **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.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
MapboxTripNotification.kt:165 と MapboxTripService.kt:153 から始め、MapboxTripSession.kt:715-725 によってトリガーされる通知更新を追ってください。Android 16 DeadSystemException のパスを再現または調査し、システム通知サービスが利用できない場合に通知更新がどのように動作すべきかを判断してください。クラッシュが防止され、通常の更新が引き続き正常に動作すれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- android, kotlin
- 領域
- mobile
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 静か
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 45/100