[llvm-dev] Building/Running LLVM Tests with Sanitizers
Dean Michael Berris via llvm-dev
llvm-dev at lists.llvm.org
Thu Aug 30 04:42:02 PDT 2018
Hi llvm-dev,
I'm trying to reproduce an msan failure in one of the bots, but I
can't seem to get the right incantation of building LLVM with msan.
Here's what I've been doing:
1) Build the toolchain in one build directory, including `compiler-rt`.
2) Build the toolchain again with the just built toolchain in step 1,
but this time with `-DLLVM_USE_SANITIZER=MemoryWithOrigins`.
I get some msan errors, but of this kind instead of the one I'm expecting:
====
$ ./unittests/XRay/XRayTests
==236769==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x70eef8
(/usr/local/google/home/dberris/xray/llvm-project-build-msan/unittests/XRay/XRayTests+0x70eef8)
#1 0x70d2dc
(/usr/local/google/home/dberris/xray/llvm-project-build-msan/unittests/XRay/XRayTests+0x70d2dc)
#2 0x721044
(/usr/local/google/home/dberris/xray/llvm-project-build-msan/unittests/XRay/XRayTests+0x721044)
#3 0x6e2a37
(/usr/local/google/home/dberris/xray/llvm-project-build-msan/unittests/XRay/XRayTests+0x6e2a37)
#4 0x3722aa
(/usr/local/google/home/dberris/xray/llvm-project-build-msan/unittests/XRay/XRayTests+0x3722aa)
#5 0x372868
(/usr/local/google/home/dberris/xray/llvm-project-build-msan/unittests/XRay/XRayTests+0x372868)
#6 0x775a4c
(/usr/local/google/home/dberris/xray/llvm-project-build-msan/unittests/XRay/XRayTests+0x775a4c)
#7 0x7f85b6c7e23f (/lib/x86_64-linux-gnu/libc.so.6+0x2023f)
#8 0x2f4029
(/usr/local/google/home/dberris/xray/llvm-project-build-msan/unittests/XRay/XRayTests+0x2f4029)
Uninitialized value was created by an allocation of 'ref.tmp' in the
stack frame of function
'_ZN7testing8internal12UnitTestImpl11AddTestInfoEPFvvES3_PNS_8TestInfoE'
#0 0x720f10
(/usr/local/google/home/dberris/xray/llvm-project-build-msan/unittests/XRay/XRayTests+0x720f10)
SUMMARY: MemorySanitizer: use-of-uninitialized-value
(/usr/local/google/home/dberris/xray/llvm-project-build-msan/unittests/XRay/XRayTests+0x70eef8)
Exiting
====
Is there something else I'm missing here? I'm doing this on Linux. I
tried building with libc++ from the first toolchain, but somehow the
linker from the same toolchain in step 1 couldn't find the libc++ with
msan instrumentation.
Here's the CMake command I'm using:
====
cmake -GNinja -DCMAKE_C_COMPILER=$HOME/xray/llvm-project-build/bin/clang
-DCMAKE_CXX_COMPILER=$HOME/xray/llvm-project-build/bin/clang++
-DCMAKE_BUILD_TYPE=Debug -DLLVM_OPTIMIZED_TABLEGEN=On
-DLLVM_ENABLE_ASSERTIONS=On -DLLVM_USE_SANITIZER=MemoryWithOrigins
-DLLVM_ENABLE_LLD=On -DLLVM_INCLUDE_TESTS=On
-DCMAKE_CXX_FLAGS=-stdlib=libc++ -DCMAKE_LINK_FLAGS=-stdlib=libc++
../llvm-project/llvm
====
And I'm running the tests like so:
====
ninja check-llvm
====
I'm doing this with the monorepo, if that's relevant.
Help?
--
Dean
More information about the llvm-dev
mailing list