问题标签 [leak-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 投票
1 回答
1728 浏览

c - 我如何知道是否在编译时启用了 Leak Sanitizer?

GCC 和 Clang 编译器都支持LeakSanitizer,这有助于发现 C 程序中的内存泄漏。有时内存泄漏是不可避免的(例如,因为它正在测试套件中进行测试)。

这样的内存可以使用Leak Sanitizer 接口进行注释:

然而,这将在不支持 LSan 的编译器上中断。在 Address Sanitizer 中,此构造可用于检测 ASAN 的可用性:

在 Clang中没有__has_feature(leak_sanitizer)检测到 LSan 的__SANITIZE_LEAKS__存在,对于 GCC 也不存在。无论如何,我如何检测 ASAN 可用性?请注意,LSan 可以独立于 AddressSanitizer 和 ThreadSanitizer 启用。

0 投票
0 回答
79 浏览

c++ - Clang fsan 未在堆栈跟踪中显示行号

Clang++ 的泄漏清理器声称我在我的一个单元测试中存在内存泄漏。我倾向于相信它,但我无法通过检查找到它。

我正在使用以下选项进行编译:

我得到的输出看起来像

(删除了不重要的信息)。

上面输出的问题是我得到的是内存地址而不是文件和行号,这样我就可以弄清楚泄露了什么!

根据谷歌 Clang 的 Chandler Carruth 的说法,启用调试输出 ('-g') 应该会导致堆栈跟踪中的内存地址被文件和行号替换。(您可以在此处具体看到他应用它。)正如您从我的编译标志中看到的那样,我正在发出调试信息。

知道我可能忽略了什么吗?

0 投票
1 回答
2776 浏览

c++ - 了解 LeakSanitizer 输出

我在我的程序中使用来自 g++ 的 AddressSanitizer,并且有一些输出我无法理解和采取行动。

我之前使用的是 g++-4.8.4,我很确定没有泄漏报告,但我最近切换到 g++-5.2.1,现在我有新的错误报告。我猜gcc5变得更好了。

但是,其中一些非常神秘,例如:

下一个更清楚:

前三个报告是否与最后一个报告相关联?如果他们是独立的,有没有办法找出问题所在?

谢谢。

0 投票
0 回答
99 浏览

c - 如果程序崩溃,Google 的 Leak Sanitizer 能否报告泄漏?

以下程序在空指针取消引用时崩溃:

使用 Valgrind 执行时,仍然会报告内存泄漏(尽管发生了崩溃)。但是,当通过使用 -fsanitize=leak 编译程序来使用 Leak Sanitizer 时,程序会崩溃并且不会报告泄漏。

当程序崩溃时,有没有办法从 Leak Sanitizer 获取报告?

0 投票
2 回答
8810 浏览

memory-leaks - 直接泄漏和间接泄漏有什么区别?

我从 LeakSanitizer 工具得到以下输出。正如该工具所理解的那样,直接泄漏和间接泄漏之间有什么区别?

0 投票
0 回答
489 浏览

android - asan_device_setup.sh 错误:“没有这样的文件或目录”;但它确实存在

我正在尝试设置一个模拟的 android 设备来使用 Google 的消毒剂调试一些本机代码。在使用准备设备运行净化代码所需的 asan_device_setup 脚本时,出现以下情况:

输出:

脚本针对第一组错误运行的代码是:

我检查了源文件和“$TMPDIROLD”文件夹都存在,这与错误消息所暗示的相反。

任何帮助找出造成这种情况的原因将不胜感激。

终端:Cygwin

模拟器:Android API21,已植根

0 投票
1 回答
1448 浏览

gcc - gcc 的有效消毒剂抑制字符串是什么?

当使用带有 gcc 的消毒剂时,可以提供一个例外/抑制列表来处理误报等。

抑制文件格式的文档记录很差。

每个抑制的形式

的有效值是name_of_check什么?

0 投票
2 回答
2345 浏览

c - LeakSanitizer 的运行时检查 (detect_leaks=1)

我有一个问题,即通过动态加载的库的任何 Leak Sanitizer 回溯报告Unknown Module该库中的任何函数调用。

我以前遇到过与 valgrind 几乎相同的问题,我知道这是由于在退出时使用 dlclose 卸载了库,并且符号器运行时符号不可用。

使用 valgrind 修复很简单

RUNNING_ON_VALGRIND是 valgrind 库提供的一个宏,用于检测程序是否是 valground。

我在 LSAN 文档中看不到任何关于何时ASAN_OPTIONS=detect_leaks=1设置的类似功能的内容。

有谁知道是否可以执行运行时检查以在 LSAN 下运行?

0 投票
1 回答
4593 浏览

c++ - 在 -fsanitize=address 下运行时如何抑制 LeakSanitizer 报告?

当我用 编译我的 C++ 代码时-fsanitize=address,我的软件会在退出时打印出泄漏列表。有没有办法避免泄漏报告(我只对内存损坏感兴趣,而不是泄漏)?我去了带有ASAN flags page的页面,但看起来这些标志中的任何一个都不匹配。

0 投票
0 回答
400 浏览

memory-leaks - LeakSanitizer 在简单的 MPI 程序中发现泄漏

这个简单的程序根据LeakSanitizer泄漏内存。

我将它链接到 Open MPI v1.10.2。

This other question问了几乎相同的问题,但使用 valgrind 而不是 LeakSanitizer。答案解释了报告的内存泄漏是误报,并指导如何在使用 valgrind 时抑制它们。

我想 LeakSanitizer 报告的内存泄漏也是错误的。是这样吗?有可能压制他们吗?