Automated Program Repair (APR) is one of the most recent advances in automated debugging, and can directly fix buggy programs with minimal human intervention. Although various advanced APR techniques (including search-based or semantic-based ones) have been proposed, they mainly work at the source-code level and it is not clear how bytecode-level APR performs in practice. Also, extensive studies of the existing techniques on bugs beyond what has been reported in the original papers are rather limited. In this paper, we implement the first practical bytecode-level APR technique, PraPR, and present the first extensive study on fixing real-world bugs (e.g., Defects4J bugs) using JVM bytecode mutation. The experimental results show that surprisingly even PraPR with only the basic traditional mutators can produce genuine fixes for 17 bugs; with some additional commonly used APR mutators, PraPR is able to produce genuine fixes for 43 bugs, significantly outperforming state-of-the-art APR and being an order of magnitude faster. Furthermore, we also performed an extensive study of PraPR and other recent APR tools on a large number of real-world ``unexpected'' bugs. Lastly, PraPR has also successfully fixed bugs for other JVM languages (e.g., Kotlin), indicating that bytecode-mutation-based APR can greatly complement the existing source-code-level APR.
Wed 17 Jul (GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi change
|11:00 - 11:22|
|11:22 - 11:45|
Ali GhanbariThe University of Texas at Dallas, Samuel BentonThe University of Texas at Dallas, Lingming ZhangPre-print
|11:45 - 12:07|
Kui Liu, Anil KoyuncuUniversity of Luxembourg, Luxembourg, Dongsun KimFuriosa.ai, Tegawendé F. BissyandéSnT, University of LuxembourgPre-print
|12:07 - 12:30|