Allison Randal wrote:
Thanks all for the reports. I see two common trouble spots in hellgrind
and the test output. One is a possible race condition if two threads add
tasks to the concurrency scheduler at exactly the same moment. The other
is the fact that PCC uses globals in the interpreter to store invocation
information, so code for a particular interpreter (event handlers,
callbacks, etc) must always be executed within that interpreter's runloop.
Both are addressed by PDD 25, so I'll work on implementing those pieces.
(The current implementation is partial, enough to support PDD 24.)
I've just checked in the next stage of development on PDD 25. Each
interpreter/thread has its own scheduler, and invocation of things like
callbacks happen within the interpreter's runloop. This resolves all
concurrency-related failures except the old intermittent t/stm failures.
Next, I'll implement message passing between schedulers from PDD 25,
which will solve the t/stm failures.
Allison