Patch Space Exploration using Static Analysis Feedback
Yuntong Zhang, Andreea Costea, Ridwan Shariffdeen, Davin McCall, Abhik, Roychoudhury

TL;DR
This paper introduces a static analysis-guided approach for automatic memory safety repair that avoids test overfitting by classifying patches based on their effect on symbolic heaps, enabling scalable and effective patch synthesis.
Contribution
It presents a novel method that leverages Incorrectness Separation Logic feedback to guide patch generation and groups patches by effect to improve scalability in automatic repair.
Findings
Successfully repaired real-world memory errors in OpenSSL and Swoole.
Demonstrated scalability and high quality of generated patches.
Outperformed test-based repair approaches in avoiding overfitting.
Abstract
Automated Program Repair (APR) techniques typically rely on a given test-suite to guide the repair process. Apart from the need to provide test oracles, this makes the produced patches prone to test data over-fitting. In this work, instead of relying on test cases, we show how to automatically repair memory safety issues, by leveraging static analysis (specifically Incorrectness Separation Logic) to guide repair. Our proposed approach learns what a desirable patch is by inspecting how close a patch is to fixing the bug based on the feedback from incorrectness separation logic based static analysis (specifically the Pulse analyser), and turning this information into a distribution of probabilities over context free grammars. Furthermore, instead of focusing on heuristics for reducing the search space of patches, we make repair scalable by creating classes of equivalent patches according…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Testing and Debugging Techniques · Security and Verification in Computing · Software System Performance and Reliability
