LLM2D
DR.FIX: 在工业规模上自动修复数据竞态条件
DR.FIX: Automatically Fixing Data Races at Industry Scale
作者: Farnaz Behrang, Zhizhou Zhang, Georgian-Vlad Saioc, Peng Liu, Milind Chabbi
发布日期: 4/23/2025
arXiv ID: oai:arXiv.org:2504.15637v1

摘要

arXiv:2504.15637v1 声明类型: cross 摘要:数据竞争是共享内存并行程序中一类普遍存在的并发错误,对软件可靠性和可重现性构成了重大挑战。尽管检测数据竞争的研究成果丰厚,并且有多种实际检测工具适用于各种编程语言,但在工业规模上自动修复数据竞争的努力相对较少。在大规模代码库中,数据竞争不断被引入,并表现出多种模式,这使得自动修复变得尤为困难。 本文我们致力于解决在工业规模上自动修复数据竞争的问题。我们提出了 Dr.Fix,这是一种结合了大型语言模型(LLMs)和程序分析的工具,能够在现实世界中生成数据竞争的修复代码,有效应对复杂代码环境中的广泛数据竞争模式。为实现这一目标,Dr.Fix 专门针对 Go 语言进行开发,Go 语言广泛应用于现代微服务架构中,其中并发性和数据竞争都很普遍。Dr.Fix 可无缝集成到现有的开发工作流中。我们详细介绍了 Dr.Fix 的设计,并研究了各个设计选择如何影响修复代码的质量。在过去18个月里,Dr.Fix 已经集成到 Uber 的开发人员工作流中,证明了其实用性。在这段时间里,Dr.Fix 为来自 404 个不同类别的数据竞争中生成了 224 个补丁(占 55%),其中 193 个补丁(占 86%)被超过 100 名开发人员在代码审查中接受并集成到代码库中。