Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

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

Closed
simonrozsival opened this issue May 20, 2022 · 4 comments · Fixed by #89197
Closed

Comments

@simonrozsival
Copy link
Member

simonrozsival commented May 20, 2022

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

@dotnet-issue-labeler
Copy link

I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label.

@ghost ghost added the untriaged New issue has not been triaged by the area owner label May 20, 2022
@ghost
Copy link

ghost commented May 20, 2022

Tagging subscribers to 'arch-android': @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

Issue Details

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
  • arm64
  • Debug configuration

Other information

No response

Author: simonrozsival
Assignees: -
Labels:

os-android

Milestone: -

@steveisok steveisok removed the untriaged New issue has not been triaged by the area owner label Jun 6, 2022
@steveisok steveisok added this to the 7.0.0 milestone Jun 6, 2022
@steveisok
Copy link
Member

/cc @lambdageek @SamMonoRT

@lambdageek
Copy link
Member

There is something weird going on with src/tasks/AndroidAppBuilder/Templates/monodroid.c. It has an unhandled_exception_handler:

void
unhandled_exception_handler (MonoObject *exc, void *user_data)
{
MonoClass *type = mono_object_get_class (exc);
char *type_name = strdup_printf ("%s.%s", mono_class_get_namespace (type), mono_class_get_name (type));
char *trace = mono_droid_fetch_exception_property_string (exc, "get_StackTrace", true);
char *message = mono_droid_fetch_exception_property_string (exc, "get_Message", true);
LOG_ERROR("UnhandledException: %s %s %s", type_name, message, trace);
free (trace);
free (message);
free (type_name);
exit (1);
}

When I put a breakpoint in it, I can see that exc is a System.Exception object in LLDB:

(lldb) p exc->vtable->klass->name
(const char *) $2 = 0x0000007c3f474eda "Exception"
(lldb) p exc->vtable->klass
(MonoClass *) $1 = 0xb400007e402746a8

However if I print out type, the result of calling mono_object_get_class (exc) I see:

(lldb) p type
(MonoClass *) $3 = 0x00000000402746a8

So it looks like something cuts off the upper 32-bits of the MonoClass* pointer returned by mono_object_get_class.

I stepped through it and there's nothing obviously wrong with the function itself - we do some GC Unsafe transitions and then return obj->vtable->klass. There is not a lot of room for this code to go wrong.

Maybe we have some other declaration of mono_object_get_class in scope that incorrectly claims it returns an int? Maybe it's implicit? Maybe the template cmake file needs to set some stricter build flags?

@lambdageek lambdageek self-assigned this Jul 19, 2023
lambdageek added a commit to lambdageek/runtime that referenced this issue Jul 19, 2023
Treat missing protoype warnings as errors so this doesn't happen
again.

Fixes dotnet#69601
lambdageek added a commit that referenced this issue Jul 20, 2023
* [AndroidAppBuilder] add missing includes to template

Treat missing protoype warnings as errors so this doesn't happen again.

Fixes #69601

* also fixup library mode template
@ghost ghost locked as resolved and limited conversation to collaborators Aug 19, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants