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

Reply via email to