Linearizability: a correctness condition for concurrent objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Practical Nonblocking Queue Algorithm Using Compare-and-Swap
ICPADS '00 Proceedings of the Seventh International Conference on Parallel and Distributed Systems
Distributed Computing: Fundamentals, Simulations and Advanced Topics
Distributed Computing: Fundamentals, Simulations and Advanced Topics
Formal Verification of an Array-Based Nonblocking Queue
ICECCS '05 Proceedings of the 10th IEEE International Conference on Engineering of Complex Computer Systems
SNZI: scalable NonZero indicators
Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing
A Scalable Lock-Free Stack Algorithm and its Verification
SEFM '07 Proceedings of the Fifth IEEE International Conference on Software Engineering and Formal Methods
Heap Decomposition for Concurrent Shape Analysis
SAS '08 Proceedings of the 15th international symposium on Static Analysis
Thread Quantification for Concurrent Shape Analysis
CAV '08 Proceedings of the 20th international conference on Computer Aided Verification
A Representative Function Approach to Symmetry Exploitation for CSP Refinement Checking
ICFEM '08 Proceedings of the 10th International Conference on Formal Methods and Software Engineering
Shape-Value Abstraction for Verifying Linearizability
VMCAI '09 Proceedings of the 10th International Conference on Verification, Model Checking, and Abstract Interpretation
PAT: Towards Flexible Verification under Fairness
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
Experience with Model Checking Linearizability
Proceedings of the 16th International SPIN Workshop on Model Checking Software
Model Checking Linearizability via Refinement
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Verifying Concurrent Data Structures by Simulation
Electronic Notes in Theoretical Computer Science (ENTCS)
Comparison under abstraction for verifying linearizability
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Cartesian partial-order reduction
Proceedings of the 14th international SPIN conference on Model checking software
Line-up: a complete and automatic linearizability checker
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Formal verification of a lazy concurrent list-based set algorithm
CAV'06 Proceedings of the 18th international conference on Computer Aided Verification
Automatically proving linearizability
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Model checking of linearizability of concurrent list implementations
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Parameterized model checking of fine grained concurrency
SPIN'12 Proceedings of the 19th international conference on Model Checking Software
Verifying concurrent programs against sequential specifications
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
Hi-index | 0.00 |
Concurrent data structures are widely used but notoriously difficult to implement correctly. Linearizability is one main correctness criterion of concurrent data structure algorithms. It guarantees that a concurrent data structure appears as a sequential one to users. Unfortunately, linearizability is challenging to verify since a subtle bug may only manifest in a small portion of numerous thread interleavings. Model checking is therefore a potential primary candidate. However, current approaches of model checking linearizability suffer from severe state space explosion problem and are thus restricted in handling few threads and/or operations. This paper describes a scalable, fully automatic and general linearizability checking method based on [16] by incorporating symmetry and partial order reduction techniques. Our insights emerged from the observation that the similarity of threads using concurrent data structures causes model checking to generate large redundant equivalent portions of the state space, and the loose coupling of threads causes it to explore lots of unnecessary transition execution orders. We prove that symmetry reduction and partial order reduction can be combined in our approach and integrate them into the model checking algorithm. We demonstrate its efficiency using a number of real-world concurrent data structure algorithms.