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.
Supported in part by a NDSEG Fellowship.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
M. Abadi and L. Lamport. Conjoining specifications. ACM TOPLAS, 17(3):507–534, 1995.
A. Aiken and D. Gay. Barrier inference. In Proc. 25th POPL, pages 243–354, 1998.
K. Arnold and J. Gosling. The Java Programming Language. Addison-Wesley, 1996.
T. Ball, S. Chaki, and S. Rajamani. Parameterized verification of multithreaded software libraries. In TACAS, pages 158–173, 2001.
A. Birrell, J. Guttag, J. Horning, and R. Levin. Synchronization primitives for a multiprocessor: A formal specification. In Proc. 11th SOSP, pages 94–102, 1987.
C. Boyapati and M. Rinard. A parameterized type system for race-free Java programs. In Proc. OOPSLA, pages 56–69, 2001.
M. Dwyer, J. Hatcliff, R. Joehanes, S. Laubach, C. Pasareanu, Robby, W. Visser, and H. Zheng. Tool-supported program abstraction for finite-state verification. In Proc. 23rd ICSE, pages 177–187, 2001.
C. Flanagan and S. N. Freund. Type-based race detection for Java. In Proc. PLDI, pages 219–232, 2000.
C. Flanagan, S. N. Freund, and S. Qadeer. Thread-modular verification for shared-memory programs. In Proc. 11th ESOP, pages 262–277, 2002.
C. Flanagan, K. R. M. Leino, M. Lillibridge, C. Nelson, J. Saxe, and R. Stata. Extended static checking for Java. In Proc. PLDI, 2002.
C. Flanagan, S. Qadeer, and S. A. Seshia. A modular checker for multithreaded programs. Technical Note 2002-001, Compaq Systems Research Center, 2002.
C. Flanagan and J. B. Saxe. Avoiding exponential explosion: Generating compact verification conditions. In Proc. 28th POPL, pages 193–205, 2001.
A. Heydon and M. Najork. Mercator: A scalable, extensible web crawler. In Proc. 8th WWW Conf., pages 219–229, December 1999.
C. B. Jones. Tentative steps toward a development method for interfering programs. A CM TOPLAS, 5(4):596–619, 1983.
L. Lamport. Specifying concurrent program modules. ACM TOPLAS, 5(2):190–222, 1983.
K. R. M. Leino, J. B. Saxe, and R. Stata. Checking Java programs via guarded commands. Technical Note 1999-002, Compaq Systems Research Center, 1999.
B. Liskov and J. Guttag. Abstraction and Specification in Program Development. MIT Press, 1986.
C. G. Nelson. Techniques for program verification. Technical Report CSL-81-10, Xerox Palo Alto Research Center, 1981.
M. Sagiv, T. Reps, and R. Wilhelm. Parametric shape analysis via 3-valued logic. In Proc. 26th POPL, pages 105–118, 1999.
N. Sterling. WARLOCK — a static data race analysis tool. In USENIX Tech. Conf. Proc., pages 97–106, Winter 1993.
E. Yahav. Verifying safety properties of concurrent Java programs using 3-valued logic. In Proc. 28th POPL, pages 27–40, 2001.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2002 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
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. https://doi.org/10.1007/3-540-45657-0_14
Download citation
DOI: https://doi.org/10.1007/3-540-45657-0_14
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-43997-4
Online ISBN: 978-3-540-45657-5
eBook Packages: Springer Book Archive