Abstraction and specification in program development
Abstraction and specification in program development
Parallel program design: a foundation
Parallel program design: a foundation
Tentative steps toward a development method for interfering programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The Java programming language (2nd ed.)
The Java programming language (2nd ed.)
Parametric shape analysis via 3-valued logic
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-based race detection for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Specifying Concurrent Program Modules
ACM Transactions on Programming Languages and Systems (TOPLAS)
Verifying safety properties of concurrent Java programs using 3-valued logic
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Avoiding exponential explosion: generating compact verification conditions
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Guarded commands, nondeterminacy and formal derivation of programs
Communications of the ACM
Reduction: a method of proving properties of parallel programs
Communications of the ACM
Detecting race conditions in large programs
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Tool-supported program abstraction for finite-state verification
ICSE '01 Proceedings of the 23rd International Conference on Software Engineering
Bugs as deviant behavior: a general approach to inferring errors in systems code
SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles
A parameterized type system for race-free Java programs
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Mercator: A scalable, extensible Web crawler
World Wide Web
Thread-Modular Verification for Shared-Memory Programs
ESOP '02 Proceedings of the 11th European Symposium on Programming Languages and Systems
Model-Checking Multi-threaded Distributed Java Programs
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
On Using a Composition Principle to Design Parallel Programs
AMAST '93 Proceedings of the Third International Conference on Methodology and Software Technology: Algebraic Methodology and Software Technology
Logical Foundations for Compositional Verification and Development of Concurrent Programs in UNITY
AMAST '95 Proceedings of the 4th International Conference on Algebraic Methodology and Software Technology
Parameterized Verification of Multithreaded Software Libraries
TACAS 2001 Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
Checking Java Programs via Guarded Commands
Proceedings of the Workshop on Object-Oriented Technology
A Proof Technique for Rely/Guarantee Properties
Proceedings of the Fifth Conference on Foundations of Software Technology and Theoretical Computer Science
A Compositional Rule for Hardware Design Refinement
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
A Modular Checker for Multithreaded Programs
CAV '02 Proceedings of the 14th International Conference on Computer Aided Verification
On Decomposing and Refining Specifications of Distributed Systems
Stepwise Refinement of Distributed Systems, Models, Formalisms, Correctness, REX Workshop
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
P-A logic: a compositional proof system for distributed programs
Distributed Computing
Checking system rules using system-specific, programmer-written compiler extensions
OSDI'00 Proceedings of the 4th conference on Symposium on Operating System Design & Implementation - Volume 4
Proving correctness of highly-concurrent linearisable objects
Proceedings of the eleventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Thread Algebra with Multi-Level Strategies
Fundamenta Informaticae
Barrier matching for programs with textually unaligned barriers
Proceedings of the 12th ACM SIGPLAN symposium on Principles and practice of parallel programming
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Breaking up is hard to do: An evaluation of automated assume-guarantee reasoning
ACM Transactions on Software Engineering and Methodology (TOSEM)
Distributed strategic interleaving with load balancing
Future Generation Computer Systems
Local Proofs for Linear-Time Properties of Concurrent Programs
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
Towards Efficient Verification of Systems with Dynamic Process Creation
Proceedings of the 5th international colloquium on Theoretical Aspects of Computing
A programming model for concurrent object-oriented programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Modular verification of web services using efficient symbolic encoding and summarization
Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering
Local rely-guarantee reasoning
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Towards Automatic Stability Analysis for Rely-Guarantee Proofs
VMCAI '09 Proceedings of the 10th International Conference on Verification, Model Checking, and Abstract Interpretation
Local proofs for global safety properties
Formal Methods in System Design
ACM Computing Surveys (CSUR)
An annotation assistant for interactive debugging of programs with common synchronization idioms
Proceedings of the 7th Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging
Symmetry and completeness in the analysis of parameterized systems
VMCAI'07 Proceedings of the 8th international conference on Verification, model checking, and abstract interpretation
Local proofs for global safety properties
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Formalising java's data race free guarantee
TPHOLs'07 Proceedings of the 20th international conference on Theorem proving in higher order logics
Composable specifications for structured shared-memory communication
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Thread-modular counterexample-guided abstraction refinement
SAS'10 Proceedings of the 17th international conference on Static analysis
Static analysis of interrupt-driven programs synchronized via the priority ceiling protocol
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Revisiting information hiding: reflections on classical and nonclassical modularity
Proceedings of the 25th European conference on Object-oriented programming
VMCAI'10 Proceedings of the 11th international conference on Verification, Model Checking, and Abstract Interpretation
Explicit stabilisation for modular rely-guarantee reasoning
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Thread Algebra with Multi-Level Strategies
Fundamenta Informaticae
Modular safety checking for fine-grained concurrency
SAS'07 Proceedings of the 14th international conference on Static Analysis
Hi-index | 5.23 |
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.