Help, Squeak is not responding

David T. Lewis lewis at mail.msen.com
Sat Dec 4 17:31:10 UTC 2004


On Fri, Dec 03, 2004 at 02:46:29PM -0500, Jason Rogers wrote:
> When I start up squeak from the command line I get my typical Squeak window.  
> Most of the contents are from the last run of squeak (sometimes they are all 
> there, sometimes not) but Squeak is not responding to anything.  Alt-. 
> doesn't work, no menus come up when I click the buttons, nothing.  I also 
> don't see any indication in SqueakDebug.log of what is going on.
> 
> Has anyone seen this before?  Does anyone know of anything I can do to try to 
> figure out what is going on?

See <http://minnow.cc.gatech.edu/squeak/2168> for lots of good information
and tips.

Before you do anything else, make a backup copy of your bad image and
changes files. You may do further damage to them in the course of trying
to fix them, so you will want to be able to go back to this copy.

I don't know what you were doing before your image got messed up, but if by
any chance it was something to do with a plugin, just delete (or rename)
the plugin from /usr/lib/squeak/3.7b-5/*.so and you'll probably be able
to restart the image and save it in a safe state.

If it was something that you did in the image, such as maybe changing a
method in such a way that the system does not come back up when it's trying
to do its various #startUp: things, and if you can figure out what it was,
then you can sometimes fix it by restarting your image with a Smalltalk
script file on the command line. In other words, put your fix up commands
into a file called "myfix.st", and restart your image with a command like
"$ squeak mybadimage.image myfix.st"

Clues as to what you did to hang the image may be in a debug log file, or
at the end of your .changes file. Your most recent changes are at the end
of the changes file, and you can look for whatever you did since the
last successful image save.

> The image is a 3.7gamma image.  I don't recall what the last update was, 
> however I believe that I have gotten all changes since without proceeding to 
> a 3.8 alpha image.
> 
> The output of 'squeak -version' is:
> jrogers@<host>:~/squeak> squeak -version
> 3.7b-5 #2 Tue Apr  6 20:38:14 CEST 2004 gcc egcs-2.91.66
> Squeak3.7beta of '1 April 2004' [latest update: #5868]
> Linux pingu.inria.fr 2.2.19-6.2.7 #1 Thu Jun 14 07:51:10 EDT 2001 i686
> default plugin location: /usr/lib/squeak/3.7b-5/*.so
> 
> 
> The final question is this... If I am not able to salvage the image, is there 
> anyway to recover what is contained in there?  My newest copy of the image is 
> from Sept 20 of this year (bad programmer, bad!).

Yes of course. All of your changes to classes and methods, and most of
the other important things that you have done since September 20, are in
your .changes file (at the end of it if you want to take a look).  Make a
backup copy of your messed up image and changes files right now, then you
can use your September 20 backup to pull your newer work back in.  You
can put the useful part of your messed up changes file into another file
to make it small enough to work with. If you are comfortable with Unix
shell commands, use "tail" to grab a good sized chunk off the end of the
messed up changes file. You are looking for everything in the file that
is time stamped after the last thing in your September 20 backup.

If you are doing backups of your Linux system (ahem, you are backing up
your system, right?), then you probably have a more recent copy of your
image than September 20. Grab the most recent image and changes files
you can find from your backups, and you may find that you don't have too
much left to recover after all.

It can be a lot of work to recover things this way, so just keep saying
to yourself "it serves me right for not backing up my image more often."
That's what I do every time this happens to me ;) 

Jan B. Krej asked if it would be possible to come up with a way for Squeak
to start up in a "safe" or "recovery" mode. This is a really good idea.
"Somebody" should do it!

Dave




More information about the Squeak-dev mailing list