|
ABSTRACT
Assuring and evolving concurrent programs requires understanding the concurrency-related design decisions used in their implementation. In Java-style shared-memory programs, these decisions include which state is shared, how access to it is regulated, the roles of threads, and the policy that distinguishes desired concurrency from race conditions. These decisions rarely have purely local manifestations in code.In this paper, we use case studies from production Java code to explore the costs and benefits of a new annotation-based approach for expressing design intent. Our intent is both to assist in establishing "thread safety" attributes in code and to support tools that safely restructure code---for example, shifting critical section boundaries or splitting locks. The annotations we use express "mechanical" properties such as lock-state associations, uniqueness of references, and encapsulation of state into named aggregations. Our analyses revealed race conditions in our case study samples, drawn from open-source projects and library code.The novel technical features of this approach include (1) flexible encapsulation via aggregations of state that can cross object boundaries, (2) the association of locks with state aggregations, (3) policy descriptions for allowable method interleavings, and (4) the incremental process for inserting, validating, and exploiting annotations.
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
|
Apache Software Foundation. Log4j project. http://jakarta.apache.org/log4j/docs/index.html. Current Jan. 2002.
|
 |
3
|
David F. Bacon , Robert E. Strom , Ashis Tarafdar, Guava: a dialect of Java without data races, Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.382-400, October 2000, Minneapolis, Minnesota, United States
|
| |
4
|
|
| |
5
|
J. Bloch. Proposed final draft, JSR-41: A simple assertion facility for the Java programming language. http://jcp.org/jsr/detail/41.jsp, June 2001. Current Jan. 2002.
|
| |
6
|
|
 |
7
|
Chandrasekhar Boyapati , Martin Rinard, A parameterized type system for race-free Java programs, Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, p.56-69, October 14-18, 2001, Tampa Bay, FL, USA
|
| |
8
|
|
| |
9
|
|
| |
10
|
|
 |
11
|
David G. Clarke , John M. Potter , James Noble, Ownership types for flexible alias protection, Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.48-64, October 18-22, 1998, Vancouver, British Columbia, Canada
|
 |
12
|
|
| |
13
|
D. L. Detlefs, K. R. M. Leino, G. Nelson, and J. B. Saxe. Extended static checking. Research Report 159, Compaq SRC, Dec. 1998.
|
 |
14
|
David Evans , John Guttag , James Horning , Yang Meng Tan, LCLint: a tool for using specifications to check code, Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering, p.87-96, December 06-09, 1994, New Orleans, Louisiana, United States
|
| |
15
|
|
| |
16
|
|
 |
17
|
|
 |
18
|
|
| |
19
|
David Garlan , Robert Monroe , David Wile, Acme: an architecture description interchange language, Proceedings of the 1997 conference of the Centre for Advanced Studies on Collaborative research, p.7, November 10-13, 1997, Toronto, Ontario, Canada
|
 |
20
|
|
| |
21
|
A. Greenhouse. Bug 1507: Improper synchronization in AsyncAppender and Category causes race conditions. http://nagoya.apache.org/bugzilla/, Apr. 2001. Current Jan. 2002.
|
| |
22
|
|
| |
23
|
C. A. R. Hoare. Towards a theory of parallel programming. In C. A. R. Hoare and R. H. Perrot, editors, Oper. Syst. Techniques. Academic Press, 1971.
|
| |
24
|
L. Lamport. The 'Hoare logic' of concurrent programs. Acta Inf., 14(1), 1980.
|
| |
25
|
|
| |
26
|
G. T. Leavens, A. L. Baker, and C. Ruby. JML: A notation for detailed design. In H. Kilov, B. Rumpe, and I. Simmonds, editors, Behavioral Specifications of Businesses and Systems. Kluwer, 1999.
|
 |
27
|
K. Rustan M. Leino, Data groups: specifying the modification of extended state, Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.144-153, October 18-22, 1998, Vancouver, British Columbia, Canada
|
| |
28
|
K. R. M. Leino, G. Nelson, and J. B. Saxe. ESC/Java user's manual. Technical Note 2000-002, Compaq SRC, Oct. 2000.
|
 |
29
|
|
| |
30
|
J. M. Lucassen. Types and Effects: Towards the Integration of Functional and Imperative Programming. PhD thesis, MIT, Sept. 1987.
|
| |
31
|
|
 |
32
|
James Noble , David Holmes , John Potter, Exclusion for composite objects, Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.13-28, October 2000, Minneapolis, Minnesota, United States
|
| |
33
|
S. Owicki and D. Gries. An axiomatic proof technique for parallel programs I. Acta Inf., 6(4), 1976.
|
| |
34
|
|
 |
35
|
|
 |
36
|
|
CITED BY 7
|
|
|
|
|
|
|
|
Amit Sasturkar , Rahul Agarwal , Liqiang Wang , Scott D. Stoller, Automated type-based analysis of data races and atomicity, Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming, June 15-17, 2005, Chicago, IL, USA
|
|
|
|
|
|
|
|
|
|
|
|
|
|