Types for safe locking
Top Cited Papers
- 1 March 2006
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 28 (2) , 207-255
- https://doi.org/10.1145/1119479.1119480
Abstract
This article presents a static race-detection analysis for multithreaded shared-memory programs, focusing on the Java programming language. The analysis is based on a type system that captures many common synchronization patterns. It supports classes with internal synchronization, classes that require client-side synchronization, and thread-local classes. In order to demonstrate the effectiveness of the type system, we have implemented it in a checker and applied it to over 40,000 lines of hand-annotated Java code. We found a number of race conditions in the standard Java libraries and other test programs. The checker required fewer than 20 additional type annotations per 1,000 lines of code. This article also describes two improvements that facilitate checking much larger programs: an algorithm for annotation inference and a user interface that clarifies warnings generated by the checker. These extensions have enabled us to use the checker for identifying race conditions in large-scale software systems with up to 500,000 lines of code.Keywords
This publication has 39 references indexed in Scilit:
- Featherweight JavaACM Transactions on Programming Languages and Systems, 2001
- Annotation inference for modular checkersPublished by Elsevier ,2001
- A partially deadlock-free typed process calculusACM Transactions on Programming Languages and Systems, 1998
- EraserACM Transactions on Computer Systems, 1997
- Type and behaviour reconstruction for higher-order concurrent programsJournal of Functional Programming, 1997
- Region-Based Memory ManagementInformation and Computation, 1997
- Pizza into JavaPublished by Association for Computing Machinery (ACM) ,1997
- Annotated type and effect systemsACM Computing Surveys, 1996
- Evaluating deadlock detection methods for concurrent softwareIEEE Transactions on Software Engineering, 1996
- Polymorphic type, region and effect inferenceJournal of Functional Programming, 1992