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

Crash from listOfflineRegions #15403

Closed
JRWilding opened this issue Aug 16, 2019 · 7 comments
Closed

Crash from listOfflineRegions #15403

JRWilding opened this issue Aug 16, 2019 · 7 comments
Labels
Android Mapbox Maps SDK for Android archived Archived because of inactivity crash offline

Comments

@JRWilding
Copy link

Steps to reproduce

Unknown. This is a report coming in from Google Play console (crash doesn't get to firebase/fabric). I know that this limited information probably isn't actionable for you :(

Expected behavior

No crash, or at least more useful information about what the problem is

Actual behavior

#00 pc 0000000000021dcc /system/lib64/libc.so (abort+124)
#1 pc 000000000035e8c4 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#2 pc 000000000035d51c /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#3 pc 00000000000605c0 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#4 pc 000000000012f564 /data/app/de.komoot.android-35UhtYa_FHZMKrC60L70Dg==/oat/arm64/base.odex (com.mapbox.mapboxsdk.offline.OfflineManager.listOfflineRegions [DEDUPED]+180)
#5 pc 000000000003d914 /dev/ashmem/dalvik-jit-code-cache_19651_19651 (deleted)

Configuration

Android versions:
Only Android 9

Device models:
image

Mapbox SDK versions:
v8.2.0

@JRWilding
Copy link
Author

We have many such crash clusters:

#00 pc 000000000001cf66 /system/lib/libc.so (abort+58)
#1 pc 000000000001d417 /system/lib/libc.so (__assert2+22)
#2 pc 000000000025f371 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#3 pc 000000000025e8c9 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#4 pc 0000000000031cd5 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#5 pc 0000000000071357 /data/app/de.komoot.android-u3P9sLn0MrrXC24h2T6DDA==/oat/arm/base.odex (com.mapbox.mapboxsdk.offline.OfflineManager.listOfflineRegions [DEDUPED]+110)
#6 pc 0000000000069991 /dev/ashmem/dalvik-jit-code-cache_28019_28019 (deleted)

backtrace:
#00 pc 0000000000022988 /system/lib64/libc.so (abort+116)
#1 pc 000000000035e8c4 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#2 pc 000000000035d51c /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#3 pc 00000000000605c0 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#4 pc 0000000000000564 /data/app/de.komoot.android-V_zEkCyW4QK0Lwq2MRrXyg==/oat/arm64/base.odex (deleted) (offset 0x70000)

backtrace:
#00 pc 0000000000022988 /system/lib64/libc.so (abort+116)
#1 pc 000000000035e8c4 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#2 pc 000000000035e9f0 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#3 pc 000000000035c7e8 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#4 pc 000000000035bf70 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#5 pc 000000000035bef0 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#6 pc 000000000003a3bc /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#7 pc 000000000003e8b0 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#8 pc 00000000000a7eec /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#9 pc 0000000000121bc0 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#10 pc 0000000000123440 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#11 pc 00000000002a9768 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#12 pc 000000000008e474 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#13 pc 0000000000058e40 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#14 pc 0000000000058fdc /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#15 pc 00000000000573a0 /data/data/de.komoot.android/lib-0/libmapbox-gl.so
#16 pc 00000000000142cc /system/lib64/libutils.so (android::Looper::pollInner(int)+932)
#17 pc 0000000000013e8c /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+60)
#18 pc 000000000012a63c /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)
#19 pc 000000000042a35c /system/framework/arm64/boot-framework.oat (android.media.MediaExtractor.seekTo [DEDUPED]+140)
#20 pc 0000000000bb5994 /system/framework/arm64/boot-framework.oat (android.os.MessageQueue.next+276)
#21 pc 0000000000bb287c /system/framework/arm64/boot-framework.oat (android.os.Looper.loop+716)
#22 pc 0000000000945ba4 /system/framework/arm64/boot-framework.oat (android.app.ActivityThread.main+1236)
#23 pc 000000000056f24c /system/lib64/libart.so (art_quick_invoke_static_stub+604)
#24 pc 00000000000d4224 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+232)
#25 pc 0000000000472fd4 /system/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
#26 pc 0000000000474a28 /system/lib64/libart.so (art::InvokeMethod(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1440)
#27 pc 00000000004043ac /system/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*)+52)
#28 pc 00000000001456d4 /system/framework/arm64/boot.oat (java.lang.Class.getDeclaredMethodInternal [DEDUPED]+180)
#29 pc 0000000000edcbe8 /system/framework/arm64/boot-framework.oat (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+136)
#30 pc 0000000000ee3c0c /system/framework/arm64/boot-framework.oat (com.android.internal.os.ZygoteInit.main+2540)
#31 pc 000000000056f24c /system/lib64/libart.so (art_quick_invoke_static_stub+604)
#32 pc 00000000000d4224 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+232)
#33 pc 0000000000472fd4 /system/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
#34 pc 0000000000472c34 /system/lib64/libart.so (art::InvokeWithVarArgs(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+424)
#35 pc 0000000000367254 /system/lib64/libart.so (art::JNI::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+652)
#36 pc 00000000000b9760 /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+120)
#37 pc 00000000000bc4d8 /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vectorandroid::String8 const&, bool)+780)
#38 pc 0000000000002368 /system/bin/app_process64 (main+1444)
#39 pc 00000000000ae7e4 /system/lib64/libc.so (__libc_init+88)

@tobrun
Copy link
Member

tobrun commented Aug 20, 2019

@JRWilding thank you for the report. Could you confirm you are calling listOfflineRegions from the main thread?

@tobrun tobrun added the Android Mapbox Maps SDK for Android label Aug 20, 2019
@JRWilding
Copy link
Author

@tobrun can confirm that we only ever call listOfflineRegions from the main thread.
This is effecting about 2% of our 2.1 million users, will be providing as much data as possible

@tobrun
Copy link
Member

tobrun commented Aug 20, 2019

thank you for confirming, the crash originates from the android platform as it lists libc.so as first line in the stacktrace and its limited to only Android 9. The crash occurs when we try invoking the callback as part of our android run loop implementation.

Can you share a bit more context on how you are setting up this download. Is this download tied to a specific Activity or a Service? Any other inputs on how we might be able to reproduce this?

@JRWilding
Copy link
Author

Downloads are managed by a service and are downloaded one at a time (users can queue up multiple regions).

We haven't been able to reproduce it locally yet. Looking at all of the crash clusters on Google Play, our initial "crash from listOfflineRegions on Android 9" is a red-herring.

Android versions 6-7 experience:
backtrace:

  #00  pc 000000000006d5d4  /system/lib64/libc.so (tgkill+8)
  #01  pc 000000000006a9f4  /system/lib64/libc.so (pthread_kill+64)
  #02  pc 0000000000024018  /system/lib64/libc.so (raise+24)
  #03  pc 000000000001c8bc  /system/lib64/libc.so (abort+52)
  #04  pc 000000000035e8c4  /data/data/de.komoot.android/lib-0/libmapbox-gl.so
  #05  pc 000000000035d51c  /data/data/de.komoot.android/lib-0/libmapbox-gl.so
  #06  pc 00000000000605c0  /data/data/de.komoot.android/lib-0/libmapbox-gl.so
  #07  pc 0000000001afac38  /data/app/de.komoot.android-1/oat/arm64/base.odex

Android version 8:

backtrace:
  #00  pc 000000000006add0  /system/lib64/libc.so (tgkill+8)
  #01  pc 000000000001df10  /system/lib64/libc.so (abort+88)
  #02  pc 000000000035e8c4  /data/data/de.komoot.android/lib-0/libmapbox-gl.so
  #03  pc 000000000035d51c  /data/data/de.komoot.android/lib-0/libmapbox-gl.so
  #04  pc 00000000000605c0  /data/data/de.komoot.android/lib-0/libmapbox-gl.so
  #05  pc 00000000007fe194  /data/app/de.komoot.android-CXDqxLyfLBoNZzEdFNVBcA==/oat/arm64/base.odex

These 3 lines seem common:

  #04  pc 000000000035e8c4  /data/data/de.komoot.android/lib-0/libmapbox-gl.so
  #05  pc 000000000035d51c  /data/data/de.komoot.android/lib-0/libmapbox-gl.so
  #06  pc 00000000000605c0  /data/data/de.komoot.android/lib-0/libmapbox-gl.so

And given that it usually ends in an assert or abort, I'm presuming that something like the assert(impl) in sqlite3.cpp is being triggered. That leads me to think that the SDK isn't being fully reinitialised after the process is killed and restarted by the Android system.. but that is just guesswork.

As this is happening in native and not throwing exceptions, something like fabric isn't able to pick this up and give more details (like logs).

@Tyler-V
Copy link

Tyler-V commented Sep 13, 2019

I can confirm I am running into this now on mapbox android 8.3.0 attempting to implement this plugin on NativeScript. This appears to be the only issue crashing for me related to the OfflineManager so far.

@stale stale bot added the archived Archived because of inactivity label Mar 11, 2020
@stale
Copy link

stale bot commented Mar 11, 2020

This issue has been automatically detected as stale because it has not had recent activity and will be archived. Thank you for your contributions.

@stale stale bot closed this as completed Mar 11, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Android Mapbox Maps SDK for Android archived Archived because of inactivity crash offline
Projects
None yet
Development

No branches or pull requests

4 participants