Effect Summaries for Thread-Modular Analysis

We propose a novel guess-and-check principle to increase the efficiency of thread-modular verification of lock-free data structures. We build on a heuristic that guesses candidates for stateless effect summaries of programs by searching the code for instances of a copy-and-check programming idiom common in lock-free data structures. These candidate summaries are used to compute the interference among threads in linear time. Since a candidate summary need not be a sound effect summary, we show how to fully automatically check whether the precision of candidate summaries is sufficient. We can thus perform sound verification despite relying on an unsound heuristic. We have implemented our approach and found it up to two orders of magnitude faster than existing ones.

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

[2]  Omer Subasi,et al.  Simplifying Linearizability Proofs with Reduction and Abstraction , 2010, TACAS.

[3]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[4]  Cormac Flanagan,et al.  Thread-Modular Model Checking , 2003, SPIN.

[5]  John Derrick,et al.  A Sound and Complete Proof Technique for Linearizability of Concurrent Data Structures , 2014, TOCL.

[6]  Antoine Miné,et al.  Static Analysis of Run-Time Errors in Embedded Critical Parallel C Programs , 2011, ESOP.

[7]  Cliff B. Jones,et al.  Tentative steps toward a development method for interfering programs , 1983, TOPL.

[8]  Bengt Jonsson Using refinement calculus techniques to prove linearizability , 2012, Formal Aspects of Computing.

[9]  Viktor Vafeiadis,et al.  A Marriage of Rely/Guarantee and Separation Logic , 2007, CONCUR.

[10]  Lukás Holík,et al.  Pointer Race Freedom , 2016, VMCAI.

[11]  Maged M. Michael,et al.  Nonblocking Algorithms and Preemption-Safe Locking on Multiprogrammed Shared Memory Multiprocessors , 1998, J. Parallel Distributed Comput..

[12]  Roman Manevich,et al.  Abstract Transformers for Thread Correlation Analysis , 2009, APLAS.

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

[14]  Philippa Gardner,et al.  TaDA: A Logic for Time and Data Abstraction , 2014, ECOOP.

[15]  Joël Ouaknine,et al.  Tractable Reasoning in a Fragment of Separation Logic , 2011, CONCUR.

[16]  Hongseok Yang,et al.  Verifying Concurrent Memory Reclamation Algorithms with Grace , 2013, ESOP.

[17]  Viktor Vafeiadis,et al.  Shape-Value Abstraction for Verifying Linearizability , 2008, VMCAI.

[18]  Serdar Tasiran,et al.  A calculus of atomic actions , 2009, POPL '09.

[19]  Viktor Vafeiadis Automatically Proving Linearizability , 2010, CAV.

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

[21]  Viktor Vafeiadis,et al.  RGSep Action Inference , 2010, VMCAI.