[LLVMbugs] [Bug 21112] New: Allow using ASan and UBSan together on OSX
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Wed Oct 1 01:18:39 PDT 2014
http://llvm.org/bugs/show_bug.cgi?id=21112
Bug ID: 21112
Summary: Allow using ASan and UBSan together on OSX
Product: compiler-rt
Version: unspecified
Hardware: PC
OS: MacOS X
Status: NEW
Severity: normal
Priority: P
Component: compiler-rt
Assignee: glider at google.com
Reporter: glider at google.com
CC: llvmbugs at cs.uiuc.edu, samsonov at google.com
Classification: Unclassified
Copying my own letter here:
I think the UBSan+ASan hybrid is fundamentally broken on OSX for at
least the two following reasons:
1. Parts of sanitizer_common from libclang_rt.ubsan_osx.a are linked
into the main executable, which also depends on
libclang_rt.asan_osx_dynamic.dylib. The latter contains its own copy
of sanitizer_common bits, so the two tools cannot share data (e.g.
common_flags()) like they do on Linux.
2. UBSan may be initialized too late on OSX. Because there's no
.preinit_array, we can only rely on static constructors. Because the
ASan runtime library must be preloaded into the executable, when
ASan's static constructor is called for the first time, it sets the
appropriate env and calls exec() on the binary. After that ASan
runtime library is initialized before other libraries that the program
loads.
UBSan is initialized way later, when the main executable's
constructors are invoked. Not sure if that's a big issue, but it could
be in the case other libraries are also built with UBSan.
Looks like we need to put the necessary UBSan parts into the dynamic
library (something like libclang_rt.asan_ubsan_osx_dynamic.dylib) and
link that library in the case both -fsanitize=address and
-fsanitize=integer are passed to the driver. It's a good question how
to initialize UBSan in this case.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20141001/b7f07134/attachment.html>
More information about the llvm-bugs
mailing list