[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-smalltalk] Problem with the garbage collector, perhaps

From: Bonzini
Subject: Re: [Help-smalltalk] Problem with the garbage collector, perhaps
Date: Thu, 27 Mar 2003 22:36:51 +0100

The garbage collector's bad behavior was actually triggered by an invalid
memory write in a Context object (a stack overflow).  So the GC was fine
(which makes me happy because even for the smallest change to the GC it is
very hard to make sure it did not introduce other bugs) and the
responsibility was of the stack depth calculation in comp.c (which also made
me happy because testing if the bug was solved was to load the guilty
method, even in a fresh image, and check if the stack depth changed).

I found several sources of braindeath in that code, the best of which being
that variables that #to:do: creates are not taken in consideration!  There
are indeed three #to:do:'s in your code but this did not fix the bug --
indeed I could not even create a reduced testcase for your big method.

Actually I already suspected there were some latent problems which canceled
themselves out and remained latent.  So I did a general rework of the
framework, which asserts that there's no stack underflow at every stack
operation (since stack underflow will never occur, if the machinery detects
it something is wrong in the computation) and treats inlined blocks the same
as if they were not inlined.

Morale: the patch is quite big, so I am not attaching it, but I'd like to
release the pre-release tomorrow.


(BTW your MonthlyView code is very cool, also the MBox class to lay down the

reply via email to

[Prev in Thread] Current Thread [Next in Thread]