GC Weirdness solved.
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.
More information about the Squeak-dev