GC Weirdness solved.

Bryce Kampjes bryce at kampjes.demon.co.uk
Sun Apr 4 17:28:35 UTC 2004


Andreas Raab writes:
 > > I've fixed my recursive doesNotUnderstand problem. Just ran the image
 > > through the SystemTracer from SqueakMap.
 > 
 > So do you know what the problem was?

No, I don't. I'm still running tests to try and isolate the root
cause. I fixed it once for one image, not in general.

Running the image through the SystemTracer does fix the problem
with a stock 3.7 image with Ian's 3.4-2 VM.

I currently suspect that it's a comparability problem between the
3.4-2 VM and the 3.7 images. The problem is in a stock image which
can be removed by running the SystemTracer. Images prepared only
using a modified 3.6 VM are more stable than ones prepared using
the "safe" 3.4-2 VM. (It's my safe VM because I didn't build it.)

 > > 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?

Just running SystemTracer, nothing more.

A little more testing shows that the fix sometimes works for my
tests. It depends on when the SystemTracer is run. So, I've only once
produced a good image. Possibly on what snapshot is used, it doesn't
help for the 3.7 beta snapshot.

If nothing else by avoiding 3.4-2 VMs, it only crashes about a quarter
of the time when running the worst test and never when running my
test suite which includes the worst test.


What I'm going to try next is to write a C test that catches
the problem when it happens. i.e. develop the test by calling
it from just before error: is called for recursive DNUs. Then
move this test backwards hopefully finding where the class
structure is corrupted.

Bryce



More information about the Squeak-dev mailing list