Analysis Techniques to Detect Concurrency Errors

presented at the UPMARC Multicore Computing Summer School 2014

Cormac Flanagan, UC Sana Cruz
Stephen Freund, Williams College


Multithreaded software systems effectively exploit multi-core and multi-processor machines. However developing reliable multithreaded software is extremely difficult, due to problems caused by unexpected interference between concurrent threads. Given their non-deterministic, scheduler-dependent nature, bugs caused by unintended thread interference are notoriously difficult to detect, reproduce, and eliminate. At the same time, their presence can have severe consequences. This tutorial explores analysis techniques to find concurrency errors in large-scale software systems. We cover the theoretical underpinnings, implementation techniques, and reusable infrastructure used to build state-of-the-art analysis tools for verifying a variety of important concurrency properties, such as data race freedom, atomicity or serializability, cooperability, and determinism.

Part 1     Part 2

This work was supported by the NSF under grants CNS-0905650, CCF-1116883, and CCF-1116825.