论文

KernelDiag:基于代理的内核崩溃根本原因诊断

KernelDiag: Agent-Based Root Cause Diagnosis for Kernel Crashes

摘要

Linux 内核是最复杂的软件系统之一,自动模糊测试不断暴露出数千次崩溃,但根本原因诊断仍然是手动且耗时的瓶颈。现有的基于 LLM 的根本原因分析 (RCA) 技术对分布式系统有效,但由于稀疏的底层工件、异构诊断证据(例如系统调用、日志和崩溃报告)以及需要细粒度方法级推理的复杂非线性故障传播,不容易推广到内核调试。为了应对这些挑战,我们提出了 KernelDiag,这是一种基于代理的框架,用于通过结构化因果推理进行内核根本原因诊断。 KernelDiag 首先通过日志到代码映射来对齐异构诊断工件,然后采用工件专用代理对源级程序语义和特定于崩溃的内核配置进行迭代推理。推断出的因果依赖性被逐步组织成结构化证据图,从而实现准确的错误方法定位和因果解释。我们根据现实世界的 KGYM 基准评估 KernelDiag。 KernelDiag 在文件和方法级别上始终优于最先进的本地化方法,在 Top@k 准确性方面实现了显着改进,包括在没有明确提示的情况下在具有挑战性的设置中获得高达 4 倍和 2 倍的增益。此外,人类和 LLM 辅助评估均表明 KernelDiag 可以生成准确、连贯且可操作的诊断解释。总的来说,这项工作通过将底层诊断证据与源级因果推理联系起来,为自动化内核根本原因诊断奠定了基础。