ABSTRACT
Fixing a non-deadlock concurrency bug is a difficult job that sometimes introduces additional bugs and requires a long time. To overcome this difficulty and efficiently perform fixing jobs, engineers should have broad knowledge of various fix patterns, and the ability to select the most proper one among those patterns based on quantitative data gathered from real-world bug databases. In this paper, we provide a real-world characteristic study on the fixes of non-deadlock concurrency bugs to help engineers responsible for program maintenance. In particular, we examine various fix patterns and the factors that influence the selection of those patterns with respect to the preexistence of locks and failure types. Our results will provide useful information for engineers who write bug patches, and researchers who study efficient testing and fixing techniques.
- A. Zeller, Why Programs Fail, Second Edition: A Guide to Systematic Debugging, 2nd ed. San Francisco, CA, USA: Morgan Kaufmann Google ScholarDigital Library
- Shan Lu, et al. 2008. Learning from mistakes: a comprehensive study on real world concurrency bug characteristics. In Proceedings of the 13th international conference on Architectural support for programming languages and operating systems (ASPLOS XIII). ACM, New York, NY, USA, 329--339. Google ScholarDigital Library
- Zuoning Yin et al. 2011. How do fixes become bugs?. In Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering (ESEC/FSE '11). ACM, New York, NY, USA, 26--36. Google ScholarDigital Library
- M. M. Islam and A. Muzahid. 2013. Characterizing real world bugs causing sequential consistency violations. In Presented as part of the 5th USENIX Workshop on Hot Topics in Parallelism. USENIX, Berkeley, CA, USA.Google Scholar
- Baishakhi Ray et al. 2014. A large scale study of programming languages and code quality in github. In Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE '14). ACM, New York, NY, USA, 155--165. Google ScholarDigital Library
- P. Fonseca, C. Li, V. Singhal, and R. Rodrigues. 2010. A study of the internal and external effects of concurrency bugs. In Proceedings of 2010 IEEE/IFIP International Conference on Dependable Systems and Networks (DSN '10). 221--230.Google Scholar
- Konstantin Serebryany and Timur Iskhodzhanov. 2009. ThreadSanitizer: data race detection in practice. In Proceedings of the Workshop on Binary Instrumentation and Applications (WBIA '09). ACM, New York, NY, USA, 62--71. Google ScholarDigital Library
- Mohsen Vakilian et al. 2011. Keshmesh: a tool for detecting and fixing java concurrency bug patterns. In Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion (OOPSLA '11). ACM, New York, NY, USA, 39--40. Google ScholarDigital Library
Index Terms
- Characterizing non-deadlock concurrency bug fixes in open-source Java programs
Recommendations
Learning from mistakes: a comprehensive study on real world concurrency bug characteristics
ASPLOS XIII: Proceedings of the 13th international conference on Architectural support for programming languages and operating systemsThe reality of multi-core hardware has made concurrent programs pervasive. Unfortunately, writing correct concurrent programs is difficult. Addressing this challenge requires advances in multiple directions, including concurrency bug detection, ...
Understanding Real-World Concurrency Bugs in Go
ASPLOS '19: Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating SystemsGo is a statically-typed programming language that aims to provide a simple, efficient, and safe way to build multi-threaded software. Since its creation in 2009, Go has matured and gained significant adoption in production and open-source software. Go ...
Keshmesh: a tool for detecting and fixing java concurrency bug patterns
OOPSLA '11: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companionDeveloping concurrent software is error prone. Others have cataloged common bug patterns in concurrent Java programs. But, there are no tools for detecting complex concurrency bug patterns accurately, and concurrent programs are full of similar bugs. We ...
Comments