【问题标题】:Suppress LeakSanitizer output抑制 LeakSanitizer 输出
【发布时间】: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


【解决方案1】:

尝试使用export LSAN_OPTIONS=detect_leaks=0 运行。要获得更精细的控制,请使用LSAN_OPTIONS=suppressions 接口(例如here)。

【讨论】:

    猜你喜欢
    • 2016-03-07
    • 2018-12-06
    • 2013-11-19
    • 1970-01-01
    • 2012-03-09
    • 2011-10-28
    • 1970-01-01
    相关资源
    最近更新 更多