How to use ThreadSanitizer to detect data race bugs

From KratosWiki
Revision as of 14:42, 27 March 2017 by Ipouplana (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

The aim of this tutorial is to briefly describe how to compile Kratos with ThreadSanitizer (or TSan) and run a test example from a python script. If someone is interested in the details of ThreadSanitizer and data race bugs, please read the manual

Let us notice that ThreadSanitizer is supported on Linux x86_64 and is part of clang 3.2 and gcc 4.8. This tutorial has been tested in Ubuntu 16.04 with gcc 6.3.0, compiling Kratos in release mode.

First, modify the CMAKE_CXX_FLAGS in your with -fsanitize=thread and -ltsan flags:

-DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -msse3 -std=c++11 -fsanitize=thread -ltsan"     \

Once the compilation finishes, test examples must be run by pre-loading the ThreadSanitizer library of your compiler. For instance, in our case it was:

LD_PRELOAD=/path/to/gcc-6.3.0/lib64/ python3
Personal tools