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

ASAN suppressions don't work on an android application #909

Open
rbolgov opened this issue Jan 26, 2018 · 2 comments
Open

ASAN suppressions don't work on an android application #909

rbolgov opened this issue Jan 26, 2018 · 2 comments
Assignees

Comments

@rbolgov
Copy link

rbolgov commented Jan 26, 2018

There is a crash on android NDK application while AddressSanitizer processing on android x86 emulator. The asan stack trace points to GLES library as a crash reason. Unfortunately, no any possibility to skip the issue via suppressions options. The log shows the suppressions have been read but they don't work.

AddressSanitizer: reading suppressions file at /sdcard/asan.supp
==3512==AddressSanitizer Init done

halt_on_error feature doesn't work as well. I do able to change the asan options by /sdcard/asan.options (the option "redzone" is changeable as I see in the log)

1. Asan was installed on android emulator through the call from Mac machine:
~/Library/Android/ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/asan_device_setup --lib ~/Library/Android/ndk/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/5.0.300080/lib/linux/libclang_rt.asan-i686-android.so --extra-options fast_unwind_on_malloc=0,include_if_exists=/sdcard/asan.options

2. asan.options and asan.supp files have been pushed to android
/sdcard/asan.options
suppressions=/sdcard/asan.supp
verbosity=2
print_suppressions=true
halt_on_error=0
/sdcard/asan.supp
interceptor_via_lib:libGLESv2_enc
interceptor_via_lib:libGLESv2_emulation
interceptor_via_lib:libGLESv2_enc.so
interceptor_via_lib:libGLESv2_emulation.so
interceptor_via_fun:glShaderSource
interceptor_via_fun:s_glShaderSource
interceptor_via_fun:GL2Encoder::s_glShaderSource
interceptor_via_lib:/system/lib/libGLESv2_enc.so
interceptor_via_lib:/system/lib/egl/libGLESv2_emulation.so

3. Emulator info
Nexus 6
Android 6.0 x86 Marshmallow

4. clang version
~/Library/Android/ndk/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --version
Android clang version 5.0.300080 (based on LLVM 5.0.300080)
Target: x86_64-apple-darwin16.7.0
Thread model: posix

5. The native library was build via cmake as follows:
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -fsanitize=address -fsanitize-recover=address -fPIC")
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fno-omit-frame-pointer -fsanitize=address")

6. Stacktraces

==3300==ERROR: AddressSanitizer: heap-buffer-overflow on address 0xb0f04fcf at pc 0xb721b007 bp 0xbf860188 sp 0xbf85fd58
READ of size 403 at 0xb0f04fcf thread T0
#0 0xb721b006 (/system/lib/libclang_rt.asan-i686-android.so+0x25006)
#1 0xaf3698e7 (/system/lib/libGLESv2_enc.so+0x2a8e7)
#2 0xaf13bb1f (/system/lib/egl/libGLESv2_emulation.so+0xdb1f)
#3 0x4d5f6867 (/data/app/com.company.app-1/lib/x86/libnative_lib.so+0x6a0f867)
#4 0x4d5f66fd (/data/app/com.company.app-1/lib/x86/libnative_lib.so+0x6a0f6fd)
#5 0x4d363800 (/data/app/com.company.app-1/lib/x86/libnative_lib.so+0x677c800)

symbolicated backtrace:

#00 pc 000838d6 /system/lib/libc.so (tgkill+22)
#1 pc 000815f8 /system/lib/libc.so (pthread_kill+70)
#2 pc 00027205 /system/lib/libc.so (raise+36)
#3 pc 000209e4 /system/lib/libc.so (abort+80)
#4 pc 0009f0c7 /system/lib/libclang_rt.asan-i686-android.so (__sanitizer::Abort()+87)
#5 pc 000a5322 /system/lib/libclang_rt.asan-i686-android.so (__sanitizer::Die()+130)
#6 pc 00088f95 /system/lib/libclang_rt.asan-i686-android.so (__asan::ScopedInErrorReport::~ScopedInErrorReport()+341)
#7 pc 0008a2ac /system/lib/libclang_rt.asan-i686-android.so (__asan::ReportGenericError(unsigned long, unsigned long, unsigned long, unsigned long, bool, unsigned long, unsigned int, bool)+300)
#8 pc 0002501d /system/lib/libclang_rt.asan-i686-android.so (strlen+957)
#9 pc 0002a8e7 /system/lib/libGLESv2_enc.so (GL2Encoder::s_glShaderSource(void*, unsigned int, int, char const* const*, int const*)+343)
#10 pc 0000db1f /system/lib/egl/libGLESv2_emulation.so (glShaderSource+79)
#11 pc 06a0f867 /data/app/com.company.app-1/lib/x86/libnative_lib.so
#12 pc 06a0f6fd /data/app/com.company.app-1/lib/x86/libnative_lib.so
#13 pc 0677c800 /data/app/com.company.app-1/lib/x86/libnative_lib.so
#14 pc 06c81472 /data/app/com.company.app-1/lib/x86/libnative_lib.so
#15 pc 06c7dab9 /data/app/com.company.app-1/lib/x86/libnative_lib.so

@vmutafov
Copy link

Any update on this issue?

@eugenis
Copy link
Contributor

eugenis commented Feb 19, 2019 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants