mapbox / mapbox-navigation-android

Mapbox Navigation SDK for Android
https://docs.mapbox.com/android/navigation/overview/
Other
620 stars 319 forks source link

[Mapbox Navigation v2] Crash on reroute #4179

Open sandyscoffable opened 3 years ago

sandyscoffable commented 3 years ago

Android API: 30 Mapbox Navigation SDK version: 2.0.0-beta2

Steps to trigger behavior

  1. Trigger a reroute by going off course (I'm running a mock location app on my phone)

Expected behavior

Reroute should be successful

Actual behavior

App crashes while trying to reroute

Stacktraces (this has happened a couple of times this morning)

2021-03-25 11:51:52.530 19397-19397/com.XXXXX.YYYYY E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.XXXXX.YYYYY, PID: 19397
    java.lang.IllegalArgumentException: Requested element count -1 is less than zero.
        at kotlin.collections.CollectionsKt___CollectionsKt.drop(_Collections.kt:650)
        at com.mapbox.navigation.core.routeoptions.MapboxRouteOptionsUpdater.update(MapboxRouteOptionsUpdater.kt:66)
        at com.mapbox.navigation.core.reroute.MapboxRerouteController.reroute(MapboxRerouteController.kt:50)
        at com.mapbox.navigation.core.MapboxNavigation.reroute(MapboxNavigation.kt:779)
        at com.mapbox.navigation.core.MapboxNavigation.access$reroute(MapboxNavigation.kt:133)
        at com.mapbox.navigation.core.MapboxNavigation$createInternalOffRouteObserver$1.onOffRouteStateChanged(MapboxNavigation.kt:773)
        at com.mapbox.navigation.core.trip.session.MapboxTripSession.setOffRoute(MapboxTripSession.kt:142)
        at com.mapbox.navigation.core.trip.session.MapboxTripSession.access$setOffRoute$p(MapboxTripSession.kt:56)
        at com.mapbox.navigation.core.trip.session.MapboxTripSession$updateDataFromNavigatorStatus$updateNavigatorStatusDataJob$1.invokeSuspend(MapboxTripSession.kt:529)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:246)
        at android.app.ActivityThread.main(ActivityThread.java:8506)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
2021-03-25 11:20:15.120 7692-7692/com.XXXXX.YYYYY E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.XXXXX.YYYYY, PID: 7692
    java.lang.IllegalArgumentException: Requested element count -1 is less than zero.
        at kotlin.collections.CollectionsKt___CollectionsKt.drop(_Collections.kt:650)
        at com.mapbox.navigation.core.routeoptions.MapboxRouteOptionsUpdater.update(MapboxRouteOptionsUpdater.kt:66)
        at com.mapbox.navigation.core.reroute.MapboxRerouteController.reroute(MapboxRerouteController.kt:50)
        at com.mapbox.navigation.core.MapboxNavigation.reroute(MapboxNavigation.kt:779)
        at com.mapbox.navigation.core.MapboxNavigation.access$reroute(MapboxNavigation.kt:133)
        at com.mapbox.navigation.core.MapboxNavigation$createInternalOffRouteObserver$1.onOffRouteStateChanged(MapboxNavigation.kt:773)
        at com.mapbox.navigation.core.trip.session.MapboxTripSession.setOffRoute(MapboxTripSession.kt:142)
        at com.mapbox.navigation.core.trip.session.MapboxTripSession.access$setOffRoute$p(MapboxTripSession.kt:56)
        at com.mapbox.navigation.core.trip.session.MapboxTripSession$updateDataFromNavigatorStatus$updateNavigatorStatusDataJob$1.invokeSuspend(MapboxTripSession.kt:529)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:246)
        at android.app.ActivityThread.main(ActivityThread.java:8506)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
VysotskiVadim commented 2 years ago

@EricGeiler, @Sridhar261990 , any updates? Do you have any crashes with the 1.4.0-reroute-troubleshooting-SNAPSHOT?

Sridhar261990 commented 2 years ago

Hi @VysotskiVadim , We did n't get any crashes with 1.4.0-reroute-troubleshooting-SNAPSHOT. Thank you for the support.

VysotskiVadim commented 2 years ago

@Sridhar261990 , thanks. Please keep in mind that 1.4.0-reroute-troubleshooting-SNAPSHOT doesn't fix anything. It just contains more logs to help us identify the issue.

@Sridhar261990 , @EricGeiler, I'm closing this issue as non of your users experienced the cash during rerouting in last 2 month. Please reopen the issue even if you get a single crash. You data can help us improve the SDK. Thank you.

cc @RingerJK

Sridhar261990 commented 2 years ago

Hi @VysotskiVadim,

We got this error again in the last week.

Fatal Exception: java.lang.RuntimeException Requested element count -1 is less than zero. routeOptions=[RouteOptions{baseUrl=https://api.mapbox.com, user=mapbox, profile=driving-traffic, coordinates=[Point{type=Point, bbox=null, coordinates=[-79.52246465931294, 43.816374649631875]}, Point{type=Point, bbox=null, coordinates=[-79.52346742, 43.81634347]}, Point{type=Point, bbox=null, coordinates=[-79.52253324580988, 43.81666102971539]}, Point{type=Point, bbox=null, coordinates=[-79.5229700112357, 43.8159100170321]}], alternatives=true, language=en, radiuses=null, bearings=171.162689,90;;, continueStraight=true, roundaboutExits=true, geometries=polyline6, overview=full, steps=true, annotations=null, exclude=toll, voiceInstructions=true, bannerInstructions=true, voiceUnits=metric, accessToken=pk.eyJ1IjoiYWJjb3VyaWVyIiwiYSI6ImNqeWg0dnQ5eTA4NWUzbHJ6ZmI2MnVmNHkifQ.Zq2xdOpjNkboK9S-fe16Ug, requestUuid=offline, approaches=null, waypointIndices=null, waypointNames=null, waypointTargets=null, walkingOptions=null}] routeProgress=[RouteProgress(route=DirectionsRoute{routeIndex=null, distance=2387.424, duration=1685.828, durationTypical=null, geometry=opjqrAnqvtvC????SyAa@FuCm]KsJVaLDq@bDu@cDt@aDp@WLJrJtCl]@~E|Fnd@nOnhAlFp@zNf@zXnm@zCbMdBxMpA|Pr@rNj@~L@xFkAnG~@zJb@rFkD^qQ|BwDzE}g@~Giv@xJug@jHuEaCwc@pG{v@lKqDb@uDl@uC@gQzCqCbEgVhE}SxCiz@jLSDqMfBq|@hLmHyAiUrDsFz@yF|@_VpDsFE}r@|J}p@jKcHtGwXfEi|@vMsCb@{Et@uCb@{ZtEmXfEol@bJl@pIxC|@kFv@qInAqInAkFpA, weight=2305.828, weightName=pedestrian, legs=[RouteLeg{distance=1.0, duration=0.0, durationTypical=null, summary=Edilcan Drive, admins=[Admin{countryCode=CA, countryCodeAlpha3=CAN}], steps=[LegStep{distance=1.0, duration=0.0, durationTypical=null, speedLimitUnit=null, speedLimitSign=null, geometry=opjqrAnqvtvC??, name=Edilcan Drive, ref=null, destinations=null, mode=walking, pronunciation=null, rotaryName=null, rotaryPronunciation=null, maneuver=StepManeuver{rawLocation=[-79.523624, 43.816728], bearingBefore=0.0, bearingAfter=0.0, instruction=Walk north on Edilcan Drive., type=depart, modifier=null, exit=null}, voiceInstruc<truncated: 45553 chars>

Fatal Exception: java.lang.RuntimeException: Requested element count -1 is less than zero. routeOptions=[RouteOptions{baseUrl=https://api.mapbox.com, user=mapbox, profile=driving-traffic, coordinates=[Point{type=Point, bbox=null, coordinates=[-79.52246465931294, 43.816374649631875]}, Point{type=Point, bbox=null, coordinates=[-79.52346742, 43.81634347]}, Point{type=Point, bbox=null, coordinates=[-79.52253324580988, 43.81666102971539]}, Point{type=Point, bbox=null, coordinates=[-79.5229700112357, 43.8159100170321]}], alternatives=true, language=en, radiuses=null, bearings=171.162689,90;;, continueStraight=true, roundaboutExits=true, geometries=polyline6, overview=full, steps=true, annotations=null, exclude=toll, voiceInstructions=true, bannerInstructions=true, voiceUnits=metric, accessToken=pk.eyJ1IjoiYWJjb3VyaWVyIiwiYSI6ImNqeWg0dnQ5eTA4NWUzbHJ6ZmI2MnVmNHkifQ.Zq2xdOpjNkboK9S-fe16Ug, requestUuid=offline, approaches=null, waypointIndices=null, waypointNames=null, waypointTargets=null, walkingOptions=null}] routeProgress=[RouteProgress(route=DirectionsRoute{routeIndex=null, distance=2387.424, duration=1685.828, durationTypical=null, geometry=opjqrAnqvtvC????SyAa@FuCm]KsJVaLDq@bDu@cDt@aDp@WLJrJtCl]@~E|Fnd@nOnhAlFp@zNf@zXnm@zCbMdBxMpA|Pr@rNj@~L@xFkAnG~@zJb@rFkD^qQ|BwDzE}g@~Giv@xJug@jHuEaCwc@pG{v@lKqDb@uDl@uC@gQzCqCbEgVhE}SxCiz@jLSDqMfBq|@hLmHyAiUrDsFz@yF|@_VpDsFE}r@|J}p@jKcHtGwXfEi|@vMsCb@{Et@uCb@{ZtEmXfEol@bJl@pIxC|@kFv@qInAqInAkFpA, weight=2305.828, weightName=pedestrian, legs=[RouteLeg{distance=1.0, duration=0.0, durationTypical=null, summary=Edilcan Drive, admins=[Admin{countryCode=CA, countryCodeAlpha3=CAN}], steps=[LegStep{distance=1.0, duration=0.0, durationTypical=null, speedLimitUnit=null, speedLimitSign=null, geometry=opjqrAnqvtvC??, name=Edilcan Drive, ref=null, destinations=null, mode=walking, pronunciation=null, rotaryName=null, rotaryPronunciation=null, maneuver=StepManeuver{rawLocation=[-79.523624, 43.816728], bearingBefore=0.0, bearingAfter=0.0, instruction=Walk north on Edilcan Drive., type=depart, modifier=null, exit=null}, voiceInstruc<truncated: 45553 chars> at com.mapbox.navigation.core.routeoptions.MapboxRouteOptionsUpdater.update(MapboxRouteOptionsUpdater.kt:107) at com.mapbox.navigation.core.reroute.MapboxRerouteController.reroute(MapboxRerouteController.kt:50) at com.mapbox.navigation.core.MapboxNavigation.reroute(MapboxNavigation.kt:746) at com.mapbox.navigation.core.MapboxNavigation.access$reroute(MapboxNavigation.kt:131) at com.mapbox.navigation.core.MapboxNavigation$createInternalOffRouteObserver$1.onOffRouteStateChanged(MapboxNavigation.kt:740) at com.mapbox.navigation.core.trip.session.MapboxTripSession.setOffRoute(MapboxTripSession.kt:123) at com.mapbox.navigation.core.trip.session.MapboxTripSession.access$setOffRoute$p(MapboxTripSession.kt:48) at com.mapbox.navigation.core.trip.session.MapboxTripSession$updateDataFromNavigatorStatus$updateNavigatorStatusDataJob$1.invokeSuspend(MapboxTripSession.kt:514) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7432) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:520) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)

VysotskiVadim commented 2 years ago

@Sridhar261990 , thank you! Reopening ticket. How much does this issue affect your business? I'm asking this to better understand priority of the fix.

Sridhar261990 commented 2 years ago

Hi @VysotskiVadim, We got only one crash in the last two or three months. I will update you if we get more crashes.