Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Map crashing in 11.5.0 on Android #2905

Open
nijs9 opened this issue Oct 4, 2024 · 9 comments
Open

Map crashing in 11.5.0 on Android #2905

nijs9 opened this issue Oct 4, 2024 · 9 comments
Labels
android bug Something isn't working

Comments

@nijs9
Copy link

nijs9 commented Oct 4, 2024

Describe the bug
In Android SDK 11.5.0, the app crashes consistently after a few seconds. I am only using a simple map view, without any extra layers or features. This does not happen in version 11.1.0. The map opens, and after a few seconds, the app crashes completely with this stack trace:

_tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
pac_enabled_keys: 000000000000000f (PR_PAC_APIAKEY, PR_PAC_APIBKEY, PR_PAC_APDAKEY, PR_PAC_APDBKEY)
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0000000000000030
Cause: null pointer dereference
x0 0000000000000000 x1 b400007b928f7648 x2 b400007b928f7648 x3 0000000000001403
x4 0000000000000000 x5 0000007a8be98fbc x6 0000000000000000 x7 0000000000000000
x8 0000000000000001 x9 0000000000000000 x10 0000000000000001 x11 0000000000000000
x12 0000000000000000 x13 000000000000000d x14 0000000000000000 x15 0000000000000ab5
x16 0000000000000001 x17 0000007d6bb2778c x18 00000078f441a000 x19 b400007c2294ff40
x20 0000000000001403 x21 000000000000006c x22 0000000000000004 x23 0000000000000000
x24 0000000000000000 x25 000000000000006c x26 0000000000000048 x27 00000078f502f000
x28 0000000000000000 x29 00000078f502deb0
lr 0000007a8be99188 sp 00000078f502de90 pc 0000007a8be99190 pst 0000000080001000
backtrace:
#00 pc 0000000000032190 /vendor/lib64/libGLESv2_enc.so (GL2Encoder::s_glDrawElements(void*, unsigned int, int, unsigned int, void const*)+468) (BuildId: a27664df0c89ccdb6da110c4b80f92f7)
#1 pc 00000000008838fc /data/app/~~OPUNEaoXetvfWPFBowUmoA==/be.wand-r94mLnHq9bN3uy6EtR_DlA==/lib/arm64/libmaplibre.so (BuildId: 83ac463f6b31f38bd519357ac1cec43f1073dee2)
#2 pc 00000000008b0240 /data/app/~~OPUNEaoXetvfWPFBowUmoA==/be.wand-r94mLnHq9bN3uy6EtR_DlA==/lib/arm64/libmaplibre.so (BuildId: 83ac463f6b31f38bd519357ac1cec43f1073dee2)
#3 pc 00000000008b148c /data/app/~~OPUNEaoXetvfWPFBowUmoA==/be.wand-r94mLnHq9bN3uy6EtR_DlA==/lib/arm64/libmaplibre.so (BuildId: 83ac463f6b31f38bd519357ac1cec43f1073dee2)
#4 pc 00000000006b89d8 /data/app/~~OPUNEaoXetvfWPFBowUmoA==/be.wand-r94mLnHq9bN3uy6EtR_DlA==/lib/arm64/libmaplibre.so (BuildId: 83ac463f6b31f38bd519357ac1cec43f1073dee2)
#5 pc 00000000006b6f44 /data/app/~~OPUNEaoXetvfWPFBowUmoA==/be.wand-r94mLnHq9bN3uy6EtR_DlA==/lib/arm64/libmaplibre.so (BuildId: 83ac463f6b31f38bd519357ac1cec43f1073dee2)
#6 pc 00000000004dac24 /data/app/~~OPUNEaoXetvfWPFBowUmoA==/be.wand-r94mLnHq9bN3uy6EtR_DlA==/lib/arm64/libmaplibre.so (mbgl::android::MapRenderer::render(_JNIEnv&)+192) (BuildId: 83ac463f6b31f38bd519357ac1cec43f1073dee2)
#7 pc 00000000004ddae0 /data/app/~~OPUNEaoXetvfWPFBowUmoA==/be.wand-r94mLnHq9bN3uy6EtR_DlA==/lib/arm64/libmaplibre.so (auto auto jni::MakeNativeMethod<auto jni::NativeMethodMaker<void (auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Objectmbgl::android::MapRenderer&)::)(_JNIEnv&, jni::Objectmbgl::android::MapRenderer&) const>::operator()<auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Objectmbgl::android::MapRenderer&)>(char const, auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Objectmbgl::android::MapRenderer&) const&)::'lambda'(_JNIEnv, jni::jobject*)>(char const*, char const*, auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Objectmbgl::android::MapRenderer&) const&, std::__ndk1::enable_if<std::is_class<auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Objectmbgl::android::MapRenderer&)>::value, void>::type*)::'lambda'(_JNIEnv*, auto...)::__invokejni::jobject*(_JNIEnv*, auto...)+44) (BuildId: 83ac463f6b31f38bd519357ac1cec43f1073dee2)
#8 pc 0000000000461d54 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+148) (BuildId: 4c9b59b74ca9272f710a71137164c349)
#9 pc 000000000020a2b0 /apex/com.android.art/lib64/libart.so (nterp_helper+4016) (BuildId: 4c9b59b74ca9272f710a71137164c349)
#10 pc 00000000003f77ac [anon:dalvik-classes6.dex extracted in memory from /data/app/~~OPUNEaoXetvfWPFBowUmoA==/be.wand-r94mLnHq9bN3uy6EtR_DlA==/base.apk!classes6.dex] (org.maplibre.android.maps.renderer.MapRenderer.onDrawFrame+12)
#11 pc 000000000020a254 /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 4c9b59b74ca9272f710a71137164c349)
#12 pc 00000000003f947c [anon:dalvik-classes6.dex extracted in memory from /data/app/~~OPUNEaoXetvfWPFBowUmoA==/be.wand-r94mLnHq9bN3uy6EtR_DlA==/base.apk!classes6.dex] (org.maplibre.android.maps.renderer.glsurfaceview.GLSurfaceViewMapRenderer.onDrawFrame+0)
#13 pc 000000000020b120 /apex/com.android.art/lib64/libart.so (nterp_helper+7712) (BuildId: 4c9b59b74ca9272f710a71137164c349)
#14 pc 00000000003f9f22 [anon:dalvik-classes6.dex extracted in memory from /data/app/~~OPUNEaoXetvfWPFBowUmoA==/be.wand-r94mLnHq9bN3uy6EtR_DlA==/base.apk!classes6.dex] (org.maplibre.android.maps.renderer.glsurfaceview.MapLibreGLSurfaceView$GLThread.guardedRun+994)
#15 pc 000000000020a254 /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 4c9b59b74ca9272f710a71137164c349)
#16 pc 00000000003fa4a8 [anon:dalvik-classes6.dex extracted in memory from /data/app/~~OPUNEaoXetvfWPFBowUmoA==/be.wand-r94mLnHq9bN3uy6EtR_DlA==/base.apk!classes6.dex] (org.maplibre.android.maps.renderer.glsurfaceview.MapLibreGLSurfaceView$GLThread.run+52)
#17 pc 000000000045836c /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+556) (BuildId: 4c9b59b74ca9272f710a71137164c349)
#18 pc 00000000004841e4 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156) (BuildId: 4c9b59b74ca9272f710a71137164c349)
#19 pc 0000000000483eb0 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValuesart::ArtMethod*(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+400) (BuildId: 4c9b59b74ca9272f710a71137164c349)
#20 pc 00000000005cc668 /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1680) (BuildId: 4c9b59b74ca9272f710a71137164c349)
#21 pc 00000000000b63b0 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+208) (BuildId: 4e07915368c859b1910c68c84a8de75f)
#22 pc 00000000000530b8 /apex/com.android.runtime/lib64/bionic/libc.so (_start_thread+64) (BuildId: 4e07915368c859b1910c68c84a8de75f)

To Reproduce
Steps to reproduce the behavior:

  1. Open a simple fullscreen map on an Android device

Platform information (please complete the following information):

  • OS: Android
  • Platform Android
  • Version 14
@nijs9 nijs9 added the bug Something isn't working label Oct 4, 2024
@westnordost
Copy link
Collaborator

westnordost commented Oct 4, 2024

What device are you testing with? (MapLibre 11.x.x+ requires OpenGL ES 3.0. Whether it is supported or not depends on the device used.)

@westnordost westnordost added the more info needed Further information is requested label Oct 4, 2024
@nijs9
Copy link
Author

nijs9 commented Oct 4, 2024

@westnordost Galaxy A23 5G SM-A263B/DSN Android 14. In Android emulator Pixel 8 API 35 crash is also happening.

@westnordost westnordost removed the more info needed Further information is requested label Oct 4, 2024
@westnordost
Copy link
Collaborator

westnordost commented Oct 4, 2024

To test whether this is an OpenGL-specific issue, can you reproduce this with org.maplibre.gl:android-sdk:11.3.0-vulkan-pre0? To check whether this only occurs on Android 14, can you check if it is reproducible on a device with an older Android?

@westnordost westnordost added the more info needed Further information is requested label Oct 4, 2024
@nijs9
Copy link
Author

nijs9 commented Oct 4, 2024

@westnordost I can confirm that the issue does not occur with org.maplibre.gl:android-sdk:11.3.0-vulkan-pre0. With this version, it works on the device, and in the emulator (on Android 13 and 14).

Edit: I'm wrong. Crash is also happening with this version, in this case I can pan a little bit before the crash is happening.

Edit: I changed to another vector tile provider, and now crash is not happening with 11.5.0. Is it possible the vector style is causing the crash?

@westnordost westnordost added OpenGL Issues related to the OpenGL renderer backend and removed OpenGL Issues related to the OpenGL renderer backend labels Oct 4, 2024
@westnordost
Copy link
Collaborator

So, I understand it also occurs for the Vulkan rendering backend and it occurs for different Android versions.

Is it possible the vector style is causing the crash?

To find a way to reproduce this issue for MapLibre developers (I am not one, I am just doing a bit of triage issue here), it would be helpful to know the map tile provider and the location at which this is happening (I.e. at what location is the camera looking at at the point of crash). It certainly shouldn't cause a crash, i.e. MapLibre should be robust against possibly invalid vector tile data, but there could be a bug.

@nijs9
Copy link
Author

nijs9 commented Oct 4, 2024

So, I understand it also occurs for the Vulkan rendering backend and it occurs for different Android versions.

Yes indeed. I also notice, by the way, that in Vulkan, all styles from the providers (one of them being StadiaMaps Alidade Smooth Dark) crash, while in 11.5.0 the StadiaMaps style renders correctly and does not crash, but the others do. In 11.1.0, none of the styles crash.

I will inform the person who created the vector style in question and ask if they can provide more information.

@westnordost
Copy link
Collaborator

I think it is better to report this as a new issue. That one should be pretty straightforward to reproduce and there's currently a push to make the Vulkan renderer stable ASAP.

@westnordost westnordost removed the more info needed Further information is requested label Oct 4, 2024
@louwers
Copy link
Collaborator

louwers commented Oct 24, 2024

Could you try the newest version?

@ianthetechie
Copy link
Collaborator

Jumping in on this thread since I think I may have some more useful info. @Archdoog and I have been putting off migrating https://github.com/Rallista/maplibre-compose-playground and Ferrostar to MapLibre Android v11 since July since we were getting crashes on launch for our demo app. This appears to have been fixed in the intervening releases; 11.6.1 does not crash on launch at lest.

However, it does crash when we start navigating but only in an emulator; the real device I have works fine. We are not 100% sure, but guessed that it was something related to the camera. Issue #2592 could possibly be related.

The real device is a Murena Two running Android 13.0. The emulator uses the Android 14.0 arm64-v8a image and is running on my MacBook with an ARM CPU.

Backtrace from logcat
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'google/sdk_gphone64_arm64/emu64a:14/UE1A.230829.036.A4/12096271:user/release-keys'
Revision: '0'
ABI: 'arm64'
Timestamp: 2024-11-12 12:20:42.224667035+0900
Process uptime: 24s
Cmdline: com.stadiamaps.ferrostar.demo
pid: 5649, tid: 5738, name: RenderThread 76  >>> com.stadiamaps.ferrostar.demo <<<
uid: 10190
tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
pac_enabled_keys: 000000000000000f (PR_PAC_APIAKEY, PR_PAC_APIBKEY, PR_PAC_APDAKEY, PR_PAC_APDBKEY)
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0000000000000030
Cause: null pointer dereference
    x0  0000000000000000  x1  b4000075310f7468  x2  b4000075310f7468  x3  0000000000001403
    x4  0000000000000000  x5  0000007377188f4c  x6  0000000000000001  x7  b4000075a1141f90
    x8  0000000000000001  x9  0000000000002ccc  x10 b4000074311fd218  x11 b4000074311fd218
    x12 b400007541114470  x13 b400007541114478  x14 0000000000000001  x15 00000000000066c6
    x16 0000000000000001  x17 000000763276ba5c  x18 0000007302ace000  x19 b4000075a1141160
    x20 0000000000001403  x21 0000000000000006  x22 0000000000000004  x23 0000000000000000
    x24 b40000752113c6a0  x25 0000000000000006  x26 0000000000000048  x27 0000007302f9e000
    x28 b40000752113c6a0  x29 0000007302f9be60
    lr  0000007377189154  sp  0000007302f9be40  pc  000000737718915c  pst 0000000080001000
37 total frames
backtrace:
      #00 pc 000000000004215c  /vendor/lib64/libGLESv2_enc.so (GL2Encoder::s_glDrawElements(void*, unsigned int, int, unsigned int, void const*)+528) (BuildId: b149613f2cd1fb2b1c631898de5c658b)
      #01 pc 00000000008a8af4  /data/app/~~GEe9hBQTDjvsFdrSBKWdNg==/com.stadiamaps.ferrostar.demo-yyKStYr9sXil1_LX0KzCPQ==/base.apk!libmaplibre.so (offset 0xe58000) (BuildId: ecec6e21f8a31a1886cad753bc6dea202d2bbebe)
      #02 pc 00000000008c7574  /data/app/~~GEe9hBQTDjvsFdrSBKWdNg==/com.stadiamaps.ferrostar.demo-yyKStYr9sXil1_LX0KzCPQ==/base.apk!libmaplibre.so (offset 0xe58000) (BuildId: ecec6e21f8a31a1886cad753bc6dea202d2bbebe)
      #03 pc 00000000008c8e0c  /data/app/~~GEe9hBQTDjvsFdrSBKWdNg==/com.stadiamaps.ferrostar.demo-yyKStYr9sXil1_LX0KzCPQ==/base.apk!libmaplibre.so (offset 0xe58000) (BuildId: ecec6e21f8a31a1886cad753bc6dea202d2bbebe)
      #04 pc 00000000006d5e14  /data/app/~~GEe9hBQTDjvsFdrSBKWdNg==/com.stadiamaps.ferrostar.demo-yyKStYr9sXil1_LX0KzCPQ==/base.apk!libmaplibre.so (offset 0xe58000) (BuildId: ecec6e21f8a31a1886cad753bc6dea202d2bbebe)
      #05 pc 00000000006d42f0  /data/app/~~GEe9hBQTDjvsFdrSBKWdNg==/com.stadiamaps.ferrostar.demo-yyKStYr9sXil1_LX0KzCPQ==/base.apk!libmaplibre.so (offset 0xe58000) (BuildId: ecec6e21f8a31a1886cad753bc6dea202d2bbebe)
      #06 pc 00000000004e26a8  /data/app/~~GEe9hBQTDjvsFdrSBKWdNg==/com.stadiamaps.ferrostar.demo-yyKStYr9sXil1_LX0KzCPQ==/base.apk!libmaplibre.so (offset 0xe58000) (mbgl::android::MapRenderer::render(_JNIEnv&)+216) (BuildId: ecec6e21f8a31a1886cad753bc6dea202d2bbebe)
      #07 pc 00000000004e58b8  /data/app/~~GEe9hBQTDjvsFdrSBKWdNg==/com.stadiamaps.ferrostar.demo-yyKStYr9sXil1_LX0KzCPQ==/base.apk!libmaplibre.so (offset 0xe58000) (auto auto jni::MakeNativeMethod<auto jni::NativeMethodMaker<void (auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&)::*)(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&) const>::operator()<auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&)>(char const*, auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&) const&)::'lambda'(_JNIEnv*, jni::jobject*)>(char const*, char const*, auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&) const&, std::__ndk1::enable_if<std::is_class<auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&)>::value, void>::type*)::'lambda'(_JNIEnv*, auto...)::__invoke<jni::jobject*>(_JNIEnv*, auto...)+44) (BuildId: ecec6e21f8a31a1886cad753bc6dea202d2bbebe)
      #08 pc 0000000000377030  /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+144) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #09 pc 00000000003605a4  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+612) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #10 pc 00000000004906b4  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+1248) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #11 pc 000000000050a5d4  /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+2380) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #12 pc 00000000003797d8  /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #13 pc 00000000010b67d0  <anonymous:731e7a3000> (org.maplibre.android.maps.renderer.MapRenderer.onDrawFrame+0)
      #14 pc 000000000037cde0  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #15 pc 000000000049120c  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+4152) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #16 pc 000000000050aca4  /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+4124) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #17 pc 00000000003797d8  /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #18 pc 00000000010b9b50  <anonymous:731e7a3000> (org.maplibre.android.maps.renderer.surfaceview.SurfaceViewMapRenderer.onDrawFrame+0)
      #19 pc 000000000037cde0  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #20 pc 000000000049120c  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+4152) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #21 pc 0000000000509f94  /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+780) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #22 pc 00000000003797d8  /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #23 pc 00000000010b886c  <anonymous:731e7a3000> (org.maplibre.android.maps.renderer.surfaceview.MapLibreGLSurfaceView$GLThread.guardedRun+0)
      #24 pc 000000000037cde0  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #25 pc 000000000049120c  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+4152) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #26 pc 0000000000509f94  /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+780) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #27 pc 00000000003797d8  /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #28 pc 00000000010b9510  <anonymous:731e7a3000> (org.maplibre.android.maps.renderer.surfaceview.MapLibreSurfaceView$RenderThread.run+0)
      #29 pc 000000000037cde0  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #30 pc 000000000037c560  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+672) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #31 pc 0000000000377168  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #32 pc 00000000003605a4  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+612) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #33 pc 000000000034b8a4  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+144) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #34 pc 00000000004f3e30  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1888) (BuildId: b10f5696fea1b32039b162aef3850ed3)
      #35 pc 00000000000cb6a8  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+208) (BuildId: a87908b48b368e6282bcc9f34bcfc28c)
      #36 pc 000000000006821c  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: a87908b48b368e6282bcc9f34bcfc28c)
Symbolicated
********** Crash dump: **********
Build fingerprint: 'google/sdk_gphone64_arm64/emu64a:14/UE1A.230829.036.A4/12096271:user/release-keys'
#00 0x000000000004215c /vendor/lib64/libGLESv2_enc.so (GL2Encoder::s_glDrawElements(void*, unsigned int, int, unsigned int, void const*)+528) (BuildId: b149613f2cd1fb2b1c631898de5c658b)
#01 0x00000000008a8af4 /data/app/~~GEe9hBQTDjvsFdrSBKWdNg==/com.stadiamaps.ferrostar.demo-yyKStYr9sXil1_LX0KzCPQ==/base.apk!libmaplibre.so (offset 0xe58000) (BuildId: ecec6e21f8a31a1886cad753bc6dea202d2bbebe)
#02 0x00000000008c7574 /data/app/~~GEe9hBQTDjvsFdrSBKWdNg==/com.stadiamaps.ferrostar.demo-yyKStYr9sXil1_LX0KzCPQ==/base.apk!libmaplibre.so (offset 0xe58000) (BuildId: ecec6e21f8a31a1886cad753bc6dea202d2bbebe)
#03 0x00000000008c8e0c /data/app/~~GEe9hBQTDjvsFdrSBKWdNg==/com.stadiamaps.ferrostar.demo-yyKStYr9sXil1_LX0KzCPQ==/base.apk!libmaplibre.so (offset 0xe58000) (BuildId: ecec6e21f8a31a1886cad753bc6dea202d2bbebe)
#04 0x00000000006d5e14 /data/app/~~GEe9hBQTDjvsFdrSBKWdNg==/com.stadiamaps.ferrostar.demo-yyKStYr9sXil1_LX0KzCPQ==/base.apk!libmaplibre.so (offset 0xe58000) (BuildId: ecec6e21f8a31a1886cad753bc6dea202d2bbebe)
#05 0x00000000006d42f0 /data/app/~~GEe9hBQTDjvsFdrSBKWdNg==/com.stadiamaps.ferrostar.demo-yyKStYr9sXil1_LX0KzCPQ==/base.apk!libmaplibre.so (offset 0xe58000) (BuildId: ecec6e21f8a31a1886cad753bc6dea202d2bbebe)
#06 0x00000000004e26a8 /data/app/~~GEe9hBQTDjvsFdrSBKWdNg==/com.stadiamaps.ferrostar.demo-yyKStYr9sXil1_LX0KzCPQ==/base.apk!libmaplibre.so (offset 0xe58000) (mbgl::android::MapRenderer::render(_JNIEnv&)+216) (BuildId: ecec6e21f8a31a1886cad753bc6dea202d2bbebe)
#07 0x00000000004e58b8 /data/app/~~GEe9hBQTDjvsFdrSBKWdNg==/com.stadiamaps.ferrostar.demo-yyKStYr9sXil1_LX0KzCPQ==/base.apk!libmaplibre.so (offset 0xe58000) (auto auto jni::MakeNativeMethod<auto jni::NativeMethodMaker<void (auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&)::*)(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&) const>::operator()<auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&)>(char const*, auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&) const&)::'lambda'(_JNIEnv*, jni::jobject*)>(char const*, char const*, auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&) const&, std::__ndk1::enable_if<std::is_class<auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&)>::value, void>::type*)::'lambda'(_JNIEnv*, auto...)::__invoke<jni::jobject*>(_JNIEnv*, auto...)+44) (BuildId: ecec6e21f8a31a1886cad753bc6dea202d2bbebe)
#08 0x0000000000377030 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+144) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#09 0x00000000003605a4 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+612) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#10 0x00000000004906b4 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+1248) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#11 0x000000000050a5d4 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+2380) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#12 0x00000000003797d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#13 0x00000000010b67d0 <anonymous:731e7a3000> (org.maplibre.android.maps.renderer.MapRenderer.onDrawFrame+0)
#14 0x000000000037cde0 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#15 0x000000000049120c /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+4152) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#16 0x000000000050aca4 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+4124) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#17 0x00000000003797d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#18 0x00000000010b9b50 <anonymous:731e7a3000> (org.maplibre.android.maps.renderer.surfaceview.SurfaceViewMapRenderer.onDrawFrame+0)
#19 0x000000000037cde0 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#20 0x000000000049120c /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+4152) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#21 0x0000000000509f94 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+780) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#22 0x00000000003797d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#23 0x00000000010b886c <anonymous:731e7a3000> (org.maplibre.android.maps.renderer.surfaceview.MapLibreGLSurfaceView$GLThread.guardedRun+0)
#24 0x000000000037cde0 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#25 0x000000000049120c /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+4152) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#26 0x0000000000509f94 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+780) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#27 0x00000000003797d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#28 0x00000000010b9510 <anonymous:731e7a3000> (org.maplibre.android.maps.renderer.surfaceview.MapLibreSurfaceView$RenderThread.run+0)
#29 0x000000000037cde0 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#30 0x000000000037c560 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+672) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#31 0x0000000000377168 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#32 0x00000000003605a4 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+612) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#33 0x000000000034b8a4 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+144) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#34 0x00000000004f3e30 /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1888) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#35 0x00000000000cb6a8 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+208) (BuildId: a87908b48b368e6282bcc9f34bcfc28c)
#36 0x000000000006821c /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: a87908b48b368e6282bcc9f34bcfc28c)
Symbolicated from July
********** Crash dump: **********
Build fingerprint: 'google/sdk_gphone64_arm64/emu64a:14/UE1A.230829.036.A2/11596452:user/release-keys'
#00 0x000000000004215c /vendor/lib64/libGLESv2_enc.so (GL2Encoder::s_glDrawElements(void*, unsigned int, int, unsigned int, void const*)+528) (BuildId: b149613f2cd1fb2b1c631898de5c658b)
#01 0x0000000000817ab8 /data/app/~~LGn8x3ud8ZydRo2YvxO1pw==/com.stadiamaps.ferrostar.demo-d5ZIO85I_JUcDK8m1_ZBwg==/base.apk!libmaplibre.so (offset 0xf78000) (BuildId: 52946ca4b0b526e6cc37dc4b34587e4fb012eb10)
#02 0x000000000081af24 /data/app/~~LGn8x3ud8ZydRo2YvxO1pw==/com.stadiamaps.ferrostar.demo-d5ZIO85I_JUcDK8m1_ZBwg==/base.apk!libmaplibre.so (offset 0xf78000) (BuildId: 52946ca4b0b526e6cc37dc4b34587e4fb012eb10)
#03 0x000000000081cdd4 /data/app/~~LGn8x3ud8ZydRo2YvxO1pw==/com.stadiamaps.ferrostar.demo-d5ZIO85I_JUcDK8m1_ZBwg==/base.apk!libmaplibre.so (offset 0xf78000) (BuildId: 52946ca4b0b526e6cc37dc4b34587e4fb012eb10)
#04 0x000000000063f294 /data/app/~~LGn8x3ud8ZydRo2YvxO1pw==/com.stadiamaps.ferrostar.demo-d5ZIO85I_JUcDK8m1_ZBwg==/base.apk!libmaplibre.so (offset 0xf78000) (BuildId: 52946ca4b0b526e6cc37dc4b34587e4fb012eb10)
#05 0x000000000063d9e0 /data/app/~~LGn8x3ud8ZydRo2YvxO1pw==/com.stadiamaps.ferrostar.demo-d5ZIO85I_JUcDK8m1_ZBwg==/base.apk!libmaplibre.so (offset 0xf78000) (BuildId: 52946ca4b0b526e6cc37dc4b34587e4fb012eb10)
#06 0x0000000000482af4 /data/app/~~LGn8x3ud8ZydRo2YvxO1pw==/com.stadiamaps.ferrostar.demo-d5ZIO85I_JUcDK8m1_ZBwg==/base.apk!libmaplibre.so (offset 0xf78000) (mbgl::android::MapRenderer::render(_JNIEnv&)+216) (BuildId: 52946ca4b0b526e6cc37dc4b34587e4fb012eb10)
#07 0x00000000004855fc /data/app/~~LGn8x3ud8ZydRo2YvxO1pw==/com.stadiamaps.ferrostar.demo-d5ZIO85I_JUcDK8m1_ZBwg==/base.apk!libmaplibre.so (offset 0xf78000) (auto auto jni::MakeNativeMethod<auto jni::NativeMethodMaker<void (auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&)::*)(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&) const>::operator()<auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&)>(char const*, auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&) const&)::'lambda'(_JNIEnv*, jni::jobject*)>(char const*, char const*, auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&) const&, std::__ndk1::enable_if<std::is_class<auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&)>::value, void>::type*)::'lambda'(_JNIEnv*, auto...)::__invoke<jni::jobject*>(_JNIEnv*, auto...)+44) (BuildId: 52946ca4b0b526e6cc37dc4b34587e4fb012eb10)
#08 0x0000000000377030 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+144) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#09 0x00000000003605a4 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+612) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#10 0x00000000004906b4 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+1248) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#11 0x000000000050a5d4 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+2380) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#12 0x00000000003797d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#13 0x00000000000c7cb8 <anonymous:760ae5d000> (org.maplibre.android.maps.renderer.MapRenderer.onDrawFrame+0)
#14 0x000000000037cde0 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#15 0x000000000049120c /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+4152) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#16 0x000000000050aca4 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+4124) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#17 0x00000000003797d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#18 0x00000000000c9928 <anonymous:760ae5d000> (org.maplibre.android.maps.renderer.glsurfaceview.GLSurfaceViewMapRenderer.onDrawFrame+0)
#19 0x000000000037cde0 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#20 0x000000000049120c /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+4152) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#21 0x000000000050aca4 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+4124) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#22 0x00000000003797d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#23 0x00000000000ca0e0 <anonymous:760ae5d000> (org.maplibre.android.maps.renderer.glsurfaceview.MapLibreGLSurfaceView$GLThread.guardedRun+0)
#24 0x000000000037cde0 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#25 0x000000000049120c /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+4152) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#26 0x000000000050a5d4 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+2380) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#27 0x00000000003797d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#28 0x00000000000caa14 <anonymous:760ae5d000> (org.maplibre.android.maps.renderer.glsurfaceview.MapLibreGLSurfaceView$GLThread.run+0)
#29 0x000000000037cde0 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#30 0x000000000037c560 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+672) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#31 0x0000000000377168 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#32 0x00000000003605a4 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+612) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#33 0x000000000034b8a4 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+144) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#34 0x00000000004f3e30 /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1888) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#35 0x00000000000cb6a8 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+208) (BuildId: a87908b48b368e6282bcc9f34bcfc28c)
#36 0x000000000006821c /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: a87908b48b368e6282bcc9f34bcfc28c)
Symbolicated from Vulkan pre-release
********** Crash dump: **********
Build fingerprint: 'google/sdk_gphone64_arm64/emu64a:14/UE1A.230829.036.A4/12096271:user/release-keys'
#00 0x000000000004215c /vendor/lib64/libGLESv2_enc.so (GL2Encoder::s_glDrawElements(void*, unsigned int, int, unsigned int, void const*)+528) (BuildId: b149613f2cd1fb2b1c631898de5c658b)
#01 0x00000000008838fc /data/app/~~G8oJR2xchKcPmYLbjPowmA==/com.stadiamaps.ferrostar.demo-adaylEuVrp0BO2gDQ18n1A==/base.apk!libmaplibre.so (offset 0xe58000) (BuildId: 83ac463f6b31f38bd519357ac1cec43f1073dee2)
#02 0x00000000008b0240 /data/app/~~G8oJR2xchKcPmYLbjPowmA==/com.stadiamaps.ferrostar.demo-adaylEuVrp0BO2gDQ18n1A==/base.apk!libmaplibre.so (offset 0xe58000) (BuildId: 83ac463f6b31f38bd519357ac1cec43f1073dee2)
#03 0x00000000008b148c /data/app/~~G8oJR2xchKcPmYLbjPowmA==/com.stadiamaps.ferrostar.demo-adaylEuVrp0BO2gDQ18n1A==/base.apk!libmaplibre.so (offset 0xe58000) (BuildId: 83ac463f6b31f38bd519357ac1cec43f1073dee2)
#04 0x00000000006b89d8 /data/app/~~G8oJR2xchKcPmYLbjPowmA==/com.stadiamaps.ferrostar.demo-adaylEuVrp0BO2gDQ18n1A==/base.apk!libmaplibre.so (offset 0xe58000) (BuildId: 83ac463f6b31f38bd519357ac1cec43f1073dee2)
#05 0x00000000006b6f44 /data/app/~~G8oJR2xchKcPmYLbjPowmA==/com.stadiamaps.ferrostar.demo-adaylEuVrp0BO2gDQ18n1A==/base.apk!libmaplibre.so (offset 0xe58000) (BuildId: 83ac463f6b31f38bd519357ac1cec43f1073dee2)
#06 0x00000000004dac24 /data/app/~~G8oJR2xchKcPmYLbjPowmA==/com.stadiamaps.ferrostar.demo-adaylEuVrp0BO2gDQ18n1A==/base.apk!libmaplibre.so (offset 0xe58000) (mbgl::android::MapRenderer::render(_JNIEnv&)+192) (BuildId: 83ac463f6b31f38bd519357ac1cec43f1073dee2)
#07 0x00000000004ddae0 /data/app/~~G8oJR2xchKcPmYLbjPowmA==/com.stadiamaps.ferrostar.demo-adaylEuVrp0BO2gDQ18n1A==/base.apk!libmaplibre.so (offset 0xe58000) (auto auto jni::MakeNativeMethod<auto jni::NativeMethodMaker<void (auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&)::*)(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&) const>::operator()<auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&)>(char const*, auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&) const&)::'lambda'(_JNIEnv*, jni::jobject*)>(char const*, char const*, auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&) const&, std::__ndk1::enable_if<std::is_class<auto jni::NativePeerMemberFunctionMethod<void (mbgl::android::MapRenderer::*)(_JNIEnv&), &(mbgl::android::MapRenderer::render(_JNIEnv&))>::operator()<mbgl::android::MapRenderer, mbgl::android::MapRenderer, void>(jni::Field<mbgl::android::MapRenderer, long> const&)::'lambda'(_JNIEnv&, jni::Object<mbgl::android::MapRenderer>&)>::value, void>::type*)::'lambda'(_JNIEnv*, auto...)::__invoke<jni::jobject*>(_JNIEnv*, auto...)+44) (BuildId: 83ac463f6b31f38bd519357ac1cec43f1073dee2)
#08 0x0000000000377030 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+144) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#09 0x00000000003605a4 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+612) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#10 0x00000000004906b4 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+1248) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#11 0x000000000050a5d4 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+2380) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#12 0x00000000003797d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#13 0x00000000010b6274 <anonymous:731c7a4000> (org.maplibre.android.maps.renderer.MapRenderer.onDrawFrame+0)
#14 0x000000000037cde0 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#15 0x000000000049120c /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+4152) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#16 0x000000000050aca4 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+4124) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#17 0x00000000003797d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#18 0x00000000010b7edc <anonymous:731c7a4000> (org.maplibre.android.maps.renderer.glsurfaceview.GLSurfaceViewMapRenderer.onDrawFrame+0)
#19 0x000000000037cde0 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#20 0x000000000049120c /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+4152) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#21 0x000000000050aca4 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+4124) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#22 0x00000000003797d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#23 0x00000000010b85c8 <anonymous:731c7a4000> (org.maplibre.android.maps.renderer.glsurfaceview.MapLibreGLSurfaceView$GLThread.guardedRun+0)
#24 0x000000000037cde0 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#25 0x000000000049120c /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+4152) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#26 0x000000000050a5d4 /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+2380) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#27 0x00000000003797d8 /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#28 0x00000000010b8efc <anonymous:731c7a4000> (org.maplibre.android.maps.renderer.glsurfaceview.MapLibreGLSurfaceView$GLThread.run+0)
#29 0x000000000037cde0 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.1377403774332988508)+356) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#30 0x000000000037c560 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+672) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#31 0x0000000000377168 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#32 0x00000000003605a4 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+612) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#33 0x000000000034b8a4 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+144) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#34 0x00000000004f3e30 /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1888) (BuildId: b10f5696fea1b32039b162aef3850ed3)
#35 0x00000000000cb6a8 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+208) (BuildId: a87908b48b368e6282bcc9f34bcfc28c)
#36 0x000000000006821c /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: a87908b48b368e6282bcc9f34bcfc28c)

Some other curious bits:

  • The MapLibre Compose Playground demo app does not crash in the same emulator. @Archdoog and I are pretty sure it did previously when switching to the "puck mode" camera previously, but we have regrettably since forgotten since that was in July.
  • We did save the logcat and ndk-stack symbolicated reports from July, but don't have a record of the version number used IIRC. The symbolicated log has the same general shape, crashes in the same method, and it's still a null pointer issue so I assume it's the same issue. I've included that above too.
  • I tried the Vulkan prerelease as well today. That crashes on launch in an emulator. This is the behavior I remember from a past build in July, so it could be unrelated to Vulkan, since the pre-release build is a few months old now. It works on a real device.
  • Styles have been mentioned as a possible factor both here and in several other threads. I have controlled for this by using the MapLibre demo tiles in a test (rather than Stadia Outdoors), and the results were identical, with the exception that Vulkan did not crash on launch, but only after the app goes into "navigation mode", changing the camera, drawing a polyline, etc.

It's not an MRE exactly, but we've pushed a branch for the Compose playground backed by MapLibre 11. We've done the same for Ferrostar. To build, run ./gradlew assembleRelease in the Compose Playground project first, then update the paths in the maplibreui and demo-app build.gradle files in Ferrostar and run the demo app.

Anything else we can do to help debug this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
android bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants