在Ubuntu 17.10 docker容器上执行使用gcc 7.2.0
+ ASan
编译的二进制文件失败,并出现以下错误:
==5==HINT: LeakSanitizer does not work under ptrace (strace, gdb, etc)
答案 0 :(得分:3)
LSan(执行泄漏检查)通过ptrace
附加到被测程序。它在docker下没有这样做,因为它没有权限。
这可以通过使用以下两个选项之一运行具有权限的docker容器来修复:
docker run .... --privileged
或更具体:
docker run .... --cap-add SYS_PTRACE
对于CI和自动化, --cap-add SYS_PTRACE
是更受欢迎的选项,因为它仅将权限限制为ptrace
。