ASAN报错汇总

简介: ASAN报错汇总

启动错误:Shadow memory range interleaves with an existing memory mapping. ASan cannot proceed correctly. ABORTING

ASan shadow was supposed to be located in the [0x1ffff000-0x3fffffff] range.

地址消毒使用影子内存判断读写越界问题,影子内存在地址消毒初始化时被分配,

x86程序,地址消毒需要的影子内存从[0x1ffff000-0x3fffffff] ,一旦这部分内存被其他人占用,地址消毒则启动失败

0x08048000-0x19c7e000 /home/HiDisk/l00167020/br_test_modem_llt_on_linux_20170527/vendor/hisi/llt/gas/ut/utproj_test_v7

0x19c7e000-0x212cf000 /home/HiDisk/l00167020/br_test_modem_llt_on_linux_20170527/vendor/hisi/llt/gas/ut/utproj_test_v7

0x212cf000-0x23773000

可以看到,程序进程代码加载从0x08048000开始,那么到地址消毒要求的内存0x1ffff000中间共有402354176大约400M空间,那么x86程序加上地址消毒编译好的进程占用的空间如果超过400M则地址消毒就会报上边的错误

一般占用这么大空间的程序主要是有大的全局变量声明,把全局变量改成用堆分配就能解决。

asan的编译开关 -fsanitize=undefined 对进程的内存占用影响非常大,会占用很多的内存,增大text段、data段和BSS段,也可能导致王浩贴子里说的这个问题。如果有遇到这个问题的话,建议先关闭 -fsanitize=undefined 这个开关试试。

同时 -fsanitize=undefined 对编译出来的二进制文件大小影响也很大,在我的测试中,打开和去除这个编译选项,生成的二进制文件大小差了一倍。

一般程序过大都是有些大的全局变量,找到后用malloc分配可以解决

相关文章
报错 求助
"errorMessage": "Unable to import module 'test'", "errorType": "ImportModuleError",
报错 求助
R 报错的问题
安卓和eclipse开发,个人遇到很多次报错R的问题,自己总结如下: 1、 关闭了自动构建: Project -->Build Automatically。 那么,此时,可以勾选上,并且保存未保存的文件即可,也可以选择构建,或者 CTRL+B。
678 0
报错
下载数据后,从本地缓存加载出错
|
10月前
|
k8s报错
k8s报错
204 10
CocoaPods安装失败解决方法
CocoaPods安装失败解决方法
100 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等