Crash during update?
Joshua 'Schwa' Gargus
schwa at cc.gatech.edu
Thu Oct 30 04:25:26 UTC 2003
On Wed, Oct 29, 2003 at 05:56:09PM +0100, Alexander Lazarevi? wrote:
Content-Description: signed data
> Am Mittwoch, 29. Oktober 2003 17:07 schrieb Joshua 'Schwa' Gargus:
> > I just noticed this, too. I have a self-compiled 3.6g VM, running on Linux
> > on an Athlon. The update goes fine on Windows.
>
> I see the crash happening at the beginning of the gc mark phase when the
> ephemeron queue gets initialized. Shouldn't that code be the same on linux
> and windows?
I couldn't say. However, my Windows VM version is 3.5.1, from June 21, 2003.
I don't think that Andreas had included the ephemeron support at that time
(or does time fly that fast?)
Joshua
>
> Alex
>
> /* Mark phase of the mark and sweep garbage collector. Set the mark
> bits of all reachable objects. Free chunks are untouched by this
> process. Assume: All non-free objects are initially unmarked. Root
> objects were unmarked when they were made roots. (Make sure this
> stays true!!). */
>
> int markPhase(void) {
> register struct foo * foo = &fum;
> int oop;
> int i;
> int classFormat;
> int keyMarked;
> int anyNew;
> int oop1;
> int ephemeron;
> int ephemeronKey;
> int nilOop;
> int header;
>
> foo->freeContexts = NilContext;
>
> /* initialize the ephemeron queue */
>
> foo->freeLargeContexts = NilContext;
> foo->lastEphemeron = foo->nilObj;
> foo->theEphemeronKeyOffset = 0;
> if ((lengthOf(foo->specialObjectsOop)) >= ClassEphemeron) {
> foo->theClassEphemeron = longAt(((((char *) foo->specialObjectsOop)) +
> BaseHeaderSize) + (ClassEphemeron << 2));
> /**** BOOOM ****/
>
More information about the Squeak-dev
mailing list
|