Hello,
I have been working on porting ASan to AArch64. I am building compiler-rt in “standalone mode” targeting aarch64. My build is successful, but I get the following runtime error when I run an ASan enabled executable through qemu-aarch64:
==29184==Parsed ASAN_OPTIONS: verbosity=1
==29184==AddressSanitizer: failed to intercept ‘__isoc99_printf’
==29184==AddressSanitizer: failed to intercept ‘__isoc99_sprintf’
==29184==AddressSanitizer: failed to intercept ‘__isoc99_snprintf’
==29184==AddressSanitizer: failed to intercept ‘__isoc99_fprintf’
==29184==AddressSanitizer: failed to intercept ‘__isoc99_vprintf’
==29184==AddressSanitizer: failed to intercept ‘__isoc99_vsprintf’
==29184==AddressSanitizer: failed to intercept ‘__isoc99_vsnprintf’
==29184==AddressSanitizer: failed to intercept ‘__isoc99_vfprintf’
==29184==AddressSanitizer: libc interceptors initialized
[0x002000000000, 0x007fffffffff]
|| HighMem ||
[0x001400000000, 0x001fffffffff]
|| HighShadow ||
[0x001200000000, 0x0013ffffffff]
|| ShadowGap ||
[0x001000000000, 0x0011ffffffff]
|| LowShadow ||
[0x000000000000, 0x000fffffffff]
|| LowMem ||
MemToShadow(shadow): 0x001200000000 0x00123fffffff 0x001280000000 0x0013ffffffff
redzone=16
max_redzone=2048
quarantine_size=256M
malloc_context_size=30
SHADOW_SCALE: 3
SHADOW_GRANULARITY: 8
SHADOW_OFFSET: 1000000000
==29184==ERROR: AddressSanitizer failed to allocate 0xc00000000 (51539607552) bytes at address 1400000000 (errno: 12)
==29184==ReserveShadowMemoryRange failed while trying to map 0xc00000000 bytes. Perhaps you’re using ulimit -v
This appears to be the same issue discussed in this thread:
https://code.google.com/p/address-sanitizer/issues/detail?id=246#makechanges
I contacted Christophe Lyon, and he said he had successfully ported ASan to aarch64 and had committed a patch to enable this to LLVM:
https://github.com/llvm-mirror/compiler-rt/commit/33465467e7f8243933100bab3cf8f34b79a8f54c
His changes from this patch still appear to be configured correctly in my build, so I am not sure why I am getting this error. Is anyone able to shed some light on this?
Thanks,
-Gideon