Angelix: Scalable Multiline Program Patch Synthesis via Symbolic Analysis

被引:304
作者
Mechtaev, Sergey [1 ]
Yi, Jooyong [1 ]
Roychoudhury, Abhik [1 ]
机构
[1] Natl Univ Singapore, Sch Comp, Singapore, Singapore
来源
2016 IEEE/ACM 38TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE) | 2016年
基金
新加坡国家研究基金会;
关键词
Program repair; Scalable semantics-based repair; Multi-line patch; Angelic forest;
D O I
10.1145/2884781.2884807
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Since debugging is a time-consuming activity, automated program repair tools such as GenProg have garnered interest. A recent study revealed that the majority of GenProg repairs avoid bugs simply by deleting functionality. We found that SPR, a state-of-the-art repair tool proposed in 2015, still deletes functionality in their many \ plausible" repairs. Unlike generate-and-validate systems such as GenProg and SPR, semantic analysis based repair techniques synthesizea repair based on semantic information of the program. While such semantics-based repair methods show promise in terms of quality of generated repairs, their scalability has been a concern so far. In this paper, we present Angelix, a novel semantics-based repair method that scales up to programs of similar size as are handled by search-based repair tools such as GenProg and SPR. This shows that Angelix is more scalable than previously proposed semantics based repair methods such as SemFix and DirectFix. Furthermore, our repair method can repair multiple buggy locations that are dependent on each other. Such repairs are hard to achieve using SPR and GenProg. In our experiments, Angelix generated repairs from large-scale real-world software such as wireshark and php, and these generated repairs include multi-location repairs. We also report our experience in automatically repairing the well-known Heartbleed vulnerability.
引用
收藏
页码:691 / 701
页数:11
相关论文
共 38 条
[11]  
Gopinath D, 2011, LECT NOTES COMPUT SC, V6605, P173, DOI 10.1007/978-3-642-19835-9_15
[12]  
Goues C. L., 2012, GENPROG ICSE2012 BEN
[13]  
He HF, 2004, LECT NOTES COMPUT SC, V2984, P267
[14]  
Jha S., 2010, ICSE '10, P215, DOI DOI 10.1145/1806799.1806833
[15]  
Jin GL, 2011, PLDI 11: PROCEEDINGS OF THE 2011 ACM CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION, P389
[16]  
Jobstmann B, 2005, LECT NOTES COMPUT SC, V3576, P226
[17]   MintHint: Automated Synthesis of Repair Hints [J].
Kaleeswaran, Shalini ;
Tulsian, Varun ;
Kanade, Aditya ;
Orso, Alessandro .
36TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE 2014), 2014, :266-276
[18]  
Kim D, 2013, PROCEEDINGS OF THE 35TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE 2013), P802, DOI 10.1109/ICSE.2013.6606626
[19]  
Konighofer R., 2011, 2011 Formal Methods in Computer-Aided Design (FMCAD), P91
[20]   The ManyBugs and IntroClass Benchmarks for Automated Repair of C Programs [J].
Le Goues, Claire ;
Holtschulte, Neal ;
Smith, Edward K. ;
Brun, Yuriy ;
Devanbu, Premkumar ;
Forrest, Stephanie ;
Weimer, Westley .
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2015, 41 (12) :1236-1256