I only got it working when I reference the suppression file in TSAN_OPTIONS
. At least for me, only referencing in during compilation with -fsanitize-blacklist
did not work with the environment variable.
Anyway, here is a possible suppression file
# sanitizer-thread-suppressions.txt
race:^tbb*
... and that is how you can use it:
TSAN_OPTIONS="suppressions=sanitizer-thread-suppressions.txt" ./my_binary
If you increase verbosity, you should see outputs like these:
TSAN_OPTIONS="verbosity=2 suppressions=sanitizer-thread-suppressions.txt" ./my_binary
...
ThreadSanitizer: matched suppression '^tbb*'
Please note that the pattern ^tbb*
is simple but potentially dangerous as it might hide warnings in your own code. More realistic would be something like this:
race:^__interceptor_memset*
race:^tbb::interface9::internal::adaptive_mode*
race:^tbb::blocked_range*
race:^tbb::interface9::internal::start_for*
race:^tbb::internal::machine_load_store*
race:^tbb::strict_ppl::internal::micro_queue*