Date
September 11, 2011
Author
Z. Yin, Ding Yuan, Y. Zhou, S. Pasupathy, and L. Bairavasundaram.
This paper presents a comprehensive characteristic study on incorrect bug-fixes from large operating system code bases investigating mistake patterns during bug-fixing and the possible human reasons during development that these incorrect bug-fixes were introduced.
Software bugs affect system reliability. When a bug is exposed in the field, developers need to fix them. Unfortunately, the bug-fixing process can also introduce errors, which leads to buggy patches that further aggravate the damage to end users and erode software vendors' reputation.
This paper presents a comprehensive characteristic study on incorrect bug-fixes from large operating system code bases including Linux, OpenSolaris, FreeBSD and also a mature commercial OS developed and evolved over the last 12 years, investigating not only the mistake patterns during bug-fixing but also the possible human reasons in the development process when these incorrect bug-fixes were introduced. Our major findings include: (1) at least 14.8% to 24.4% of sampled fixes for post-release bugs in these large OSes are incorrect and have made impacts to end users. (2) Among several common bug types, concurrency bugs are the most difficult to fix correctly: 39% of concurrency bug fixes are incorrect. (3) Developers and reviewers for incorrect fixes usually do not have enough knowledge about the involved code. For example, 27% of the incorrect fixes are made by developers who have never touched the source code files associated with the fix. Our results provide useful guidelines to design new tools and also to improve the development process. Based on our findings, the commercial software vendor whose OS code we evaluated is building a tool to improve the bug fixing and code reviewing process.
This paper received the ACM SIGSOFT Distinguished Paper Award
In proceedings of the ACM SIGSOFT Symposium on the Foundations of Software Engineering 2011 (FSE'11)
Resources
The author's version of the paper is attached to this posting, please observe the following copyright:© ACM, 2011. This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version was published in the Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering, {ESEC/FSE '11} https://doi.acm.org/10.1145/2025113.2025121
The definitive version of the paper can be found at: https://doi.acm.org/10.1145/2025113.2025121