Skip to content

Android: SIGSEGV in MDK_setGlobalOptionInt32 on Android startup #375

Description

@msskimmeritz

drafted with claude 🤖

Summary

App crashes with SIGSEGV during FvpPlugin static init on Android.
The fault happens inside libmdk.so (downloaded from the
SourceForge nightly URL). Reproduces on Samsung Galaxy (arm64-v8a)
with both fvp 0.35.2 and 0.37.2.

Environment

  • fvp 0.35.2 / 0.37.2 — same crash, same libmdk.so BuildId
    (ea4042beb6a60aed9b411bdf56b3ee7018d42264)
  • Flutter stable, NDK default, AGP 8.13.2

Crash

F libc  : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault
addr 0x0
F DEBUG : Cause: null pointer dereference

#00 libmdk.so
#04 libmdk.so   mdk::abi::SetGlobalOption(...)
#05 libmdk.so   MDK_setGlobalOptionInt32+48
#06 libfvp_plugin.so
#07 libfvp_plugin.so   JNI_OnLoad+44
#18 com.mediadevkit.fvp.FvpPlugin.<clinit>
#27 io.flutter.plugins.GeneratedPluginRegistrant.registerWith
#43 io.flutter.embedding.engine.FlutterEngine.<init>
#75
com.ryanheise.audioservice.AudioServiceFragmentActivity.onCreate

Dart code never runs; Flutter tool reports VM Service connection
failure as a downstream symptom.

Workaround

cmake/deps.cmake honors FVP_DEPS_URL. Pointing it at the GitHub
stable release works:

FVP_DEPS_URL=https://github.com/wang-bin/mdk-sdk/releases/latest/do
wnload \
  flutter run --debug

After clearing the cached mdk-sdk-android.7z and mdk-sdk/ in
pub-cache, the GitHub release binary loads fine and the app boots
normally.

Request

Consider defaulting to a pinned stable mdk-sdk release instead of
SourceForge nightly, or at least documenting FVP_DEPS_URL as the
recommended way to pin a known-good mdk version.

Update

Stacktrace from Google Play Console

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

backtrace:
#00  pc 0x00000000001e98f8  /data/app/~~3Y_cNPSIj10cYGVXzLyj1w==/com.meritz.hawaii-jDsxhkQoRKDSKYAgyc7e8A==/split_config.arm64_v8a.apk!libmdk.so (mdk::abi::SubtitleDecoder::decoded() const+63307776) (BuildId: ea4042beb6a60aed9b411bdf56b3ee7018d42264)
#01  pc 0x0000000000115bc0  /data/app/~~3Y_cNPSIj10cYGVXzLyj1w==/com.meritz.hawaii-jDsxhkQoRKDSKYAgyc7e8A==/split_config.arm64_v8a.apk!libmdk.so (mdk::abi::MediaIO::accessMode() const+63307776) (BuildId: ea4042beb6a60aed9b411bdf56b3ee7018d42264)
#02  pc 0x00000000000b1c54  /data/app/~~3Y_cNPSIj10cYGVXzLyj1w==/com.meritz.hawaii-jDsxhkQoRKDSKYAgyc7e8A==/split_config.arm64_v8a.apk!libmdk.so (mdk::abi::GetGlobalOptionOr(char const*, std::__ndk1::variant<std::__ndk1::monostate, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>, int, long, float, double, void*> const&)+63307776) (BuildId: ea4042beb6a60aed9b411bdf56b3ee7018d42264)
#03  pc 0x00000000000b3248  /data/app/~~3Y_cNPSIj10cYGVXzLyj1w==/com.meritz.hawaii-jDsxhkQoRKDSKYAgyc7e8A==/split_config.arm64_v8a.apk!libmdk.so (mdk::abi::GetGlobalOptionOr(char const*, std::__ndk1::variant<std::__ndk1::monostate, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>, int, long, float, double, void*> const&)+63307776) (BuildId: ea4042beb6a60aed9b411bdf56b3ee7018d42264)
#04  pc 0x00000000000aef1c  /data/app/~~3Y_cNPSIj10cYGVXzLyj1w==/com.meritz.hawaii-jDsxhkQoRKDSKYAgyc7e8A==/split_config.arm64_v8a.apk!libmdk.so (mdk::abi::SetGlobalOption(char const*, std::__ndk1::variant<std::__ndk1::monostate, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>, int, long, float, double, void*>)+60) (BuildId: ea4042beb6a60aed9b411bdf56b3ee7018d42264)
#05  pc 0x00000000000a29ac  /data/app/~~3Y_cNPSIj10cYGVXzLyj1w==/com.meritz.hawaii-jDsxhkQoRKDSKYAgyc7e8A==/split_config.arm64_v8a.apk!libmdk.so (MDK_setGlobalOptionInt32+48) (BuildId: ea4042beb6a60aed9b411bdf56b3ee7018d42264)
#06  pc 0x0000000000004a2c  /data/app/~~3Y_cNPSIj10cYGVXzLyj1w==/com.meritz.hawaii-jDsxhkQoRKDSKYAgyc7e8A==/split_config.arm64_v8a.apk!libfvp.so (JNI_OnLoad+60) (BuildId: f73872156b550f81cca7d6defce42a2e6fef36e7)
#07  pc 0x0000000000483a40  /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>>*)+1560)
#08  pc 0x00000000000056ac  /apex/com.android.art/lib64/libopenjdkjvm.so (JVM_NativeLoad+368)
#09  pc 0x00000000002e2eb4  /system/framework/arm64/boot.oat (art_jni_trampoline+148)
#10  pc 0x00000000000f3ce8  /system/framework/arm64/boot.oat (java.lang.Runtime.loadLibrary0+312)
#11  pc 0x00000000000f4dec  /system/framework/arm64/boot.oat (java.lang.Runtime.loadLibrary0+428)
#12  pc 0x0000000000105444  /system/framework/arm64/boot.oat (java.lang.System.loadLibrary+84)
#13  pc 0x00000000006680e8  /apex/com.android.art/lib64/libart.so (nterp_helper+152)
#14  pc 0x000000000070a6b8  /data/app/~~3Y_cNPSIj10cYGVXzLyj1w==/com.meritz.hawaii-jDsxhkQoRKDSKYAgyc7e8A==/base.apk (com.mediadevkit.fvp.FvpPlugin.<clinit>+4)
#15  pc 0x00000000002ab260  /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+640)
#16  pc 0x00000000005e39c8  /apex/com.android.art/lib64/libart.so (art::ClassLinker::InitializeClass(art::Thread*, art::Handle<art::mirror::Class>, bool, bool)+6308)
#17  pc 0x000000000040c6dc  /apex/com.android.art/lib64/libart.so (artAllocObjectFromCodeResolvedTLAB+480)
#18  pc 0x00000000002c018c  /apex/com.android.art/lib64/libart.so (art_quick_alloc_object_resolved_tlab+92)
#19  pc 0x000000000061f314  /data/app/~~3Y_cNPSIj10cYGVXzLyj1w==/com.meritz.hawaii-jDsxhkQoRKDSKYAgyc7e8A==/oat/arm64/base.odex (io.flutter.plugins.GeneratedPluginRegistrant.registerWith+3572)
#20  pc 0x00000000002ab260  /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+640)
#21  pc 0x00000000002a1308  /apex/com.android.art/lib64/libart.so (_jobject* art::InvokeMethod<(art::PointerSize)8>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+552)
#22  pc 0x00000000005a3f5c  /apex/com.android.art/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*) (.__uniq.165753521025965369065708152063621506277)+32)
#23  pc 0x00000000002e2a64  /system/framework/arm64/boot.oat (art_jni_trampoline+116)
#24  pc 0x00000000005f4450  /data/app/~~3Y_cNPSIj10cYGVXzLyj1w==/com.meritz.hawaii-jDsxhkQoRKDSKYAgyc7e8A==/oat/arm64/base.odex (io.flutter.embedding.engine.plugins.util.GeneratedPluginRegister.registerGeneratedPlugins+368)
#25  pc 0x00000000005e47f0  /data/app/~~3Y_cNPSIj10cYGVXzLyj1w==/com.meritz.hawaii-jDsxhkQoRKDSKYAgyc7e8A==/oat/arm64/base.odex (io.flutter.embedding.engine.FlutterEngine.<init>+5872)
#26  pc 0x00000000005e30d0  /data/app/~~3Y_cNPSIj10cYGVXzLyj1w==/com.meritz.hawaii-jDsxhkQoRKDSKYAgyc7e8A==/oat/arm64/base.odex (io.flutter.embedding.engine.FlutterEngine.<init>+80)
#27  pc 0x00000000005abaf8  /data/app/~~3Y_cNPSIj10cYGVXzLyj1w==/com.meritz.hawaii-jDsxhkQoRKDSKYAgyc7e8A==/oat/arm64/base.odex (com.ryanheise.audioservice.AudioServicePlugin.getFlutterEngine+344)
#28  pc 0x00000000005a76e8  /data/app/~~3Y_cNPSIj10cYGVXzLyj1w==/com.meritz.hawaii-jDsxhkQoRKDSKYAgyc7e8A==/oat/arm64/base.odex (com.ryanheise.audioservice.AudioServiceFragmentActivity.onCreate+72)
#29  pc 0x000000000021e468  /system/framework/arm64/boot-framework.oat (android.app.Activity.performCreate+1000)
#30  pc 0x00000000002eac90  /system/framework/arm64/boot-framework.oat (android.app.Instrumentation.callActivityOnCreate+80)
#31  pc 0x00000000002731f8  /system/framework/arm64/boot-framework.oat (android.app.ActivityThread.performLaunchActivity+2984)
#32  pc 0x000000000027ad5c  /system/framework/arm64/boot-framework.oat (android.app.ActivityThread.handleLaunchActivity+1548)
#33  pc 0x0000000000669000  /apex/com.android.art/lib64/libart.so (nterp_helper+4016)
#34  pc 0x000000000032ceb2  /system/framework/framework.jar (android.app.servertransaction.LaunchActivityItem.execute+166)
#35  pc 0x000000000034f2f0  /system/framework/arm64/boot-framework.oat (android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem+496)
#36  pc 0x000000000034fab0  /system/framework/arm64/boot-framework.oat (android.app.servertransaction.TransactionExecutor.executeTransactionItems+272)
#37  pc 0x000000000034f850  /system/framework/arm64/boot-framework.oat (android.app.servertransaction.TransactionExecutor.execute+144)
#38  pc 0x0000000000261020  /system/framework/arm64/boot-framework.oat (android.app.ActivityThread$H.handleMessage+2864)
#39  pc 0x00000000004dcea8  /system/framework/arm64/boot-framework.oat (android.os.Handler.dispatchMessage+152)
#40  pc 0x0000000000550320  /system/framework/arm64/boot-framework.oat (android.os.Looper.loopOnce+3248)
#41  pc 0x000000000054f5f4  /system/framework/arm64/boot-framework.oat (android.os.Looper.loop+244)
#42  pc 0x0000000000272498  /system/framework/arm64/boot-framework.oat (android.app.ActivityThread.main+1560)
#43  pc 0x00000000002ab260  /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+640)
#44  pc 0x00000000002a1308  /apex/com.android.art/lib64/libart.so (_jobject* art::InvokeMethod<(art::PointerSize)8>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+552)
#45  pc 0x00000000005a3f5c  /apex/com.android.art/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*) (.__uniq.165753521025965369065708152063621506277)+32)
#46  pc 0x00000000002e2a64  /system/framework/arm64/boot.oat (art_jni_trampoline+116)
#47  pc 0x000000000084a62c  /system/framework/arm64/boot-framework.oat (com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run+108)
#48  pc 0x0000000000851a0c  /system/framework/arm64/boot-framework.oat (com.android.internal.os.ZygoteInit.main+3084)
#49  pc 0x00000000002ab260  /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+640)
#50  pc 0x00000000002a9eb4  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+876)
#51  pc 0x00000000006097e8  /apex/com.android.art/lib64/libart.so (art::JNI<true>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+184)
#52  pc 0x0000000000126fd4  /system/lib64/libandroid_runtime.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+108)
#53  pc 0x000000000014e744  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::start(char const*, android::Vector<android::String8> const&, bool)+916)
#54  pc 0x000000000000259c  /system/bin/app_process64 (main+1244)
#55  pc 0x000000000009dec0  /apex/com.android.runtime/lib64/bionic/libc.so (__libc_init+124)

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions