Hello,
I'm trying to run an ASAN application on Android O and the application crashes with the following stacktrace:
10-10 14:10:34.490 15270 15270 F DEBUG : #00 pc 000000000006af38 /system/lib64/libc.so (tgkill+8)
10-10 14:10:34.490 15270 15270 F DEBUG : #01 pc 000000000001e050 /system/lib64/libc.so (abort+88)
10-10 14:10:34.490 15270 15270 F DEBUG : #02 pc 000000000008ce88 /system/lib64/
libclang_rt.asan-aarch64-android.so (_ZN11__sanitizer5AbortEv+60)
10-10 14:10:34.490 15270 15270 F DEBUG : #03 pc 0000000000092d40 /system/lib64/
libclang_rt.asan-aarch64-android.so (_ZN11__sanitizer3DieEv+152)
10-10 14:10:34.490 15270 15270 F DEBUG : #04 pc 000000000007e26c /system/lib64/
libclang_rt.asan-aarch64-android.so (_ZN6__asanL15AsanCheckFailedEPKciS1_yy+284)
10-10 14:10:34.490 15270 15270 F DEBUG : #05 pc 0000000000092dc4 /system/lib64/
libclang_rt.asan-aarch64-android.so (_ZN11__sanitizer11CheckFailedEPKciS1_yy+116)
10-10 14:10:34.490 15270 15270 F DEBUG : #06 pc 000000000006e06c /system/lib64/
libclang_rt.asan-aarch64-android.so (_ZL28InitializeCommonInterceptorsv+15476)
10-10 14:10:34.490 15270 15270 F DEBUG : #07 pc 0000000000069c70 /system/lib64/
libclang_rt.asan-aarch64-android.so (_ZN6__asan26InitializeAsanInterceptorsEv+36)
10-10 14:10:34.490 15270 15270 F DEBUG : #08 pc 000000000007d8cc /system/lib64/
libclang_rt.asan-aarch64-android.so (_ZN6__asanL16AsanInitInternalEv+348)
10-10 14:10:34.490 15270 15270 F DEBUG : #09 pc 00000000000e0f3c /system/lib64/asan/libart.so (asan.module_ctor+4)
10-10 14:10:34.490 15270 15270 F DEBUG : #10 pc 000000000001f4b8 /system/bin/linker64 (__dl__ZL10call_arrayIPFviPPcS1_EEvPKcPT_mbS5_+276)
10-10 14:10:34.490 15270 15270 F DEBUG : #11 pc 000000000001f6e8 /system/bin/linker64 (__dl__ZN6soinfo17call_constructorsEv+396)
10-10 14:10:34.490 15270 15270 F DEBUG : #12 pc 000000000000c0cc /system/bin/linker64 (__dl__Z9do_dlopenPKciPK17android_dlextinfoPKv+1460)
10-10 14:10:34.490 15270 15270 F DEBUG : #13 pc 0000000000008f84 /system/bin/linker64 (__dl__Z8__dlopenPKciPKv+68)
10-10 14:10:34.490 15270 15270 F DEBUG : #14 pc 00000000000010cc /system/lib64/libdl.so (dlopen+12)
10-10 14:10:34.491 15270 15270 F DEBUG : #15 pc 0000000000004d68 /system/lib64/libnativehelper.so (_ZN13JniInvocation4InitEPKc+136)
10-10 14:10:34.491 15270 15270 F DEBUG : #16 pc 00000000000fbc08 /system/lib64/libandroid_runtime.so (_ZN7android14AndroidRuntime5startEPKcRKNS_6VectorINS_7String8EEEb+360)
10-10 14:10:34.491 15270 15270 F DEBUG : #17 pc 00000000000025c0 /system/bin/asan/app_process64 (main+1624)
10-10 14:10:34.491 15270 15270 F DEBUG : #18 pc 000000000001bab0 /system/lib64/libc.so (__libc_init+88)
10-10 14:10:34.491 15270 15270 F DEBUG : #19 pc 0000000000001ec8 /system/bin/asan/app_process64 (do_arm64_start+80)
I know that CHECK(REAL(memcpy)) in the function InitializeAsanInterceptors fails because REAL(memcpy) returns 0.
As I understand this macro expands to __interception::real_memcpy. I see that this variable is in bss segment of
libclang_rt.asan-aarch64-android.so library
and I can't find who assign the address to the original memcpy function to it.
Could you point me to right code or explain how it should work?
May be this is already known issue and a patch already exists?
Thank you