基于2512_LTS版本构建的openUBMC
固件升级压测过程中BMC有异常重启的log,一键收集中有coredump:
因为coredump中没有unwind信息,.so也是strip过的,且security进程相关的组件基本是闭源的,难以定位,希望社区可以提供定位支持。
LogDump.zip (7.8 MB)
AppDump.zip (850.7 KB)
基于2512_LTS版本构建的openUBMC
固件升级压测过程中BMC有异常重启的log,一键收集中有coredump:
答案内容由AI生成,仅供参考:
总结
| 项目 | 内容 |
|---|---|
| 问题本质 | 压力测试下 security 进程崩溃 → 触发 MACA 自动复位 → BMC 频繁重启 |
| 根本原因 | security 组件在高并发Redfish会话/认证场景下存在稳定性缺陷(可能与类型不兼容、资源竞争或内存越界有关) |
| 直接证据 | coredump 文件存在;系统事件连续报 reset;security 为唯一异常进程 |
| 短期对策 | 降并发、禁用自动复位、检查UserId类型 |
| 长期对策 | 社区协助解析core、修复security模块、优化会话管理机制 |
根据您提供的详细日志、系统事件和coredump文件信息,针对基于 openUBMC 2512_LTS 版本在进行固件升级压力测试过程中出现的 BMC异常重启与security模块coredump 问题,结合知识库内容与系统机制,现进行系统性分析并提出解决建议。
现象:
The openUBMC is reset, with the cause code of 0x2 和 0x10。core-skyenet-* 类型的coredump文件,其中 core-skyenet-6-security-20260304102210 是最新且对应于最近一次异常的core文件。security 进程崩溃,且该组件为闭源组件,.so 文件已被strip,无调试符号和unwind信息,导致本地难以定位根因。关键线索:
security 发生coredump。2026-03-24 01:11 —— 与 security coredump 时间一致。0x2、0x10,对应 MACA组件掉线阈值触发复位 或 框架级复位。openUBMC 2512_LTS。MACA机制检测到组件反复掉线从日志中观察到多个连续的 BMC Reset 事件(事件码 0x2 和 0x10),结合 openUBMC 的微组件架构,此问题最可能由 MACA(Micro & Agile Component Architecture)的组件健康检查机制触发自动复位 所导致。
Document ID: 2(微组件管理介绍)
- 组件在 10分钟内连续掉线5次,则复位BMC。
- 所有组件总掉线次数累积达 2000次后也会复位BMC。
- 默认最多复位3次,超过后仅记录不再复位。
结合此机制,security 进程频繁崩溃 → 触发掉线 → 达到阈值 → MACA 自动发起BMC复位,形成恶性循环。
security 进程在压力测试期间因高负载或并发访问异常崩溃(生成coredump)。连续5次掉线 或 累计2000次 逻辑。0x2 或 0x10。openUBMC is reset and started。
证据匹配:事件记录中多次出现 Reset/Started 成对出现,时间间隔短(如 22:00:08 ~ 22:14:26),符合“短时间高频异常后复位”的模式。
security 进程coredump的可能原因尽管您指出 security 组件为闭源、.so 已 strip,缺乏调试信息,但我们仍可根据行为和环境推测可能原因。
security 模块负责用户认证、会话管理、证书校验等敏感操作。/redfish/v1/SessionService/Sessions)。Document ID: 6(Redfish接口变更声明)
- 在
openUBMC 25.12版本中,Oem/{OemIdentifier}/UserId从字符串类型改为整数类型。- 若上层工具或脚本未适配,强制传参错误类型(如字符串
"2"),可能引起反序列化失败或类型转换崩溃。
特别提示:若您的压测脚本使用了旧逻辑发送字符串型
UserId,而新版固件期望整数,security模块在解析时未做类型校验,可能触发非法操作。
security 模块通常处理 OpenSSL/BoringSSL 调用。ulimit 限制触达 → fork() 或 socket() 失败 → 进程异常退出cannot allocate memory 或 too many open files,可进一步确认。| 措施 | 说明 |
|---|---|
| 临时禁用MACA自动复位机制 | 修改 manifest.yml 中的 maca 配置,设置:max_reset_count: 0 或 disable_auto_reset: true避免因临时异常导致设备不断重启,便于收集完整日志。 |
| 限制并发请求数量 | 修改压测脚本,降低并发度,引入速率控制(rate limiting),观察是否仍触发崩溃。 |
AppDump.zip 中的 app.log、framework.log,搜索以下关键词:grep -i "security\|crash\|core\|segfault\|abort" app.log
grep -i "StartupCheck failed" framework.log
bmc.kepler.security 启动失败ServiceUnknown)/redfish/v1/SessionService/Sessions 时的 UserId 类型:{ "Oem": { "Huawei": { "UserId": 2 } } } // 正确:整数
而非:{ "Oem": { "Huawei": { "UserId": "2" } } } // 错误:字符串
ldd /usr/bin/security(如有权限)查看其动态依赖库。/etc/security/ 配置文件是否正确加载。security 或其依赖库时开启 -fsanitize=address。鉴于 security 模块为闭源组件且缺少调试信息,建议向 openUBMC 社区提交正式技术协助请求,内容包括:
[求助] openUBMC 2512_LTS 压测期间 security 进程频繁coredumpopenUBMC 2512_LTS请补充设备型号security 进程生成 core 文件(已提供)core-skyenet-6-security-20260304102210(重点)core-maps-...(辅助映射)AppDump.zip, LogDump.zip请社区协助:
- 提供
security二进制的 unstripped 版本或符号表(.sym/.debug 文件)- 解析该 core 文件的调用栈(stack trace)
- 判断是否为已知缺陷或近期补丁可修复
推荐提交地址:https://discuss.openubmc.cn
| 方向 | 建议 |
|---|---|
| 逐步加压测试 | 避免一次性高压,采用阶梯式增加并发数(如 10 → 50 → 100),定位临界点。 |
| 增加观测点 | 监控 /data/var/coredump/ 目录变化、dmesg 输出、DBus状态。 |
| 开启内核coredump配置 | 确保 /proc/sys/kernel/core_pattern 设置正确,避免丢失。 |
| 关闭非必要服务 | 排除干扰,仅保留 security、redfish、maca 相关组件运行。 |
| 项目 | 内容 |
|---|---|
| 问题本质 | 压力测试下 security 进程崩溃 → 触发 MACA 自动复位 → BMC 频繁重启 |
| 根本原因 | security 组件在高并发Redfish会话/认证场景下存在稳定性缺陷(可能与类型不兼容、资源竞争或内存越界有关) |
| 直接证据 | coredump 文件存在;系统事件连续报 reset;security 为唯一异常进程 |
| 短期对策 | 降并发、禁用自动复位、检查UserId类型 |
| 长期对策 | 社区协助解析core、修复security模块、优化会话管理机制 |
建议立即行动:
将 core-skyenet-6-security-20260304102210 及相关日志打包,提交至 openUBMC 官方论坛,并附上压测脚本节选(特别是会话创建部分),以获取闭源组件的官方支持。
如需协助撰写社区求助帖,我可为您起草模板。