Detecting race conditions in large programs

The race condition checker \rcc{} statically identifies potential races in concurrent Java programs. This paper describes improvements to \rcc{} that enable it to be used on large, realistic programs. These improvements include not only extensions to the underlying analysis, but also an annotation inference algorithm and a user interface to help programmers understand warnings generated by the tool. Experience with programs containing up to 500,000 lines of code indicate that it is an effective tool for identifying races in large-scale software systems.

[1]  Leslie Lamport,et al.  Model Checking TLA+ Specifications , 1999, CHARME.

[2]  Flemming Nielson,et al.  Type and Behaviour Reconstruction for Higher-Order Concurrent Programs , 1997, J. Funct. Program..

[3]  Hassen Saïdi,et al.  Construction of Abstract State Graphs with PVS , 1997, CAV.

[4]  Gregory John Michaelson,et al.  Improved Type Error Reporting , 2000 .

[5]  K. Rustan M. Leino,et al.  Annotation inference for modular checkers , 2001, Inf. Process. Lett..

[6]  Jong-Deok Choi,et al.  Escape analysis for Java , 1999, OOPSLA '99.

[7]  Emin Gün Sirer,et al.  Static Analyses for Eliminating Unnecessary Synchronization from Java Programs , 1999, SAS.

[8]  Thomas Kistler,et al.  WebL - A Programming Language for the Web , 1998, Comput. Networks.

[9]  Nicholas Sterling,et al.  WARLOCK - A Static Data Race Analysis Tool , 1993, USENIX Winter.

[10]  BlanchetBruno Escape analysis for object-oriented languages , 1999 .

[11]  K. Rustan M. Leino,et al.  Checking Java Programs via Guarded Commands , 1999, ECOOP Workshops.

[12]  Andrew D. Birrell,et al.  An Introduction to Programming with Threads , 1996 .

[13]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[14]  Urs Hölzle,et al.  Removing unnecessary synchronization in Java , 1999, OOPSLA '99.

[15]  Martín Abadi,et al.  Types for Safe Locking , 1999, ESOP.

[16]  Martin C. Rinard,et al.  Compositional pointer and escape analysis for Java programs , 1999, OOPSLA '99.

[17]  Pierre Jouvelot,et al.  Algebraic reconstruction of types and effects , 1991, POPL '91.

[18]  Bruno Blanchet,et al.  Escape analysis for object-oriented languages: application to Java , 1999, OOPSLA '99.

[19]  Pierre Jouvelot,et al.  Polymorphic type, region and effect inference , 1992, Journal of Functional Programming.

[20]  Mads Tofte,et al.  Implementation of the typed call-by-value λ-calculus using a stack of regions , 1994, POPL '94.

[21]  Flemming Nielson Annotated type and effect systems , 1996, CSUR.

[22]  K. Rustan M. Leino,et al.  Houdini, an Annotation Assistant for ESC/Java , 2001, FME.

[23]  Stephen N. Freund,et al.  Type-based race detection for Java , 2000, PLDI '00.

[24]  Mitchell Wand Finding the source of type errors , 1986, POPL '86.

[25]  Luca Cardelli,et al.  Mobile Ambient Synchronization , 1997 .

[26]  Mads Tofte,et al.  Region-based Memory Management , 1997, Inf. Comput..

[27]  David K. Gifford,et al.  Polymorphic effect systems , 1988, POPL '88.