当跨so引用时会出现误报
首先夸一波大佬,工具写的很棒
当我在工程中应用这个工具时,我发现存在较多的误报
简易代码:
` void dummy() { Init(); Deinit(); }
int main() { dummy(); return 0; }`
Init()函数中会初始化资源,其中包括进程级的全局资源 Deinit()函数会销毁掉资源 当我用asan工具进行内存检测时,是没有发现泄漏的(由于保密的关系,无法展示详细代码,sorry~~)
我想到的可能原因是工程依赖的xxx.so中存在全局资源,其定义在mallocvis之前,构造在运行时,也就是mallocvis之后,然后这个资源是通过类似于析构释放资源的,也就是在mallocvis之后释放,这就导致了资源的申请被监控到了,但是释放的过程没有被监控
我想咨询下这个问题有没有准确定位的办法,要是有解决方案就更好了(xxx.so必须依赖,且无法更改...)
mallocvis.so只会监控的main开始后和main结束之间分配和释放的资源,应该并不会有全局资源的。 你是不是wsl,有同学反馈wsl似乎会有很多的误报,原因不明。 如果你需要,我可以改出两个函数,mallocvis_start(),mallocvis_end()让你调用,控制监控区间。
无法顺畅的大口呼吸,是活着的最好证明
---原始邮件--- 发件人: @.> 发送时间: 2024年7月17日(周三) 晚上9:17 收件人: @.>; 抄送: @.***>; 主题: [archibate/mallocvis] 当跨so引用时会出现误报 (Issue #9)
首先夸一波大佬,工具写的很棒
当我在工程中应用这个工具时,我发现存在较多的误报
简易代码:
` void dummy() { Init(); Deinit(); }
int main() { dummy(); return 0; }`
Init()函数中会初始化资源,其中包括进程级的全局资源 Deinit()函数会销毁掉资源 当我用asan工具进行内存检测时,是没有发现泄漏的(由于保密的关系,无法展示详细代码,sorry~~)
我想到的可能原因是工程依赖的xxx.so中存在全局资源,其定义在mallocvis之前,构造在运行时,也就是mallocvis之后,然后这个资源是通过类似于析构释放资源的,也就是在mallocvis之后释放,这就导致了资源的申请被监控到了,但是释放的过程没有被监控
我想咨询下这个问题有没有准确定位的办法,要是有解决方案就更好了(xxx.so必须依赖,且无法更改...)
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>
---原始邮件--- 发件人: @.> 发送时间: 2024年7月17日(周三) 晚上9:17 收件人: @.>; 抄送: @.***>; 主题: [archibate/mallocvis] 当跨so引用时会出现误报 (Issue #9)
首先夸一波大佬,工具写的很棒
当我在工程中应用这个工具时,我发现存在较多的误报
简易代码:
` void dummy() { Init(); Deinit(); }
int main() { dummy(); return 0; }`
Init()函数中会初始化资源,其中包括进程级的全局资源 Deinit()函数会销毁掉资源 当我用asan工具进行内存检测时,是没有发现泄漏的(由于保密的关系,无法展示详细代码,sorry~~)
我想到的可能原因是工程依赖的xxx.so中存在全局资源,其定义在mallocvis之前,构造在运行时,也就是mallocvis之后,然后这个资源是通过类似于析构释放资源的,也就是在mallocvis之后释放,这就导致了资源的申请被监控到了,但是释放的过程没有被监控
我想咨询下这个问题有没有准确定位的办法,要是有解决方案就更好了(xxx.so必须依赖,且无法更改...)
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>
没,我就linux centos,我申请的资源是基于NPU封装的。如果可以的话,麻烦大佬提供下这两个函数我去试试,看能不能解决这个问题。 感谢感谢
------------------ 原始邮件 ------------------ 发件人: "archibate/mallocvis" @.>; 发送时间: 2024年7月17日(星期三) 晚上9:58 @.>; @.>;"State @.>; 主题: Re: [archibate/mallocvis] 当跨so引用时会出现误报 (Issue #9)
mallocvis.so只会监控的main开始后和main结束之间分配和释放的资源,应该并不会有全局资源的。 你是不是wsl,有同学反馈wsl似乎会有很多的误报,原因不明。 如果你需要,我可以改出两个函数,mallocvis_start(),mallocvis_end()让你调用,控制监控区间。
无法顺畅的大口呼吸,是活着的最好证明
---原始邮件--- 发件人: @.> 发送时间: 2024年7月17日(周三) 晚上9:17 收件人: @.>; 抄送: @.***>; 主题: [archibate/mallocvis] 当跨so引用时会出现误报 (Issue #9)
首先夸一波大佬,工具写的很棒
当我在工程中应用这个工具时,我发现存在较多的误报
简易代码:
` void dummy() { Init(); Deinit(); }
int main() { dummy(); return 0; }`
Init()函数中会初始化资源,其中包括进程级的全局资源 Deinit()函数会销毁掉资源 当我用asan工具进行内存检测时,是没有发现泄漏的(由于保密的关系,无法展示详细代码,sorry~~)
我想到的可能原因是工程依赖的xxx.so中存在全局资源,其定义在mallocvis之前,构造在运行时,也就是mallocvis之后,然后这个资源是通过类似于析构释放资源的,也就是在mallocvis之后释放,这就导致了资源的申请被监控到了,但是释放的过程没有被监控
我想咨询下这个问题有没有准确定位的办法,要是有解决方案就更好了(xxx.so必须依赖,且无法更改...)
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>
---原始邮件--- 发件人: @.> 发送时间: 2024年7月17日(周三) 晚上9:17 收件人: @.>; 抄送: @.***>; 主题: [archibate/mallocvis] 当跨so引用时会出现误报 (Issue #9)
首先夸一波大佬,工具写的很棒
当我在工程中应用这个工具时,我发现存在较多的误报
简易代码:
` void dummy() { Init(); Deinit(); }
int main() { dummy(); return 0; }`
Init()函数中会初始化资源,其中包括进程级的全局资源 Deinit()函数会销毁掉资源 当我用asan工具进行内存检测时,是没有发现泄漏的(由于保密的关系,无法展示详细代码,sorry~~)
我想到的可能原因是工程依赖的xxx.so中存在全局资源,其定义在mallocvis之前,构造在运行时,也就是mallocvis之后,然后这个资源是通过类似于析构释放资源的,也就是在mallocvis之后释放,这就导致了资源的申请被监控到了,但是释放的过程没有被监控
我想咨询下这个问题有没有准确定位的办法,要是有解决方案就更好了(xxx.so必须依赖,且无法更改...)
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.> — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you modified the open/close state.Message ID: @.>
推送了,你看看,你可以定义以下这个宏:
#define MANUAL_GLOBAL_INIT 1
然后,就可以手动调用(见malloc_hook.cpp文件末尾)mallocvis_init和mallocvis_deinit了。