Skip to content

feat: complete module1 crash feature extraction pipeline

赵烜熠 requested to merge zxy into main

概述

本次 MR 完成了模块一“异构问题特征提取与标准化”的主要实现。

本次更新后,模块一已经可以从 descriptiondmesg/CrashReportvmcore 等输入中提取宕机特征,并统一输出符合 schema 的 crash_feature JSON,供后续补丁检索、重排和解释模块使用。

主要改动

  • 实现 dmesg/CrashReport 通用解析:

    • 提取 crash window
    • 识别 panic/oops/BUG/WARNING/KASAN/KMSAN/KCSAN/list corruption 等信号
    • 解析调用栈、内核版本、任务、CPU、模块、寄存器和内存错误事件
    • 推断 subsystem、panic class、bug class、failure domain
  • 实现 description-only 解析:

    • 从问题描述中提取函数、文件、子系统和故障类型线索
    • 不伪造 description 中不存在的运行时证据
  • 实现 vmcore 解析链路:

    • 集成 crash 获取 sysbtps 信息
    • 集成可选 drgn 解析 task、锁对象、等待对象、workqueue 和 memory object
    • 支持仅有 vmcore 时输出 partial JSON
    • 支持提供匹配 vmlinux/debuginfo 时进行深度解析
  • 更新标准化 schema:

    • 支持 dmesg、vmcore、description、mixed 等输入类型
    • 记录 vmcore、vmlinux、source tree、debuginfo package、source package 等 artifacts
    • 统一 labels、entities、runtime context、call trace、diagnostic summary、retrieval text 等字段
  • 接入官方 small benchmark:

    • 支持读取 proj19_small_benchmark
    • 为官方 case 批量生成标准 crash_feature JSON
    • 严格避免将 ground truth、fix commit 等答案信息写入模块一输出
  • 增加 syzkaller 泛化测试支持:

    • 支持从 syzkaller 页面导入真实 crash report
    • 用作外部泛化测试,不与官方 benchmark 指标混算
  • 新增模块一交互式 CLI:

    • 官方数据集批量提取
    • 官方数据集评估
    • 单个 dmesg/CrashReport 解析
    • 单条 description 解析
    • 单个 vmcore 解析,可选提供 vmlinux 符号
    • syzkaller URL 导入和评估
    • 模块一 release gate 检查
  • 补充模块一收尾验收文档:

    • 明确模块一职责边界
    • 说明 vmcore 与 vmlinux/debuginfo 的关系
    • 记录防污染规则、验证命令和当前验收状态

验证结果

单元测试通过:

.venv/bin/pytest -q tests/test_dmesg_parser.py

Merge request reports