It look's like I've finally fixed the bug I've been chasing for the last few months. A fix will be published to SqueakSource in the next few days then final release testing can begin.
It'll be interesting to see how reliable Exupery is now. It's possible that this bug has been the main reason for crashes for the last few releases. It's an old bug that's most often triggered by the first method compiled which is Delay>>wait, it's just the conditions required to trigger it are rare.
The bug was Exupery was marking the home context of a block as a root but not the block itself. So if the block was in old space then memory corruption could be caused by an incremental GC if the block became a root. Live contexts in Squeak are always mapped as roots to avoid needing to use a write barrier for every context write which includes every stack push.
Even if this isn't the last major reliability bug, my VM debugging skills have improved so later bugs should take less effort to fix. There's a few useful debugging functions in the VM that can be exploited or modified. allAccessibleObjectsOkay is much slower than validateRoots even though both do a full memory scan.
I'll probably merge in VMMaker-dtl.115 which has the latest version of Eliot's closure bytecodes. The closure bytecodes are already in the Exupery VM.
Bryce
exupery@lists.squeakfoundation.org