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
    ABADI, M
    LAMPORT, L
    [J]. 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
    Alur, R
    Henzinger, TA
    [J]. 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