有没有人尝试过clang 的 ThreadSanitizer http://clang.llvm.org/docs/ThreadSanitizer.html with 英特尔线程构建模块 (TBB) http://en.wikipedia.org/wiki/Threading_Building_Blocks?
到目前为止,我的经验是,即使对于相对简单的示例,您也会收到很多警告。不幸的是,其中许多似乎都是误报。
In 这个答案 https://stackoverflow.com/a/13150069/783510对于另一个 ThreadSanitizer 问题,建议使用抑制文件。这有帮助吗?是否有 TBB 或任何其他技术的抑制文件?
(旁注:与Helgrind http://valgrind.org/docs/manual/hg-manual.html,看起来很相似。许多误报。)
当我引用抑制文件时,我才开始工作TSAN_OPTIONS
。至少对我来说,仅在编译期间引用-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*
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)