Modular Verification of Concurrency-Aware Linearizability

Linearizability is the de facto correctness condition for concurrent objects. Informally, linearizable objects provide the illusion that each operation takes effect instantaneously at a unique point in time between its invocation and response. Hence, by design, linearizability cannot describe behaviors of concurrency-aware concurrent objects CA-objects, objects in which several overlapping operations "seem to take effect simultaneously". In this paper, we introduce concurrency-aware linearizability CAL, a generalized notion of linearizability which allows to formally describe the behavior of CA-objects. Based on CAL, we develop a thread- and procedure-modular verification technique for reasoning about CA-objects and their clients. Using our new technique, we present the first proof of linearizability of the elimination stack of Hendler et al.i¾?[10] in which the stack's elimination subcomponent, which is a general-purpose CA-object, is specified and verified independently of its particular usage by the stack.

[1]  Noam Rinetzky,et al.  Brief announcement: concurrency-aware linearizability , 2014, PODC '14.

[2]  Viktor Vafeiadis,et al.  Concurrent Abstract Predicates , 2010, ECOOP.

[3]  Lars Birkedal,et al.  Impredicative Concurrent Abstract Predicates , 2014, ESOP.

[4]  Thomas A. Henzinger,et al.  Automatic Linearizability Proofs of Concurrent Objects with Cooperating Updates , 2013, CAV.

[5]  Lars Birkedal,et al.  Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning , 2015, POPL.

[6]  Peter W. O'Hearn,et al.  Local Reasoning about Programs that Alter Data Structures , 2001, CSL.

[7]  William N. Scherer,et al.  Scalable synchronous queues , 2006, PPoPP '06.

[8]  William N. Scherer,et al.  A Scalable Elimination-based Exchange Channel , 2005 .

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

[10]  Nir Shavit,et al.  Scalable Flat-Combining Based Synchronous Queues , 2010, DISC.

[11]  Ilya Sergey,et al.  Specifying and Verifying Concurrent Algorithms with Histories and Subjectivity , 2014, ESOP.

[12]  Eli Gafni,et al.  Immediate atomic snapshots and fast renaming , 1993, PODC '93.

[13]  Michel Raynal,et al.  Specifying Concurrent Problems: Beyond Linearizability , 2015, ArXiv.

[14]  Cliff B. Jones,et al.  Specification and Design of (Parallel) Programs , 1983, IFIP Congress.

[15]  Nir Shavit,et al.  Elimination Trees and the Construction of Pools and Stacks , 1997, Theory of Computing Systems.

[16]  Lauretta O. Osho,et al.  Axiomatic Basis for Computer Programming , 2013 .

[17]  William N. Scherer,et al.  Nonblocking Concurrent Data Structures with Condition Synchronization , 2004, DISC.

[18]  Yehuda Afek,et al.  Fast and scalable rendezvousing , 2013, Distributed Computing.

[19]  Viktor Vafeiadis,et al.  Modular fine-grained concurrency verification , 2008 .

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

[21]  Mark Moir,et al.  Using elimination to implement scalable and lock-free FIFO queues , 2005, SPAA '05.

[22]  Nir Shavit,et al.  A scalable lock-free stack algorithm , 2004, SPAA '04.

[23]  Michel Raynal,et al.  Specifying Concurrent Problems: Beyond Linearizability and up to Tasks - (Extended Abstract) , 2015, DISC.

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

[25]  Matthew S. Bauer A PSPACE-complete first-order fragment of computability logic , 2012, ACM Trans. Comput. Log..

[26]  Gil Neiger,et al.  Set-linearizability , 1994, PODC '94.

[27]  Peter W. O'Hearn,et al.  Abstraction for concurrent objects , 2009, Theor. Comput. Sci..