BanditRepair: Speculative Exploration of Runtime Patches
This work addresses runtime bug repair for software developers, but it is incremental as it builds on existing bandit algorithms and focuses on a specific type of bug.
The authors tackled the problem of automatically repairing null dereference bugs at runtime by proposing BanditRepair, a system that uses bandit algorithms to explore and assess patches, resulting in the identification of 8460 different runtime patches for 16 bugs.
We propose, BanditRepair, a system that systematically explores and assesses a set of possible runtime patches. The system is grounded on so-called bandit algorithms, that are online machine learning algorithms, designed for constantly balancing exploitation and exploration. BanditRepair's runtime patches are based on modifying the execution state for repairing null dereferences. BanditRepair constantly trades the ratio of automatically handled failures for searching for new runtime patches and vice versa. We evaluate the system with 16 null dereference field bugs, where BanditRepair identifies a total of 8460 different runtime patches, which are composed of 1 up to 8 decisions (execution modifications) taken in a row. We are the first to finely characterize the search space and the outcomes of runtime repair based on execution modification.