1

目前我遇到了一个已知的 asan 问题(见报告

==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 的方法,但之后再使用。


编辑:如果它有用,这发生在一个非常简单的程序中:错误代码

4

2 回答 2

2

不,这是一个基本错误,它会阻止 Asan 以后的所有仪器正常工作。例如,函数序言中的堆栈中毒最终会导致段错误或破坏随机内存。

于 2017-07-24T09:14:56.373 回答
1

您报告的错误不是地址清理程序发现的寻址错误,而是地址清理程序本身的问题。在此处阅读常见问题解答。在此处报告与您的案例相关的部分:

问:我正在使用动态 ASan 运行时,我的程序在开始时崩溃,并显示“影子内存范围与现有内存映射交错。ASan 无法正确进行。”。

A1:如果您使用共享 ASan DSO,请尝试在您的程序中使用 LD_PRELOAD'ing Asan 运行时。

于 2017-10-30T17:34:05.557 回答