Skip to content
New issue

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

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

Already on GitHub? # to your account

[monodroid] Fix runtime crash when using fastdev typemaps #2696

Merged
merged 1 commit into from
Feb 5, 2019

Conversation

dellis1972
Copy link
Contributor

When using fastdev typemaps we get the following error

01-31 10:57:34.336  5802  5802 F libc    : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 5802 (haredandroidios), pid 5802 (haredandroidios)
01-31 10:57:34.358  5829  5829 I crash_dump32: obtaining output fd from tombstoned, type: kDebuggerdTombstone
01-31 10:57:34.358  1685  1685 I /system/bin/tombstoned: received crash request for pid 5802
01-31 10:57:34.359  5829  5829 I crash_dump32: performing dump of process 5802 (target tid = 5802)
01-31 10:57:34.363  5829  5829 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-31 10:57:34.363  5829  5829 F DEBUG   : Build fingerprint: 'Android/sdk_phone_x86/generic_x86:9/PSR1.180720.012/4923214:userdebug/test-keys'
01-31 10:57:34.363  5829  5829 F DEBUG   : Revision: '0'
01-31 10:57:34.363  5829  5829 F DEBUG   : ABI: 'x86'
01-31 10:57:34.363  5829  5829 F DEBUG   : pid: 5802, tid: 5802, name: haredandroidios  >>> com.xamarin.blankformssharedandroidios <<<
01-31 10:57:34.363  5829  5829 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
01-31 10:57:34.363  5829  5829 F DEBUG   : Cause: null pointer dereference
01-31 10:57:34.363  5829  5829 F DEBUG   :     eax 00000000  ebx e6b2e754  ecx 00000000  edx 00000000
01-31 10:57:34.363  5829  5829 F DEBUG   :     edi e0cc58f0  esi 00000000
01-31 10:57:34.363  5829  5829 F DEBUG   :     ebp ffd85ff8  esp ffd85fcc  eip e6a60532
01-31 10:57:34.459  5829  5829 F DEBUG   :
01-31 10:57:34.459  5829  5829 F DEBUG   : backtrace:
01-31 10:57:34.459  5829  5829 F DEBUG   :     #00 pc 0001e532  /system/lib/libc.so (strlen+18)
01-31 10:57:34.459  5829  5829 F DEBUG   :     #01 pc 00075952  /system/lib/libc.so (strdup+34)
01-31 10:57:34.459  5829  5829 F DEBUG   :     #02 pc 0000f6ab  /data/app/com.xamarin.blankformssharedandroidios-nCq7hL5Bz-TYILJl3W97zw==/lib/x86/libmonodroid.so (xamarin::android::internal::EmbeddedAssemblies::add_type_mapping(xamarin::android::internal::TypeMappingInfo**, char const*, char const*, char const*)+667)
01-31 10:57:34.459  5829  5829 F DEBUG   :     #03 pc 00010ed7  /data/app/com.xamarin.blankformssharedandroidios-nCq7hL5Bz-TYILJl3W97zw==/lib/x86/libmonodroid.so (xamarin::android::internal::EmbeddedAssemblies::try_load_typemaps_from_directory(char const*)+871)
01-31 10:57:34.459  5829  5829 F DEBUG   :     #04 pc 000233b8  /data/app/com.xamarin.blankformssharedandroidios-nCq7hL5Bz-TYILJl3W97zw==/lib/x86/libmonodroid.so (gather_bundled_assemblies(_JNIEnv*, xamarin::android::jstring_array_wrapper&, bool, int*)+248)
01-31 10:57:34.459  5829  5829 F DEBUG   :     #05 pc 000229c6  /data/app/com.xamarin.blankformssharedandroidios-nCq7hL5Bz-TYILJl3W97zw==/lib/x86/libmonodroid.so (create_domain(_JNIEnv*, _jclass*, xamarin::android::jstring_array_wrapper&, _jstring*, _jobject*, bool)+166)
01-31 10:57:34.459  5829  5829 F DEBUG   :     #06 pc 0001f20c  /data/app/com.xamarin.blankformssharedandroidios-nCq7hL5Bz-TYILJl3W97zw==/lib/x86/libmonodroid.so (create_and_initialize_domain(_JNIEnv*, _jclass*, xamarin::android::jstring_array_wrapper&, _jobjectArray*, _jobject*, bool)+204)
01-31 10:57:34.460  5829  5829 F DEBUG   :     #07 pc 0001c7af  /data/app/com.xamarin.blankformssharedandroidios-nCq7hL5Bz-TYILJl3W97zw==/lib/x86/libmonodroid.so (Java_mono_android_Runtime_init+4255)

The was down to the try_load_typemaps_from_directory passing a
nullptr to the add_type_mapping method. This method was
calling strdup, which does NOT like nullptr.

Since the source_entry argument is only used for logging we
migth as well create a constant string with a value of
.__override__ so that if there is a problem we can see
from the logs this was a fastdev issue.

When using fastdev typemaps we get the following error

```
01-31 10:57:34.336  5802  5802 F libc    : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 5802 (haredandroidios), pid 5802 (haredandroidios)
01-31 10:57:34.358  5829  5829 I crash_dump32: obtaining output fd from tombstoned, type: kDebuggerdTombstone
01-31 10:57:34.358  1685  1685 I /system/bin/tombstoned: received crash request for pid 5802
01-31 10:57:34.359  5829  5829 I crash_dump32: performing dump of process 5802 (target tid = 5802)
01-31 10:57:34.363  5829  5829 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-31 10:57:34.363  5829  5829 F DEBUG   : Build fingerprint: 'Android/sdk_phone_x86/generic_x86:9/PSR1.180720.012/4923214:userdebug/test-keys'
01-31 10:57:34.363  5829  5829 F DEBUG   : Revision: '0'
01-31 10:57:34.363  5829  5829 F DEBUG   : ABI: 'x86'
01-31 10:57:34.363  5829  5829 F DEBUG   : pid: 5802, tid: 5802, name: haredandroidios  >>> com.xamarin.blankformssharedandroidios <<<
01-31 10:57:34.363  5829  5829 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
01-31 10:57:34.363  5829  5829 F DEBUG   : Cause: null pointer dereference
01-31 10:57:34.363  5829  5829 F DEBUG   :     eax 00000000  ebx e6b2e754  ecx 00000000  edx 00000000
01-31 10:57:34.363  5829  5829 F DEBUG   :     edi e0cc58f0  esi 00000000
01-31 10:57:34.363  5829  5829 F DEBUG   :     ebp ffd85ff8  esp ffd85fcc  eip e6a60532
01-31 10:57:34.459  5829  5829 F DEBUG   :
01-31 10:57:34.459  5829  5829 F DEBUG   : backtrace:
01-31 10:57:34.459  5829  5829 F DEBUG   :     #00 pc 0001e532  /system/lib/libc.so (strlen+18)
01-31 10:57:34.459  5829  5829 F DEBUG   :     #1 pc 00075952  /system/lib/libc.so (strdup+34)
01-31 10:57:34.459  5829  5829 F DEBUG   :     #2 pc 0000f6ab  /data/app/com.xamarin.blankformssharedandroidios-nCq7hL5Bz-TYILJl3W97zw==/lib/x86/libmonodroid.so (xamarin::android::internal::EmbeddedAssemblies::add_type_mapping(xamarin::android::internal::TypeMappingInfo**, char const*, char const*, char const*)+667)
01-31 10:57:34.459  5829  5829 F DEBUG   :     #3 pc 00010ed7  /data/app/com.xamarin.blankformssharedandroidios-nCq7hL5Bz-TYILJl3W97zw==/lib/x86/libmonodroid.so (xamarin::android::internal::EmbeddedAssemblies::try_load_typemaps_from_directory(char const*)+871)
01-31 10:57:34.459  5829  5829 F DEBUG   :     #4 pc 000233b8  /data/app/com.xamarin.blankformssharedandroidios-nCq7hL5Bz-TYILJl3W97zw==/lib/x86/libmonodroid.so (gather_bundled_assemblies(_JNIEnv*, xamarin::android::jstring_array_wrapper&, bool, int*)+248)
01-31 10:57:34.459  5829  5829 F DEBUG   :     #5 pc 000229c6  /data/app/com.xamarin.blankformssharedandroidios-nCq7hL5Bz-TYILJl3W97zw==/lib/x86/libmonodroid.so (create_domain(_JNIEnv*, _jclass*, xamarin::android::jstring_array_wrapper&, _jstring*, _jobject*, bool)+166)
01-31 10:57:34.459  5829  5829 F DEBUG   :     #6 pc 0001f20c  /data/app/com.xamarin.blankformssharedandroidios-nCq7hL5Bz-TYILJl3W97zw==/lib/x86/libmonodroid.so (create_and_initialize_domain(_JNIEnv*, _jclass*, xamarin::android::jstring_array_wrapper&, _jobjectArray*, _jobject*, bool)+204)
01-31 10:57:34.460  5829  5829 F DEBUG   :     #7 pc 0001c7af  /data/app/com.xamarin.blankformssharedandroidios-nCq7hL5Bz-TYILJl3W97zw==/lib/x86/libmonodroid.so (Java_mono_android_Runtime_init+4255)
```

The was down to the `try_load_typemaps_from_directory` passing a
`nullptr` to the `add_type_mapping` method. This method was
calling `strdup`, which does NOT like `nullptr`.

Since the `source_entry` argument is only used for logging we
migth as well create a constant string with a value of
`.__override__` so that if there is a problem we can see
from the logs this was a fastdev issue.
@jonpryor jonpryor merged commit dfd7473 into dotnet:master Feb 5, 2019
@github-actions github-actions bot locked and limited conversation to collaborators Feb 1, 2024
# for free to subscribe to this conversation on GitHub. Already have an account? #.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants