Predictable and Progressive Testing of Multithreaded Code
by Thomas Ball, Sebastian Burckhardt, Peli de Halleux, Madan Musuvathi, and Shaz Qadeer
Hardware advances are exposing more programmers to the world of parallel and concurrent programming, which is the only way to reap multicore processors' full performance potential. Unfortunately, concurrent programs are difficult to write, test, and debug. Furthermore, although a concurrent program should execute correctly on every thread schedule possible in the underlying operating system, standard testing covers just a fraction of these schedules. Traditional testing fails to cover many schedules, leaving them for customers in the field to discover and leading to so-called Heisenbugs (bugs that change behavior or disappear upon probing or attempts to isolate them, making them difficult to reproduce during testing). Read More »