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 条
  • [31] STATIC AND DYNAMIC DISTRIBUTION OF PROGRAM COMPONENTS IN AUTOMATED SYSTEMS
    VISHNYAKOV, VA
    GERMAN, OV
    AVTOMATIKA I VYCHISLITELNAYA TEKHNIKA, 1985, (06): : 54 - 59
  • [32] Fault localization for automated program repair: effectiveness, performance, repair correctness
    Assiri, Fatmah Yousef
    Bieman, James M.
    SOFTWARE QUALITY JOURNAL, 2017, 25 (01) : 171 - 199
  • [33] Fault localization for automated program repair: effectiveness, performance, repair correctness
    Fatmah Yousef Assiri
    James M. Bieman
    Software Quality Journal, 2017, 25 : 171 - 199
  • [34] Do automated program repair techniques repair hard and important bugs?
    Manish Motwani
    Sandhya Sankaranarayanan
    René Just
    Yuriy Brun
    Empirical Software Engineering, 2018, 23 : 2901 - 2947
  • [35] Do Automated Program Repair Techniques Repair Hard and Important Bugs?
    Motwani, Manish
    Sankaranarayanan, Sandhya
    Just, Rene
    Brun, Yuriy
    PROCEEDINGS 2018 IEEE/ACM 40TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2018, : 25 - 25
  • [36] Do automated program repair techniques repair hard and important bugs?
    Motwani, Manish
    Sankaranarayanan, Sandhya
    Just, Rene
    Brun, Yuriy
    EMPIRICAL SOFTWARE ENGINEERING, 2018, 23 (05) : 2901 - 2947
  • [37] Analytical model for static heap leaching
    Modelo analitico para el lavado de eras de lixiviacion estatica
    Otero-Carrasco, M.R., 1600, (30):
  • [38] A critical review on the evaluation of automated program repair systems
    Liu, Kui
    Li, Li
    Koyuncu, Anil
    Kim, Dongsun
    Liu, Zhe
    Klein, Jacques
    Bissyande, Tegawende F.
    JOURNAL OF SYSTEMS AND SOFTWARE, 2021, 171
  • [39] Improving Automated Program Repair with Retrospective Fault Localization
    Xu, Tongtong
    2019 IEEE/ACM 41ST INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING: COMPANION PROCEEDINGS (ICSE-COMPANION 2019), 2019, : 159 - 161
  • [40] Better Test Cases for Better Automated Program Repair
    Yang, Jinqiu
    Zhikhartsev, Alexey
    Liu, Yuefei
    Tan, Lin
    ESEC/FSE 2017: PROCEEDINGS OF THE 2017 11TH JOINT MEETING ON FOUNDATIONS OF SOFTWARE ENGINEERING, 2017, : 831 - 841