gpt4 book ai didi

linux - 如何让 ASAN 忽略子进程?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:15 24 4
gpt4 key购买 nike

我正在尝试在启用 ASAN 的情况下运行我的应用程序以搜索泄漏和其他错误,但是,由于我在应用程序内部使用 popen,sanitizer 似乎也报告了子进程错误(我真的不关心)并且令人困惑)。

有没有办法让它忽略子进程?

我的环境是:Fedora 26、gcc 7.3.1、libasan 7.3.1-6

最佳答案

我怀疑您正在使用 LD_PRELOAD=libasan.so,这将导致 Asan 运行时被预加载到子进程。这将导致一些有限形式的清理,因为运行时将拦截和清理对标准 libc 函数(如 mallocmemcpy)的调用。

在 Asan 中没有内置方法可以禁用它,所以最好的办法是在程序启动时重置 LD_PRELOAD:

int main() {
# ifdef __SANITIZE_ADDRESS__
// Do not sanitize child processes
// TODO: strip only libasan.so, keep everything else
unsetenv("LD_PRELOAD");
# endif

关于linux - 如何让 ASAN 忽略子进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52224529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com