Static Analysis Via Abstract Interpretation of the Happens-Before Memory Model

Memory models define which executions of multithreaded programs are legal. This paper formalises in a fixpoint form the happens-before memory model, an over-approximation of the Java one, and it presents a static analysis using abstract interpretation. Our approach is completely independent of both the programming language and the analysed property. It also appears to be a promising framework to define, compare and statically analyse other memory models.

[1]  Barton P. Miller,et al.  What are race conditions?: Some issues and formalizations , 1992, LOPL.

[2]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[3]  Ganesh Gopalakrishnan,et al.  Rigorous Concurrency Analysis of Multithreaded Programs , 2003 .

[4]  Tulika Mitra,et al.  Specifying multithreaded Java semantics for program verification , 2002, ICSE '02.

[5]  Serge Chaumette,et al.  A formal model of the java multithreading system and its validation on a known problem , 2001, Proceedings 15th International Parallel and Distributed Processing Symposium. IPDPS 2001.

[6]  Leslie Lamport,et al.  How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs , 2016, IEEE Transactions on Computers.

[7]  Berthold K. P. Horn Robot vision , 1986, MIT electrical engineering and computer science series.

[8]  Patrick Cousot,et al.  Systematic design of program analysis frameworks , 1979, POPL.

[9]  Theo C. Ruys,et al.  MMC: the Mono Model Checker , 2007, Bytecode@ETAPS.

[10]  Jeremy Manson,et al.  The Java memory model , 2005, POPL '05.

[11]  Alexander Knapp,et al.  The Java Memory Model: Operationally, Denotationally, Axiomatically , 2007, ESOP.

[12]  Ecma,et al.  Common Language Infrastructure (CLI) , 2001 .

[13]  Martin C. Rinard,et al.  Analysis of Multithreaded Programs , 2001, SAS.

[14]  Antoine Miné,et al.  The octagon abstract domain , 2001, High. Order Symb. Comput..

[15]  Andrei Alexandrescu,et al.  Memory model for multithreaded C + + : Issues , 2005 .

[16]  Azadeh Farzan,et al.  Causal Dataflow Analysis for Concurrent Programs , 2007, TACAS.

[17]  Jorge A. Navas,et al.  An efficient, parametric fixpoint algorithm forincremental analysis of java bytecode , 2006 .

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

[19]  William Pugh The Java memory model is fatally flawed , 2000 .

[20]  Jorge A. Navas,et al.  An Efficient, Parametric Fixpoint Algorithm for Analysis of Java Bytecode , 2007, Bytecode@ETAPS.

[21]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

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

[23]  Radha Jagadeesan,et al.  A theory of memory models , 2007, PPOPP.

[24]  Edward A. Lee The problem with threads , 2006, Computer.

[25]  Doron A. Peled,et al.  Ten Years of Partial Order Reduction , 1998, CAV.

[26]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[27]  John C. Reynolds Toward a Grainless Semantics for Shared-Variable Concurrency , 2004, FSTTCS.

[28]  Tobias Nipkow,et al.  FM 2006: Formal Methods, 14th International Symposium on Formal Methods, Hamilton, Canada, August 21-27, 2006, Proceedings , 2006, FM.

[29]  Thuan Quang Huynh,et al.  A Memory Model Sensitive Checker for C# , 2006, FM.

[30]  James R. Larus,et al.  Software and the Concurrency Revolution , 2005, ACM Queue.

[31]  Pietro Ferrara,et al.  A fast and precise analysis for data race detection , 2008 .

[32]  Kousha Etessami,et al.  Verifying Probabilistic Procedural Programs , 2004, FSTTCS.

[33]  Antoine Mid The Octagon Abstract Domain , 2001 .