问题标签 [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 回答
789 浏览

memory-leaks - 只有间接泄漏,没有直接泄漏

阅读完这个 StackOverflow 问题后:直接泄漏和间接泄漏有什么区别?我留下的印象是,如果我修复所有直接泄漏(多次修复测试通过,因为在修复之前的直接泄漏后间接泄漏可能会变成直接泄漏),最终我会得到 0 个泄漏。

我目前正在使用 Leak Sanitizer (LSAN),在修复了所有直接泄漏之后(一些间接泄漏也因此消失了),我现在留下了一堆间接泄漏。为什么没有直接的?这什么时候会发生?如何诊断和修复剩余的泄漏?

0 投票
1 回答
728 浏览

shared-libraries - 没有 LD_PRELOAD 的共享库中的泄漏/地址清理程序

我希望在我的共享库上使用 Clang 的泄漏/地址清理程序,该库是dotnet在运行时从 JVM 或(Linux)加载的,所以我无法重新编译二进制文件。

使用LD_PRELOAD会产生非常嘈杂的输出,JVM 本身会报告很多(可能是误报?)泄漏。当LD_PRELOADing for时,消毒剂彻底崩溃dotnet

有没有办法将消毒剂静态链接到共享库(或动态链接LD_PRELOAD)?

0 投票
1 回答
221 浏览

c++ - 抑制 LeakSanitizer 输出

如何抑制 LeakSanitizer 输出?

对于 Address Sanitizer,我可以使用__attribute__((no_sanitize_address)) 如何在 -fsanitize=address 下运行时抑制 LeakSanitizer 报告? 但它不适用于LS。

0 投票
1 回答
239 浏览

memory-leaks - 如何启用LSAN在运行时检测内存泄漏,而不是等到进程结束

我有一个始终在我的系统中运行的 ASAN 检测“守护程序”进程。我看到只有在进程退出时才报告内存泄漏。无论如何,我可以要求 LSAN 转储泄漏报告而不必终止进程吗?是否有任何信号可以发送给处理,以便它检测并转储泄漏?

0 投票
2 回答
957 浏览

c - glibc 中的暂存缓冲区是什么意思?

我发现如果我使用 tcmalloc 堆检查器以 draconian 模式检查下面的代码会导致堆泄漏,但 LSan 没有发现泄漏
(我假设 glibc 中的内部分配在 LSan 中被抑制)

我检查了一下,发现在 glibc 内部getaddrinfo()使用了暂存缓冲区
, 并怀疑这些暂存缓冲区会导致内存泄漏
(即使它无害)

但遗憾的是没有完整的解释
,只说“暂存缓冲区是具有堆栈默认分配的可变大小缓冲区”;;

但究竟是什么暂存缓冲区?

你可以参考glibc/include/scratch_buffer.h 这里

0 投票
1 回答
294 浏览

gcc - 为什么 LSan(使用 gcc)找不到由 mmap 分配的内存泄漏?

我用下面的代码测试了它

我像下面那样构建并运行它
结果显示 LSan 只发现了 malloc 泄漏
是否有任何选项可以强制它使用 mmap 查找泄漏或 LSan 只是为了这样做而设计的?

0 投票
0 回答
41 浏览

c++ - 如何以内存泄露的形式创建信息泄漏?(源代码)

我正在尝试重现以下错误,称为信息泄漏,它从当前进程中读取内存。

我对 Foxit 的信息泄漏错误是如何完成的感兴趣,以便泄漏用户空间中的地址以重现我自己的测试用例。

在此处输入图像描述

0 投票
0 回答
376 浏览

clang - Clang++ LSAN 和 UBSAN 导致对 `__ubsan_handle_add_overflow' 的未定义引用

当我在使用编译器清理程序时,当仅在clang++.

请注意,当我删除-fsanitize=leak或添加这些标志时,链接问题消失了:-fsanitize=leak -fsanitize-trap=undefined.

另请注意,这种奇怪的链接错误似乎只在使用clang++. g++在下面显示的所有情况下都工作得很好。

任何线索都可能有所帮助。谢谢。

main.cpp如果您需要(您可能永远不会这样做)的源代码:

0 投票
1 回答
554 浏览

macos - 如何在 MacOS 上使用 clang 的 LeakSanitizer?

我是 macOS 大苏尔。AFAIK,Valgrind 还不支持这个操作系统。至少我试过这个

在谷歌搜索之后,我切换到LeakSanitizier并测试了这段 C 代码:

这篇文章指出,macOS 附带的 clang 没有-fsanitize=address启用支持。所以我从自制软件安装了clang:

好的,让我们尝试一下:

什么都没发生。也许尝试llvm-symbolizer

结果相同。也许我在这里遗漏了一些东西?

0 投票
3 回答
1351 浏览

c - 如何使用 CLion 在 MacOS Big Sur 上查看内存泄漏?

我不知道如何在使用 CLion 的 MacOS Big Sur 上使用 CLion 来查看内存泄漏,我已经尝试过这些事情:

  1. Valgrind - 与 Big Sur 不兼容

  2. 来自 Clang 的 Leak Sanitizer - 根据 CLion 的支持人员的说法,这显然与 MacOS 不兼容

  3. 在 CLion 中,我在 CMakeLists.txt 中编写了以下命令:

    然后我在地址消毒剂部分的首选项菜单->消毒剂中写了:

    根据 CLion 支持页面,他们说 Leak Sanitizer 包含在 Address sanitizer 中。