Static Automated Program Repair for Heap Properties

被引:56
|
作者
van Tonder, Rijnard [1 ]
Le Goues, Claire [1 ]
机构
[1] Carnegie Mellon Univ, Sch Comp Sci, Pittsburgh, PA 15213 USA
基金
美国国家科学基金会;
关键词
Automated Program Repair; Separation Logic;
D O I
10.1145/3180155.3180250
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Static analysis tools have demonstrated effectiveness at finding bugs in real world code. Such tools are increasingly widely adopted to improve software quality in practice. Automated Program Repair (APR) has the potential to further cut down on the cost of improving software quality. However, there is a disconnect between these effective bug-finding tools and APR. Recent advances in APR rely on test cases, making them inapplicable to newly discovered bugs or bugs difficult to test for deterministically (like memory leaks). Additionally, the quality of patches generated to satisfy a test suite is a key challenge. We address these challenges by adapting advances in practical static analysis and verification techniques to enable a new technique that finds and then accurately fixes real bugs without test cases. We present a new automated program repair technique using Separation Logic. At a high-level, our technique reasons over semantic effects of existing program fragments to fix faults related to general pointer safety properties: resource leaks, memory leaks, and null dereferences. The procedure automatically translates identified fragments into source-level patches, and verifies patch correctness with respect to reported faults. In this work we conduct the largest study of automatically fixing undiscovered bugs in real-world code to date. We demonstrate our approach by correctly fixing 55 bugs, including 11 previously undiscovered bugs, in 11 real-world projects.
引用
收藏
页码:151 / 162
页数:12
相关论文
共 50 条
  • [1] Automated Program Repair
    Le Goues, Claire
    Pradel, Michael
    Roychoudhury, Abhik
    COMMUNICATIONS OF THE ACM, 2019, 62 (12) : 56 - 65
  • [2] Towards More Reliable Automated Program Repair by Integrating Static Analysis Techniques
    Al-Bataineh, Omar, I
    Grishina, Anastasiia
    Moonen, Leon
    2021 IEEE 21ST INTERNATIONAL CONFERENCE ON SOFTWARE QUALITY, RELIABILITY AND SECURITY (QRS 2021), 2021, : 654 - 663
  • [3] Reliable Fix Patterns Inferred from Static Checkers for Automated Program Repair
    Liu, Kui
    Zhang, Jingtang
    Li, Li
    Koyuncu, Anil
    Kim, Dongsun
    Ge, Chunpeng
    Liu, Zhe
    Klein, Jacques
    Bissyande, Tegawende F.
    ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY, 2023, 32 (04)
  • [4] Automated Repair of Heap-Manipulating Programs Using Deductive Synthesis
    Thanh-Toan Nguyen
    Quang-Trung Ta
    Sergey, Ilya
    Chin, Wei-Ngan
    VERIFICATION, MODEL CHECKING, AND ABSTRACT INTERPRETATION, VMCAI 2021, 2021, 12597 : 376 - 400
  • [5] On the Evaluation Metrics of Automated Program Repair
    Qi, Yuhua
    Liu, Wenhong
    Zhang, Weixiang
    Yang, Deheng
    2017 FOURTH INTERNATIONAL CONFERENCE ON DEPENDABLE SYSTEMS AND THEIR APPLICATIONS (DSA 2017), 2017, : 168 - 168
  • [6] Automated Approaches for Program Verification and Repair
    Hallahan, William T.
    ProQuest Dissertations and Theses Global, 2022,
  • [7] Heap Abstractions for Static Analysis
    Kanvar, Vini
    Khedker, Uday P.
    ACM COMPUTING SURVEYS, 2016, 49 (02)
  • [8] Automated Program Repair for Introductory Programming Assignments
    Wan, Han
    Luo, Hongzhen
    Li, Mengying
    Luo, Xiaoyan
    IEEE TRANSACTIONS ON LEARNING TECHNOLOGIES, 2024, 17 : 1745 - 1760
  • [9] Poster: Automated Program Repair with Canonical Constraints
    Hill, Andrew
    Pasareanu, Corina S.
    Stolee, Kathryn T.
    PROCEEDINGS 2018 IEEE/ACM 40TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING - COMPANION (ICSE-COMPANION, 2018, : 339 - 341