Automated atomicity-violation fixing. Jin, G., Song, L., Zhang, W., Lu, S., & Liblit, B. In Proc. of the ACM SIGPLAN Conf. on Programming Language Design and Implementation, pages 389--400, 2011.
abstract   bibtex   
Fixing software bugs has always been an important and time-consuming process in software development. Fixing concurrency bugs has become especially critical in the multicore era. However, fixing concurrency bugs is challenging, in part due to non-deterministic failures and tricky parallel reasoning. Beyond correctly fixing the original problem in the software, a good patch should also avoid introducing new bugs, degrading performance unnecessarily, or damaging software readability. Existing tools cannot automate the whole fixing process and provide good-quality patches. We present AFix, a tool that automates the whole process of fixing one common type of concurrency bug: single-variable atomicity violations. AFix starts from the bug reports of existing bug-detection tools. It augments these with static analysis to construct a suitable patch for each bug report. It further tries to combine the patches of multiple bugs for better performance and code readability. Finally, AFix's run-time component provides testing customized for each patch. Our evaluation shows that patches automatically generated by AFix correctly eliminate six out of eight real-world bugs and significantly decrease the failure probability in the other two cases. AFix patches never introduce new bugs and usually have similar performance to manually-designed patches.
@inproceedings{jin_automated_2011,
	title = {Automated atomicity-violation fixing},
	abstract = {Fixing software bugs has always been an important and time-consuming process in software development. Fixing concurrency bugs has become especially critical in the multicore era. However, fixing concurrency bugs is challenging, in part due to non-deterministic failures and tricky parallel reasoning. Beyond correctly fixing the original problem in the software, a good patch should also avoid introducing new bugs, degrading performance unnecessarily, or damaging software readability. Existing tools cannot automate the whole fixing process and provide good-quality patches. We present AFix, a tool that automates the whole process of fixing one common type of concurrency bug: single-variable atomicity violations. AFix starts from the bug reports of existing bug-detection tools. It augments these with static analysis to construct a suitable patch for each bug report. It further tries to combine the patches of multiple bugs for better performance and code readability. Finally, AFix's run-time component provides testing customized for each patch. Our evaluation shows that patches automatically generated by AFix correctly eliminate six out of eight real-world bugs and significantly decrease the failure probability in the other two cases. AFix patches never introduce new bugs and usually have similar performance to manually-designed patches.},
	urldate = {2013-09-18TZ},
	booktitle = {Proc. of the {ACM} {SIGPLAN} {Conf}. on {Programming} {Language} {Design} and {Implementation}},
	author = {Jin, Guoliang and Song, Linhai and Zhang, Wei and Lu, Shan and Liblit, Ben},
	year = {2011},
	keywords = {atomicity violations, automated debugging, automated program repair, concurrency, critical regions, deadlock, mutex locks, mutual exclusion, patching, static analysis},
	pages = {389--400}
}

Downloads: 0