当前位置: 首页 > news >正文

AddressSanitizer failed to allocate 0xdfff0001000 (15392894357504) bytes解决方法

打开一个编译选项启用ASan的程序:

AddressSanitizer failed to allocate 0xdfff0001000 (15392894357504) bytes

然后程序启动失败。

原因:

[cfe-dev] Question about Clang/LLVM addresssanitizer

/proc/sys/vm/overcommit_memory是一个用于控制内存过度承诺(overcommit)策略的虚拟文件。

内存过度承诺是指在分配内存时,操作系统是否允许分配比实际物理内存更多的内存。该策略允许应用程序分配比可用内存更多的内存,但这可能导致系统在实际使用时出现内存不足的情况。

/proc/sys/vm/overcommit_memory文件的值可以设置为以下三个选项之一:

0:表示内存过度承诺策略被禁用。这是默认值,表示内核会根据实际的物理内存和交换空间来决定是否允许分配内存。
1:表示内存过度承诺策略被启用。内核会允许分配超过实际物理内存大小的内存,但在实际使用时可能会导致Out-of-Memory(OOM)错误。
2:表示内存过度承诺策略被启用,并且在分配内存时考虑了交换空间的大小。这种模式下,内核会允许分配超过实际物理内存和交换空间之和的内存。

通过修改/proc/sys/vm/overcommit_memory文件的值,可以调整系统的内存过度承诺策略,以满足特定应用程序或系统需求。

解决方法:

# 1. 检查/proc/sys/vm/overcommit_memory的值,如果是2,则修改为0
sudo bash -c "echo 0 > /proc/sys/vm/overcommit_memory" 
# 2. 虚拟内存设置为无限制
ulimit -v unlimited
http://www.lryc.cn/news/176954.html

相关文章:

  • Fortinet 2023上半年全球威胁态势研究报告:勒索软件检测成下降趋势,针对性攻击持续升温
  • MySQL ——多表连接查询
  • 前沿技术 --> 待定
  • Linux定时python脚本(crontab版本)
  • 修改 Ubuntu .cache 和 pip cache 默认路径
  • 【Java SE】Lambda表达式
  • Kafka-UI
  • Unity 制作登录功能02-创建和链接数据库(SQlite)
  • 算法 岛屿数量-(递归回溯)
  • 安卓恶意应用识别(番外篇)(Python并行(多线程or多进程)执行cmd)
  • 基于大语言模型扬长避短架构服务
  • 初识网络编程
  • 轻松使用androidstudio交叉编译libredwg库
  • 【C++杂货铺】一颗具有搜索功能的二叉树
  • uni-app使用vue3,在元素或组件实例上添加ref,用this.$refs显示undefined
  • 蜂蜜配送销售商城小程序的作用是什么
  • 大数据Flink(八十四):SQL语法的DML:窗口聚合
  • 系统集成|第十八章(笔记)
  • 480万商品,如何架构商品治理平台?
  • 【C++入门指南】C如何过渡到C++?祖师爷究竟对C++做了什么?
  • 简易磁盘自动监控服务
  • 【100天精通Python】Day65:Python可视化_Matplotlib3D绘图mplot3d,绘制3D散点图、3D线图和3D条形图,示例+代码
  • 十六,镜面IBL--预滤波环境贴图
  • 信息安全:恶意代码防范技术原理.
  • 开源媒体浏览器Kyoo
  • 人脸解锁设备时出现相机报错
  • 【广州华锐互动】利用VR开展工业事故应急救援演练,确保救援行动的可靠性和有效性
  • 还不知道数据类岗位的相关技能和职责吗?涤生大数据告诉你(二)
  • 常见应用层协议
  • 解决docker容器无法关闭的问题