Skip to content

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

Closed
@simonrozsival

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