Compositional Bitvector Analysis for Concurrent Programs with Nested Locks

We propose a new technique to perform bitvector data flow analysis for concurrent programs. Our algorithm works for concurrent programs with nested locking synchronization. We show that this algorithm computes precise solutions (meet over all paths) to bitvector problems. Moreover, this algorithm is compositional: it first solves a local (sequential) data flow problem, and then efficiently combines these solutions leveraging reachability results on nested locks [6,7]. We have implemented our algorithm on top of an existing sequential data flow analysis tool, and demonstrate that the technique performs and scales well.

[1]  Richard J. Lipton,et al.  Reduction: a method of proving properties of parallel programs , 1975, CACM.

[2]  Jens Knoop,et al.  Parallel Constant Propagation , 1998, Euro-Par.

[3]  Bernhard Steffen,et al.  Constraint-Based Inter-Procedural Analysis of Parallel Programs , 2000, Nord. J. Comput..

[4]  Andreas Podelski,et al.  ACSAR: Software Model Checking with Transfinite Refinement , 2007, SPIN.

[5]  Jan Wen Voung,et al.  Dataflow analysis for concurrent programs using datarace detection , 2008, PLDI '08.

[6]  Brian Campbell,et al.  Amortised Memory Analysis Using the Depth of Data Structures , 2009, ESOP.

[7]  George C. Necula,et al.  CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs , 2002, CC.

[8]  Andreas Podelski,et al.  Efficient algorithms for pre* and post* on interprocedural parallel flow graphs , 2000, POPL '00.

[9]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[10]  Flemming Nielson,et al.  Type and Effect Systems , 1999, Correct System Design.

[11]  Robin Milner,et al.  Theories for the Global Ubiquitous Computer , 2004, FoSSaCS.

[12]  Barton P. Miller,et al.  Detecting Data Races in Parallel Program Executions , 1989 .

[13]  Jens Knoop,et al.  An Automata-Theoretic Approach to Interprocedural Data-Flow Analysis , 1999, FoSSaCS.

[14]  Tayssir Touili,et al.  A Decision Procedure for Detecting Atomicity Violations for Communicating Processes with Locks , 2009, SPIN.

[15]  SalcianuAlexandru,et al.  Pointer and escape analysis for multithreaded programs , 2001 .

[16]  Vineet Kahlon,et al.  Reasoning About Threads Communicating via Locks , 2005, CAV.

[17]  David Pritchard,et al.  Euro-Par’98 Parallel Processing , 1998, Lecture Notes in Computer Science.

[18]  Jens Krinke,et al.  Static slicing of threaded programs , 1998, PASTE '98.

[19]  Bernhard Steffen,et al.  Parallelism for Free : E cient and Optimal Bitvector Analyses for Parallel Programs , 1996 .

[20]  Ernst-Rüdiger Olderog,et al.  Correct System Design, Recent Insight and Advances, (to Hans Langmaack on the occasion of his retirement from his professorship at the University of Kiel) , 1999 .

[21]  Markus Müller-Olm,et al.  Conflict Analysis of Programs with Procedures, Dynamic Thread Creation, and Monitors , 2008, SAS.

[22]  Vineet Kahlon,et al.  On the analysis of interacting pushdown systems , 2007, POPL '07.

[23]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[24]  George S. Avrunin,et al.  A conservative data flow algorithm for detecting all pairs of statements that may happen in parallel , 1998, SIGSOFT '98/FSE-6.

[25]  George S. Avrunin,et al.  An efficient algorithm for computing MHP information for concurrent Java programs , 1999, ESEC/FSE-7.

[26]  Martin C. Rinard,et al.  Pointer and escape analysis for multithreaded programs , 2001, PPoPP '01.

[27]  Barbara G. Ryder,et al.  Non-concurrency analysis , 1993, PPOPP '93.

[28]  Somesh Jha,et al.  Weighted pushdown systems and their application to interprocedural dataflow analysis , 2003, Sci. Comput. Program..