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