[bug] stack overflow crashes Squeak. ( Revive - relates to more recent problems )

David T. Lewis lewis at mail.msen.com
Sun May 16 16:37:04 UTC 2004


On Wed, Apr 28, 2004 at 10:36:16PM -0600, tim at sumeru.stanford.edu wrote:
> 
> This appears to be the same problem mentioned in recent reports of not
> being able to interrupt a recursive process. If something is making the 
> low space signal not work properly - leaving the runaway process
> careering like a drunken driver down the roadway of memory loss - then
> one of our major system safeguards is inneffective. Not good.

[Background on this thread: Squeak hangs up and crashes with out-of-memory
condition due to low space alarm not working. Observed on Unix/Linux VM.]

I can't quite get a handle on what is happening here, but I am fairly
sure that it is *not* a problem with the low space signal. The signal
is properly created in the VM. It is caught by the waiting low space
watcher process, and the notifier is being displayed. *After* these
things take place, Squeak crashes with an out of memory condition,
as if the original runaway recursive process had proceeded without
interruption (although I don't think this is what is literally happening).

I confirmed the above with some good ol' Fortran-style print debugging
to stdout, and tested with #createStackOverflow. Unfortunately, I can't
get much further with this approach. Adding a debug message in the
#createStackOverflow method is enough to make the problem go away, so
I can't say for sure if the #createStackOverflow is continuing to run
after the low space signal has been received by the low space watcher
process.

One other observation: The problem does not occur in MVC. The combination
of Morphic and a Unix/Linux VM is apparently needed to make the problem
occur.

For what it's worth, here is the stdout (console) output that I get
when running #createStackOverflow on my Linux box. The messages are
coming from SystemDictionary>>lowSpaceWatcher with debugging print
statements added to indicate when the semaphore is installed and when
the low space signal is handled.

587:149:SystemDictionary>>lowSpaceWatcher:install low space semaphore
587:149:SystemDictionary>>lowSpaceWatcher:enable low space interrupts
587:149:SystemDictionary>>lowSpaceWatcher:wait on low space semaphore
587:149:SystemDictionary>>lowSpaceWatcher:low space semaphore signal received
587:149:SystemDictionary>>lowSpaceWatcher:about to display low space notifier

out of memory

1114748112 SystemDictionary>createStackOverflow
1114748020 SystemDictionary>createStackOverflow
1114747928 SystemDictionary>createStackOverflow
1114747836 SystemDictionary>createStackOverflow
1114747744 SystemDictionary>createStackOverflow
<snipped long stack dump, VM crash>


Consider this an interim report to keep the thread alive.

Dave



More information about the Squeak-dev mailing list