问题标签 [sanitizer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
718 浏览

c++ - 哪些工具可以报告此类未初始化变量的使用?

考虑以下程序

显然它具有未定义的行为,我通常希望能够使用一些调试工具来捕获它。我已经尝试过 cppcheck(使用他们的在线演示g++ -fsanitize=address以及g++ -fsanitize=undefined, 和valgrind. 但是这些工具不会报告我x.d在阅读时未初始化。

我可以使用哪些工具来捕获这些未定义的行为(最好在 Linux 上运行)?

0 投票
2 回答
427 浏览

c++ - 无法从项目的示例项目中重现内存清理结果

我从 centos7 中得到完全相同的结果,clang-3.6.1 是使用 Fedora rpm 规范文件从源代码构建的。Ubuntu 14.04,clang-3.4

尽可能使用此处 wiki 的说明https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo 。该页面最后一次更新是在 6 个月前。

googlest 版本 613 仍在使用 tr1

将 googletest 更新为 tip (746) 并编译并带有以下警告

并且该页面中的琐碎建议案例没有被 msan 拾取

我有一个项目,其中 valgrind barfs 由于使用了一些非常大的 mmap,因此内存清理非常有用。如果我做错了什么。googletest 似乎以某种方式抑制了该错误。删除谷歌测试并将测试用例转换为

if(foo[4] == 'z') std::cout << "它是 z" << std::endl;

按预期触发明显错误的报告

是否可以将内存清理与单元测试库一起使用?

0 投票
1 回答
664 浏览

redis - 带有jemalloc的asan下的redis

我正在以 4 种不同的方式编译 Redis 3.0.6:

  1. 杰马洛克
  2. libc malloc
  3. asan + jemalloc ( -fsanitize=address -fno-omit-frame-pointer)
  4. asan + libc malloc

然后我redis-bench在所有这些二进制文件下运行标准。我不明白的是,场景3的性能非常接近场景1

有人可以向我解释这怎么可能?我在 asan 手册上没有找到任何不支持 jemalloc 或相关内容的内容。

0 投票
3 回答
4620 浏览

sanitizer - 检查诸如 AddressSanitizer 之类的消毒剂是否处于活动状态

我有几个版本的项目检出和编译。如果我发现错误,我会比较版本以缩小问题范围。有时我会启用像 AddressSanitizer 这样的消毒剂。如果我重用一个可执行文件,我不记得它是否是用消毒剂编译的。如果可执行文件工作正常,我不确定该错误是否不存在,或者我是否没有在此构建中包含消毒剂。所以我必须重新配置和重建以确保我有消毒剂。

有没有办法检查可执行文件是否已使用消毒剂编译?

0 投票
1 回答
791 浏览

package - 对于 32 位,我需要将 clang 与 asan 一起使用什么包?

使用 clang++ 和编译时出现此错误-fsanitize=address -m32

我需要什么包裹?我已经尝试过libclang-3.6-dev

我也收到了 clang 3.7 的错误-m64

0 投票
2 回答
1635 浏览

clang - 未定义的行为清理程序抑制文件:无法解析抑制

使用-fsanitize=undefined使用 clang 3.6 编译应用程序后,我尝试启动检测程序,同时使用抑制文件忽略一些错误:

抑制文件 ubsan.supp 包含:

这会导致错误消息:

gcc 4.9 版本也是如此。我能找到的唯一文档是http://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html,它适用于 clang 3.9,而我使用的是 3.6(其中不包含 ubsan 的文档)。

任何人都可以提供适用于 clang 3.6 的 ubsan 抑制文件的工作示例吗?

编辑:通过浏览 ubsan 的源代码,我发现唯一有效的抑制类型可能是“vptr_check”——但不知道我在看哪个版本。谁能确认在 clang 3.9 中有更多的抑制类型可用?

0 投票
1 回答
3530 浏览

c++ - 标准::向量> push_back 给出堆缓冲区溢出

我正在尝试使用以下代码来解决hackerrank的偶数树任务以读取输入(std::cin替换为自定义字符串数据以在此处将输入和程序代码放在一个位置):

第二个数字将是边数(后续数字对),因此我可以预测向量中需要多少元素。

此代码给了我以下消毒剂错误(与注释行相同的错误):

我在这里想念什么?

编辑

好的,所以我找到emplace_back了默认std::vector<int>的解决方案之一v

但是为什么它以前没有工作,因为使用size_type cppreference的构造函数

3) 使用默认插入的计数 T 实例构造容器。不制作副本。

0 投票
2 回答
1898 浏览

gcc - 如何使用以下 Address Sanitizer 输出解决我的程序中的分段错误?

这个问题是我之前的问题的续集,目前的状态是我已经获得了地址消毒剂的输出——由@Employed Russian 建议——如下所示。这是我第一次使用地址消毒剂,所以请原谅我的幼稚。

正如@Employed Russian 早些时候指出的那样,问题很可能出在堆栈上。现在,如何解决这个堆栈问题?因为这些都在我头上。

0 投票
1 回答
4267 浏览

clang - 地址消毒剂警告

几天来,我在 Xcode 7.3 中启动 Address Sanitizer 时遇到以下问题。当 Sanitizer 发现问题(实际上被文件抑制)时,将错误消息打印到 Xcode 控制台:

==13392==警告:无法写入 fd 55 处的符号器

==13392==警告:无法写入 fd 55 处的符号器

==13392==警告:无法写入 fd 55 处的符号器

==13392==警告:无法写入 fd 55 处的符号器

==13392==警告:无法使用和重新启动外部符号!

我在存储库中找到了错误消息,但我仍然无法解释发生了什么。显然内部写入功能失败,但我不知道是什么原因造成的。有任何想法吗?

https://github.com/Microsoft/compiler-rt/blob/master/lib/sanitizer_common/sanitizer_symbolizer_process_libcdep.cc#L100

0 投票
1 回答
5546 浏览

c++ - 为什么clang不能启用所有的消毒剂?

Clang有各种消毒剂,可以打开以在运行时发现问题。
但是,有些消毒剂我不能一起使用。这是为什么?

这没什么大不了的,但是当我运行单元测试时,它需要的时间比它应该的要长,因为我为相同的测试创建了多个二进制文件,并分别运行它们中的每一个。