使用gcc的地址Sanitizer在Ubuntu 17.10 docker容器上失败

时间:2018-04-09 14:54:53

标签: docker gcc address-sanitizer ubuntu-17.10

在Ubuntu 17.10 docker容器上执行使用gcc 7.2.0 + ASan编译的二进制文件失败,并出现以下错误:

==5==HINT: LeakSanitizer does not work under ptrace (strace, gdb, etc)

1 个答案:

答案 0 :(得分:3)

LSan(执行泄漏检查)通过ptrace附加到被测程序。它在docker下没有这样做,因为它没有权限。 这可以通过使用以下两个选项之一运行具有权限的docker容器来修复:

docker run ....   --privileged

或更具体:

docker run ....   --cap-add SYS_PTRACE
对于CI和自动化,

--cap-add SYS_PTRACE是更受欢迎的选项,因为它仅将权限限制为ptrace