Skip to main content

A Dynamic Approach to Isolating Erroneous Event Patterns in Concurrent Program Executions

  • Conference paper
Multicore Software Engineering, Performance, and Tools (MUSEPAT 2013)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 8063))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 49.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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)

    Google Scholar 

  2. 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)

    Google Scholar 

  3. 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)

    Google Scholar 

  4. 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)

    Google Scholar 

  5. 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)

    Google Scholar 

  6. 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)

    Google Scholar 

  7. 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)

    Google Scholar 

  8. 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)

    Google Scholar 

  9. Sen, K.: Race Directed Random Testing of Concurrent Programs. In: Proceedings of PLDI 2008, pp. 11–21 (2008)

    Google Scholar 

  10. 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)

    Article  Google Scholar 

  11. Flanagan, C., Freund, S.N.: Atomizer: a dynamic atomicity checker for multithreaded programs. In: POPL, pp. 256–267 (2003)

    Google Scholar 

  12. Wang, L., Stoller, S.D.: Static analysis for programs with non-blocking synchronization. In: PPoPP (2005)

    Google Scholar 

  13. 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)

    Article  Google Scholar 

  14. Ronsse, M., Bosschere, K.D.: RecPlay: a fully integrated practical record/replay system. Trans. Comput. Syst. 17(2), 133–152 (1999)

    Article  Google Scholar 

  15. Musuvathi, M., Qadeer, S.: Iterative context bounding for systematic testing of multithreaded programs. In: PLDI, pp. 446–455 (June 2007)

    Google Scholar 

  16. Flanagan, C., Freund, S.N.: Type-based race detection for java. In: PLDI, pp. 219–232 (June 2000)

    Google Scholar 

  17. Godefroid, P., Nagappan, N.: Concurrency at Microsoft: An exploratory survey. In: Workshop on Exploiting Concurrency Efficiently and Correctly (2008)

    Google Scholar 

  18. Poulsen, K.: Tracking the blackout bug. SecurityFocus (February 2004), http://www.securityfocus.com/news/8412

  19. 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)

    Article  Google Scholar 

  20. Artho, C., Havelundand, K., Biere, A.: A high-level data race. Journal on Software Testing, Verification & Reliability (2003)

    Google Scholar 

  21. Ammann, P., Offutt, J.: Introduction to Software Testing. Cambridge University Press, Cambridge (2008)

    Book  MATH  Google Scholar 

  22. 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)

    Google Scholar 

  23. 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)

    Google Scholar 

  24. 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)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics