Bug fixing is time-consuming and error-prone. In the current multi-core era, widespread multi-threaded software and concurrency bugs make things even worse. Developers struggle to release correct patches for concurrency bugs on time. Much progress has been made in detecting concurrency bugs. Unfortunately, software reliability does not improve until the detected bugs are actually fixed.
This project aims to build an automated bug-fixing framework that enables self-healing multi-threaded software by combining the strengths of concurrency-bug detection, static analysis, and multi-threaded software testing. Specifically, the proposed framework will include four automated components: (1) a testing and bug-detection component that helps understand concurrency bugs and designs fix strategies; (2) a static analysis and code transformation component that inserts synchronization into software and generates high-quality patches; (3) a component that evaluates and refines patches; (4) a component that provides ad-hoc patches for bugs with incomplete information. This research will help lower the costs of software development, failure diagnosis, and bug repair. It will also improve software users everyday experience through faster and more reliable software on a wide spectrum of platforms.