ACM Home Page
Please provide us with feedback. Feedback
Types for safe locking: Static race detection for Java
Full text PdfPdf (1.49 MB)
Source ACM Transactions on Programming Languages and Systems (TOPLAS) archive
Volume 28 ,  Issue 2  (March 2006) table of contents
Pages: 207 - 255  
Year of Publication: 2006
ISSN:0164-0925
Authors
Martin Abadi  Microsoft Research and University of California at Santa Cruz, Santa Cruz, CA
Cormac Flanagan  University of California at Santa Cruz, Santa Cruz, CA
Stephen N. Freund  Williams College, Williamstown, MA
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 12,   Downloads (12 Months): 97,   Citation Count: 12
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1119479.1119480
What is a DOI?

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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

1
2
 
3
 
4
5
 
6
Birrell, A. D. 1989. An introduction to programming with threads. Research Report 35, Digital Equipment Corporation Systems Research Center.
7
8
 
9
Boyapati, C., Lee, R., and Rinard, M. 2002. A type system for preventing data races and deadlocks in Java programs. In Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages and Applications. 211--230.
10
11
 
12
 
13
Cardelli, L. 1997. Mobile ambient synchronization. Tech. Rep. 1997-013, Digital Systems Research Center, Palo Alto, CA.
14
 
15
16
17
 
18
19
20
 
21
Detlefs, D. L., Leino, K. R. M., Nelson, G., and Saxe, J. B. 1998. Extended static checking. Research Report 159, Compaq Systems Research Center.
 
22
Drossopoulou, S. and Eisenbach, S. 1997. Java is type safe---Probably. In European Conference On Object Oriented Programming. 389--418.
 
23
 
24
 
25
 
26
27
28
 
29
Flanagan, C. and Freund, S. N. 2004. Type inference against races. In Proceedings of the Static Analysis Symposium. 116--132.
30
 
31
 
32
33
34
35
36
 
37
 
38
39
40
 
41
JavaSoft. 1998. Java Developers Kit, version 1.1. available from http://java.sun.com.
 
42
JavaSoft. 2004. Java Developer's Kit, version 1.5. available from http://java.sun.com.
43
 
44
45
 
46
 
47
Leino, K. R. M., Saxe, J. B., and Stata, R. 1999. Checking Java programs via guarded commands. Tech. Rep. 1999-002, Compaq Systems Research Center, Palo Alto, CA.
48
49
50
51
52
53
54
 
55
 
56
Standard Performance Evaluation Corporation. 2000. SPEC JBB2000. Available from http://www.spec.org/osg/jbb2000/.
 
57
Sterling, N. 1993. Warlock: A static data race analysis tool. In USENIX Winter Technical Conference. 97--106.
 
58
Syme, D. 1997. Proving Java type soundness. Tech. Rep. 427, University of Cambridge Computer Laboratory Technical Report.
 
59
Talpin, J.-P. and Jouvelot, P. 1992. Polymorphic type, region and effect inference. J. Funct. Prog. 2, 3, 245--271.
60
 
61
62
63
 
64
World Wide Web Consortium. 2001. Jigsaw. Available from http://www.w3c.org.
65
 
66

CITED BY  12

Collaborative Colleagues:
Martin Abadi: colleagues
Cormac Flanagan: colleagues
Stephen N. Freund: colleagues