TY - GEN
T1 - Automated atomicity-violation fixing
AU - Jin, Guoliang
AU - Song, Linhai
AU - Zhang, Wei
AU - Lu, Shan
AU - Liblit, Ben
PY - 2011
Y1 - 2011
N2 - 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.
AB - 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.
UR - http://www.scopus.com/inward/record.url?scp=79959893225&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=79959893225&partnerID=8YFLogxK
U2 - 10.1145/1993498.1993544
DO - 10.1145/1993498.1993544
M3 - Conference contribution
AN - SCOPUS:79959893225
SN - 9781450306638
T3 - Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI)
SP - 389
EP - 400
BT - PLDI'11 - Proceedings of the 2011 ACM Conference on Programming Language Design and Implementation
PB - Association for Computing Machinery
T2 - 32nd ACM Conference on Programming Language Design and Implementation, PLDI 2011
Y2 - 4 June 2011 through 8 June 2011
ER -