Producing Scheduling That Causes Concurrent Programs to Fail
A noise maker is a tool that seeds a concurrent program with conditional synchronization primitives (such as yield()) for the purpose of increasing the likelihood that a bug manifest itself. This work explores the theory and practice of choosing where in the program to induce such thread switches at runtime. The authors introduce a novel fault model that classifies locations as "Good", "Neutral", or "Bad," based on the effect of a thread switch at the location. Using the model the authors explore the terms in which efficient search for real-life concurrent bugs can be carried out.