Thomas Ball, Sebastian Burckhardt, Katherine Coons, Madanlal Musuvathi, and Shaz Qadeer
The choice of where a thread scheduling algorithm preempts one thread in order to execute another is essential to reveal concurrency errors such as atomicity violations, livelocks, and deadlocks. We present a scheduling strategy called preemption sealing that controls where and when a scheduler is disabled from preempting threads during program execution. We demonstrate that this strategy is effective in addressing two key problems in testing industrial-scale concurrent programs: (1) tolerating existing errors in order to find more errors, and (2) composi- tional testing of layered, concurrent systems. We evaluate the effective- ness of preemption sealing, implemented in the Chess tool, for these two scenarios on newly released concurrency libraries for Microsoft’s .NET framework.
|Published in||Conference on Tools and Algorithms for the Construction and Analysis of Systems|
All copyrights reserved by Springer 2007.