Improving Thread-Modular Abstract Interpretation

We give thread-modular non-relational value analyses as abstractions of a local trace semantics. The semantics as well as the analyses are formulated by means of global invariants and side-effecting constraint systems. We show that a generalization of the analysis provided by the static analyzer Goblint as well as a natural improvement of Antoine Miné’s approach can be obtained as instances of this general scheme. We show that these two analyses are incomparable w.r.t. precision and provide a refinement which improves on both precision-wise. We also report on a preliminary experimental comparison of the given analyses on a meaningful suite of benchmarks.

[1]  Pietro Ferrara Static Analysis Via Abstract Interpretation of the Happens-Before Memory Model , 2008, TAP.

[2]  Stephen D. Brookes,et al.  A Semantics for Concurrent Separation Logic , 2004, CONCUR.

[3]  Varmo Vene,et al.  Static race detection for device drivers: The Goblint approach , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).

[4]  Ilya Sergey,et al.  Mechanized verification of fine-grained concurrent programs , 2015, PLDI.

[5]  Daniel Kroening,et al.  Soundness of Data Flow Analyses for Weak Memory Models , 2011, APLAS.

[6]  Alexey Gotsman,et al.  Thread-modular shape analysis , 2007, PLDI '07.

[7]  Peter W. O'Hearn,et al.  Resources, concurrency, and local reasoning , 2007 .

[8]  Peter W. O'Hearn,et al.  Resources, Concurrency and Local Reasoning , 2004, CONCUR.

[9]  Vesal Vojdani,et al.  Static Data Race Analysis of Heap-Manipulating C Programs , 2010 .

[10]  Antoine Miné,et al.  Relational Thread-Modular Static Value Analysis by Abstract Interpretation , 2014, VMCAI.

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

[12]  Sriram Sankaranarayanan,et al.  Fast and Accurate Static Data-Race Detection for Concurrent Programs , 2007, CAV.

[13]  Antoine Miné,et al.  Static Analysis of Run-Time Errors in Embedded Real-Time Parallel C Programs , 2012, Log. Methods Comput. Sci..

[14]  Noam Rinetzky,et al.  Thread-Local Semantics and Its Efficient Sequential Abstractions for Race-Free Programs , 2017, SAS.

[15]  Deepak D'Souza,et al.  Dataflow Analysis for Datarace-Free Programs , 2011, ESOP.

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

[17]  Kalmer Apinis,et al.  Side-Effecting Constraint Systems: A Swiss Army Knife for Program Analysis , 2012, APLAS.

[18]  Stephen Brookes A semantics for concurrent separation logic , 2007, Theor. Comput. Sci..

[19]  Antoine Miné,et al.  Relational Thread-Modular Abstract Interpretation Under Relaxed Memory Models , 2018, APLAS.

[20]  Ignacio Fábregas,et al.  Specifying concurrent programs in separation logic: morphisms and simulations , 2019, Proc. ACM Program. Lang..

[21]  Ilya Sergey,et al.  Communicating State Transition Systems for Fine-Grained Concurrent Resources , 2014, ESOP.

[22]  Antoine Miné,et al.  Precise Thread-Modular Abstract Interpretation of Concurrent Programs Using Relational Interference Abstractions , 2017, VMCAI.

[23]  Antoine Miné,et al.  From Array Domains to Abstract Interpretation Under Store-Buffer-Based Memory Models , 2016, SAS.