Abstract
Concurrency bugs are hard to find due to the nondeterministic behavior of concurrent programs. In this paper, we present an algorithm for isolating erroneous event patterns in concurrent program executions. Failed executions are characterized as a sequence of switch points, which capture the interleaving of read and write events on shared variables. The algorithm inputs the sequence of a failed execution, and outputs erroneous event patterns. We implemented our algorithm and conducted an experimental evaluation on several Java benchmark programs. The results of our evaluation show that our approach can effectively and efficiently identify erroneous event patterns in failed executions.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Choi, J., Zeller, A.: Isolating Failure-Inducing Thread Schedules. In: Proceedings of the 2002 ACM SIGSOFT International Symposium on Software Testing and Analysis, pp. 210–220 (July 2002)
Park, S., Vuduc, R., Harrold, M.: A Unified Approach for Localizing non-deadlock Concurrency Bugs. In: 2012 IEEE Fifth International Conference on Proceedings of the Software Testing, Verification and Validation (ICST), pp. 51–60 (April 2012)
Lu, S., Tucek, J., Qin, F., Zhou, Y.: AVIO: Detecting Atomicity Violations via Access Interleaving Invariants. In: Proceedings of the 12th International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 37–48 (December 2006)
Park, S., Lu, S., Zhou, Y.: CTrigger: Exposing Atomicity Violation Bugs from Their Hiding Places. In: Proceedings of ISSTA 2002 Proceedings of the 14th International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 25–36 (March 2009)
Park, S., Vuduc, R., Harrold, M.: Falcon: Fault Localization in Concurrent Programs. In: Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering, pp. 245–254 (2010)
Hammer, C., Dolby, J., Vaziri, M., Tip. Dynamic, F.: detection of atomic-set-serializability violations. In: ACM/IEEE 30th International Conference on Proceedings of the ICSE 2008, pp. 231–240 (May 2008)
Lai, Z., Cheung, S., Chan, W.: Detecting atomic-set serializability violations in multithreaded programs through active randomized testing. In: Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering, pp. 235–244 (2010)
Vaziri, M., Tip, F., Dolby, J.: Associating synchronization constraints with data in an object-oriented language. In: Proceedings of the Conference Record of the 33rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 334–345 (2006)
Sen, K.: Race Directed Random Testing of Concurrent Programs. In: Proceedings of PLDI 2008, pp. 11–21 (2008)
Carver, R.H., Lei, Y.: A Class Library for Implementing, Testing, and Debugging Concurrent Programs. Int. Journal on Software Tools for Tech. Transfer 12(1), 69–88 (2010)
Flanagan, C., Freund, S.N.: Atomizer: a dynamic atomicity checker for multithreaded programs. In: POPL, pp. 256–267 (2003)
Wang, L., Stoller, S.D.: Static analysis for programs with non-blocking synchronization. In: PPoPP (2005)
Savage, S., Burrows, M., Nelson, G., Sobalvarro, P., Anderson, T.: Eraser: a dynamic data race detector for multithreaded programs. Trans. Comput. Syst. 15(4), 391–411 (1997)
Ronsse, M., Bosschere, K.D.: RecPlay: a fully integrated practical record/replay system. Trans. Comput. Syst. 17(2), 133–152 (1999)
Musuvathi, M., Qadeer, S.: Iterative context bounding for systematic testing of multithreaded programs. In: PLDI, pp. 446–455 (June 2007)
Flanagan, C., Freund, S.N.: Type-based race detection for java. In: PLDI, pp. 219–232 (June 2000)
Godefroid, P., Nagappan, N.: Concurrency at Microsoft: An exploratory survey. In: Workshop on Exploiting Concurrency Efficiently and Correctly (2008)
Poulsen, K.: Tracking the blackout bug. SecurityFocus (February 2004), http://www.securityfocus.com/news/8412
Eytani, Y., Havelund, K., Stoller, S.D., Ur, S.: Towards a framework and a benchmark for testing tools for multi-threaded programs. Concurr. Comput.: Pract.Exper. 19(3), 267–279 (2007)
Artho, C., Havelundand, K., Biere, A.: A high-level data race. Journal on Software Testing, Verification & Reliability (2003)
Ammann, P., Offutt, J.: Introduction to Software Testing. Cambridge University Press, Cambridge (2008)
Shi, Y., Park, S., Yin, Z., Lu, S.: Do I use the wrong definition DeFuse definition-use invariants for detecting concurrency and sequential bugs. In: Proceedings of the OOPSLA, pp. 160–174 (2010)
Narayanasamy, S., Wang, Z., Tigani, J.: Automatically classifying benign and harmful data races using replay analysis. In: Proceedings of the PLDI 2007 Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 22–31 (2007)
Wang, L., Stoller, S.D.: Accurate and efficient runtime detection of atomicity errors in concurrent programs. In: Proceedings of the ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP 2006) (2006)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Xu, J., Lei, Y., Carver, R., Kung, D. (2013). A Dynamic Approach to Isolating Erroneous Event Patterns in Concurrent Program Executions. In: Lourenço, J.M., Farchi, E. (eds) Multicore Software Engineering, Performance, and Tools. MUSEPAT 2013. Lecture Notes in Computer Science, vol 8063. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-39955-8_9
Download citation
DOI: https://doi.org/10.1007/978-3-642-39955-8_9
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-39954-1
Online ISBN: 978-3-642-39955-8
eBook Packages: Computer ScienceComputer Science (R0)