GC Weirdness solved.

Andreas Raab andreas.raab at gmx.de
Sat Apr 3 22:38:11 UTC 2004


> I've fixed my recursive doesNotUnderstand problem. Just ran the image
> through the SystemTracer from SqueakMap.

So do you know what the problem was?

> It is possible to reproduce these errors with a stock VM and
> image. Use the latest 3.7 image with Ian's 3.4-2 VM.  I haven't been
> able to test if this fix works for the stock VM problem because
> SqueakMap is down. It does however fix my problem with my custom VMs
> which wouldn't happen if my code was creating the corruption.

With "fix" I presume you mean running the image through SystemTracer, yes?
Or was there anything else involved?

> From what I can tell, the image problem is in the stock images. It
> doesn't normally cause problems. Here, I'm unlucky probably because
> I'm calling "Smalltalk garbageCollect" frequently to test code that
> interacts with the rootTable.

Wait ... rootTable ... hm ... that reminds me of something: We had (and
still have) a very particular problem with the root bit in a single specific
case. Namely, when you save the image it does a GC right before saving it
and then writes out the bits. The trouble is that the logic involved will
mark the currently active context as "root" which means that when the image
comes back up the root bit is set on the context which was active when it
was saved. This bit is actually manually cleared by a full run over all of
the objects upon image startup but before we added this it *could* lead to
horrendous crashes in some situations.

Now ... if you have a custom VM ... I wonder if you do do this otherwise
completely bogus extra run over the image. Because if not ... it may well
explain your problems.

Cheers,
  - Andreas




More information about the Squeak-dev mailing list