CrashFixer: A crash resolution agent for the Linux kernel
作者: Alex Mathai, Chenxi Huang, Suwei Ma, Jihwan Kim, Hailie Mitchell, Aleksandr Nogikh, Petros Maniatis, Franjo Ivančić, Junfeng Yang, Baishakhi Ray
分类: cs.SE, cs.AI, cs.OS
发布日期: 2025-04-29 (更新: 2025-05-13)
💡 一句话要点
CrashFixer:一个基于LLM的Linux内核崩溃修复Agent
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: Linux内核 崩溃修复 代码大语言模型 软件Agent 自动化修复
📋 核心要点
- 现有代码LLM在代码修复方面表现出色,但缺乏大规模系统级(如Linux内核)的有效评估和应用。
- CrashFixer模仿内核开发人员的工作流程,利用LLM生成修复假设,并针对Linux内核错误进行修复。
- 通过扩展kGym创建kGymSuite平台,支持大规模LLM Agent在Linux内核上的实验,并验证了CrashFixer的有效性。
📝 摘要(中文)
代码大语言模型(LLM)在众多软件工程任务中展现了令人印象深刻的能力,尤其是在代码修复方面。然而,用于评估代码LLM性能的常见基准通常局限于小规模设置。本文基于kGym,它提供了一个系统级Linux内核错误的基准和一个在Linux内核上运行实验的平台。本文介绍了CrashFixer,这是第一个适用于Linux内核错误的基于LLM的软件修复Agent。受到内核开发人员典型工作流程的启发,我们确定了专家开发人员用来解决内核崩溃的关键能力。以此为指导,我们重新审视了kGym平台,并确定了在Linux内核(50K文件和20M行代码)规模上实际运行基于LLM的Agent所需的关键系统改进。我们通过扩展kGym来创建改进的平台——称为kGymSuite,并将其开源,从而实现了这些更改。最后,本文介绍了针对此类复杂内核错误的各种修复策略的评估,并展示了在尝试修复Linux内核等复杂系统中的错误之前,显式生成假设的价值。我们还评估了CrashFixer在仍然存在的开放bug上的能力,并发现至少有两个补丁建议被认为是解决报告的bug的可行方案。
🔬 方法详解
问题定义:论文旨在解决Linux内核崩溃修复问题。现有方法,特别是基于代码LLM的方法,在小规模代码修复任务上表现良好,但在Linux内核这种大规模、复杂的系统级代码上,面临着可扩展性、效率和有效性的挑战。现有的基准测试和平台也难以支持大规模LLM Agent在Linux内核上的实验。
核心思路:论文的核心思路是模仿Linux内核开发人员解决崩溃问题的典型工作流程,即首先理解崩溃原因,然后提出修复假设,最后实施修复。论文利用LLM来自动化这个过程,生成修复假设,并基于假设进行代码修复。
技术框架:CrashFixer的整体框架包含以下几个主要模块:1) 崩溃分析模块:分析内核崩溃日志,提取关键信息,例如崩溃位置、错误类型等。2) 假设生成模块:利用LLM,基于崩溃信息生成可能的修复假设。3) 代码修复模块:根据生成的假设,利用LLM修改代码,生成修复补丁。4) 测试验证模块:在kGymSuite平台上,对生成的补丁进行测试,验证其是否能够解决崩溃问题。kGymSuite是扩展后的kGym平台,能够支持大规模LLM Agent在Linux内核上的实验。
关键创新:论文的关键创新在于:1) 提出了一个基于LLM的Linux内核崩溃修复Agent,CrashFixer。2) 强调了在代码修复过程中生成修复假设的重要性,这与传统的直接进行代码修复的方法不同。3) 构建了kGymSuite平台,支持大规模LLM Agent在Linux内核上的实验。
关键设计:论文的关键设计包括:1) LLM的选择:论文可能尝试了不同的LLM,并选择了在代码修复任务上表现最好的LLM。2) 提示工程:论文设计了合适的提示,引导LLM生成高质量的修复假设和代码补丁。3) 测试用例选择:论文选择了能够有效触发崩溃的测试用例,用于验证修复补丁的有效性。具体参数设置、损失函数和网络结构等技术细节未知,需要在论文中进一步查找。
🖼️ 关键图片
📊 实验亮点
论文评估了CrashFixer在kGymSuite平台上的性能,结果表明,显式生成修复假设能够显著提高修复成功率。此外,CrashFixer在开放的内核bug上提出了至少两个被认为可行的修复建议,展示了其在实际场景中的应用潜力。具体的性能数据和提升幅度未知,需要在论文中进一步查找。
🎯 应用场景
该研究成果可应用于自动化Linux内核维护、提高内核开发效率、降低内核崩溃风险。通过自动化修复内核错误,可以减少人工干预,加速问题解决,提升系统稳定性和安全性。未来,该技术可扩展到其他操作系统和大型软件系统,实现更广泛的自动化软件维护。
📄 摘要(原文)
Code large language models (LLMs) have shown impressive capabilities on a multitude of software engineering tasks. In particular, they have demonstrated remarkable utility in the task of code repair. However, common benchmarks used to evaluate the performance of code LLMs are often limited to small-scale settings. In this work, we build upon kGym, which shares a benchmark for system-level Linux kernel bugs and a platform to run experiments on the Linux kernel. This paper introduces CrashFixer, the first LLM-based software repair agent that is applicable to Linux kernel bugs. Inspired by the typical workflow of a kernel developer, we identify the key capabilities an expert developer leverages to resolve a kernel crash. Using this as our guide, we revisit the kGym platform and identify key system improvements needed to practically run LLM-based agents at the scale of the Linux kernel (50K files and 20M lines of code). We implement these changes by extending kGym to create an improved platform - called kGymSuite, which will be open-sourced. Finally, the paper presents an evaluation of various repair strategies for such complex kernel bugs and showcases the value of explicitly generating a hypothesis before attempting to fix bugs in complex systems such as the Linux kernel. We also evaluated CrashFixer's capabilities on still open bugs, and found at least two patch suggestions considered plausible to resolve the reported bug.