The Community for Technology Leaders
Green Image
Issue No. 04 - July-Aug. (2012 vol. 38)
ISSN: 0098-5589
pp: 844-860
Shan Lu , University of Wisconsin-Madison, Madison
Soyeon Park , University of California, San Diego, La Jolla
Yuanyuan Zhou , University of California, San Diego, La Jolla
ABSTRACT
Multicore hardware is making concurrent programs pervasive. Unfortunately, concurrent programs are prone to bugs. Among different types of concurrency bugs, atomicity violations are common and important. How to test the interleaving space and expose atomicity-violation bugs is an open problem. This paper makes three contributions. First, it designs and evaluates a hierarchy of four interleaving coverage criteria using 105 real-world concurrency bugs. This study finds a coverage criterion (Unserializable Interleaving Coverage) that balances the complexity and the capability of exposing atomicity-violation bugs well. Second, it studies stress testing to understand why this common practice cannot effectively expose atomicity-violation bugs from the perspective of unserializable interleaving coverage. Third, it designs CTrigger following the unserializable interleaving coverage criterion. CTrigger uses trace analysis to identify feasible unserializable interleavings, and then exercises low-probability interleavings to expose atomicity-violation bugs. We evaluate CTrigger with real-world atomicity-violation bugs from seven applications. CTrigger efficiently exposes these bugs within 1-235 seconds, two to four orders of magnitude faster than stress testing. Without CTrigger, some of these bugs do not manifest even after seven days of stress testing. Furthermore, once a bug is exposed, CTrigger can reliably reproduce it, usually within 5 seconds, for diagnosis.
INDEX TERMS
Testing and debugging, debugging aids, diagnostics, testing strategies, test coverage of code, concurrent programming, bug characteristics
CITATION
Shan Lu, Soyeon Park, Yuanyuan Zhou, "Finding Atomicity-Violation Bugs through Unserializable Interleaving Testing", IEEE Transactions on Software Engineering, vol. 38, no. , pp. 844-860, July-Aug. 2012, doi:10.1109/TSE.2011.35
194 ms
(Ver 3.1 (10032016))