【发布时间】:2018-09-19 00:40:30
【问题描述】:
在 Ubuntu 17.10 docker 容器上执行使用 gcc 7.2.0+ASan 编译的二进制文件失败,并出现以下错误:
==5==HINT: LeakSanitizer does not work under ptrace (strace, gdb, etc)
【问题讨论】:
标签: 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)
【问题讨论】:
标签: docker gcc address-sanitizer ubuntu-17.10
LSan(执行泄漏检查)通过ptrace 附加到被测程序。它在 docker 下无法这样做,因为它没有权限。
这可以通过使用以下两个选项之一运行具有特权的 docker 容器来解决:
docker run .... --privileged
或更具体:
docker run .... --cap-add SYS_PTRACE
--cap-add SYS_PTRACE 是 CI 和自动化的首选选项,因为它将权限仅限于 ptrace。
【讨论】: