Andreas Raab writes:
Of course, if I'd ever learn how to spell "timeout" correctly, I might find out that that's not the problem. Back to the drawing board... (but I'm still not convinced that the problem isn't somewhere in the nested unwind-protect stuff).
It definately looks like it's caused by the changes to Delay>>wait.
wait "Schedule this Delay, then wait on its semaphore. The current process will be suspended for the amount of time specified when this Delay was created."
self schedule. [delaySemaphore wait] ifCurtailed:[self unschedule].
If I comment out the "self unschedule" it works reliably. If I replace the "self unschedule" with "Processor yield" the bug occurs but takes a few more iterations (about 10 instead of 1 or two).
I'm going to leave this bug and go back to finishing up the next Exupery release. I can make my test work by increasing the delay so that the profilers never kill themselves.
Bryce