Modular verification of multithreaded programs

被引:36
作者
Flanagan, C [1 ]
Freund, SN
Qadeer, S
Seshia, SA
机构
[1] Univ Calif Santa Cruz, Comp Sci Dept, Santa Cruz, CA 95064 USA
[2] Williams Coll, Comp Sci Dept, Williamstown, MA 01267 USA
[3] Carnegie Mellon Univ, Sch Comp Sci, Pittsburgh, PA 15213 USA
[4] Microsoft Res, Redmond, WA 98052 USA
基金
美国国家科学基金会; 英国科研创新办公室;
关键词
concurrent software; verification; assume-guarantee reasoning; automated theorem proving; verification conditions; software engineering;
D O I
10.1016/j.tcs.2004.12.006
中图分类号
TP301 [理论、方法];
学科分类号
081202 ;
摘要
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. (c) 2004 Elsevier B.V. All fights reserved.
引用
收藏
页码:153 / 183
页数:31
相关论文
共 45 条
[1]   CONJOINING SPECIFICATIONS [J].
ABADI, M ;
LAMPORT, L .
ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 1995, 17 (03) :507-534
[2]  
Abrahám E, 2003, LECT NOTES COMPUT SC, V2772, P290
[3]  
Abrahám E, 2003, LECT NOTES COMPUT SC, V2884, P155
[4]  
AIKEN A, 1998, P 25 S PRINC PROGR L, P243
[5]   Reactive modules [J].
Alur, R ;
Henzinger, TA .
11TH ANNUAL IEEE SYMPOSIUM ON LOGIC IN COMPUTER SCIENCE, PROCEEDINGS, 1996, :207-218
[6]  
[Anonymous], P 26 ACM SIGPLAN SIG
[7]  
[Anonymous], 1993, P WINT 1993 US C
[8]  
Arnold Ken., 1996, The Java Programming Language
[9]  
Back R. J. R., 2003, Formal Aspects of Computing, V15, P103, DOI 10.1007/s00165-003-0005-6
[10]  
BALL T, 2001, TOOSL ALGORITHMS CON