[Android] Uncaught exception crashes an app without printing correct stack trace #69601

Description

@simonrozsival

Description

I noticed that uncaught exceptions don't print information about the exception that cause it and instead print information about a SIGSEGV crash originating in Mono m_class_get_class_kind function.

Reproduction Steps

  • replace all of src/mono/sample/Android/Program.cs with simply throw new System.Exception("boom");
  • run the Android sample on a device
  • observe the output with adb logcat -s DEBUG

Expected behavior

The runtime will print a stack trace of the exception which caused the app to crash.

Actual behavior

The app crashes due to null pointer dereference in m_class_get_class_kind and produces a crash report similar to this:

--------- beginning of crash
05-20 11:13:21.970 15259 15259 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-20 11:13:21.970 15259 15259 F DEBUG : Build fingerprint: 'samsung/***/r5q:12/***/***:user/release-keys'
05-20 11:13:21.970 15259 15259 F DEBUG : Revision: '9'
05-20 11:13:21.970 15259 15259 F DEBUG : ABI: 'arm64'
05-20 11:13:21.970 15259 15259 F DEBUG : Processor: '7'
05-20 11:13:21.970 15259 15259 F DEBUG : Timestamp: 2022-05-20 11:13:21.506480018+0200
05-20 11:13:21.970 15259 15259 F DEBUG : Process uptime: 2s
05-20 11:13:21.970 15259 15259 F DEBUG : Cmdline: net.dot.HelloAndroid
05-20 11:13:21.970 15259 15259 F DEBUG : pid: 15122, tid: 15155, name: .dot.MonoRunner >>> net.dot.HelloAndroid <<<
05-20 11:13:21.970 15259 15259 F DEBUG : uid: 10919
05-20 11:13:21.970 15259 15259 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1b
05-20 11:13:21.970 15259 15259 F DEBUG : Cause: null pointer dereference
05-20 11:13:21.970 15259 15259 F DEBUG : x0 0000000000000000 x1 0000007a2e001950 x2 0000000000000000 x3 0000007a83d8eae0
05-20 11:13:21.970 15259 15259 F DEBUG : x4 0000007a83d8ea00 x5 0000000000000000 x6 0000000000000000 x7 0000007a83d8ea68
05-20 11:13:21.970 15259 15259 F DEBUG : x8 0000000000000000 x9 0000007a83d8eae0 x10 0000007a2f6fac9c x11 0000000000000000
05-20 11:13:21.970 15259 15259 F DEBUG : x12 0000007a2f8a110c x13 0000007a83d8ea68 x14 0000000000000010 x15 0000000000000000
05-20 11:13:21.970 15259 15259 F DEBUG : x16 0000007a2faef700 x17 0000007a2f79531c x18 0000007a2f672000 x19 0000007a83d8e7f0
05-20 11:13:21.970 15259 15259 F DEBUG : x20 0000000000000000 x21 0000007a9fafc128 x22 0000000000000000 x23 0000007a9ad710b0
05-20 11:13:21.970 15259 15259 F DEBUG : x24 0000007a9fafc128 x25 0000000000000005 x26 0000000000000033 x27 0000007a83d92000
05-20 11:13:21.970 15259 15259 F DEBUG : x28 0000007a83d90fd0 x29 0000007a83d8e7a0
05-20 11:13:21.970 15259 15259 F DEBUG : lr 0000007a2f941e10 sp 0000007a83d8e770 pc 0000007a2f795328 pst 0000000060000000
05-20 11:13:21.970 15259 15259 F DEBUG : backtrace:
05-20 11:13:21.970 15259 15259 F DEBUG : #00 pc 00000000000ff328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (m_class_get_class_kind+12) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
05-20 11:13:21.970 15259 15259 F DEBUG : #01 pc 00000000002abe0c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
05-20 11:13:21.970 15259 15259 F DEBUG : #02 pc 00000000002a53d0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
05-20 11:13:21.970 15259 15259 F DEBUG : #03 pc 00000000002a52f4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
05-20 11:13:21.970 15259 15259 F DEBUG : #04 pc 00000000002a8624 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
05-20 11:13:21.970 15259 15259 F DEBUG : #05 pc 000000000016f640 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
05-20 11:13:21.970 15259 15259 F DEBUG : #06 pc 000000000016be04 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_try_invoke+148) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
05-20 11:13:21.970 15259 15259 F DEBUG : #07 pc 000000000016f51c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_invoke+88) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
05-20 11:13:21.970 15259 15259 F DEBUG : #08 pc 0000000000002f6c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property+176) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
05-20 11:13:21.970 15259 15259 F DEBUG : #09 pc 0000000000001ee0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property_string+48) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
05-20 11:13:21.970 15259 15259 F DEBUG : #10 pc 0000000000001e48 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (unhandled_exception_handler+108) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
05-20 11:13:21.970 15259 15259 F DEBUG : #11 pc 000000000010f7a8 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
05-20 11:13:21.970 15259 15259 F DEBUG : #12 pc 0000000000347530 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
05-20 11:13:21.970 15259 15259 F DEBUG : #13 pc 0000000000347360 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_jit_exec+68) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
05-20 11:13:21.970 15259 15259 F DEBUG : #14 pc 0000000000002328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_runtime_init+856) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
05-20 11:13:21.970 15259 15259 F DEBUG : #15 pc 0000000000002cb4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (Java_net_dot_MonoRunner_initRuntime+464) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
05-20 11:13:21.970 15259 15259 F DEBUG : #16 pc 00000000002d4044 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+148) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
05-20 11:13:21.970 15259 15259 F DEBUG : #17 pc 00000000002ca9e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
05-20 11:13:21.970 15259 15259 F DEBUG : #18 pc 00000000002ee6b8 /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+320) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
05-20 11:13:21.971 15259 15259 F DEBUG : #19 pc 000000000040ade4 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+820) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
05-20 11:13:21.971 15259 15259 F DEBUG : #20 pc 000000000076d4b8 /apex/com.android.art/lib64/libart.so (MterpInvokeStatic+3812) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
05-20 11:13:21.971 15259 15259 F DEBUG : #21 pc 00000000002c5014 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_static+20) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
05-20 11:13:21.971 15259 15259 F DEBUG : #22 pc 0000000000000ae2 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.initialize+154)
05-20 11:13:21.971 15259 15259 F DEBUG : #23 pc 000000000027d840 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.3351068054637636664)+644) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
05-20 11:13:21.971 15259 15259 F DEBUG : #24 pc 000000000027c9e8 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+1176) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
05-20 11:13:21.971 15259 15259 F DEBUG : #25 pc 00000000002d4178 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
05-20 11:13:21.971 15259 15259 F DEBUG : #26 pc 0000000000209188 /apex/com.android.art/lib64/libart.so (nterp_helper+152) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
05-20 11:13:21.971 15259 15259 F DEBUG : #27 pc 0000000000000c98 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.onStart+56)
05-20 11:13:21.971 15259 15259 F DEBUG : #28 pc 000000000020a044 /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
05-20 11:13:21.971 15259 15259 F DEBUG : #29 pc 000000000024684a /system/framework/framework.jar (android.app.Instrumentation$InstrumentationThread.run+94)
05-20 11:13:21.971 15259 15259 F DEBUG : #30 pc 00000000002ca764 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
05-20 11:13:21.971 15259 15259 F DEBUG : #31 pc 000000000030e980 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
05-20 11:13:21.971 15259 15259 F DEBUG : #32 pc 00000000003c1db4 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+380) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
05-20 11:13:21.971 15259 15259 F DEBUG : #33 pc 00000000004578ec /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+992) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
05-20 11:13:21.971 15259 15259 F DEBUG : #34 pc 00000000000f10f4 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+264) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)
05-20 11:13:21.971 15259 15259 F DEBUG : #35 pc 000000000008d754 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)

Regression?

No response

Known Workarounds

No response

Configuration

  • up-to-date main (3914bcc230134ec3e1c9be903c6bd8ff60d92501)
  • Android 12

EDIT:
The variables in the android sample Makefile:

MONO_CONFIG=Debug
MONO_ARCH?=arm64
DOTNET := ../../../../dotnet.sh
USE_LLVM=false
AOT=false
AOT_WITH_LIBRARY_FILES=false
INTERP=false
DEPLOY_AND_RUN?=true

Other information

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
     blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    
    Skip to content

    [Android] Uncaught exception crashes an app without printing correct stack trace #69601

    Description

    @simonrozsival

    Description

    I noticed that uncaught exceptions don't print information about the exception that cause it and instead print information about a SIGSEGV crash originating in Mono m_class_get_class_kind function.

    Reproduction Steps

    • replace all of src/mono/sample/Android/Program.cs with simply throw new System.Exception("boom");
    • run the Android sample on a device
    • observe the output with adb logcat -s DEBUG

    Expected behavior

    The runtime will print a stack trace of the exception which caused the app to crash.

    Actual behavior

    The app crashes due to null pointer dereference in m_class_get_class_kind and produces a crash report similar to this:

    --------- beginning of crash
    05-20 11:13:21.970 15259 15259 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    05-20 11:13:21.970 15259 15259 F DEBUG : Build fingerprint: 'samsung/***/r5q:12/***/***:user/release-keys'
    05-20 11:13:21.970 15259 15259 F DEBUG : Revision: '9'
    05-20 11:13:21.970 15259 15259 F DEBUG : ABI: 'arm64'
    05-20 11:13:21.970 15259 15259 F DEBUG : Processor: '7'
    05-20 11:13:21.970 15259 15259 F DEBUG : Timestamp: 2022-05-20 11:13:21.506480018+0200
    05-20 11:13:21.970 15259 15259 F DEBUG : Process uptime: 2s
    05-20 11:13:21.970 15259 15259 F DEBUG : Cmdline: net.dot.HelloAndroid
    05-20 11:13:21.970 15259 15259 F DEBUG : pid: 15122, tid: 15155, name: .dot.MonoRunner >>> net.dot.HelloAndroid <<<
    05-20 11:13:21.970 15259 15259 F DEBUG : uid: 10919
    05-20 11:13:21.970 15259 15259 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1b
    05-20 11:13:21.970 15259 15259 F DEBUG : Cause: null pointer dereference
    05-20 11:13:21.970 15259 15259 F DEBUG : x0 0000000000000000 x1 0000007a2e001950 x2 0000000000000000 x3 0000007a83d8eae0
    05-20 11:13:21.970 15259 15259 F DEBUG : x4 0000007a83d8ea00 x5 0000000000000000 x6 0000000000000000 x7 0000007a83d8ea68
    05-20 11:13:21.970 15259 15259 F DEBUG : x8 0000000000000000 x9 0000007a83d8eae0 x10 0000007a2f6fac9c x11 0000000000000000
    05-20 11:13:21.970 15259 15259 F DEBUG : x12 0000007a2f8a110c x13 0000007a83d8ea68 x14 0000000000000010 x15 0000000000000000
    05-20 11:13:21.970 15259 15259 F DEBUG : x16 0000007a2faef700 x17 0000007a2f79531c x18 0000007a2f672000 x19 0000007a83d8e7f0
    05-20 11:13:21.970 15259 15259 F DEBUG : x20 0000000000000000 x21 0000007a9fafc128 x22 0000000000000000 x23 0000007a9ad710b0
    05-20 11:13:21.970 15259 15259 F DEBUG : x24 0000007a9fafc128 x25 0000000000000005 x26 0000000000000033 x27 0000007a83d92000
    05-20 11:13:21.970 15259 15259 F DEBUG : x28 0000007a83d90fd0 x29 0000007a83d8e7a0
    05-20 11:13:21.970 15259 15259 F DEBUG : lr 0000007a2f941e10 sp 0000007a83d8e770 pc 0000007a2f795328 pst 0000000060000000
    05-20 11:13:21.970 15259 15259 F DEBUG : backtrace:
    05-20 11:13:21.970 15259 15259 F DEBUG : #00 pc 00000000000ff328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (m_class_get_class_kind+12) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #01 pc 00000000002abe0c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #02 pc 00000000002a53d0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #03 pc 00000000002a52f4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #04 pc 00000000002a8624 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #05 pc 000000000016f640 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #06 pc 000000000016be04 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_try_invoke+148) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #07 pc 000000000016f51c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_invoke+88) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #08 pc 0000000000002f6c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property+176) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #09 pc 0000000000001ee0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property_string+48) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #10 pc 0000000000001e48 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (unhandled_exception_handler+108) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #11 pc 000000000010f7a8 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #12 pc 0000000000347530 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #13 pc 0000000000347360 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_jit_exec+68) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #14 pc 0000000000002328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_runtime_init+856) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #15 pc 0000000000002cb4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (Java_net_dot_MonoRunner_initRuntime+464) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
    05-20 11:13:21.970 15259 15259 F DEBUG : #16 pc 00000000002d4044 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+148) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
    05-20 11:13:21.970 15259 15259 F DEBUG : #17 pc 00000000002ca9e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
    05-20 11:13:21.970 15259 15259 F DEBUG : #18 pc 00000000002ee6b8 /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+320) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
    05-20 11:13:21.971 15259 15259 F DEBUG : #19 pc 000000000040ade4 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+820) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
    05-20 11:13:21.971 15259 15259 F DEBUG : #20 pc 000000000076d4b8 /apex/com.android.art/lib64/libart.so (MterpInvokeStatic+3812) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
    05-20 11:13:21.971 15259 15259 F DEBUG : #21 pc 00000000002c5014 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_static+20) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
    05-20 11:13:21.971 15259 15259 F DEBUG : #22 pc 0000000000000ae2 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.initialize+154)
    05-20 11:13:21.971 15259 15259 F DEBUG : #23 pc 000000000027d840 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.3351068054637636664)+644) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
    05-20 11:13:21.971 15259 15259 F DEBUG : #24 pc 000000000027c9e8 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+1176) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
    05-20 11:13:21.971 15259 15259 F DEBUG : #25 pc 00000000002d4178 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
    05-20 11:13:21.971 15259 15259 F DEBUG : #26 pc 0000000000209188 /apex/com.android.art/lib64/libart.so (nterp_helper+152) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
    05-20 11:13:21.971 15259 15259 F DEBUG : #27 pc 0000000000000c98 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.onStart+56)
    05-20 11:13:21.971 15259 15259 F DEBUG : #28 pc 000000000020a044 /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
    05-20 11:13:21.971 15259 15259 F DEBUG : #29 pc 000000000024684a /system/framework/framework.jar (android.app.Instrumentation$InstrumentationThread.run+94)
    05-20 11:13:21.971 15259 15259 F DEBUG : #30 pc 00000000002ca764 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
    05-20 11:13:21.971 15259 15259 F DEBUG : #31 pc 000000000030e980 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
    05-20 11:13:21.971 15259 15259 F DEBUG : #32 pc 00000000003c1db4 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+380) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
    05-20 11:13:21.971 15259 15259 F DEBUG : #33 pc 00000000004578ec /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+992) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
    05-20 11:13:21.971 15259 15259 F DEBUG : #34 pc 00000000000f10f4 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+264) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)
    05-20 11:13:21.971 15259 15259 F DEBUG : #35 pc 000000000008d754 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)
    

    Regression?

    No response

    Known Workarounds

    No response

    Configuration

    • up-to-date main (3914bcc230134ec3e1c9be903c6bd8ff60d92501)
    • Android 12

    EDIT:
    The variables in the android sample Makefile:

    MONO_CONFIG=Debug
    MONO_ARCH?=arm64
    DOTNET := ../../../../dotnet.sh
    USE_LLVM=false
    AOT=false
    AOT_WITH_LIBRARY_FILES=false
    INTERP=false
    DEPLOY_AND_RUN?=true
    

    Other information

    No response

    Metadata

    Metadata

    Assignees

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
      Skip to content

      [Android] Uncaught exception crashes an app without printing correct stack trace #69601

      Description

      @simonrozsival

      Description

      I noticed that uncaught exceptions don't print information about the exception that cause it and instead print information about a SIGSEGV crash originating in Mono m_class_get_class_kind function.

      Reproduction Steps

      • replace all of src/mono/sample/Android/Program.cs with simply throw new System.Exception("boom");
      • run the Android sample on a device
      • observe the output with adb logcat -s DEBUG

      Expected behavior

      The runtime will print a stack trace of the exception which caused the app to crash.

      Actual behavior

      The app crashes due to null pointer dereference in m_class_get_class_kind and produces a crash report similar to this:

      --------- beginning of crash
      05-20 11:13:21.970 15259 15259 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
      05-20 11:13:21.970 15259 15259 F DEBUG : Build fingerprint: 'samsung/***/r5q:12/***/***:user/release-keys'
      05-20 11:13:21.970 15259 15259 F DEBUG : Revision: '9'
      05-20 11:13:21.970 15259 15259 F DEBUG : ABI: 'arm64'
      05-20 11:13:21.970 15259 15259 F DEBUG : Processor: '7'
      05-20 11:13:21.970 15259 15259 F DEBUG : Timestamp: 2022-05-20 11:13:21.506480018+0200
      05-20 11:13:21.970 15259 15259 F DEBUG : Process uptime: 2s
      05-20 11:13:21.970 15259 15259 F DEBUG : Cmdline: net.dot.HelloAndroid
      05-20 11:13:21.970 15259 15259 F DEBUG : pid: 15122, tid: 15155, name: .dot.MonoRunner >>> net.dot.HelloAndroid <<<
      05-20 11:13:21.970 15259 15259 F DEBUG : uid: 10919
      05-20 11:13:21.970 15259 15259 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1b
      05-20 11:13:21.970 15259 15259 F DEBUG : Cause: null pointer dereference
      05-20 11:13:21.970 15259 15259 F DEBUG : x0 0000000000000000 x1 0000007a2e001950 x2 0000000000000000 x3 0000007a83d8eae0
      05-20 11:13:21.970 15259 15259 F DEBUG : x4 0000007a83d8ea00 x5 0000000000000000 x6 0000000000000000 x7 0000007a83d8ea68
      05-20 11:13:21.970 15259 15259 F DEBUG : x8 0000000000000000 x9 0000007a83d8eae0 x10 0000007a2f6fac9c x11 0000000000000000
      05-20 11:13:21.970 15259 15259 F DEBUG : x12 0000007a2f8a110c x13 0000007a83d8ea68 x14 0000000000000010 x15 0000000000000000
      05-20 11:13:21.970 15259 15259 F DEBUG : x16 0000007a2faef700 x17 0000007a2f79531c x18 0000007a2f672000 x19 0000007a83d8e7f0
      05-20 11:13:21.970 15259 15259 F DEBUG : x20 0000000000000000 x21 0000007a9fafc128 x22 0000000000000000 x23 0000007a9ad710b0
      05-20 11:13:21.970 15259 15259 F DEBUG : x24 0000007a9fafc128 x25 0000000000000005 x26 0000000000000033 x27 0000007a83d92000
      05-20 11:13:21.970 15259 15259 F DEBUG : x28 0000007a83d90fd0 x29 0000007a83d8e7a0
      05-20 11:13:21.970 15259 15259 F DEBUG : lr 0000007a2f941e10 sp 0000007a83d8e770 pc 0000007a2f795328 pst 0000000060000000
      05-20 11:13:21.970 15259 15259 F DEBUG : backtrace:
      05-20 11:13:21.970 15259 15259 F DEBUG : #00 pc 00000000000ff328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (m_class_get_class_kind+12) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #01 pc 00000000002abe0c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #02 pc 00000000002a53d0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #03 pc 00000000002a52f4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #04 pc 00000000002a8624 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #05 pc 000000000016f640 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #06 pc 000000000016be04 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_try_invoke+148) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #07 pc 000000000016f51c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_invoke+88) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #08 pc 0000000000002f6c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property+176) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #09 pc 0000000000001ee0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property_string+48) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #10 pc 0000000000001e48 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (unhandled_exception_handler+108) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #11 pc 000000000010f7a8 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #12 pc 0000000000347530 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #13 pc 0000000000347360 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_jit_exec+68) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #14 pc 0000000000002328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_runtime_init+856) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #15 pc 0000000000002cb4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (Java_net_dot_MonoRunner_initRuntime+464) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
      05-20 11:13:21.970 15259 15259 F DEBUG : #16 pc 00000000002d4044 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+148) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
      05-20 11:13:21.970 15259 15259 F DEBUG : #17 pc 00000000002ca9e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
      05-20 11:13:21.970 15259 15259 F DEBUG : #18 pc 00000000002ee6b8 /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+320) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
      05-20 11:13:21.971 15259 15259 F DEBUG : #19 pc 000000000040ade4 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+820) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
      05-20 11:13:21.971 15259 15259 F DEBUG : #20 pc 000000000076d4b8 /apex/com.android.art/lib64/libart.so (MterpInvokeStatic+3812) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
      05-20 11:13:21.971 15259 15259 F DEBUG : #21 pc 00000000002c5014 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_static+20) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
      05-20 11:13:21.971 15259 15259 F DEBUG : #22 pc 0000000000000ae2 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.initialize+154)
      05-20 11:13:21.971 15259 15259 F DEBUG : #23 pc 000000000027d840 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.3351068054637636664)+644) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
      05-20 11:13:21.971 15259 15259 F DEBUG : #24 pc 000000000027c9e8 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+1176) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
      05-20 11:13:21.971 15259 15259 F DEBUG : #25 pc 00000000002d4178 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
      05-20 11:13:21.971 15259 15259 F DEBUG : #26 pc 0000000000209188 /apex/com.android.art/lib64/libart.so (nterp_helper+152) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
      05-20 11:13:21.971 15259 15259 F DEBUG : #27 pc 0000000000000c98 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.onStart+56)
      05-20 11:13:21.971 15259 15259 F DEBUG : #28 pc 000000000020a044 /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
      05-20 11:13:21.971 15259 15259 F DEBUG : #29 pc 000000000024684a /system/framework/framework.jar (android.app.Instrumentation$InstrumentationThread.run+94)
      05-20 11:13:21.971 15259 15259 F DEBUG : #30 pc 00000000002ca764 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
      05-20 11:13:21.971 15259 15259 F DEBUG : #31 pc 000000000030e980 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
      05-20 11:13:21.971 15259 15259 F DEBUG : #32 pc 00000000003c1db4 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+380) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
      05-20 11:13:21.971 15259 15259 F DEBUG : #33 pc 00000000004578ec /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+992) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
      05-20 11:13:21.971 15259 15259 F DEBUG : #34 pc 00000000000f10f4 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+264) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)
      05-20 11:13:21.971 15259 15259 F DEBUG : #35 pc 000000000008d754 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)
      

      Regression?

      No response

      Known Workarounds

      No response

      Configuration

      • up-to-date main (3914bcc230134ec3e1c9be903c6bd8ff60d92501)
      • Android 12

      EDIT:
      The variables in the android sample Makefile:

      MONO_CONFIG=Debug
      MONO_ARCH?=arm64
      DOTNET := ../../../../dotnet.sh
      USE_LLVM=false
      AOT=false
      AOT_WITH_LIBRARY_FILES=false
      INTERP=false
      DEPLOY_AND_RUN?=true
      

      Other information

      No response

      Metadata

      Metadata

      Assignees

      Type

      No type

      Projects

      No projects

        Milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
        Skip to content

        [Android] Uncaught exception crashes an app without printing correct stack trace #69601

        Description

        @simonrozsival

        Description

        I noticed that uncaught exceptions don't print information about the exception that cause it and instead print information about a SIGSEGV crash originating in Mono m_class_get_class_kind function.

        Reproduction Steps

        • replace all of src/mono/sample/Android/Program.cs with simply throw new System.Exception("boom");
        • run the Android sample on a device
        • observe the output with adb logcat -s DEBUG

        Expected behavior

        The runtime will print a stack trace of the exception which caused the app to crash.

        Actual behavior

        The app crashes due to null pointer dereference in m_class_get_class_kind and produces a crash report similar to this:

        --------- beginning of crash
        05-20 11:13:21.970 15259 15259 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
        05-20 11:13:21.970 15259 15259 F DEBUG : Build fingerprint: 'samsung/***/r5q:12/***/***:user/release-keys'
        05-20 11:13:21.970 15259 15259 F DEBUG : Revision: '9'
        05-20 11:13:21.970 15259 15259 F DEBUG : ABI: 'arm64'
        05-20 11:13:21.970 15259 15259 F DEBUG : Processor: '7'
        05-20 11:13:21.970 15259 15259 F DEBUG : Timestamp: 2022-05-20 11:13:21.506480018+0200
        05-20 11:13:21.970 15259 15259 F DEBUG : Process uptime: 2s
        05-20 11:13:21.970 15259 15259 F DEBUG : Cmdline: net.dot.HelloAndroid
        05-20 11:13:21.970 15259 15259 F DEBUG : pid: 15122, tid: 15155, name: .dot.MonoRunner >>> net.dot.HelloAndroid <<<
        05-20 11:13:21.970 15259 15259 F DEBUG : uid: 10919
        05-20 11:13:21.970 15259 15259 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1b
        05-20 11:13:21.970 15259 15259 F DEBUG : Cause: null pointer dereference
        05-20 11:13:21.970 15259 15259 F DEBUG : x0 0000000000000000 x1 0000007a2e001950 x2 0000000000000000 x3 0000007a83d8eae0
        05-20 11:13:21.970 15259 15259 F DEBUG : x4 0000007a83d8ea00 x5 0000000000000000 x6 0000000000000000 x7 0000007a83d8ea68
        05-20 11:13:21.970 15259 15259 F DEBUG : x8 0000000000000000 x9 0000007a83d8eae0 x10 0000007a2f6fac9c x11 0000000000000000
        05-20 11:13:21.970 15259 15259 F DEBUG : x12 0000007a2f8a110c x13 0000007a83d8ea68 x14 0000000000000010 x15 0000000000000000
        05-20 11:13:21.970 15259 15259 F DEBUG : x16 0000007a2faef700 x17 0000007a2f79531c x18 0000007a2f672000 x19 0000007a83d8e7f0
        05-20 11:13:21.970 15259 15259 F DEBUG : x20 0000000000000000 x21 0000007a9fafc128 x22 0000000000000000 x23 0000007a9ad710b0
        05-20 11:13:21.970 15259 15259 F DEBUG : x24 0000007a9fafc128 x25 0000000000000005 x26 0000000000000033 x27 0000007a83d92000
        05-20 11:13:21.970 15259 15259 F DEBUG : x28 0000007a83d90fd0 x29 0000007a83d8e7a0
        05-20 11:13:21.970 15259 15259 F DEBUG : lr 0000007a2f941e10 sp 0000007a83d8e770 pc 0000007a2f795328 pst 0000000060000000
        05-20 11:13:21.970 15259 15259 F DEBUG : backtrace:
        05-20 11:13:21.970 15259 15259 F DEBUG : #00 pc 00000000000ff328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (m_class_get_class_kind+12) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #01 pc 00000000002abe0c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #02 pc 00000000002a53d0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #03 pc 00000000002a52f4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #04 pc 00000000002a8624 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #05 pc 000000000016f640 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #06 pc 000000000016be04 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_try_invoke+148) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #07 pc 000000000016f51c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_invoke+88) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #08 pc 0000000000002f6c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property+176) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #09 pc 0000000000001ee0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property_string+48) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #10 pc 0000000000001e48 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (unhandled_exception_handler+108) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #11 pc 000000000010f7a8 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #12 pc 0000000000347530 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #13 pc 0000000000347360 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_jit_exec+68) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #14 pc 0000000000002328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_runtime_init+856) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #15 pc 0000000000002cb4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (Java_net_dot_MonoRunner_initRuntime+464) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
        05-20 11:13:21.970 15259 15259 F DEBUG : #16 pc 00000000002d4044 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+148) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
        05-20 11:13:21.970 15259 15259 F DEBUG : #17 pc 00000000002ca9e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
        05-20 11:13:21.970 15259 15259 F DEBUG : #18 pc 00000000002ee6b8 /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+320) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
        05-20 11:13:21.971 15259 15259 F DEBUG : #19 pc 000000000040ade4 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+820) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
        05-20 11:13:21.971 15259 15259 F DEBUG : #20 pc 000000000076d4b8 /apex/com.android.art/lib64/libart.so (MterpInvokeStatic+3812) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
        05-20 11:13:21.971 15259 15259 F DEBUG : #21 pc 00000000002c5014 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_static+20) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
        05-20 11:13:21.971 15259 15259 F DEBUG : #22 pc 0000000000000ae2 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.initialize+154)
        05-20 11:13:21.971 15259 15259 F DEBUG : #23 pc 000000000027d840 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.3351068054637636664)+644) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
        05-20 11:13:21.971 15259 15259 F DEBUG : #24 pc 000000000027c9e8 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+1176) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
        05-20 11:13:21.971 15259 15259 F DEBUG : #25 pc 00000000002d4178 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
        05-20 11:13:21.971 15259 15259 F DEBUG : #26 pc 0000000000209188 /apex/com.android.art/lib64/libart.so (nterp_helper+152) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
        05-20 11:13:21.971 15259 15259 F DEBUG : #27 pc 0000000000000c98 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.onStart+56)
        05-20 11:13:21.971 15259 15259 F DEBUG : #28 pc 000000000020a044 /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
        05-20 11:13:21.971 15259 15259 F DEBUG : #29 pc 000000000024684a /system/framework/framework.jar (android.app.Instrumentation$InstrumentationThread.run+94)
        05-20 11:13:21.971 15259 15259 F DEBUG : #30 pc 00000000002ca764 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
        05-20 11:13:21.971 15259 15259 F DEBUG : #31 pc 000000000030e980 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
        05-20 11:13:21.971 15259 15259 F DEBUG : #32 pc 00000000003c1db4 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+380) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
        05-20 11:13:21.971 15259 15259 F DEBUG : #33 pc 00000000004578ec /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+992) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
        05-20 11:13:21.971 15259 15259 F DEBUG : #34 pc 00000000000f10f4 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+264) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)
        05-20 11:13:21.971 15259 15259 F DEBUG : #35 pc 000000000008d754 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)
        

        Regression?

        No response

        Known Workarounds

        No response

        Configuration

        • up-to-date main (3914bcc230134ec3e1c9be903c6bd8ff60d92501)
        • Android 12

        EDIT:
        The variables in the android sample Makefile:

        MONO_CONFIG=Debug
        MONO_ARCH?=arm64
        DOTNET := ../../../../dotnet.sh
        USE_LLVM=false
        AOT=false
        AOT_WITH_LIBRARY_FILES=false
        INTERP=false
        DEPLOY_AND_RUN?=true
        

        Other information

        No response

        Metadata

        Metadata

        Assignees

        Type

        No type

        Projects

        No projects

          Milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
          Skip to content

          [Android] Uncaught exception crashes an app without printing correct stack trace #69601

          Description

          @simonrozsival

          Description

          I noticed that uncaught exceptions don't print information about the exception that cause it and instead print information about a SIGSEGV crash originating in Mono m_class_get_class_kind function.

          Reproduction Steps

          • replace all of src/mono/sample/Android/Program.cs with simply throw new System.Exception("boom");
          • run the Android sample on a device
          • observe the output with adb logcat -s DEBUG

          Expected behavior

          The runtime will print a stack trace of the exception which caused the app to crash.

          Actual behavior

          The app crashes due to null pointer dereference in m_class_get_class_kind and produces a crash report similar to this:

          --------- beginning of crash
          05-20 11:13:21.970 15259 15259 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
          05-20 11:13:21.970 15259 15259 F DEBUG : Build fingerprint: 'samsung/***/r5q:12/***/***:user/release-keys'
          05-20 11:13:21.970 15259 15259 F DEBUG : Revision: '9'
          05-20 11:13:21.970 15259 15259 F DEBUG : ABI: 'arm64'
          05-20 11:13:21.970 15259 15259 F DEBUG : Processor: '7'
          05-20 11:13:21.970 15259 15259 F DEBUG : Timestamp: 2022-05-20 11:13:21.506480018+0200
          05-20 11:13:21.970 15259 15259 F DEBUG : Process uptime: 2s
          05-20 11:13:21.970 15259 15259 F DEBUG : Cmdline: net.dot.HelloAndroid
          05-20 11:13:21.970 15259 15259 F DEBUG : pid: 15122, tid: 15155, name: .dot.MonoRunner >>> net.dot.HelloAndroid <<<
          05-20 11:13:21.970 15259 15259 F DEBUG : uid: 10919
          05-20 11:13:21.970 15259 15259 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1b
          05-20 11:13:21.970 15259 15259 F DEBUG : Cause: null pointer dereference
          05-20 11:13:21.970 15259 15259 F DEBUG : x0 0000000000000000 x1 0000007a2e001950 x2 0000000000000000 x3 0000007a83d8eae0
          05-20 11:13:21.970 15259 15259 F DEBUG : x4 0000007a83d8ea00 x5 0000000000000000 x6 0000000000000000 x7 0000007a83d8ea68
          05-20 11:13:21.970 15259 15259 F DEBUG : x8 0000000000000000 x9 0000007a83d8eae0 x10 0000007a2f6fac9c x11 0000000000000000
          05-20 11:13:21.970 15259 15259 F DEBUG : x12 0000007a2f8a110c x13 0000007a83d8ea68 x14 0000000000000010 x15 0000000000000000
          05-20 11:13:21.970 15259 15259 F DEBUG : x16 0000007a2faef700 x17 0000007a2f79531c x18 0000007a2f672000 x19 0000007a83d8e7f0
          05-20 11:13:21.970 15259 15259 F DEBUG : x20 0000000000000000 x21 0000007a9fafc128 x22 0000000000000000 x23 0000007a9ad710b0
          05-20 11:13:21.970 15259 15259 F DEBUG : x24 0000007a9fafc128 x25 0000000000000005 x26 0000000000000033 x27 0000007a83d92000
          05-20 11:13:21.970 15259 15259 F DEBUG : x28 0000007a83d90fd0 x29 0000007a83d8e7a0
          05-20 11:13:21.970 15259 15259 F DEBUG : lr 0000007a2f941e10 sp 0000007a83d8e770 pc 0000007a2f795328 pst 0000000060000000
          05-20 11:13:21.970 15259 15259 F DEBUG : backtrace:
          05-20 11:13:21.970 15259 15259 F DEBUG : #00 pc 00000000000ff328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (m_class_get_class_kind+12) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #01 pc 00000000002abe0c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #02 pc 00000000002a53d0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #03 pc 00000000002a52f4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #04 pc 00000000002a8624 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #05 pc 000000000016f640 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #06 pc 000000000016be04 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_try_invoke+148) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #07 pc 000000000016f51c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_invoke+88) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #08 pc 0000000000002f6c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property+176) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #09 pc 0000000000001ee0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property_string+48) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #10 pc 0000000000001e48 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (unhandled_exception_handler+108) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #11 pc 000000000010f7a8 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #12 pc 0000000000347530 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #13 pc 0000000000347360 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_jit_exec+68) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #14 pc 0000000000002328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_runtime_init+856) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #15 pc 0000000000002cb4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (Java_net_dot_MonoRunner_initRuntime+464) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
          05-20 11:13:21.970 15259 15259 F DEBUG : #16 pc 00000000002d4044 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+148) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
          05-20 11:13:21.970 15259 15259 F DEBUG : #17 pc 00000000002ca9e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
          05-20 11:13:21.970 15259 15259 F DEBUG : #18 pc 00000000002ee6b8 /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+320) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
          05-20 11:13:21.971 15259 15259 F DEBUG : #19 pc 000000000040ade4 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+820) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
          05-20 11:13:21.971 15259 15259 F DEBUG : #20 pc 000000000076d4b8 /apex/com.android.art/lib64/libart.so (MterpInvokeStatic+3812) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
          05-20 11:13:21.971 15259 15259 F DEBUG : #21 pc 00000000002c5014 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_static+20) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
          05-20 11:13:21.971 15259 15259 F DEBUG : #22 pc 0000000000000ae2 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.initialize+154)
          05-20 11:13:21.971 15259 15259 F DEBUG : #23 pc 000000000027d840 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.3351068054637636664)+644) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
          05-20 11:13:21.971 15259 15259 F DEBUG : #24 pc 000000000027c9e8 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+1176) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
          05-20 11:13:21.971 15259 15259 F DEBUG : #25 pc 00000000002d4178 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
          05-20 11:13:21.971 15259 15259 F DEBUG : #26 pc 0000000000209188 /apex/com.android.art/lib64/libart.so (nterp_helper+152) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
          05-20 11:13:21.971 15259 15259 F DEBUG : #27 pc 0000000000000c98 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.onStart+56)
          05-20 11:13:21.971 15259 15259 F DEBUG : #28 pc 000000000020a044 /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
          05-20 11:13:21.971 15259 15259 F DEBUG : #29 pc 000000000024684a /system/framework/framework.jar (android.app.Instrumentation$InstrumentationThread.run+94)
          05-20 11:13:21.971 15259 15259 F DEBUG : #30 pc 00000000002ca764 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
          05-20 11:13:21.971 15259 15259 F DEBUG : #31 pc 000000000030e980 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
          05-20 11:13:21.971 15259 15259 F DEBUG : #32 pc 00000000003c1db4 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+380) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
          05-20 11:13:21.971 15259 15259 F DEBUG : #33 pc 00000000004578ec /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+992) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
          05-20 11:13:21.971 15259 15259 F DEBUG : #34 pc 00000000000f10f4 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+264) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)
          05-20 11:13:21.971 15259 15259 F DEBUG : #35 pc 000000000008d754 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)
          

          Regression?

          No response

          Known Workarounds

          No response

          Configuration

          • up-to-date main (3914bcc230134ec3e1c9be903c6bd8ff60d92501)
          • Android 12

          EDIT:
          The variables in the android sample Makefile:

          MONO_CONFIG=Debug
          MONO_ARCH?=arm64
          DOTNET := ../../../../dotnet.sh
          USE_LLVM=false
          AOT=false
          AOT_WITH_LIBRARY_FILES=false
          INTERP=false
          DEPLOY_AND_RUN?=true
          

          Other information

          No response

          Metadata

          Metadata

          Assignees

          Type

          No type

          Projects

          No projects

            Milestone

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
            Skip to content

            [Android] Uncaught exception crashes an app without printing correct stack trace #69601

            Description

            @simonrozsival

            Description

            I noticed that uncaught exceptions don't print information about the exception that cause it and instead print information about a SIGSEGV crash originating in Mono m_class_get_class_kind function.

            Reproduction Steps

            • replace all of src/mono/sample/Android/Program.cs with simply throw new System.Exception("boom");
            • run the Android sample on a device
            • observe the output with adb logcat -s DEBUG

            Expected behavior

            The runtime will print a stack trace of the exception which caused the app to crash.

            Actual behavior

            The app crashes due to null pointer dereference in m_class_get_class_kind and produces a crash report similar to this:

            --------- beginning of crash
            05-20 11:13:21.970 15259 15259 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
            05-20 11:13:21.970 15259 15259 F DEBUG : Build fingerprint: 'samsung/***/r5q:12/***/***:user/release-keys'
            05-20 11:13:21.970 15259 15259 F DEBUG : Revision: '9'
            05-20 11:13:21.970 15259 15259 F DEBUG : ABI: 'arm64'
            05-20 11:13:21.970 15259 15259 F DEBUG : Processor: '7'
            05-20 11:13:21.970 15259 15259 F DEBUG : Timestamp: 2022-05-20 11:13:21.506480018+0200
            05-20 11:13:21.970 15259 15259 F DEBUG : Process uptime: 2s
            05-20 11:13:21.970 15259 15259 F DEBUG : Cmdline: net.dot.HelloAndroid
            05-20 11:13:21.970 15259 15259 F DEBUG : pid: 15122, tid: 15155, name: .dot.MonoRunner >>> net.dot.HelloAndroid <<<
            05-20 11:13:21.970 15259 15259 F DEBUG : uid: 10919
            05-20 11:13:21.970 15259 15259 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1b
            05-20 11:13:21.970 15259 15259 F DEBUG : Cause: null pointer dereference
            05-20 11:13:21.970 15259 15259 F DEBUG : x0 0000000000000000 x1 0000007a2e001950 x2 0000000000000000 x3 0000007a83d8eae0
            05-20 11:13:21.970 15259 15259 F DEBUG : x4 0000007a83d8ea00 x5 0000000000000000 x6 0000000000000000 x7 0000007a83d8ea68
            05-20 11:13:21.970 15259 15259 F DEBUG : x8 0000000000000000 x9 0000007a83d8eae0 x10 0000007a2f6fac9c x11 0000000000000000
            05-20 11:13:21.970 15259 15259 F DEBUG : x12 0000007a2f8a110c x13 0000007a83d8ea68 x14 0000000000000010 x15 0000000000000000
            05-20 11:13:21.970 15259 15259 F DEBUG : x16 0000007a2faef700 x17 0000007a2f79531c x18 0000007a2f672000 x19 0000007a83d8e7f0
            05-20 11:13:21.970 15259 15259 F DEBUG : x20 0000000000000000 x21 0000007a9fafc128 x22 0000000000000000 x23 0000007a9ad710b0
            05-20 11:13:21.970 15259 15259 F DEBUG : x24 0000007a9fafc128 x25 0000000000000005 x26 0000000000000033 x27 0000007a83d92000
            05-20 11:13:21.970 15259 15259 F DEBUG : x28 0000007a83d90fd0 x29 0000007a83d8e7a0
            05-20 11:13:21.970 15259 15259 F DEBUG : lr 0000007a2f941e10 sp 0000007a83d8e770 pc 0000007a2f795328 pst 0000000060000000
            05-20 11:13:21.970 15259 15259 F DEBUG : backtrace:
            05-20 11:13:21.970 15259 15259 F DEBUG : #00 pc 00000000000ff328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (m_class_get_class_kind+12) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #01 pc 00000000002abe0c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #02 pc 00000000002a53d0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #03 pc 00000000002a52f4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #04 pc 00000000002a8624 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #05 pc 000000000016f640 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #06 pc 000000000016be04 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_try_invoke+148) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #07 pc 000000000016f51c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_invoke+88) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #08 pc 0000000000002f6c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property+176) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #09 pc 0000000000001ee0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property_string+48) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #10 pc 0000000000001e48 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (unhandled_exception_handler+108) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #11 pc 000000000010f7a8 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #12 pc 0000000000347530 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #13 pc 0000000000347360 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_jit_exec+68) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #14 pc 0000000000002328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_runtime_init+856) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #15 pc 0000000000002cb4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (Java_net_dot_MonoRunner_initRuntime+464) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
            05-20 11:13:21.970 15259 15259 F DEBUG : #16 pc 00000000002d4044 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+148) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
            05-20 11:13:21.970 15259 15259 F DEBUG : #17 pc 00000000002ca9e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
            05-20 11:13:21.970 15259 15259 F DEBUG : #18 pc 00000000002ee6b8 /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+320) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
            05-20 11:13:21.971 15259 15259 F DEBUG : #19 pc 000000000040ade4 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+820) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
            05-20 11:13:21.971 15259 15259 F DEBUG : #20 pc 000000000076d4b8 /apex/com.android.art/lib64/libart.so (MterpInvokeStatic+3812) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
            05-20 11:13:21.971 15259 15259 F DEBUG : #21 pc 00000000002c5014 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_static+20) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
            05-20 11:13:21.971 15259 15259 F DEBUG : #22 pc 0000000000000ae2 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.initialize+154)
            05-20 11:13:21.971 15259 15259 F DEBUG : #23 pc 000000000027d840 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.3351068054637636664)+644) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
            05-20 11:13:21.971 15259 15259 F DEBUG : #24 pc 000000000027c9e8 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+1176) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
            05-20 11:13:21.971 15259 15259 F DEBUG : #25 pc 00000000002d4178 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
            05-20 11:13:21.971 15259 15259 F DEBUG : #26 pc 0000000000209188 /apex/com.android.art/lib64/libart.so (nterp_helper+152) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
            05-20 11:13:21.971 15259 15259 F DEBUG : #27 pc 0000000000000c98 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.onStart+56)
            05-20 11:13:21.971 15259 15259 F DEBUG : #28 pc 000000000020a044 /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
            05-20 11:13:21.971 15259 15259 F DEBUG : #29 pc 000000000024684a /system/framework/framework.jar (android.app.Instrumentation$InstrumentationThread.run+94)
            05-20 11:13:21.971 15259 15259 F DEBUG : #30 pc 00000000002ca764 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
            05-20 11:13:21.971 15259 15259 F DEBUG : #31 pc 000000000030e980 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
            05-20 11:13:21.971 15259 15259 F DEBUG : #32 pc 00000000003c1db4 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+380) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
            05-20 11:13:21.971 15259 15259 F DEBUG : #33 pc 00000000004578ec /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+992) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
            05-20 11:13:21.971 15259 15259 F DEBUG : #34 pc 00000000000f10f4 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+264) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)
            05-20 11:13:21.971 15259 15259 F DEBUG : #35 pc 000000000008d754 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)
            

            Regression?

            No response

            Known Workarounds

            No response

            Configuration

            • up-to-date main (3914bcc230134ec3e1c9be903c6bd8ff60d92501)
            • Android 12

            EDIT:
            The variables in the android sample Makefile:

            MONO_CONFIG=Debug
            MONO_ARCH?=arm64
            DOTNET := ../../../../dotnet.sh
            USE_LLVM=false
            AOT=false
            AOT_WITH_LIBRARY_FILES=false
            INTERP=false
            DEPLOY_AND_RUN?=true
            

            Other information

            No response

            Metadata

            Metadata

            Assignees

            Type

            No type

            Projects

            No projects

              Milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              [Android] Uncaught exception crashes an app without printing correct stack trace #69601

              Description

              @simonrozsival

              Description

              I noticed that uncaught exceptions don't print information about the exception that cause it and instead print information about a SIGSEGV crash originating in Mono m_class_get_class_kind function.

              Reproduction Steps

              • replace all of src/mono/sample/Android/Program.cs with simply throw new System.Exception("boom");
              • run the Android sample on a device
              • observe the output with adb logcat -s DEBUG

              Expected behavior

              The runtime will print a stack trace of the exception which caused the app to crash.

              Actual behavior

              The app crashes due to null pointer dereference in m_class_get_class_kind and produces a crash report similar to this:

              --------- beginning of crash
              05-20 11:13:21.970 15259 15259 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
              05-20 11:13:21.970 15259 15259 F DEBUG : Build fingerprint: 'samsung/***/r5q:12/***/***:user/release-keys'
              05-20 11:13:21.970 15259 15259 F DEBUG : Revision: '9'
              05-20 11:13:21.970 15259 15259 F DEBUG : ABI: 'arm64'
              05-20 11:13:21.970 15259 15259 F DEBUG : Processor: '7'
              05-20 11:13:21.970 15259 15259 F DEBUG : Timestamp: 2022-05-20 11:13:21.506480018+0200
              05-20 11:13:21.970 15259 15259 F DEBUG : Process uptime: 2s
              05-20 11:13:21.970 15259 15259 F DEBUG : Cmdline: net.dot.HelloAndroid
              05-20 11:13:21.970 15259 15259 F DEBUG : pid: 15122, tid: 15155, name: .dot.MonoRunner >>> net.dot.HelloAndroid <<<
              05-20 11:13:21.970 15259 15259 F DEBUG : uid: 10919
              05-20 11:13:21.970 15259 15259 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1b
              05-20 11:13:21.970 15259 15259 F DEBUG : Cause: null pointer dereference
              05-20 11:13:21.970 15259 15259 F DEBUG : x0 0000000000000000 x1 0000007a2e001950 x2 0000000000000000 x3 0000007a83d8eae0
              05-20 11:13:21.970 15259 15259 F DEBUG : x4 0000007a83d8ea00 x5 0000000000000000 x6 0000000000000000 x7 0000007a83d8ea68
              05-20 11:13:21.970 15259 15259 F DEBUG : x8 0000000000000000 x9 0000007a83d8eae0 x10 0000007a2f6fac9c x11 0000000000000000
              05-20 11:13:21.970 15259 15259 F DEBUG : x12 0000007a2f8a110c x13 0000007a83d8ea68 x14 0000000000000010 x15 0000000000000000
              05-20 11:13:21.970 15259 15259 F DEBUG : x16 0000007a2faef700 x17 0000007a2f79531c x18 0000007a2f672000 x19 0000007a83d8e7f0
              05-20 11:13:21.970 15259 15259 F DEBUG : x20 0000000000000000 x21 0000007a9fafc128 x22 0000000000000000 x23 0000007a9ad710b0
              05-20 11:13:21.970 15259 15259 F DEBUG : x24 0000007a9fafc128 x25 0000000000000005 x26 0000000000000033 x27 0000007a83d92000
              05-20 11:13:21.970 15259 15259 F DEBUG : x28 0000007a83d90fd0 x29 0000007a83d8e7a0
              05-20 11:13:21.970 15259 15259 F DEBUG : lr 0000007a2f941e10 sp 0000007a83d8e770 pc 0000007a2f795328 pst 0000000060000000
              05-20 11:13:21.970 15259 15259 F DEBUG : backtrace:
              05-20 11:13:21.970 15259 15259 F DEBUG : #00 pc 00000000000ff328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (m_class_get_class_kind+12) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #01 pc 00000000002abe0c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #02 pc 00000000002a53d0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #03 pc 00000000002a52f4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #04 pc 00000000002a8624 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #05 pc 000000000016f640 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #06 pc 000000000016be04 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_try_invoke+148) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #07 pc 000000000016f51c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_invoke+88) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #08 pc 0000000000002f6c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property+176) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #09 pc 0000000000001ee0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property_string+48) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #10 pc 0000000000001e48 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (unhandled_exception_handler+108) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #11 pc 000000000010f7a8 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #12 pc 0000000000347530 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #13 pc 0000000000347360 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_jit_exec+68) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #14 pc 0000000000002328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_runtime_init+856) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #15 pc 0000000000002cb4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (Java_net_dot_MonoRunner_initRuntime+464) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
              05-20 11:13:21.970 15259 15259 F DEBUG : #16 pc 00000000002d4044 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+148) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
              05-20 11:13:21.970 15259 15259 F DEBUG : #17 pc 00000000002ca9e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
              05-20 11:13:21.970 15259 15259 F DEBUG : #18 pc 00000000002ee6b8 /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+320) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
              05-20 11:13:21.971 15259 15259 F DEBUG : #19 pc 000000000040ade4 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+820) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
              05-20 11:13:21.971 15259 15259 F DEBUG : #20 pc 000000000076d4b8 /apex/com.android.art/lib64/libart.so (MterpInvokeStatic+3812) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
              05-20 11:13:21.971 15259 15259 F DEBUG : #21 pc 00000000002c5014 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_static+20) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
              05-20 11:13:21.971 15259 15259 F DEBUG : #22 pc 0000000000000ae2 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.initialize+154)
              05-20 11:13:21.971 15259 15259 F DEBUG : #23 pc 000000000027d840 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.3351068054637636664)+644) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
              05-20 11:13:21.971 15259 15259 F DEBUG : #24 pc 000000000027c9e8 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+1176) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
              05-20 11:13:21.971 15259 15259 F DEBUG : #25 pc 00000000002d4178 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
              05-20 11:13:21.971 15259 15259 F DEBUG : #26 pc 0000000000209188 /apex/com.android.art/lib64/libart.so (nterp_helper+152) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
              05-20 11:13:21.971 15259 15259 F DEBUG : #27 pc 0000000000000c98 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.onStart+56)
              05-20 11:13:21.971 15259 15259 F DEBUG : #28 pc 000000000020a044 /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
              05-20 11:13:21.971 15259 15259 F DEBUG : #29 pc 000000000024684a /system/framework/framework.jar (android.app.Instrumentation$InstrumentationThread.run+94)
              05-20 11:13:21.971 15259 15259 F DEBUG : #30 pc 00000000002ca764 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
              05-20 11:13:21.971 15259 15259 F DEBUG : #31 pc 000000000030e980 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
              05-20 11:13:21.971 15259 15259 F DEBUG : #32 pc 00000000003c1db4 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+380) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
              05-20 11:13:21.971 15259 15259 F DEBUG : #33 pc 00000000004578ec /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+992) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
              05-20 11:13:21.971 15259 15259 F DEBUG : #34 pc 00000000000f10f4 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+264) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)
              05-20 11:13:21.971 15259 15259 F DEBUG : #35 pc 000000000008d754 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)
              

              Regression?

              No response

              Known Workarounds

              No response

              Configuration

              • up-to-date main (3914bcc230134ec3e1c9be903c6bd8ff60d92501)
              • Android 12

              EDIT:
              The variables in the android sample Makefile:

              MONO_CONFIG=Debug
              MONO_ARCH?=arm64
              DOTNET := ../../../../dotnet.sh
              USE_LLVM=false
              AOT=false
              AOT_WITH_LIBRARY_FILES=false
              INTERP=false
              DEPLOY_AND_RUN?=true
              

              Other information

              No response

              Metadata

              Metadata

              Assignees

              Type

              No type

              Projects

              No projects

                Milestone

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions

                , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                Skip to content

                [Android] Uncaught exception crashes an app without printing correct stack trace #69601

                Description

                @simonrozsival

                Description

                I noticed that uncaught exceptions don't print information about the exception that cause it and instead print information about a SIGSEGV crash originating in Mono m_class_get_class_kind function.

                Reproduction Steps

                • replace all of src/mono/sample/Android/Program.cs with simply throw new System.Exception("boom");
                • run the Android sample on a device
                • observe the output with adb logcat -s DEBUG

                Expected behavior

                The runtime will print a stack trace of the exception which caused the app to crash.

                Actual behavior

                The app crashes due to null pointer dereference in m_class_get_class_kind and produces a crash report similar to this:

                --------- beginning of crash
                05-20 11:13:21.970 15259 15259 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
                05-20 11:13:21.970 15259 15259 F DEBUG : Build fingerprint: 'samsung/***/r5q:12/***/***:user/release-keys'
                05-20 11:13:21.970 15259 15259 F DEBUG : Revision: '9'
                05-20 11:13:21.970 15259 15259 F DEBUG : ABI: 'arm64'
                05-20 11:13:21.970 15259 15259 F DEBUG : Processor: '7'
                05-20 11:13:21.970 15259 15259 F DEBUG : Timestamp: 2022-05-20 11:13:21.506480018+0200
                05-20 11:13:21.970 15259 15259 F DEBUG : Process uptime: 2s
                05-20 11:13:21.970 15259 15259 F DEBUG : Cmdline: net.dot.HelloAndroid
                05-20 11:13:21.970 15259 15259 F DEBUG : pid: 15122, tid: 15155, name: .dot.MonoRunner >>> net.dot.HelloAndroid <<<
                05-20 11:13:21.970 15259 15259 F DEBUG : uid: 10919
                05-20 11:13:21.970 15259 15259 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1b
                05-20 11:13:21.970 15259 15259 F DEBUG : Cause: null pointer dereference
                05-20 11:13:21.970 15259 15259 F DEBUG : x0 0000000000000000 x1 0000007a2e001950 x2 0000000000000000 x3 0000007a83d8eae0
                05-20 11:13:21.970 15259 15259 F DEBUG : x4 0000007a83d8ea00 x5 0000000000000000 x6 0000000000000000 x7 0000007a83d8ea68
                05-20 11:13:21.970 15259 15259 F DEBUG : x8 0000000000000000 x9 0000007a83d8eae0 x10 0000007a2f6fac9c x11 0000000000000000
                05-20 11:13:21.970 15259 15259 F DEBUG : x12 0000007a2f8a110c x13 0000007a83d8ea68 x14 0000000000000010 x15 0000000000000000
                05-20 11:13:21.970 15259 15259 F DEBUG : x16 0000007a2faef700 x17 0000007a2f79531c x18 0000007a2f672000 x19 0000007a83d8e7f0
                05-20 11:13:21.970 15259 15259 F DEBUG : x20 0000000000000000 x21 0000007a9fafc128 x22 0000000000000000 x23 0000007a9ad710b0
                05-20 11:13:21.970 15259 15259 F DEBUG : x24 0000007a9fafc128 x25 0000000000000005 x26 0000000000000033 x27 0000007a83d92000
                05-20 11:13:21.970 15259 15259 F DEBUG : x28 0000007a83d90fd0 x29 0000007a83d8e7a0
                05-20 11:13:21.970 15259 15259 F DEBUG : lr 0000007a2f941e10 sp 0000007a83d8e770 pc 0000007a2f795328 pst 0000000060000000
                05-20 11:13:21.970 15259 15259 F DEBUG : backtrace:
                05-20 11:13:21.970 15259 15259 F DEBUG : #00 pc 00000000000ff328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (m_class_get_class_kind+12) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #01 pc 00000000002abe0c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #02 pc 00000000002a53d0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #03 pc 00000000002a52f4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #04 pc 00000000002a8624 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #05 pc 000000000016f640 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #06 pc 000000000016be04 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_try_invoke+148) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #07 pc 000000000016f51c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_runtime_invoke+88) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #08 pc 0000000000002f6c /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property+176) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #09 pc 0000000000001ee0 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_fetch_exception_property_string+48) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #10 pc 0000000000001e48 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (unhandled_exception_handler+108) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #11 pc 000000000010f7a8 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #12 pc 0000000000347530 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #13 pc 0000000000347360 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonosgen-2.0.so (mono_jit_exec+68) (BuildId: e728547a686aba14555a971a328b7bbc08827ab0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #14 pc 0000000000002328 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (mono_droid_runtime_init+856) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #15 pc 0000000000002cb4 /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/lib/arm64/libmonodroid.so (Java_net_dot_MonoRunner_initRuntime+464) (BuildId: 498ea41a40d288729212a22824c05ba93dcacfb0)
                05-20 11:13:21.970 15259 15259 F DEBUG : #16 pc 00000000002d4044 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+148) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
                05-20 11:13:21.970 15259 15259 F DEBUG : #17 pc 00000000002ca9e8 /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
                05-20 11:13:21.970 15259 15259 F DEBUG : #18 pc 00000000002ee6b8 /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+320) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
                05-20 11:13:21.971 15259 15259 F DEBUG : #19 pc 000000000040ade4 /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+820) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
                05-20 11:13:21.971 15259 15259 F DEBUG : #20 pc 000000000076d4b8 /apex/com.android.art/lib64/libart.so (MterpInvokeStatic+3812) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
                05-20 11:13:21.971 15259 15259 F DEBUG : #21 pc 00000000002c5014 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_static+20) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
                05-20 11:13:21.971 15259 15259 F DEBUG : #22 pc 0000000000000ae2 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.initialize+154)
                05-20 11:13:21.971 15259 15259 F DEBUG : #23 pc 000000000027d840 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.3351068054637636664)+644) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
                05-20 11:13:21.971 15259 15259 F DEBUG : #24 pc 000000000027c9e8 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+1176) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
                05-20 11:13:21.971 15259 15259 F DEBUG : #25 pc 00000000002d4178 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
                05-20 11:13:21.971 15259 15259 F DEBUG : #26 pc 0000000000209188 /apex/com.android.art/lib64/libart.so (nterp_helper+152) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
                05-20 11:13:21.971 15259 15259 F DEBUG : #27 pc 0000000000000c98 [anon:dalvik-classes.dex extracted in memory from /data/app/~~pAXIZ4wu_QKJoR6fNnsSOQ==/net.dot.HelloAndroid-RrZWlifwfWwi3eQHY2DfBQ==/base.apk] (net.dot.MonoRunner.onStart+56)
                05-20 11:13:21.971 15259 15259 F DEBUG : #28 pc 000000000020a044 /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
                05-20 11:13:21.971 15259 15259 F DEBUG : #29 pc 000000000024684a /system/framework/framework.jar (android.app.Instrumentation$InstrumentationThread.run+94)
                05-20 11:13:21.971 15259 15259 F DEBUG : #30 pc 00000000002ca764 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
                05-20 11:13:21.971 15259 15259 F DEBUG : #31 pc 000000000030e980 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
                05-20 11:13:21.971 15259 15259 F DEBUG : #32 pc 00000000003c1db4 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+380) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
                05-20 11:13:21.971 15259 15259 F DEBUG : #33 pc 00000000004578ec /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+992) (BuildId: 34e3dd028e2e682b63a512d6a4f1b5eb)
                05-20 11:13:21.971 15259 15259 F DEBUG : #34 pc 00000000000f10f4 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+264) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)
                05-20 11:13:21.971 15259 15259 F DEBUG : #35 pc 000000000008d754 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) (BuildId: 6c64ba11d7f9282109f191c2bf3f6646)
                

                Regression?

                No response

                Known Workarounds

                No response

                Configuration

                • up-to-date main (3914bcc230134ec3e1c9be903c6bd8ff60d92501)
                • Android 12

                EDIT:
                The variables in the android sample Makefile:

                MONO_CONFIG=Debug
                MONO_ARCH?=arm64
                DOTNET := ../../../../dotnet.sh
                USE_LLVM=false
                AOT=false
                AOT_WITH_LIBRARY_FILES=false
                INTERP=false
                DEPLOY_AND_RUN?=true
                

                Other information

                No response

                Metadata

                Metadata

                Assignees

                Type

                No type

                Projects

                No projects

                  Milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions