加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 使用clang的ThreadSanitizer和TBB避免误报

发布时间:2020-12-16 07:06:01 所属栏目:百科 来源:网络整理
导读:有没有人用 Intel Threading Building Blocks (TBB)试过 clang’s ThreadSanitizer? 到目前为止,我的经验是,即使对于相对简单的示例,您也会收到很多警告.不幸的是,其中许多似乎都是误报. 在this answer到另一个ThreadSanitizer问题,建议使用抑制文件.这有帮
有没有人用 Intel Threading Building Blocks (TBB)试过 clang’s ThreadSanitizer?

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

在this answer到另一个ThreadSanitizer问题,建议使用抑制文件.这有帮助吗?是否存在针对TBB或任何其他技术的抑制文件?

(旁注:Helgrind,看起来很相似.很多误报.)

解决方法

当我在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*

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读