[LLVMdev] Porting ASan to AArch64

Alexey Samsonov vonosmas at gmail.com
Fri May 30 17:58:08 PDT 2014


+Greg in case he's seen similar problems.

Basically, ASan is unable to map the necessary shadow memory. You may want
to dump the contents of /proc/self/maps and look if it conflicts
with the range ASan is trying to use. errno 12 is ENOMEM. Are you sure you
don't have constraints on the virtual memory your process can use?


On Fri, May 30, 2014 at 2:29 PM, Gideon Billings <gideonhbillings at gmail.com>
wrote:

> 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
> <https://mymail.qualcomm.com/owa/redir.aspx?C=k7Wv_sbf90SWPFjF3_Wzyp-KmK3QT9EI87JrUWjRxE-4GcylWFTmUnPhLYMjO_xSknvKZiQAOf8.&URL=https%3a%2f%2fcode.google.com%2fp%2faddress-sanitizer%2fissues%2fdetail%3fid%3d246%23makechanges>
>
> 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
> <https://mymail.qualcomm.com/owa/redir.aspx?C=k7Wv_sbf90SWPFjF3_Wzyp-KmK3QT9EI87JrUWjRxE-4GcylWFTmUnPhLYMjO_xSknvKZiQAOf8.&URL=https%3a%2f%2fgithub.com%2fllvm-mirror%2fcompiler-rt%2fcommit%2f33465467e7f8243933100bab3cf8f34b79a8f54c>
>
> 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
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>


-- 
Alexey Samsonov
vonosmas at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140530/c1c603c0/attachment.html>


More information about the llvm-dev mailing list