Modular verification of multithreaded programs

  • Authors:
  • Cormac Flanagan;Stephen N. Freund;Shaz Qadeer;Sanjit A. Seshia

  • Affiliations:
  • Computer Science Department, University of California at Santa Cruz, Santa Cruz, CA;Computer Science Department, Williams College, Williamstown, MA;Microsoft Research, One Microsoft Way, Redmond, WA;School of Computer Science, Carnegie Mellon University, Pittsburgh, PA

  • Venue:
  • Theoretical Computer Science
  • Year:
  • 2005

Quantified Score

Hi-index 5.23

Visualization

Abstract

Multithreaded software systems are prone to errors due to the difficulty of reasoning about multiple interleaved threads operating on shared data. Static checkers that analyze a program's behavior over all execution paths and all thread interleavings are a powerful approach to identifying bugs in such systems. In this paper, we present Calvin, a scalable and expressive static checker for multithreaded programs based on automatic theorem proving. To handle realistic programs, Calvin performs modular checking of each procedure called by a thread using specifications of other procedures and other threads. Our experience applying Calvin to several real-world programs indicates that Calvin has a moderate annotation overhead and can catch common defects in multithreaded programs, such as synchronization errors and violations of data invariants.