[cfe-users] Clang memory sanitizer: llvm-symbolizer problem
Schlottke-Lakemper, Michael via cfe-users
cfe-users at lists.llvm.org
Wed Nov 25 04:12:50 PST 2015
Thus I tried to compile a complete LLVM/Clang stack (with compiler-rt, libcxx, libcxxabi, libomp) using -DLLVM_USE_SANITIZER=MemoryWithOrigins. However, this did not work either, as apparently during the compilation process the memory sanitizer already comes to life and complains about use-of-unitialized values… Thus this approach seems to be a dead end.
On 24 Nov 2015, at 15:28 , Michael Schlottke-Lakemper <m.schlottke-lakemper at aia.rwth-aachen.de<mailto:m.schlottke-lakemper at aia.rwth-aachen.de>> wrote:
When running our msan-instrumented simulation program, instead of a proper output I get the following error:
==12089==WARNING: MemorySanitizer: use-of-uninitialized-value
==12089==WARNING: Can't read from symbolizer at fd 14
/pds/opt/llvm/bin/llvm-symbolizer: symbol lookup error: /pds/opt/libcxx-20151121-r253770-clang-msan/lib/libc++abi.so.1: undefined symbol: __msan_origin_tls
==12089==WARNING: external symbolizer didn't start up correctly!
My setup for using the memory sanitizer is as follows:
- compile libc++/libc++abi with -fsanitize=memory
- compile test program with normal (=uninstrumented) LLVM/Clang installation using -fsanitize=memory
- put instrumented libcxx/libcxxabi library dirs into LD_LIBRARY_PATH
Can you pass -Wl,-rpath when you link your executable, to specify the path to instrumented libc++/libc++abi?
Yes, and if I do that together with setting LD_LIBRARY_PATH=“”, it works, thanks. The problem with this approach, however, is that on our cluster installation, LD_LIBRARY_PATH by default includes LLVM’s lib dir. If I want the MemorySanitizer to work for all users, I somehow need to find another way that may involve *adding* paths to LD_LIBRARY_PATH, but not removing them. Any idea how I could achieve this?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the cfe-users