跑AC自动化出现core文件

问题描述

跑AC自动化出现core-maps-skynet-6-security-20260410153329 和 core-skynet-6-security-20260410153329两个core文件

core-skynet-6-security-20260410153329.z01.zip -core-skynet-6-security-20260410153329.z05.zip 这五个文件需要去掉.zip后缀使用

答案内容由AI生成,仅供参考:

:white_check_mark: 总结

项目 内容
问题本质 在AC自动化测试中,security模块在Skynet框架下运行时发生崩溃,生成了core dump
根本原因 初步判断为 AC启动阶段初始化顺序不当,导致security模块访问未就绪资源,引发段错误(SIGSEGV)
证据支持 - 存在配对的core与maps文件
- 崩溃发生在系统库中(如libc/libpcre2)
- 类似案例曾在X20 AC测试中复现
解决方向 1. 使用GDB+maps文件精确定位崩溃函数
2. 审查security模块启动逻辑与配置加载过程
3. 优化AC测试下的资源协同与异常处理机制

:warning: 当前系统中coredump未自动清理,建议定期归档或删除旧文件,防止存储耗尽。

点击此处查看详细分析解答

跑AC自动化出现core文件问题分析

在执行AC(上电-断电循环)自动化测试过程中,系统生成了以下两个核心转储文件:

  • core-maps-skynet-6-security-20260410153329
  • core-skynet-6-security-20260410153329

该现象表明系统中某个进程因异常而崩溃,触发了core dump机制。根据上下文信息和已有知识库内容,以下是对该问题的综合分析与解答。


:magnifying_glass_tilted_left: 一、问题背景与事件关联

1. AC测试与core dump的关联

  • AC启动是指系统在电源接通后进入初始化阶段的过程。
  • 在此前案例中(如R420K服务器的X20 AC测试),长时间运行AC脚本导致BMC重启,并伴随core dump生成
    • 相关事件:X20 AC Test ➜ 引发 Core Dump ➜ 导致 System Crash
  • 已知:AC启动期间若存在“初始化状态不正确”等问题,会导致模块反复加载/卸载,从而引发内存访问异常或资源竞争,最终触发崩溃

:pushpin: 关键线索:知识图谱中明确指出:“Improper in-position state initialization during AC startup causes repeated loading and unloading cycles.


:file_folder: 二、core文件解析

1. 文件命名分析

文件名格式遵循统一规范:

  • core-skynet-6-security-20260410153329
    → 表示这是由 Skynet框架内安全子系统(security) 产生的内存快照文件(core dump),时间戳为 2026-04-10 15:33:29。
  • core-maps-skynet-6-security-20260410153329
    → 对应的内存映射文件(maps file),用于解析core dump中的虚拟地址到具体.so库或函数。

:white_check_mark: 此类配对文件通常位于 /data/var/coredump 目录下,用于后续调试。

2. 相关实体信息

实体 类型 描述
Security Core 组织/组件 BMC系统的安全子系统,负责安全启动、完整性校验等;其崩溃会生成对应的core文件
Skynet 框架 OpenUBMC中的事件驱动框架,多个服务(包括security)在此框架下运行
Core Dump 概念 记录进程崩溃时的内存状态,通常由段错误(SIGSEGV)、非法指令、栈溢出等触发

:puzzle_piece: 三、可能原因分析

根据已有日志和模式匹配,以下是可能导致此次core dump的原因:

1. 安全子系统(security)初始化异常

  • 在AC启动阶段,security模块尝试加载配置或验证固件签名时,若数据未就绪或指针引用非法地址,可能触发段错误(Segmentation Fault)。
  • 示例:搜索结果中曾出现类似报错:
    Core was generated by `security /opt/bmc/apps/hica/subsys/security/config.cfg'.
    Program terminated with signal SIGSEGV, Segmentation fault.
    #0  0x0000ffff8db0e078 in pcre2_compile_8 () from /lib64/libpcre2-8.so.0
    
    表明在正则表达式编译时发生越界访问。

2. 共享库兼容性问题

  • core文件分析显示崩溃发生在如 libc.so.6libpcre2-8.so.0 等系统库中。
  • 可能原因:
    • 库版本不匹配
    • 配置文件解析出错(如JSON格式错误)引发库函数异常
    • 多线程环境下资源竞争(如pthread_key_delete调用时key已被释放)

3. Skynet框架调度异常

  • Skynet支持Lua与C混合编程。若Lua脚本调用了C/C++扩展库(如mdbctl、security接口),而该库未做健壮性处理,则极易在异常路径下崩溃。
  • 特别是在AC测试中频繁启停服务,容易导致:
    • 回调函数执行时对象已释放
    • 内存双重释放(double free)
    • 栈溢出(stack overflow)

:hammer_and_wrench: 四、分析建议与解决步骤

:small_blue_diamond: 第一步:使用GDB分析core文件

gdb /opt/bmc/apps/hica/subsys/security core-skynet-6-security-20260410153329

查看崩溃时的调用栈:

(gdb) bt full
(gdb) info registers
(gdb) x/10i $pc-10

:small_blue_diamond: 第二步:结合maps文件定位崩溃地址

打开 core-maps-skynet-6-security-20260410153329 文件,找到崩溃地址所处的内存区间。

例如:

ffff88894000-ffff88a30000 r-xp 00000000 b3:50 1038 /lib64/libc.so.6

说明崩溃发生在 libc.so.6 中。

再通过偏移计算函数名:

addr2line -ife /lib64/libc.so.6 0x84334

输出示例:

pthread_key_delete
??:?

:small_blue_diamond: 第三步:检查配置与依赖

检查项 建议
security模块配置文件 检查 /opt/bmc/apps/hica/subsys/security/config.cfg 是否完整、格式是否正确(如JSON合法性)
动态库版本一致性 确保运行环境与构建环境使用的 libpcre2libgmodulelibc 等库版本一致
日志分析 查看 /var/log/messagesjournalctl 中是否有提前报错(如加载失败、权限拒绝)

:small_blue_diamond: 第四步:规避与修复建议

措施 说明
:white_check_mark: 修复状态初始化逻辑 确保AC上电后各模块按序初始化,避免“抢跑”导致空指针访问
:white_check_mark: 增加容错机制 在security模块中增加对异常配置的检测与默认处理
:white_check_mark: 启用core dump自动清理 防止磁盘被大量core文件占满(目前coredump无自动清理机制)
:white_check_mark: 升级Skynet框架 若使用旧版本(如1.7.x),建议升级至1.8.0.b001及以上稳定版

:white_check_mark: 总结

项目 内容
问题本质 在AC自动化测试中,security模块在Skynet框架下运行时发生崩溃,生成了core dump
根本原因 初步判断为 AC启动阶段初始化顺序不当,导致security模块访问未就绪资源,引发段错误(SIGSEGV)
证据支持 - 存在配对的core与maps文件
- 崩溃发生在系统库中(如libc/libpcre2)
- 类似案例曾在X20 AC测试中复现
解决方向 1. 使用GDB+maps文件精确定位崩溃函数
2. 审查security模块启动逻辑与配置加载过程
3. 优化AC测试下的资源协同与异常处理机制

:warning: 当前系统中coredump未自动清理,建议定期归档或删除旧文件,防止存储耗尽。

如需进一步分析,请提供:

  • core-skynet-6-security-20260410153329 文件本身
  • 对应的可执行程序:/opt/bmc/apps/hica/subsys/security
  • 运行环境的 /lib64/libc.so.6 等共享库副本

能发完整的日志吗,不止coredump文件,还有就是BMC的版本是什么

日志文件太大,这里无法上传;BMC版本为6.00.09.02.b016 我们的最新版本

huangzhiyu12@h-partners.com
发我邮箱,发完说下

或者分卷压缩也行

security.zip (1.8 KB)

core-maps-skynet-6-security-20260410153329.zip (4.2 KB)

core-skynet-6-security-20260410153329.zip (10.4 KB)

core-skynet-6-security-20260410153329.z05.zip (50 KB)

core-skynet-6-security-20260410153329.z04.zip (50 KB)

core-skynet-6-security-20260410153329.z03.zip (50 KB)

core-skynet-6-security-20260410153329.z02.zip (50 KB)

core-skynet-6-security-20260410153329.z01.zip (50 KB)

日志已发送邮箱,请查收

好的,收到,我看下