Formal Verification of a Lock-Free Stack with Hazard Pointers

A significant problem of lock-free concurrent data structures in an environment without garbage collection is to ensure safe memory reclamation of objects that are removed from the data structure. An elegant solution to this problem is Michael's hazard pointers method. The formal verification of concurrent algorithms with hazard pointers is yet challenging. This work presents a mechanized proof of the major correctness and progress aspects of a lock-free stack with hazard pointers.

[1]  John Derrick,et al.  Verifying Linearisability with Potential Linearisation Points , 2011, FM.

[2]  Kurt Stenzel,et al.  Structured Specifications and Interactive Proofs with KIV , 1998 .

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

[4]  Wolfgang Reif,et al.  Interactive Verification of Concurrent Systems using Symbolic Execution , 2010, LPAR Workshops.

[5]  Wolfgang Bibel,et al.  Automated Deduction - A Basis for Applications : Volume II: Systems and Implementation Techniques , 1998 .

[6]  W. Bibel,et al.  Automated deduction : a basis for applications , 1998 .

[7]  David de Frutos-Escrig,et al.  Formal Techniques for Networked and Distributed Systems – FORTE 2004 , 2004, Lecture Notes in Computer Science.

[8]  Richard Banach,et al.  Book Review: "Concurrency Verification: Introduction to Compositional and Non-compositional Methods" by Willem-Paul de Roever, Frank de Boer, Ulrich Hanneman, Jozef Hooman, Yassine Lakhnech, Mannes Poel and Job Zwiers (eds.) , 2003, J. Log. Comput..

[9]  Maged M. Michael Hazard pointers: safe memory reclamation for lock-free objects , 2004, IEEE Transactions on Parallel and Distributed Systems.

[10]  Wolfgang Reif,et al.  Proving linearizability with temporal logic , 2009, Formal Aspects of Computing.

[11]  Ben C. Moszkowski,et al.  Executing temporal logic programs , 1986, Seminar on Concurrency.

[12]  Paul Gastin,et al.  CONCUR 2010 - Concurrency Theory, 21th International Conference, CONCUR 2010, Paris, France, August 31-September 3, 2010. Proceedings , 2010, CONCUR.

[13]  Calton Pu,et al.  A Lock-Free Multiprocessor OS Kernel , 1992, OPSR.

[14]  Yu Zhang,et al.  Reasoning about Optimistic Concurrency Using a Program Logic for History , 2010, CONCUR.

[15]  Jozef Hooman,et al.  Concurrency Verification: Introduction to Compositional and Noncompositional Methods , 2001, Cambridge Tracts in Theoretical Computer Science.

[16]  Wolfgang Reif,et al.  Temporal Logic Verification of Lock-Freedom , 2010, MPC.

[17]  Rod M. Burstall,et al.  Program Proving as Hand Simulation with a Little Induction , 1974, IFIP Congress.

[18]  Gidon Ernst,et al.  Interleaved Programs and Rely-Guarantee Reasoning with ITL , 2011, 2011 Eighteenth International Symposium on Temporal Representation and Reasoning.

[19]  Peter W. O'Hearn,et al.  Modular verification of a non-blocking stack , 2007, POPL '07.

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

[21]  Mark Moir,et al.  Formal Verification of a Practical Lock-Free Queue Algorithm , 2004, FORTE.

[22]  W. Reif,et al.  Verifying a Stack with Hazard Pointers in Temporal Logic , 2011 .