Android framework version
net10.0-android
Affected platform version
.NET 10.0.203
Description
A .NET Android bindings project that includes the Mapbox Maps SDK AARs crashes immediately on launch with a native SIGABRT in both .NET 10 emulators and real devices. The same setup works correctly in .NET 9.
The crash occurs before any managed code runs — Application.OnCreate is never reached. The same Mapbox SDK version is used in both cases. It looks like the .so files are being loaded twice, or in the wrong order.
What I tried
- IInitializer / AndroidX Startup — attempted to pre-initialize Mapbox via androidx.startup but crash occurs before any initializer runs.
- ContentProvider pre-init — implemented a custom ContentProvider with OnCreate to pre-touch Mapbox classes before Application.OnCreate. Crash still occurs before ContentProvider.OnCreate is reached.
- Disabled all Mapbox InitializationProvider entries — confirmed via merged manifest that all Mapbox AndroidX Startup initializers are removed. Crash persists.
- Confirmed classes are in DEX — BaseMapboxInitializer and MapboxMapsInitializer are present in classes.dex.
- Confirmed single libc++_shared.so — no duplicate copies in the APK.
- Proguard/R8 — already disabled in debug builds, not the cause.
- Using newest version of the Mapbox SDK.
Steps to Reproduce
Reproduction Repository
https://github.com/natevarghese/DotNetMapbox
A minimal reproduction repository is provided with two separate solutions demonstrating the working (.NET 9) and broken (.NET 10) behavior side by side. I added global.json to each solution.
/
├── Net9/ # Works correctly
└── Net10/ # Crashes on launch
Open each solution independently and install workloads. Run on android emulator or device and observe crash on .Net 10 project only.
Did you find any workaround?
No
Relevant log output
W/MapboxInitializer(29978): Trying to call static BaseMapboxInitializer.init() before running BaseMapboxInitializer.create()! Please make sure that Mapbox SDK is initialized before any APIs are called.
04-24 07:56:29.288 W/t10mapboxrunner(29978): Accessing hidden method Landroid/app/ActivityThread;->currentActivityThread()Landroid/app/ActivityThread; (unsupported, reflection, allowed)
04-24 07:56:29.289 W/t10mapboxrunner(29978): Accessing hidden method Landroid/app/ActivityThread;->getApplication()Landroid/app/Application; (unsupported, reflection, allowed)
04-24 07:56:29.290 I/MapboxInitializer(29978): MapboxInitializer started MapboxSDKCommonInitializerImpl initialization, attempt 1
04-24 07:56:29.315 D/nativeloader(29978): Load /data/app/~~YeBWbuXRMSYkP5BgZs9PJg==/com.testing.dotnet10mapboxrunner-gS4l83bJl_PmkehJuZfm3A==/lib/x86_64/libmapbox-common.so using ns clns-7 from class loader (caller=/data/app/~~YeBWbuXRMSYkP5BgZs9PJg==/com.testing.dotnet10mapboxrunner-gS4l83bJl_PmkehJuZfm3A==/base.apk): ok
04-24 07:56:29.317 E/libc++abi(29978): __cxa_guard_acquire detected recursive initialization: do you have a function-local static variable whose initialization depends on that function?
04-24 07:56:29.320 F/libc (29978): Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 29978 (t10mapboxrunner), pid 29978 (t10mapboxrunner)
04-24 07:56:29.509 E/crash_dump64(30001): failed to get the guest state header for thread 29978: Bad address
04-24 07:56:29.513 E/crash_dump64(30001): failed to get the guest state header for thread 29980: Bad address
04-24 07:56:29.515 E/crash_dump64(30001): failed to get the guest state header for thread 29981: Bad address
04-24 07:56:29.517 E/crash_dump64(30001): failed to get the guest state header for thread 29982: Bad address
04-24 07:56:29.520 E/crash_dump64(30001): failed to get the guest state header for thread 29983: Bad address
04-24 07:56:29.522 E/crash_dump64(30001): failed to get the guest state header for thread 29984: Bad address
04-24 07:56:29.524 E/crash_dump64(30001): failed to get the guest state header for thread 29985: Bad address
04-24 07:56:29.526 E/crash_dump64(30001): failed to get the guest state header for thread 29986: Bad address
04-24 07:56:29.527 E/crash_dump64(30001): failed to get the guest state header for thread 29987: Bad address
04-24 07:56:29.530 E/crash_dump64(30001): failed to get the guest state header for thread 29988: Bad address
04-24 07:56:29.531 E/crash_dump64(30001): failed to get the guest state header for thread 29989: Bad address
04-24 07:56:29.532 E/crash_dump64(30001): failed to get the guest state header for thread 29990: Bad address
04-24 07:56:29.533 E/crash_dump64(30001): failed to get the guest state header for thread 29992: Bad address
04-24 07:56:29.537 E/crash_dump64(30001): failed to get the guest state header for thread 29996: Bad address
04-24 07:56:29.541 E/crash_dump64(30001): failed to get the guest state header for thread 29997: Bad address
04-24 07:56:29.546 E/crash_dump64(30001): failed to get the guest state header for thread 29998: Bad address
04-24 07:56:29.586 I/crash_dump64(30001): obtaining output fd from tombstoned, type: kDebuggerdTombstoneProto
04-24 07:56:29.590 I/tombstoned( 222): received crash request for pid 29978
04-24 07:56:29.593 I/crash_dump64(30001): performing dump of process 29978 (target tid = 29978)
04-24 07:56:32.283 F/DEBUG (30001): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
04-24 07:56:32.283 F/DEBUG (30001): Build fingerprint: 'google/sdk_gphone64_x86_64/emu64xa:15/AE3A.240806.036/12592187:user/release-keys'
04-24 07:56:32.283 F/DEBUG (30001): Revision: '0'
04-24 07:56:32.283 F/DEBUG (30001): ABI: 'x86_64'
04-24 07:56:32.284 F/DEBUG (30001): Timestamp: 2026-04-24 07:56:29.642454011-0400
04-24 07:56:32.284 F/DEBUG (30001): Process uptime: 6s
04-24 07:56:32.284 F/DEBUG (30001): Cmdline: com.testing.dotnet10mapboxrunner
04-24 07:56:32.285 F/DEBUG (30001): pid: 29978, tid: 29978, name: t10mapboxrunner >>> com.testing.dotnet10mapboxrunner <<<
04-24 07:56:32.285 F/DEBUG (30001): uid: 10213
04-24 07:56:32.285 F/DEBUG (30001): signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
04-24 07:56:32.285 F/DEBUG (30001): Abort message: '__cxa_guard_acquire detected recursive initialization: do you have a function-local static variable whose initialization depends on that function?'
04-24 07:56:32.285 F/DEBUG (30001): rax 0000000000000000 rbx 00007fffd4aeeac8 rcx 00007da691b54b90 rdx 0000000000000006
04-24 07:56:32.285 F/DEBUG (30001): r8 00007da48359f550 r9 00007da48359f550 r10 00007fffd4aeead0 r11 0000000000000207
04-24 07:56:32.285 F/DEBUG (30001): r12 00007fffd4aeeca0 r13 0000003000000008 r14 000000000000751a r15 000000000000751a
04-24 07:56:32.286 F/DEBUG (30001): rdi 000000000000751a rsi 000000000000751a
04-24 07:56:32.286 F/DEBUG (30001): rbp 000000000000751a rsp 00007fffd4aeeac0 rip 00007da691b54b90
04-24 07:56:32.286 F/DEBUG (30001): 104 total frames
04-24 07:56:32.286 F/DEBUG (30001): backtrace:
04-24 07:56:32.286 F/DEBUG (30001): #00 pc 000000000005cb90 /apex/com.android.runtime/lib64/bionic/libc.so (abort+192) (BuildId: eb58b4d427279994f00c0e1818477e4f)
04-24 07:56:32.286 F/DEBUG (30001): #01 pc 000000000009dc6f /data/app/~~YeBWbuXRMSYkP5BgZs9PJg==/com.testing.dotnet10mapboxrunner-gS4l83bJl_PmkehJuZfm3A==/lib/x86_64/libc++_shared.so (BuildId: 084515e55071d4679de77492b2f0d748a2276196)
04-24 07:56:32.286 F/DEBUG (30001): #02 pc 000000000009cd1c /data/app/~~YeBWbuXRMSYkP5BgZs9PJg==/com.testing.dotnet10mapboxrunner-gS4l83bJl_PmkehJuZfm3A==/lib/x86_64/libc++_shared.so (__cxa_guard_acquire+269) (BuildId: 084515e55071d4679de77492b2f0d748a2276196)
04-24 07:56:32.286 F/DEBUG (30001): #03 pc 00000000002f8fe0 /data/app/~~YeBWbuXRMSYkP5BgZs9PJg==/com.testing.dotnet10mapboxrunner-gS4l83bJl_PmkehJuZfm3A==/lib/x86_64/libmapbox-common.so (BuildId: 6c7370f7af6386ae0d5ecf3c52ad28eea6d8c3c2)
04-24 07:56:32.287 F/DEBUG (30001): #04 pc 0000000000593f7d /data/app/~~YeBWbuXRMSYkP5BgZs9PJg==/com.testing.dotnet10mapboxrunner-gS4l83bJl_PmkehJuZfm3A==/lib/x86_64/libmapbox-common.so (mapbox::bindgen::initialize(_JavaVM*)+48) (BuildId: 6c7370f7af6386ae0d5ecf3c52ad28eea6d8c3c2)
04-24 07:56:32.287 F/DEBUG (30001): #05 pc 00000000006807bc /apex/com.android.art/lib64/libart.so (art::JavaVMExt::LoadNativeLibrary(_JNIEnv*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>> const&, _jobject*, _jclass*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*)+3516) (BuildId: 62338b1c62e3991543c9b8b8bae2b361)
04-24 07:56:32.287 F/DEBUG (30001): #06 pc 00000000000050f3 /apex/com.android.art/lib64/libopenjdkjvm.so (JVM_NativeLoad+355) (BuildId: 1d3d7da26cf5268558c64a66611de01d)
04-24 07:56:32.287 F/DEBUG (30001): #07 pc 00000000001665a0 [anon_shmem:dalvik-jit-code-cache] (offset 0x2000000) (art_jni_trampoline+208)
04-24 07:56:32.287 F/DEBUG (30001): #08 pc 00000000000247bb [anon_shmem:dalvik-jit-code-cache] (offset 0x2000000) (java.lang.Runtime.loadLibrary0+427)
04-24 07:56:32.288 F/DEBUG (30001): #09 pc 0000000000023e11 [anon_shmem:dalvik-jit-code-cache] (offset 0x2000000) (java.lang.Runtime.loadLibrary0+177)
04-24 07:56:32.288 F/DEBUG (30001): #10 pc 0000000000023b52 [anon_shmem:dalvik-jit-code-cache] (offset 0x2000000) (java.lang.System.loadLibrary+178)
04-24 07:56:32.288 F/DEBUG (30001): #11 pc 00000000002124b6 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+806) (BuildId: 62338b1c62e3991543c9b8b8bae2b361)
04-24 07:56:32.288 F/DEBUG (30001): #12 pc 0000000000474c24 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 62338b1c62e3991543c9b8b8bae2b361)
04-24 07:56:32.292 F/DEBUG (30001): #13 pc 00000000005f92f3 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thr
Android framework version
net10.0-android
Affected platform version
.NET 10.0.203
Description
A .NET Android bindings project that includes the Mapbox Maps SDK AARs crashes immediately on launch with a native SIGABRT in both .NET 10 emulators and real devices. The same setup works correctly in .NET 9.
The crash occurs before any managed code runs — Application.OnCreate is never reached. The same Mapbox SDK version is used in both cases. It looks like the .so files are being loaded twice, or in the wrong order.
What I tried
Steps to Reproduce
Reproduction Repository
https://github.com/natevarghese/DotNetMapbox
A minimal reproduction repository is provided with two separate solutions demonstrating the working (.NET 9) and broken (.NET 10) behavior side by side. I added global.json to each solution.
/
├── Net9/ # Works correctly
└── Net10/ # Crashes on launch
Open each solution independently and install workloads. Run on android emulator or device and observe crash on .Net 10 project only.
Did you find any workaround?
No
Relevant log output