2015 · 10 citations · 20 references
ComputingComputer EngineeringComputer ScienceComputer ArchitectureFault-tolerant SystemsProgramming LanguagesConcurrency AnalysisConcurrency ControlConcurrent ProgrammingData SynchronizationMemory ConsistencyMemory Consistency ModelsConcurrency BugsFinite-state VerificationMemory Access PatternsMemory Model SemanticsPattern SynthesisRelaxed Memory ModelsSynchronizationSynchronization Error Detection
We address the problem of synthesizing efficient and correct synchronization for programs running under the C++ relaxed memory model. Given a finite-state program P and a safety property S such that P satisfies S under a sequentially consistent (SC) memory model, our approach automatically eliminates concurrency errors in P due to the relaxed memory model, by creating a new program P with additional synchronization. Our approach works by automatically exploring the space of programs that can be created from P by adding synchronization operations. To explore this (vast) space, our algorithm: (i) explores bounded error traces to detect memory access patterns that can occur under the C++ memory model but not under SC, and (ii) eliminates these error traces by adding appropriate synchronization operations. We implemented our approach using CDSCHECKER as an oracle for detecting error traces and Z3 to symbolically explore the space of possible solutions. Our tool successfully synthesized synchronization operations for several challenging concurrent algorithms, including a state of the art Read-Copy-Update (RCU) algorithm.
20
Myths about the mutual exclusion problem
Gary L. Peterson · Information Processing Letters · 1981 · 548 citations
Mark Batty, Scott Owens, Susmit Sarkar et al. · 2011 · 267 citations
Mark Batty, Scott Owens, Susmit Sarkar et al. · ACM SIGPLAN Notices · 2011 · 251 citations