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.
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
Andrews, G.R.: Concurrent programming: principles and practice. Benjamin-Cummings Publishing Co., Inc., Redwood City (1991)
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)
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)
Coffman, E.G., Elphick, M., Shoshani, A.: System deadlocks. ACM Comput. Surv. 3, 67–78 (1971)
Engler, D., Ashcraft, K.: Racerx: effective, static detection of race conditions and deadlocks. SIGOPS Oper. Syst. Rev. 37(5), 237–252 (2003)
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)
Fiedor, J., Kena, B., Letko, Z., Vojnar, T.: A uniform classification of common concurrency errors. Technical report (2010)
Godefroid, P.: Software model checking: The verisoft approach. Form. Methods Syst. Des. 26(2), 77–101 (2005)
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)
Ho, A., Smith, S., Hand, S.: On deadlock, livelock, and forward progress. Technical report, University of Cambridge (2005)
Holzmann, G.: Spin model checker, the: primer and reference manual. Addison-Wesley Professional, Reading (2003)
Hovemeyer, D., Pugh, W.: Finding concurrency bugs in java. In: Proc. of PODC 2004 (July 2004)
Lamport, L.: Time, clocks, and the ordering of events in a distributed system. Commun. ACM 21(7), 558–565 (1978)
Lipton, R.J.: Reduction: A method of proving properties of parallel programs. Commun. ACM 18(12), 717–721 (1975)
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)
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)
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)
Manna, Z., Pnueli, A.: The temporal logic of reactive and concurrent systems. Springer-Verlag New York, Inc., New York (1992)
Mogul, J.C., Ramakrishnan, K.K.: Eliminating receive livelock in an interrupt-driven kernel. ACM Trans. Comput. Syst. 15(3), 217–252 (1997)
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)
Pierce, B.C.: Types and programming languages. MIT Press, Cambridge (2002)
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)
Stallings, W.: Operating Systems: Internals and Design Principles, 6th edn. Prentice-Hall, Englewood Cliffs (2008)
Tanenbaum, A.S.: Modern Operating Systems. Prentice Hall Press, Upper Saddle River (2007)
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)
Yu, J., Narayanasamy, S.: A case for an interleaving constrained shared-memory multi-processor. SIGARCH Comput. Archit. News 37(3), 325–336 (2009)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)