bytedance / memory-leak-detector

Other
1.09k stars 178 forks source link

addr2line 获取函数名错误 #50

Open myzhan opened 4 months ago

myzhan commented 4 months ago

这个问题不是 memory-leak-detector 的问题,放这里供其他人参考。

因为 memory-leak-detector 依赖 addr2line 来解析一些 unknown 的地址,有些时候,它会给出错误的函数名,导致 memory-leak-detector 的聚合报告里面,出现一些不可能的堆栈。

例如下面一个例子

0x000000724b800000, 188743680, mmap64, 5
0x0000000000f53fb0    my_malloc()
0x0000000002014358  byte_buf::~byte_buf()
0x0000000002013bbc   byte_buf::init(unsigned int)

其中 byte_buf::init() 通过一个 static inline 函数去调用 my_malloc,被 addr2line 误识别为 byte_buf::~byte_buf()。byte_buf::~byte_buf() 是一个虚函数。