Analysis Techniques to Detect Concurrency Errors
presented at the UPMARC Multicore Computing Summer School 2014
Cormac Flanagan, UC Sana Cruz
Stephen Freund, Williams College
Abstract
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.
This work was supported by the NSF
under grants CNS-0905650, CCF-1116883, and CCF-1116825.