A Modular Checker for Multithreaded Programs

  • Cormac Flanagan
  • Shaz Qadeer
  • Sanjit A. Seshia
Conference paper

DOI: 10.1007/3-540-45657-0_14

Part of the Lecture Notes in Computer Science book series (LNCS, volume 2404)
Cite this paper as:
Flanagan C., Qadeer S., Seshia S.A. (2002) A Modular Checker for Multithreaded Programs. In: Brinksma E., Larsen K.G. (eds) Computer Aided Verification. CAV 2002. Lecture Notes in Computer Science, vol 2404. Springer, Berlin, Heidelberg

Abstract

Designing multithreaded software systems is prone to errors due to the difficulty of reasoning about multiple interleaved threads of control operating on shared data. Static checking, with the potential to analyze the program’s behavior over all execution paths and for all thread interleavings, is a powerful debugging tool. We have built a scalable and expressive static checker called Calvin for multithreaded programs. To handle realistic programs, Calvin performs modular checking of each procedure called by a thread using specifications of other procedures and other threads. The checker leverages off existing sequential program verification techniques based on automatic theorem proving. To evaluate the checker, we have applied it to several real-world programs. Our experience indicates that Calvin has a moderate annotation overhead and can catch defects in multithreaded programs, including synchronization errors and violation of data invariants.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

Copyright information

© Springer-Verlag Berlin Heidelberg 2002

Authors and Affiliations

  • Cormac Flanagan
    • 1
  • Shaz Qadeer
    • 1
  • Sanjit A. Seshia
    • 2
  1. 1.Compaq Systems Research CenterPalo Alto
  2. 2.School of Computer ScienceCarnegie Mellon UniversityPittsburgh

Personalised recommendations