2011 · 82 citations · 19 references
ComputingComputer EngineeringComputer ScienceFormal MethodsParallel ComputingPenetration TestingConcurrency AnalysisConcurrency ControlConcurrent ProgrammingSoftware TestingAtomic OperationsAtomicityAtomicity ViolationsConcurrency Bug DetectionConcurrency BugsConcurrent Program TestingInterleavingInterleaving Techniques
We address the problem of testing atomicity of composed concurrent operations. Concurrent libraries help programmers exploit parallel hardware by providing scalable concurrent operations with the illusion that each operation is executed atomically. However, client code often needs to compose atomic operations in such a way that the resulting composite operation is also atomic while preserving scalability. We present a novel technique for testing the atomicity of client code composing scalable concurrent operations. The challenge in testing this kind of client code is that a bug may occur very rarely and only on a particular interleaving with a specific thread configuration. Our technique is based on modular testing of client code in the presence of an adversarial environment; we use commutativity specifications to drastically reduce the number of executions explored to detect a bug. We implemented our approach in a tool called COLT, and evaluated its effectiveness on a range of 51 real-world concurrent Java programs. Using COLT, we found 56 atomicity violations in Apache Tomcat, Cassandra, MyFaces Trinidad, and other applications.
19
Finding and Reproducing Heisenbugs in Concurrent Programs
2008 · 537 citations
Cormac Flanagan, Stephen N. Freund · 2004 · 411 citations
Specification and Design of (Parallel) Programs
Cliff B. Jones · IFIP Congress · 1983 · 397 citations