Hello all,
I am curently strugling to get the TSan runtime library to work. I have cloned the LLVM project, ran the following cmake command:
cmake -G “Unix Makefiles” -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS=“clang;compiler-rt” …/llvm
After the build I tried to use the TSan library like:
LD_PRELOAD=/media/data/llvm-project/build/lib/clang/15.0.0/lib/linux/libclang_rt.tsan-x86_64.so /media/data/test1/src/thread_test
But this leads to Segmentation fault. GDB shows the following backtrace:
#0 0x0000000000000000 in ?? ()
#1 0x00007f0ffe7d3339 in __sanitizer::internal_start_thread (func=func@entry=0x7f0ffe7a64c0 <__tsan::BackgroundThread(void*)>, arg=arg@entry=0x0) at /media/data/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp:1778
#2 0x00007f0ffe7a89f5 in __tsan::StartBackgroundThread () at /media/data/llvm-project/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp:503
#3 __tsan::MaybeSpawnBackgroundThread () at /media/data/llvm-project/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp:716
#4 __tsan::MaybeSpawnBackgroundThread () at /media/data/llvm-project/compiler-rt/lib/tsan/rtl/tsan_rtl.cpp:708
#5 0x00007f0ffe738e76 in __interceptor_pthread_create (th=th@entry=0x7fff63af2d20, attr=attr@entry=0x0, callback=0x55629e6c3160 , param=param@entry=0x0)
at /media/data/llvm-project/compiler-rt/lib/tsan/rtl/tsan_interceptors_posix.cpp:1022
#6 0x000055629e6c31d7 in main (argc=, argv=) at /media/data/test1/src/thread_test.c:33
When I use the prebuilt TSan library from gcc the same way it works fine:
LD_PRELOAD=/lib/x86_64-linux-gnu/libtsan.so.0 ltrace -x @libtsan.so.0 /media/data/test1/src/thread_test 2>&1 | grep -E ‘pthread*’
pthread_create(0x7ffcd84b22a0, 0, 0x5561fc54b160, 0 <unfinished …>
pthread_create@libtsan.so.0(0x7ffcd84b22a0, 0, 0x5561fc54b160, 0 <unfinished …>
ZN11__sanitizer19real_pthread_createEPvS0_PFS0_S0_ES0@libtsan.so.0(0x7ffcd84b2008, 0, 0x7fa2ae21a150, 0 <unfinished …>
<… ZN11__sanitizer19real_pthread_createEPvS0_PFS0_S0_ES0 resumed> ) = 0
real_pthread_attr_getstack@libtsan.so.0(0x7ffcd84b21d0, 0x7ffcd84b2138, 0x7ffcd84b2140, 0x7fa2ae23b80c) = 0
…
I am using “Ubuntu 22.04 LTS - JAMMY”
Also, just to mention that ASan library seems to be working:
LD_PRELOAD=/media/data/llvm-project/build/lib/clang/15.0.0/lib/linux/libclang_rt.asan-x86_64.so LSAN_OPTIONS=verbosity=1:log_threads=1 /media/data/test1/src/thread_test
Any ideas what I am doing wrong?
Best Regards,