Well, I have "proof" now: http://www.cdegroot.com/blog/wp-content/uploads/screenshot.png shows a screenshot with two debuggers that seem to be inside the same critical section...
The VM's dump stack results in:
SortedCollection>>add: [] in Delay>>schedule {[beingWaitedOn := true. resumptionTime := Time millisecondClockValue + dela...]} [] in Semaphore>>critical: {[[self wait] ifCurtailed: [self signal]. recover := true. result := mutu...]} BlockContext>>ifCurtailed: Semaphore>>critical: Delay>>schedule Delay>>wait WorldState>>interCyclePause: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [] in Project class>>spawnNewProcess {[[World doOneCycle. Processor yield. false] whileFalse. nil]} [] in BlockContext>>newProcess {[self value. Processor terminateActive]}
It *seems* that this only happens in wxSqueak. I have SysInternals' process explorer running, and the Squeak VM is running a bunch of threads but I'm not sure what these threads do. But apart from the guess that something like this could happen when multiple native threads start executing Squeak code, I'm at a loss what other cause could be behind this...
HEEELP!!! ;-)