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