一句话:提出基于对象流图的内存错误自动修复技术,可同时实现可扩展、精确且安全的 C 程序内存错误修复。
内存错误(如内存泄漏、双重释放、释放后使用)在 C 程序中十分普遍且修复成本高。现有自动修复技术难以同时做到可扩展、精确与安全。本文提出 SAVER,其核心是一种称为对象流图(object flow graph)的程序表示,通过静态分析概括堆相关行为,并将内存错误修复建模为对象流图上的图标记问题,进而给出高效求解算法。作者将 SAVER 与工业级静态缺陷检测器 Infer 结合,在多个开源 C 程序上评估,结果表明 74% 的已报告错误可被自动修复。
We present SAVER, a new memory-error repair technique for C programs. Memory errors such as memory leak, double-free, and use-after-free are highly prevalent and fixing them requires significant effort. Automated program repair techniques hold the promise of reducing this burden but the state-of-the-art is still unsatisfactory. In particular, no existing techniques are able to fix those errors in a scalable, precise, and safe way, all of which are required for a truly practical tool. SAVER aims to address these shortcomings. To this end, we propose a method based on a novel representation of the program called object flow graph, which summarizes the program's heap-related behavior using static analysis. We show that fixing memory errors can be formulated as a graph labeling problem over object flow graph and present an efficient algorithm. We evaluated SAVER in combination with Infer, an industrial-strength static bug-finder, and show that 74% of the reported errors can be fixed automatically for a range of open-source C programs.
DOI 原文 ·
@inproceedings{paperbot5610,
title = {SAVER},
author = {Seongjoon Hong and Junhee Lee and Jeongsoo Lee and Hakjoo Oh},
booktitle = {ICSE},
year = {2020},
doi = {10.1145/3377811.3380323}
}