可以使用环境变量禁用asan吗?

时间:2017-07-24 06:15:02

标签: address-sanitizer

目前我遇到了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,但之后再使用。

编辑:如果它有用,会出现一个非常简单的程序:ErrorCode

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

  

问:我使用动态ASan运行时,我的程序在开始时崩溃了   "影子存储器范围与现有存储器映射交错。 ASAN   无法正确进行。"。

     

A1:如果您使用的是共享的ASan DSO,请尝试使用LD_PRELOAD&#asan运行时   进入你的计划。