【发布时间】:2017-07-24 06:15:02
【问题描述】:
目前我在使用 asan (See report) 时遇到了一个已知问题
==5097==Shadow memory range interleaves with an existing memory mapping. ASan cannot proceed correctly. ABORTING.
==5097==ASan shadow was supposed to be located in the [0x00007fff7000-0x10007fff7fff] range.
是否可以使用环境变量来停止使用 asan 来防止此错误?
或者至少阻止这个错误是致命的。
我想这样做的原因是在生成代码时发生了失败的命令,但我想将 asan 用于生成的二进制文件。为生成的二进制文件和最终的二进制文件设置不同的 CFLAGS 是可能的,但如果不对其他人进行硬编码,就很难做到。所以我想要一种在构建步骤中禁用 asan 的方法,但之后再使用。
【问题讨论】:
-
你有没有试过检查哪个库占用了 Asan 所需的这个内存区域?
-
这个错误的奇怪之处在于可执行文件被映射到 0x00ab8a216000 而不是usual 0x400000。您链接 datatoc 的方式有什么特别之处吗?也许特别
LDFLAGS? -
除了使用 ASAN 之外,LDFLAGS 没什么奇怪的。
-
您的可执行文件在非标准地址加载一定是有原因的。也许它是一个 PIE?
-
此错误报告可能比您的问题中链接的报告更相关:github.com/google/sanitizers/issues/837 如果this report 是正确的,则将您的内核降级到