【问题标题】:Address Sanitizer with gcc fails on Ubuntu 17.10 docker container使用 gcc 的地址消毒器在 Ubuntu 17.10 docker 容器上失败
【发布时间】: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


    【解决方案1】:

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

    docker run ....   --privileged
    

    或更具体:

    docker run ....   --cap-add SYS_PTRACE
    

    --cap-add SYS_PTRACE 是 CI 和自动化的首选选项,因为它将权限仅限于 ptrace

    【讨论】:

    • 如何将生成核心所需的ASAN标志传递给docker环境?
    猜你喜欢
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    相关资源
    最近更新 更多