Linearizability: a correctness condition for concurrent objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
The existence of refinement mappings
Theoretical Computer Science
Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
The serializability of concurrent database updates
Journal of the ACM (JACM)
Correction of a Memory Management Method for Lock-Free Data Structures
Correction of a Memory Management Method for Lock-Free Data Structures
DCAS is not a silver bullet for nonblocking algorithm design
Proceedings of the sixteenth annual ACM symposium on Parallelism in algorithms and architectures
VYRD: verifYing concurrent programs by runtime refinement-violation detection
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Proving correctness of highly-concurrent linearisable objects
Proceedings of the eleventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Concurrent programming without locks
ACM Transactions on Computer Systems (TOCS)
CheckFence: checking consistency of concurrent data types on relaxed memory models
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs
IEEE Transactions on Computers
Velodrome: a sound and complete dynamic atomicity checker for multithreaded programs
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
FastTrack: efficient and precise dynamic race detection
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
LiteRace: effective sampling for lightweight data-race detection
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
GAMBIT: effective unit testing for concurrency libraries
Proceedings of the 15th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
VyrdMC: Driving Runtime Refinement Checking with Model Checkers
Electronic Notes in Theoretical Computer Science (ENTCS)
Finding and reproducing Heisenbugs in concurrent programs
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems 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
Verifying linearizability with hindsight
Proceedings of the 29th ACM SIGACT-SIGOPS symposium on Principles of distributed computing
Laws of order: expensive synchronization in concurrent algorithms cannot be eliminated
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Specifying and checking semantic atomicity for multithreaded programs
Proceedings of the sixteenth international conference on Architectural support for programming languages and operating systems
Finding complex concurrency bugs in large multi-threaded applications
Proceedings of the sixth conference on Computer systems
Scalable automatic linearizability checking
Proceedings of the 33rd International Conference on Software Engineering
NDSeq: runtime checking for nondeterministic sequential specifications of parallel correctness
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Change-aware preemption prioritization
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Liveness-preserving atomicity abstraction
ICALP'11 Proceedings of the 38th international conference on Automata, languages and programming - Volume Part II
Testing atomicity of composed concurrent operations
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Underspecified harnesses and interleaved bugs
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Automatically proving linearizability
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Symbolic consistency checking of OpenMp parallel programs
Proceedings of the 13th ACM SIGPLAN/SIGBED International Conference on Languages, Compilers, Tools and Theory for Embedded Systems
Fully automatic and precise detection of thread safety violations
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Concurrent library correctness on the TSO memory model
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
BALLERINA: automatic generation and clustering of efficient random unit tests for multithreaded code
Proceedings of the 34th International Conference on Software Engineering
How to prove algorithms linearisable
CAV'12 Proceedings of the 24th international conference on Computer Aided Verification
Symbolic learning of component interfaces
SAS'12 Proceedings of the 19th international conference on Static Analysis
Verifying concurrent programs against sequential specifications
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
An integrated specification and verification technique for highly concurrent data structures
TACAS'13 Proceedings of the 19th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Hybrid learning: interface generation through static, dynamic, and symbolic analysis
Proceedings of the 2013 International Symposium on Software Testing and Analysis
CDSchecker: checking concurrent data structures written with C/C++ atomics
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
An epistemic perspective on consistency of concurrent computations
CONCUR'13 Proceedings of the 24th international conference on Concurrency Theory
Hi-index | 0.00 |
Modular development of concurrent applications requires thread-safe components that behave correctly when called concurrently by multiple client threads. This paper focuses on linearizability, a specific formalization of thread safety, where all operations of a concurrent component appear to take effect instantaneously at some point between their call and return. The key insight of this paper is that if a component is intended to be deterministic, then it is possible to build an automatic linearizability checker by systematically enumerating the sequential behaviors of the component and then checking if each its concurrent behavior is equivalent to some sequential behavior. We develop this insight into a tool called Line-Up, the first complete and automatic checker for deterministic linearizability. It is complete, because any reported violation proves that the implementation is not linearizable with respect to any sequential deterministic specification. It is automatic, requiring no manual abstraction, no manual specification of semantics or commit points, no manually written test suites, no access to source code. We evaluate Line-Up by analyzing 13 classes with a total of 90 methods in two versions of the .NET Framework 4.0. The violations of deterministic linearizability reported by Line-Up exposed seven errors in the implementation that were fixed by the development team.