Testing atomicity of composed concurrent operations

Ohad Shacham, Nathan Bronson, Alex Aiken, Mooly Sagiv, Martin Vechev, Eran Yahav

Research output: Contribution to journalArticlepeer-review

Abstract

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 realworld concurrent Java programs. Using COLT, we found 56 atomicity violations in Apache Tomcat, Cassandra, MyFaces Trinidad, and other applications. Categories and Subject Descriptors D.2.5 [Testing and Debugging]; D.1.3 [Concurrent Programming] General Terms Verification.

Original languageEnglish
Pages (from-to)51-64
Number of pages14
JournalACM SIGPLAN Notices
Volume46
Issue number10
DOIs
StatePublished - Oct 2011

Keywords

  • Collections
  • Composed operations
  • Concurrency
  • Linearizability
  • Testing

Fingerprint

Dive into the research topics of 'Testing atomicity of composed concurrent operations'. Together they form a unique fingerprint.

Cite this