private void AssertState(int numReleasers, int numStallers, int numWaiters, ThreadClass[] threads, DocumentsWriterStallControl ctrl) { int millisToSleep = 100; while (true) { if (ctrl.HasBlocked() && ctrl.Healthy) { for (int n = numReleasers + numStallers; n < numReleasers + numStallers + numWaiters; n++) { if (ctrl.IsThreadQueued(threads[n])) { if (millisToSleep < 60000) { Thread.Sleep(millisToSleep); millisToSleep *= 2; break; } else { Assert.Fail("control claims no stalled threads but waiter seems to be blocked "); } } } break; } else { break; } } }