11

有没有人用Intel Threading Building Blocks (TBB)尝试过clang 的 ThreadSanitizer

到目前为止,我的经验是,即使是相对简单的示例,您也会收到很多警告。不幸的是,其中许多似乎是误报。

这个对另一个 ThreadSanitizer 问题的回答中,建议使用抑制文件。那能帮上忙吗?是否有 TBB 或任何其他技术的抑制文件?

(旁注:使用Helgrind,它看起来很相似。很多误报。)

4

1 回答 1

9

我只有在引用TSAN_OPTIONS. 至少对我来说,仅在编译期间引用 in-fsanitize-blacklist不适用于环境变量。

无论如何,这是一个可能的抑制文件

# sanitizer-thread-suppressions.txt
race:^tbb*

...这就是您可以使用它的方式:

TSAN_OPTIONS="suppressions=sanitizer-thread-suppressions.txt" ./my_binary

如果您增加详细程度,您应该会看到如下输出:

TSAN_OPTIONS="verbosity=2 suppressions=sanitizer-thread-suppressions.txt" ./my_binary
...
ThreadSanitizer: matched suppression '^tbb*'

请注意,该模式^tbb*很简单,但具有潜在危险,因为它可能会在您自己的代码中隐藏警告。更现实的是这样的:

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*
于 2016-09-06T20:31:11.457 回答