【发布时间】:2020-02-26 16:21:14
【问题描述】:
如何抑制 LeakSanitizer 输出?
对于 Address Sanitizer,我可以使用 __attribute__((no_sanitize_address))
How to suppress LeakSanitizer report when running under -fsanitize=address?
但它对 LS 不起作用。
__attribute__((no_sanitize_address))
std::shared_ptr make_module()
{
return std::shared_ptr(new client);
}
21 Indirect leak of 3670536 byte(s) in 1 object(s) allocated from:
22 #0 0x7fbf42f521a8 in operator new(unsigned long) (/lib64/libasan.so.4+0xe01a8)
23 #1 0x7106b2 in graphite::make_module() /client.cc:15
【问题讨论】:
-
实际修复泄漏不是更好吗?
-
@ChristianRapp 如果它们在库中,则不会。
-
offtopic:
std::make_shared应该在那里使用。 -
@ChristianRapp,不。我的研究发现,这似乎是一个假阳性结果。
-
@ Marek R 这取决于。是的,我们有双重分配,但是这段代码每次运行调用一次,并且早在
make_shared出现之前就编写好了。
标签: c++ address-sanitizer leak-sanitizer