Humboldt-Universität zu Berlin - Faculty of Mathematics and Natural Sciences - Software Engineering


Identifying and Fixing Incomplete Patches (2022-2025)


Re-opened bugs due to incomplete patches by developers are a major cost driver for software projects. In this project, we aim to investigate patches and identify whether there are alternative execution paths leading to a problematic code line where, e.g., a crash has occurred or an exception has been raised. If these paths are not covered by an existing patch, a tool should inform the developer of related inputs that induce them and recommend potential patches for these paths. To clarify this idea, let us consider a program, where fix1 represents the original patch that covers path1−3, and path4−7 are unknown to the developer (Fig. 1).



Figure 1: Visualization of an incomplete bug fix


These paths would potentially re-open the bug. Therefore, we aim to present the partition of the input space that would cover path4−7 to the developer, and in the best case also provide the supplementary patches fix2 and fix3.  Based on this vision, we aim to solve the following research questions: (a) How to construct the alternative fault-triggering paths in an efficient and effective way? (b) How to generate patches that would fix the defect induced by the alternative paths? For the first question, we will develop and systematically evaluate techniques based on directed symbolic execution and witness-based software verification. We will merge similar execution paths into tubes to better understand the software system and the failure. For the second research question, we will create a synthesis-based patch generator, which will synthesize code that corrects faulty tubes.




IDEFIX is funded by the German Research Foundation / Deutsche Forschungsgemeinschaft (DFG).