[LLVMdev] Address Sanitizer on Android

Greg Fitzgerald garious at gmail.com
Tue Jun 4 11:21:28 PDT 2013


I have simple standalone ASan examples working on Android, and now I'd
like to try using ASan with the Android build system.  I'm building
the release_33 branch of llvm+clang+compiler-rt with CMake.  To test,
I'm looking at libjpg, because with just a small change its Android.mk
it compiles in a few seconds and without needing any additional
dependencies.

When I run 'djpeg' on JellyBean, ASan reports the error message below.
 Can you please help me interpret it?  Do you know what I might be
doing wrong?

$ adb shell "cd /data/data && ASAN_OPTIONS=debug=1,verbosity=1
LD_PRELOAD=libclang_rt.asan-arm-android.so LD_LIBRARY_PATH=. ./djpeg
./testimg.jpg"

==28210==Parsed ASAN_OPTIONS: debug=1,verbosity=1
==28210==AddressSanitizer: libc interceptors initialized
|| `[0x20000000, 0xffffffff]` || HighMem    ||
|| `[0x04000000, 0x1fffffff]` || HighShadow ||
|| `[0x00040000, 0x03ffffff]` || ShadowGap  ||
MemToShadow(shadow): 0x00000000 0x00000000 0x00800000 0x03ffffff
red_zone=16
malloc_context_size=30
SHADOW_SCALE: 3
SHADOW_GRANULARITY: 8
SHADOW_OFFSET: 0
==28210==Shadow memory range interleaves with an existing memory
mapping. ASan cannot proceed correctly. ABORTING.
==28210==Process memory map follows:
     0x00008000-0x0000f000   /data/data/djpeg
     0x0000f000-0x00010000   /data/data/djpeg
     0x00010000-0x00011000
     0x40094000-0x400a7000   /system/bin/linker
     0x400a7000-0x400a8000   /system/bin/linker
     0x400a8000-0x400a9000   /system/bin/linker
     0x400a9000-0x400b5000
     0x400e7000-0x400e8000   /system/lib/libstdc++.so
     0x400e8000-0x400e9000   /system/lib/libstdc++.so
     0x400e9000-0x400ea000
     0x40110000-0x40125000   /system/lib/libm.so
     0x40125000-0x40126000   /system/lib/libm.so
     0x40126000-0x40127000
     0x40159000-0x4018b000   /data/data/libclang_rt.asan-arm-android.so
     0x4018b000-0x4018c000   /data/data/libclang_rt.asan-arm-android.so
     0x4018c000-0x4018d000   /data/data/libclang_rt.asan-arm-android.so
     0x4018d000-0x405b8000
     0x405b8000-0x405fb000   /system/lib/libc.so
     0x405fb000-0x405fe000   /system/lib/libc.so
     0x405fe000-0x40609000
     0x40609000-0x406a5000   /data/data/libjpeg.so
     0x406a5000-0x406a6000
     0x406a6000-0x406a7000   /data/data/libjpeg.so
     0x406a7000-0x406a8000   /data/data/libjpeg.so
     0x406a8000-0x406b4000   /dev/__properties__ (deleted)
     0x406e6000-0x406e8000
     0x4073e000-0x40740000
     0x40748000-0x4074a000
     0xbe8b7000-0xbe8d8000   [stack]
     0xffff0000-0xffff1000   [vectors]
==28210==End of process memory map.

Thanks,
Greg



More information about the llvm-dev mailing list