Preemption Sealing for Efficient Concurrency Testing

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) compositional testing of layered, concurrent

systems. We evaluate the effectiveness of preemption sealing,

implemented in the CHESS tool, for these two scenarios on newly

released concurrency libraries for Microsoft's .NET framework.

PDF file


> Publications > Preemption Sealing for Efficient Concurrency Testing