登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
AI 队友
登录
注册
轻量养虾,开箱即用!低 Token + 稳定算力,Gitee & 模力方舟联合出品的 PocketClaw 正式开售!点击了解详情
代码拉取完成,页面将自动刷新
仓库状态说明
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
15
Star
11
Fork
109
src-openEuler
/
systemd
关闭
代码
Issues
9
Pull Requests
2
Wiki
统计
流水线
服务
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
开发画像分析
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
systemd-coredump接管coredump流程在某些情况下会导致无法dump本能dump的core文件
已完成
#IBPR6R
缺陷
sprookie
创建于
2025-02-28 16:21
**【缺陷描述】:systemd-coredump接管coredump流程在进程虚拟内存过大的情况下会导致无法dump本能dump的core文件** **一、缺陷信息** **【缺陷所属的os版本】openEuler-22.03-LTS-SP1** **【内核版本】kernel-5.10.0-136.12.0.86.4** **【缺陷所属软件及版本号】systemd-249-79** **【环境信息】** 硬件信息 不涉及 软件信息 openEuler-22.03-LTS-SP1 kernel-5.10.0-136.12.0.86.4 systemd-249-79 **【问题复现步骤】:** 1.编写测试二进制huge_virt_mem,构造一个使用虚拟内存10T(远大于根文件系统剩余空间),物理内存3G(远小于根文件系统剩余空间)的进程 2. 分别在/proc/sys/kernel/core_pattern为|/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h(管道模式接管内核传输core信息) 和core(内核在当前目录(/var/lib/systemd/coredump)生成core.<pid>)的情况下,kill -11 <huge_virt_mem>,生成core文件,查看core文件生成情况 **【实际结果】** 当/proc/sys/kernel/core_pattern为core时,内核经过一段时间的处理成功dump core文件,ll查看文件大小为10T左右,接近虚拟内存使用大小,而du -sh查看文件大小则为3G左右,接近物理内存使用大小,实际占用根目录空间为3G左右 当/proc/sys/kernel/core_pattern为|/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h 时,经过一段时间后systemd-coredump@xxx.service报no space left on device信息,coredump失败 **【期望结果】** systemd-coredump接管不应导致本能保存的core无法被保存下来 **【缺陷分析】** 内核coredump流程会遍历进程vma的地址,当地址有实际物理页映射则会dump对应内容,如果没有则会填充0,移动offset,当有大量的页未建立映射时,由于文件系统稀疏文件特性,这样生成的core文件其中大量的0不会分配数据块存储,这种情况下ll命令与du命令查看core文件大小会有较大差异,而管道模式下没有应用上这种特性,使得反而无法保存特定的core文件 **二、缺陷分析结构反馈** 影响性分析说明: 缺陷严重等级:(Critical/High/Moderate/Low) 缺陷根因说明: 受影响版本排查(受影响/不受影响): openEuler-20.03-LTS-SP4 openEuler-22.03-LTS-SP3 openEuler-22.03-LTS-SP4 openEuler-24.03-LTS openEuler-24.03-LTS-SP1 修复是否涉及abi变化(是/否): openEuler-20.03-LTS-SP4 openEuler-22.03-LTS-SP3 openEuler-22.03-LTS-SP4 openEuler-24.03-LTS openEuler-24.03-LTS-SP1
**【缺陷描述】:systemd-coredump接管coredump流程在进程虚拟内存过大的情况下会导致无法dump本能dump的core文件** **一、缺陷信息** **【缺陷所属的os版本】openEuler-22.03-LTS-SP1** **【内核版本】kernel-5.10.0-136.12.0.86.4** **【缺陷所属软件及版本号】systemd-249-79** **【环境信息】** 硬件信息 不涉及 软件信息 openEuler-22.03-LTS-SP1 kernel-5.10.0-136.12.0.86.4 systemd-249-79 **【问题复现步骤】:** 1.编写测试二进制huge_virt_mem,构造一个使用虚拟内存10T(远大于根文件系统剩余空间),物理内存3G(远小于根文件系统剩余空间)的进程 2. 分别在/proc/sys/kernel/core_pattern为|/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h(管道模式接管内核传输core信息) 和core(内核在当前目录(/var/lib/systemd/coredump)生成core.<pid>)的情况下,kill -11 <huge_virt_mem>,生成core文件,查看core文件生成情况 **【实际结果】** 当/proc/sys/kernel/core_pattern为core时,内核经过一段时间的处理成功dump core文件,ll查看文件大小为10T左右,接近虚拟内存使用大小,而du -sh查看文件大小则为3G左右,接近物理内存使用大小,实际占用根目录空间为3G左右 当/proc/sys/kernel/core_pattern为|/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h 时,经过一段时间后systemd-coredump@xxx.service报no space left on device信息,coredump失败 **【期望结果】** systemd-coredump接管不应导致本能保存的core无法被保存下来 **【缺陷分析】** 内核coredump流程会遍历进程vma的地址,当地址有实际物理页映射则会dump对应内容,如果没有则会填充0,移动offset,当有大量的页未建立映射时,由于文件系统稀疏文件特性,这样生成的core文件其中大量的0不会分配数据块存储,这种情况下ll命令与du命令查看core文件大小会有较大差异,而管道模式下没有应用上这种特性,使得反而无法保存特定的core文件 **二、缺陷分析结构反馈** 影响性分析说明: 缺陷严重等级:(Critical/High/Moderate/Low) 缺陷根因说明: 受影响版本排查(受影响/不受影响): openEuler-20.03-LTS-SP4 openEuler-22.03-LTS-SP3 openEuler-22.03-LTS-SP4 openEuler-24.03-LTS openEuler-24.03-LTS-SP1 修复是否涉及abi变化(是/否): openEuler-20.03-LTS-SP4 openEuler-22.03-LTS-SP3 openEuler-22.03-LTS-SP4 openEuler-24.03-LTS openEuler-24.03-LTS-SP1
评论 (
6
)
登录
后才可以发表评论
状态
已完成
待办的
已挂起
修复中
已确认
已完成
已验收
已取消
负责人
未设置
陈棋德
dillon_chen
负责人
协作者
+负责人
+协作者
标签
sig/Base-service
未设置
项目
未立项任务
未立项任务
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
分支 (
-
)
标签 (
-
)
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
预计工期
(小时)
参与者(4)
1
https://gitee.com/src-openeuler/systemd.git
git@gitee.com:src-openeuler/systemd.git
src-openeuler
systemd
systemd
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册