Attached is a change set that I used to debug the stack overflow problem and confirm the fix. This only runs on a Unix VM with OSProcess loaded, but the overflow problem is a bit tricky to debug so I'm posting this in case someone wants to reproduce what I did.
Basically this just writes debug trace messages to standard output so I can keep track of what process is running what method in what order. Just some good ol' fashioned Fortran debugging, but what the heck, it worked.
From the preamble:
This is what I used to debug the stack overflow problem. Load OSProcess first, then load this change set.
Intended for use on Unix/Linux. Run the Squeak vm with a fixed memory allocation (squeak -memory 30m) in order to force the out-of-memory condition.
Open a ProcessBrowser, then evaluate 'Smalltalk createStackOverflow'. You should see messages on stdout that confirm that the runaway recursion keeps going even after the low space semaphore has be signaled.
Now apply the LowSpaceWatcherFix change set, and evaluate 'Smalltalk createStackOverflow'. The low space watcher should catch the runaway method right away.