[BUG] BlockContext storeString hangs

Tim Rowledge tim at sumeru.stanford.edu
Fri Oct 22 23:08:23 UTC 2004


Stéphane Rollandin <lecteur at zogotounga.net> wrote:

> 
> try this (printIt) in a workspace (beware, it will not return and may 
> hang the system for good):
> 
> [1 + 1] storeString
Not at all surprising in the current system (assuming a 37-5989-full
image) since this will effectively try to make a store string of
the entire image. In fact it's almost a oneline definition of how to do
a garbage collect mark-phase i.e. start at the current context and mark
everything you can touch, recursivley.

To see for yourself what happens, try
   [1+1] halt storeString
and follow it through for a while. You'll see as it follows up the
sender chain throught Processes and the ProcessorScheduler, wanders
around the compiled methods, up the class and metaclasses chains, and
across hill and down dale. If you have the patience (and nothing really
useful to do) it will be quite an education.

The interesting question is what one would actually want to be written
out. Where exactly should it stop? Perhaps at any global in the belief
that a reference to (Smalltalk at:#Foo) is enough. How about the sender
chain - how much of that should be captured and what about the
compiledmethods encountered along the way? I had to come up with a
plausible solution some years ago for database usage in a big financial
app but I really wouldn't claim it could count as a perfect general
solution.

tim
--
Tim Rowledge, tim at sumeru.stanford.edu, http://sumeru.stanford.edu/tim
Klingon Code Warrior:- 5) "Specs are for the weak and timid!"



More information about the Squeak-dev mailing list