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.
|Title of host publication
|Proceedings - 2020 ACM/IEEE 42nd International Conference on Software Engineering, ICSE 2020
|IEEE Computer Society
|Number of pages
|Published - 2020 Jun 27
|42nd ACM/IEEE International Conference on Software Engineering, ICSE 2020 - Virtual, Online, Korea, Republic of
Duration: 2020 Jun 27 → 2020 Jul 19
|Proceedings - International Conference on Software Engineering
|42nd ACM/IEEE International Conference on Software Engineering, ICSE 2020
|Korea, Republic of
|20/6/27 → 20/7/19
Bibliographical noteFunding Information:
This work was supported by Samsung Research, Samsung Electronics Co., Ltd. This work was supported by Samsung Research Funding & Incubation Center of Samsung Electronics under Project Number SRFC-IT1701-09.
© 2020 Association for Computing Machinery.
- Memory errors
- Program analysis
- Program repair
ASJC Scopus subject areas