Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

App crashes on Android 8.0 using Mapbox SDK 6.3.0 #12730

Closed
iverc opened this issue Aug 24, 2018 · 17 comments
Closed

App crashes on Android 8.0 using Mapbox SDK 6.3.0 #12730

iverc opened this issue Aug 24, 2018 · 17 comments
Assignees
Labels
Android Mapbox Maps SDK for Android high priority telemetry Integration with Mapbox Telemetry libraries

Comments

@iverc
Copy link

iverc commented Aug 24, 2018

App crashes on Android 8.0 using Mapbox SDK 6.3.0

Caused by java.lang.IllegalStateException
Not allowed to start service Intent { cmp=com.*.android/com.mapbox.android.telemetry.TelemetryService }: app is in background uid UidRecord{6909885 u0a361 SVC bg:+1m3s523ms idle procs:1 seq(0,0,0)}

android.app.ContextImpl.startServiceCommon (ContextImpl.java:1538)

  | android.app.ContextImpl.startService (ContextImpl.java:1484)
  | android.content.ContextWrapper.startService (ContextWrapper.java:663)
  | com.mapbox.android.telemetry.MapboxTelemetry.startLocation (MapboxTelemetry.java:499)
  | com.mapbox.android.telemetry.MapboxTelemetry.onEnterForeground (MapboxTelemetry.java:548)
  | com.mapbox.android.telemetry.MapboxTelemetry_LifecycleAdapter.callMethods (MapboxTelemetry_LifecycleAdapter.java:25)
  | android.arch.lifecycle.SingleGeneratedAdapterObserver.onStateChanged (SingleGeneratedAdapterObserver.java:35)
  | android.arch.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent (LifecycleRegistry.java:354)
  | android.arch.lifecycle.LifecycleRegistry.forwardPass (LifecycleRegistry.java:292)
  | android.arch.lifecycle.LifecycleRegistry.sync (LifecycleRegistry.java:332)
  | android.arch.lifecycle.LifecycleRegistry.moveToState (LifecycleRegistry.java:137)
  | android.arch.lifecycle.LifecycleRegistry.handleLifecycleEvent (LifecycleRegistry.java:123)
  | android.arch.lifecycle.ProcessLifecycleOwner.activityStarted (ProcessLifecycleOwner.java:107)
  | android.arch.lifecycle.ProcessLifecycleOwner$2.onStart (ProcessLifecycleOwner.java:79)
  | android.arch.lifecycle.ReportFragment.dispatchStart (ReportFragment.java:60)
  | android.arch.lifecycle.ReportFragment.onStart (ReportFragment.java:80)
  | android.app.Fragment.performStart (Fragment.java:2637)
  | android.app.FragmentManagerImpl.moveToState (FragmentManager.java:1312)
  | android.app.FragmentManagerImpl.moveFragmentToExpectedState (FragmentManager.java:1549)
  | android.app.FragmentManagerImpl.moveToState (FragmentManager.java:1611)
  | android.app.FragmentManagerImpl.dispatchMoveToState (FragmentManager.java:3045)
  | android.app.FragmentManagerImpl.dispatchStart (FragmentManager.java:3002)
  | android.app.FragmentController.dispatchStart (FragmentController.java:190)
  | android.app.Activity.performStart (Activity.java:7197)
  | android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2920)
  | android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3032)
  | android.app.ActivityThread.-wrap11 (Unknown Source)
  | android.app.ActivityThread$H.handleMessage (ActivityThread.java:1696)
  | android.os.Handler.dispatchMessage (Handler.java:105)
  | android.os.Looper.loop (Looper.java:164)
  | android.app.ActivityThread.main (ActivityThread.java:6944)
  | java.lang.reflect.Method.invoke (Method.java)
  | com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
  | com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)

Expected behavior

The app should not crash.

Actual behavior

App crashes.

Configuration

Android versions: 8.0
Device models: Galaxy S7 Edge
Mapbox SDK versions: 6.3.0

@iverc
Copy link
Author

iverc commented Aug 24, 2018

Updating to 6.4.0 does not help because it introduces a more severe bug (app crashes when you go back to the map view on various devices and Android versions)

@tobrun tobrun added Android Mapbox Maps SDK for Android telemetry Integration with Mapbox Telemetry libraries labels Aug 24, 2018
@tobrun
Copy link
Member

tobrun commented Aug 24, 2018

Updating to 6.4.0 does not help because it introduces a more severe bug (app crashes when you go back to the map view on various devices and Android versions)

@iverc thank you for reaching out, could you back this up with some example code? Could you share the stacktrace? We haven't heard about such crashes from other users or have seen this behaviour ourselves.

regarding the telemetry service crash from OP, @electrostat can you look more into this?

@iverc
Copy link
Author

iverc commented Aug 24, 2018

@tobrun This crash was caught by Fabric, please find stack trace in the issue description. It does not point to my code and I don't call telemetry directly so I'm not sure which example code should I share.
The only thing I do is initializing Mapbox MapView with all lifecycle callbacks and setting style URL like setStyleUrl(MAPBOX_STYLE_URL). I'm pretty sure that it is not related to my code since it does not happen on other Mapbox/Android versions. Could it be related to bumping telemetry to 3.1.4?

@tobrun
Copy link
Member

tobrun commented Aug 24, 2018

@iverc
I was actual referring to the crash you mention later on in relation to 6.4.0:

Updating to 6.4.0 does not help because it introduces a more severe bug (app crashes when you go back to the map view on various devices and Android versions)

Thanks again for reaching out, providing feedback and using our products!

@iverc
Copy link
Author

iverc commented Aug 24, 2018

@tobrun oh, got it. I will open a separate issue for it. Thanks for quick response!

@iverc
Copy link
Author

iverc commented Aug 24, 2018

@tobrun Also, the same version of Mapbox SDK (6.3.0) causes ANR's on Samsung Galazy Tab E 8.0. It might be related since it also points to TelemetryService. Here is the ANR log from GP console:

"main" prio=5 tid=1 Native
  | group="main" sCount=1 dsCount=0 obj=0x759eb268 self=0xa9104e00
  | sysTid=8284 nice=0 cgrp=default sched=0/0 handle=0xac349534
  | state=S schedstat=( 10431891553 9096826177 28616 ) utm=811 stm=232 core=0 HZ=100
  | stack=0xbe65b000-0xbe65d000 stackSize=8MB
  | held mutexes=
 
  #00  pc 0000000000017748  /system/lib/libc.so (syscall+28)
 
  #01  pc 000000000004762d  /system/lib/libc.so (_ZL24__pthread_cond_timedwaitP23pthread_cond_internal_tP15pthread_mutex_tbPK8timespec+102)
 
  #02  pc 0000000000353e17  /data/app/com.*.android-1/lib/arm/libmapbox-gl.so (???)
 
  #03  pc 0000000000354309  /data/app/com.*.android-1/lib/arm/libmapbox-gl.so (???)
 
  #04  pc 000000000035435b  /data/app/com.*.android-1/lib/arm/libmapbox-gl.so (???)
 
  #05  pc 00000000000600b7  /data/app/com.*.android-1/lib/arm/libmapbox-gl.so (???)
 
  #06  pc 00000000001881bb  /data/app/com.*.android-1/lib/arm/libmapbox-gl.so (???)
 
  #07  pc 000000000018829b  /data/app/com.*.android-1/lib/arm/libmapbox-gl.so (???)
 
  #08  pc 00000000001882cb  /data/app/com.*.android-1/lib/arm/libmapbox-gl.so (???)
 
  #09  pc 000000000004973f  /data/app/com.*.android-1/lib/arm/libmapbox-gl.so (???)
 
  #10  pc 00000000000497a1  /data/app/com.*.android-1/lib/arm/libmapbox-gl.so (???)
 
  #11  pc 00000000000504c5  /data/app/com.*.android-1/lib/arm/libmapbox-gl.so (???)
 
  #12  pc 000000000005051b  /data/app/com.*.android-1/lib/arm/libmapbox-gl.so (???)
 
  #13  pc 00000000000bad27  /data/app/com.*.android-1/oat/arm/base.odex (Java_com_mapbox_mapboxsdk_maps_NativeMapView_nativeDestroy__+74)
 
  at com.mapbox.mapboxsdk.maps.NativeMapView.nativeDestroy (Native method)
 
  at com.mapbox.mapboxsdk.maps.NativeMapView.destroy (NativeMapView.java:124)
 
  at com.mapbox.mapboxsdk.maps.MapView.onDestroy (MapView.java:419)

@zugaldia
Copy link
Member

Thank you @iverc - it seems we might have three different issues reported here.

@iverc
Copy link
Author

iverc commented Aug 24, 2018

@zugaldia I mentioned that it might be telemetry-related because GP console shows that this ANR point to TelemetryService (please see attached screenshot):
screen shot 2018-08-24 at 4 58 55 pm

@lilykaiser
Copy link

I believe the issue in the OP should be solved by mapbox/mapbox-events-android#157, someone please correct me if I'm wrong!

@tobrun
Copy link
Member

tobrun commented Aug 29, 2018

@lilykaiser that was the setup to address this in 6.1.3 but this hasn't resolved this issue.

@lilykaiser
Copy link

Thanks for clarifying!

@electrostat
Copy link

@iverc Running into issues replicating this issue locally. Through all my tests and research it looks like the command that was triggered should only trigger while the device is in the foreground. Could you share some more details about your implementation (where you are calling our sdk, other sdks you are running, etc...). I'm trying to find a way to reliably replicate this trigger, so I can get it solved for you.

@jplipata
Copy link

jplipata commented Sep 20, 2018

[Deleted] -- My bad, wrong version of mapbox

@ericsvg
Copy link

ericsvg commented Sep 28, 2018

We've had the same issue pop up in two different places (Mapbox SDK 6.5.0).

First occurence (reported just once on Android 9.0):

Fatal Exception: java.lang.IllegalStateException: Not allowed to start service Intent { cmp=com.myapp.android/com.myapp.android.telemetry.TelemetryService }: app is in background uid UidRecord{b9c8f22 u0a175 TPSL idle change:cached procs:1 seq(0,0,0)}
       at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1577)
       at android.app.ContextImpl.startService(ContextImpl.java:1532)
       at android.content.ContextWrapper.startService(ContextWrapper.java:664)
       at com.mapbox.android.telemetry.MapboxTelemetry.startLocation(MapboxTelemetry.java:499)
       at com.mapbox.android.telemetry.MapboxTelemetry.onEnterForeground(MapboxTelemetry.java:548)
       at com.mapbox.android.telemetry.MapboxTelemetry_LifecycleAdapter.callMethods(MapboxTelemetry_LifecycleAdapter.java:25)
       at android.arch.lifecycle.SingleGeneratedAdapterObserver.onStateChanged(SingleGeneratedAdapterObserver.java:35)
       at android.arch.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:354)
       at android.arch.lifecycle.LifecycleRegistry.forwardPass(LifecycleRegistry.java:292)
       at android.arch.lifecycle.LifecycleRegistry.sync(LifecycleRegistry.java:332)
       at android.arch.lifecycle.LifecycleRegistry.moveToState(LifecycleRegistry.java:137)
       at android.arch.lifecycle.LifecycleRegistry.handleLifecycleEvent(LifecycleRegistry.java:123)
       at android.arch.lifecycle.ProcessLifecycleOwner.activityStarted(ProcessLifecycleOwner.java:107)
       at android.arch.lifecycle.ProcessLifecycleOwner$2.onStart(ProcessLifecycleOwner.java:79)
       at android.arch.lifecycle.ReportFragment.dispatchStart(ReportFragment.java:60)
       at android.arch.lifecycle.ReportFragment.onStart(ReportFragment.java:80)
       at android.app.Fragment.performStart(Fragment.java:2548)
       at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1334)
       at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1576)
       at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1637)
       at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:3046)
       at android.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:3003)
       at android.app.FragmentController.dispatchStart(FragmentController.java:193)
       at android.app.Activity.performStart(Activity.java:7165)
       at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2937)
       at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
       at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
       at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
       at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
       at android.os.Handler.dispatchMessage(Handler.java:106)
       at android.os.Looper.loop(Looper.java:193)
       at android.app.ActivityThread.main(ActivityThread.java:6669)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Second occurence (reported once on Android 7.0):

Fatal Exception: java.lang.RuntimeException: Unable to start service com.mapbox.android.telemetry.TelemetryService@93ba8bf with Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.myapp.android/.ui.StartActivity launchParam=MultiScreenLaunchParams { mDisplayId=0 mFlags=0 } (has extras) }: java.lang.IllegalArgumentException: Service not registered: com.mapbox.android.telemetry.MapboxTelemetry$3@b93a1de
       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3702)
       at android.app.ActivityThread.-wrap23(ActivityThread.java)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1740)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:154)
       at android.app.ActivityThread.main(ActivityThread.java:6692)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
Caused by java.lang.IllegalArgumentException: Service not registered: com.mapbox.android.telemetry.MapboxTelemetry$3@b93a1de
       at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:1352)
       at android.app.ContextImpl.unbindService(ContextImpl.java:1553)
       at android.content.ContextWrapper.unbindService(ContextWrapper.java:708)
       at com.mapbox.android.telemetry.MapboxTelemetry.unbindServiceConnection(MapboxTelemetry.java:539)
       at com.mapbox.android.telemetry.MapboxTelemetry.unbindTelemetryService(MapboxTelemetry.java:441)
       at com.mapbox.android.telemetry.MapboxTelemetry.unregisterTelemetry(MapboxTelemetry.java:429)
       at com.mapbox.android.telemetry.MapboxTelemetry.onTaskRemoved(MapboxTelemetry.java:114)
       at com.mapbox.android.telemetry.TelemetryService.onTaskRemoved(TelemetryService.java:79)
       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3687)
       at android.app.ActivityThread.-wrap23(ActivityThread.java)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1740)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:154)
       at android.app.ActivityThread.main(ActivityThread.java:6692)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)

Kinda odd that the first occurrence was during an onStart() method. Maybe an Android issue?

@tan-tran-viet-xx
Copy link

@mapbox_team Please take a look on Samsung Note 5, I got so many crashes on this device related to mapbox telemetry:

@zugaldia
Copy link
Member

Thank you @Jukurrpa @tan-tran-viet for the reports - the team is aware of this issue and is actively working on a fix that can be tracked on mapbox/mapbox-events-android#254 (currently under review).

@zugaldia
Copy link
Member

A fix for this issue has now landed with mapbox/mapbox-events-android#254 and it'll be included with our next releases. A patch release for 6.x is scheduled today, a final release for 7.x is scheduled for the third week of December (with pre-releases happening on a weekly basis until then that could be used for testing purposes).

If you're still seeing this issue after upgrading, please cut a new ticket. Thanks all for your patience along the way!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Android Mapbox Maps SDK for Android high priority telemetry Integration with Mapbox Telemetry libraries
Projects
None yet
Development

No branches or pull requests

9 participants