Computer Aided Verification

Volume 2404 of the series Lecture Notes in Computer Science pp 180-194


A Modular Checker for Multithreaded Programs

  • Cormac FlanaganAffiliated withCompaq Systems Research Center
  • , Shaz QadeerAffiliated withCompaq Systems Research Center
  • , Sanjit A. SeshiaAffiliated withSchool of Computer Science, Carnegie Mellon University

* Final gross prices may vary according to local VAT.

Get Access


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.