问题标签 [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.
memory-leaks - 只有间接泄漏,没有直接泄漏
阅读完这个 StackOverflow 问题后:直接泄漏和间接泄漏有什么区别?我留下的印象是,如果我修复所有直接泄漏(多次修复测试通过,因为在修复之前的直接泄漏后间接泄漏可能会变成直接泄漏),最终我会得到 0 个泄漏。
我目前正在使用 Leak Sanitizer (LSAN),在修复了所有直接泄漏之后(一些间接泄漏也因此消失了),我现在留下了一堆间接泄漏。为什么没有直接的?这什么时候会发生?如何诊断和修复剩余的泄漏?
shared-libraries - 没有 LD_PRELOAD 的共享库中的泄漏/地址清理程序
我希望在我的共享库上使用 Clang 的泄漏/地址清理程序,该库是dotnet
在运行时从 JVM 或(Linux)加载的,所以我无法重新编译二进制文件。
使用LD_PRELOAD
会产生非常嘈杂的输出,JVM 本身会报告很多(可能是误报?)泄漏。当LD_PRELOAD
ing for时,消毒剂彻底崩溃dotnet
。
有没有办法将消毒剂静态链接到共享库(或动态链接LD_PRELOAD
)?
c++ - 抑制 LeakSanitizer 输出
如何抑制 LeakSanitizer 输出?
对于 Address Sanitizer,我可以使用__attribute__((no_sanitize_address))
如何在 -fsanitize=address 下运行时抑制 LeakSanitizer 报告?
但它不适用于LS。
memory-leaks - 如何启用LSAN在运行时检测内存泄漏,而不是等到进程结束
我有一个始终在我的系统中运行的 ASAN 检测“守护程序”进程。我看到只有在进程退出时才报告内存泄漏。无论如何,我可以要求 LSAN 转储泄漏报告而不必终止进程吗?是否有任何信号可以发送给处理,以便它检测并转储泄漏?
c - glibc 中的暂存缓冲区是什么意思?
我发现如果我使用 tcmalloc 堆检查器以 draconian 模式检查下面的代码会导致堆泄漏,但 LSan 没有发现泄漏
(我假设 glibc 中的内部分配在 LSan 中被抑制)
我检查了一下,发现在 glibc 内部getaddrinfo()
使用了暂存缓冲区
,
并怀疑这些暂存缓冲区会导致内存泄漏
(即使它无害)
但遗憾的是没有完整的解释
,只说“暂存缓冲区是具有堆栈默认分配的可变大小缓冲区”;;
但究竟是什么暂存缓冲区?
你可以参考glibc/include/scratch_buffer.h
这里
gcc - 为什么 LSan(使用 gcc)找不到由 mmap 分配的内存泄漏?
我用下面的代码测试了它
我像下面那样构建并运行它
结果显示 LSan 只发现了 malloc 泄漏
是否有任何选项可以强制它使用 mmap 查找泄漏或 LSan 只是为了这样做而设计的?
clang - Clang++ LSAN 和 UBSAN 导致对 `__ubsan_handle_add_overflow' 的未定义引用
当我在使用编译器清理程序时,当仅在clang++
.
请注意,当我删除-fsanitize=leak
或添加这些标志时,链接问题消失了:-fsanitize=leak -fsanitize-trap=undefined
.
另请注意,这种奇怪的链接错误似乎只在使用clang++
. g++
在下面显示的所有情况下都工作得很好。
任何线索都可能有所帮助。谢谢。
main.cpp
如果您需要(您可能永远不会这样做)的源代码:
macos - 如何在 MacOS 上使用 clang 的 LeakSanitizer?
我是 macOS 大苏尔。AFAIK,Valgrind 还不支持这个操作系统。至少我试过这个。
在谷歌搜索之后,我切换到LeakSanitizier并测试了这段 C 代码:
这篇文章指出,macOS 附带的 clang 没有-fsanitize=address
启用支持。所以我从自制软件安装了clang:
好的,让我们尝试一下:
什么都没发生。也许尝试llvm-symbolizer
结果相同。也许我在这里遗漏了一些东西?
c - 如何使用 CLion 在 MacOS Big Sur 上查看内存泄漏?
我不知道如何在使用 CLion 的 MacOS Big Sur 上使用 CLion 来查看内存泄漏,我已经尝试过这些事情:
Valgrind - 与 Big Sur 不兼容
来自 Clang 的 Leak Sanitizer - 根据 CLion 的支持人员的说法,这显然与 MacOS 不兼容
在 CLion 中,我在 CMakeLists.txt 中编写了以下命令:
然后我在地址消毒剂部分的首选项菜单->消毒剂中写了:
根据 CLion 支持页面,他们说 Leak Sanitizer 包含在 Address sanitizer 中。