Definition
Formal methods–based tools for parallel programs use mathematical concepts such as formal semantics, formal specifications, or logics to examine the state space of a program. They aim at proving the absence of common concurrency errors such as races, deadlocks, livelocks, or atomicity violations for all possible executions of a program. Common techniques applied by formal methods–based tools include deductive verification, model checking, and static program analysis.
Discussion
Introduction
Concurrent programs are notoriously difficult to test. Their behavior depends not only on the input but also on the scheduling of threads or processes. Many concurrency errors occur only for very specific schedulings, which makes them extremely hard to find and reproduce.
An alternative to testing is to apply formal methods. Formal methods use mathematical concepts to examine all possible executions of a program. Therefore, they are able to guarantee certain properties for all inputs and...
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsBibliography
Abrial J-R (2010) Modeling in Event-B. Cambridge University Press, Cambridge
Andrews T, Qadeer S, Rajamani SK, Xie Y (2004) Zing: exploiting program structure for model checking concurrent software. In: Gardner P, Yoshida N (eds) Concurrency Theory (CONCUR). Lecture Notes in Computer Science, vol 3170. Springer, Berlin, pp 1–15
Bryant R, Kukula J (2003) Formal methods for functional verification. In: Kuehlmann A (ed) The best of ICCAD: 20 years of excellence in computer aided design. Kluwer, Norwell, pp 3–16
Calcagno C, Parkinson MJ, Vafeiadis V (2007) Modular safety checking for fine-grained concurrency. In: Nielson HR, Filé G (eds) Static analysis (SAS). Lecture Notes in Computer Science, vol 4634. Springer, Berlin, pp 233–248
Chaki S, Clarke EM, Groce A, Jha S, Veith H (2004) Modular verification of software components in C. IEEE Trans. Softw Eng 30(6):388–402
Clarke EM, Grumberg O, Jha S, Lu Y, Veith H (2003) Counterexample-guided abstraction refinement for symbolic model checking. J ACM 50(5):752–794
Cohen E, Dahlweid M, Hillebrand M, Leinenbach D, Moskal M, Santen T, Schulte W, Tobies S (2009) VCC: a practical system for verifying concurrent C. In: Berghofer S, Nipkow T, Urban C, Wenzel M (eds) Theorem proving in higher order logics (TPHOLs 2009). Lecture Notes in Computer Science, vol 5674. Springer, Berlin, pp 23–42
Engler DR, Ashcraft K (2003) RacerX: effective, static detection of race conditions and deadlocks. In: Scott ML, Peterson LL (eds) Symposium on operating systems principles (SOSP). ACM, New York, pp 237–252
Flanagan C, Freund SN (2000) Type-based race detection for Java. In: Proceedings of the ACM conference on programming language design and implementation (PLDI). ACM, New York, pp 219–232
Flanagan C, Freund SN, Lifshin M, Qadeer S (2008) Types for atomicity: static checking and inference for Java. ACM Trans Program Lang Syst 30(4):1–53
Henzinger TA, Jhala R, Majumdar R (2004) Race checking by context inference. In: Pugh W, Chambers C (eds) Programming Language Design and Implementation (PLDI). ACM, New York, pp 1–13
Jacobs B, Leino KRM, Piessens F, Schulte W, Smans J (2008) A programming model for concurrent object-oriented programs. ACM Trans Program Lang Syst 31(1):1–48
Jacobs B, Piessens F (2008) The VeriFast program verifier. Technical Report CW-520, Department of computer science, Katholieke Universiteit Leuven
Jones CB (1983) Specification and design of (parallel) programs. In: Proceedings of IFIP’83. North-Holland, pp 321–332
Leino KRM, Müller P, Smans J (2009) Verification of concurrent programs with Chalice. In: Aldini A, Barthe G, Gorrieri R (eds) Foundations of security analysis and design V. Lecture Notes in Computer Science, vol 5705. Springer, Berlin, pp 195–222
Lipton RJ (1975) Reduction: a method of proving properties of parallel programs. Commun ACM 18(12):717–721
Musuvathi M, Qadeer S, Ball T, Basler G, Nainar PA, Neamtiu I (2008) Finding and reproducing heisenbugs in concurrent programs. In: Draves R, van Renesse R (eds) Operating systems design and implementation (OSDI). USENIX Association, pp 267–280
Naik M, Aiken A, Whaley J (2006) Effective static race detection for Java. In: Schwartzbach MI, Ball T (eds) Programming language design and implementation (PLDI), ACM, pp 308–319
O’Hearn PW (2007) Resources, concurrency, and local reasoning. Theor Comput Sci 375(1–3):271–307
Siegel SF (2007) Model checking nonblocking MPI programs. In: Cook B, Podelski A (eds) Verification, model checking, and abstract interpretation (VMCAI). Lecture Notes in Computer Science, vol 4349, pp 44–58
Sterling N (1993) Warlock – a static data race analysis tool. In: USENIX Winter, pp 97–106
Tofan B, Bäumler S, Schellhorn G, Reif W (2009) Verifying linearizability and lock-freedom with temporal logic. Technical report, Fakultät für Angewandte Informatik der Universität Augsburg, 2009
van der Aalst WMP, Hirnschall A, Verbeek HMWE (2002) An alternative way to analyze workflow graphs. In: Pidduck AB, Mylopoulos J, Woo CC, Özsu MT (eds) Advanced information systems engineering (CAiSE). Lecture Notes in Computer Science, vol 2348. Springer, pp 535–552
Villard J, Lozes É, Calcagno C (2010) Tracking heaps that hop with Heap-Hop. In: Esparza J, Majumdar R (eds) Tools and algorithms for the construction and analysis of systems (TACAS). Lecture Notes in Computer Science, vol 6015. Springer, 275–279
Visser W, Havelund K, Brat GP, Park S, Lerda F (2003) Model checking programs. Autom Softw Eng 10(2):203–232
Vo A, Vakkalanka S, DeLisi M, Gopalakrishnan G, Kirby RM, Thakur R (2009) Formal verification of practical MPI programs. In: Principles and practice of parallel programming (PPoPP). ACM, pp 261–270
Voung JW, Jhala R, Lerner S (2007) Relay: static race detection on millions of lines of code. In: Crnkovic I, Bertolino A (eds) European software engineering conference and foundations of software engineering (ESEC/FSE). ACM, pp 205–214
Acknowledgments
Thanks to Felix Klaedtke and Christoph Wintersteiger for their helpful comments on a draft of this entry.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer Science+Business Media, LLC
About this entry
Cite this entry
Müller, P. (2011). Formal Methods–Based Tools for Race, Deadlock, and Other Errors. In: Padua, D. (eds) Encyclopedia of Parallel Computing. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-09766-4_399
Download citation
DOI: https://doi.org/10.1007/978-0-387-09766-4_399
Publisher Name: Springer, Boston, MA
Print ISBN: 978-0-387-09765-7
Online ISBN: 978-0-387-09766-4
eBook Packages: Computer ScienceReference Module Computer Science and Engineering