Skip to main content

A Uniform Classification of Common Concurrency Errors

  • Conference paper
Computer Aided Systems Theory – EUROCAST 2011 (EUROCAST 2011)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 6927))

Included in the following conference series:

Abstract

Nowadays, multi-threaded programs are quite common and so are concurrency-related errors. Many works devoted to detection of concurrency errors have been published in recent years, and many of them presented definitions of concurrency errors that the proposed algorithms are able to handle. These definitions are usually expressed in different terms suitable for a description of the particular considered algorithms, and they surprisingly often differ from each other in the meaning they assign to particular errors. To help understanding the errors and developing techniques for detecting them, this paper strives to provide a uniform taxonomy of concurrency errors common in current programs, with a stress on those written in Java, together with a brief overview of techniques so far proposed for detecting such errors.

This work was supported by the Czech Science Foundation (within projects P103/10/0306 and 102/09/H042), the Czech Ministry of Education (projects COST OC10009 and MSM 0021630528), and the FIT BUT project FIT-S-11-1.

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 54.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. Andrews, G.R.: Concurrent programming: principles and practice. Benjamin-Cummings Publishing Co., Inc., Redwood City (1991)

    MATH  Google Scholar 

  2. Blieberger, J., Burgstaller, B., Mittermayr, R.: Static detection of livelocks in ada multitasking programs. In: Abdennahder, N., Kordon, F. (eds.) Ada-Europe 2007. LNCS, vol. 4498, pp. 69–83. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  3. Bradbury, J.S., Jalbert, K.: Defining a catalog of programming anti-patterns for concurrent java. In: Proc. of SPAQu 2009, pp. 6–11 (October 2009)

    Google Scholar 

  4. Coffman, E.G., Elphick, M., Shoshani, A.: System deadlocks. ACM Comput. Surv. 3, 67–78 (1971)

    Article  MATH  Google Scholar 

  5. Engler, D., Ashcraft, K.: Racerx: effective, static detection of race conditions and deadlocks. SIGOPS Oper. Syst. Rev. 37(5), 237–252 (2003)

    Article  Google Scholar 

  6. Farchi, E., Nir, Y., Ur, S.: Concurrent bug patterns and how to test them. In: Proc. of IPDPS 2003, p. 286.2. IEEE Computer Society, Washington, DC, USA (2003)

    Google Scholar 

  7. Fiedor, J., Kena, B., Letko, Z., Vojnar, T.: A uniform classification of common concurrency errors. Technical report (2010)

    Google Scholar 

  8. Godefroid, P.: Software model checking: The verisoft approach. Form. Methods Syst. Des. 26(2), 77–101 (2005)

    Article  Google Scholar 

  9. Havelund, K.: Using runtime analysis to guide model checking of java programs. In: Havelund, K., Penix, J., Visser, W. (eds.) SPIN 2000. LNCS, vol. 1885, pp. 245–264. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  10. Ho, A., Smith, S., Hand, S.: On deadlock, livelock, and forward progress. Technical report, University of Cambridge (2005)

    Google Scholar 

  11. Holzmann, G.: Spin model checker, the: primer and reference manual. Addison-Wesley Professional, Reading (2003)

    Google Scholar 

  12. Hovemeyer, D., Pugh, W.: Finding concurrency bugs in java. In: Proc. of PODC 2004 (July 2004)

    Google Scholar 

  13. Lamport, L.: Time, clocks, and the ordering of events in a distributed system. Commun. ACM 21(7), 558–565 (1978)

    Article  MATH  Google Scholar 

  14. Lipton, R.J.: Reduction: A method of proving properties of parallel programs. Commun. ACM 18(12), 717–721 (1975)

    Article  MathSciNet  MATH  Google Scholar 

  15. Long, B., Strooper, P.: A classification of concurrency failures in java components. In: Proc. of IPDPS 2003, p. 287.1. IEEE Computer Society, Washington, DC, USA (2003)

    Google Scholar 

  16. Lu, S., Park, S., Seo, E., Zhou, Y.: Learning from mistakes: a comprehensive study on real world concurrency bug characteristics. In: Proc. of ASPLOS 2008, pp. 329–339. ACM, New York (2008)

    Google Scholar 

  17. Lu, S., Tucek, J., Qin, F., Zhou, Y.: Avio: detecting atomicity violations via access interleaving invariants. In: Proc. of ASPLOS 2006, pp. 37–48. ACM Press, New York (2006)

    Google Scholar 

  18. Manna, Z., Pnueli, A.: The temporal logic of reactive and concurrent systems. Springer-Verlag New York, Inc., New York (1992)

    Book  MATH  Google Scholar 

  19. Mogul, J.C., Ramakrishnan, K.K.: Eliminating receive livelock in an interrupt-driven kernel. ACM Trans. Comput. Syst. 15(3), 217–252 (1997)

    Article  Google Scholar 

  20. Nonaka, Y., Ushijima, K., Serizawa, H., Murata, S., Cheng, J.: A run-time deadlock detector for concurrent java programs. In: Proc. of APSEC 2001, p. 45. IEEE Computer Society, Washington, DC, USA (2001)

    Google Scholar 

  21. Pierce, B.C.: Types and programming languages. MIT Press, Cambridge (2002)

    MATH  Google Scholar 

  22. Savage, S., Burrows, M., Nelson, G., Sobalvarro, P., Anderson, T.: Eraser: a dynamic data race detector for multi-threaded programs. In: Proc. of SOSP 1997, pp. 27–37. ACM Press, New York (1997)

    Google Scholar 

  23. Stallings, W.: Operating Systems: Internals and Design Principles, 6th edn. Prentice-Hall, Englewood Cliffs (2008)

    Google Scholar 

  24. Tanenbaum, A.S.: Modern Operating Systems. Prentice Hall Press, Upper Saddle River (2007)

    MATH  Google Scholar 

  25. Williams, A., Thies, W., Ernst, M.D.: Static deadlock detection for java libraries. In: Gao, X.-X. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 602–629. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  26. Yu, J., Narayanasamy, S.: A case for an interleaving constrained shared-memory multi-processor. SIGARCH Comput. Archit. News 37(3), 325–336 (2009)

    Article  Google Scholar 

  27. Zhang, W., Sun, C., Lu, S.: Conmem: detecting severe concurrency bugs through an effect-oriented approach. In: Proc. of ASPLOS 2010, pp. 179–192. ACM, New York (2010)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2012 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Fiedor, J., Křena, B., Letko, Z., Vojnar, T. (2012). A Uniform Classification of Common Concurrency Errors. In: Moreno-Díaz, R., Pichler, F., Quesada-Arencibia, A. (eds) Computer Aided Systems Theory – EUROCAST 2011. EUROCAST 2011. Lecture Notes in Computer Science, vol 6927. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-27549-4_67

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-27549-4_67

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-27548-7

  • Online ISBN: 978-3-642-27549-4

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics