on the program locations in which to induce thread switches
during the program's execution for the purpose of reviling
concurrent bugs. We introduce a model that classifies the
locations as "good", "neutral", and "bad" according to the
effect a thread switch has at each location. Intuitively,
all good locations must be seeded with a thread switch,
while none of the bad locations should be seeded. Using the
model we justify of the use of probabilistic algorithms for
efficient detection of real-life concurrent bugs and explain
why using a non-uniform probability to select the program
location may be superior over the previously used uniform
probability. To validate the correctness of our model we
implemented a scheme that randomly chooses and then seeds a
subset of the program locations with a thread switch. We
predict that since there are bad program locations, bug
finding performance should not monotonically increase with
the more locations we choose. Rather, it should act in a
convex-like manner. We show using experiments that there is
a sweet spot in which the bugs manifest the most and that
this rate goes down with increase or decrease of the chosen
probability.