[kaffe] Freeing jit temp data on demand (Was: Re: JavaLayer 0.3.0
Helmer Krämer
hkraemer@freenet.de
Sat Sep 20 09:50:02 2003
On Fri, 19 Sep 2003 11:40:07 -0600 (MDT)
Timothy Stack <stack@cs.utah.edu> wrote:
Hi Tim,
> > Okie, I've duplicated the problem, the gc is getting stuck and that eats
> > up all the CPU. In particular it gets stuck in startGC() looping on the
> > finalizer list. I tried backing out helmer's last changes to the GC and
> > it seems to run fine again, but I'm not really sure where the bug is just
> > yet.
>
> okie, the offending diff seems to be in gc-incremental.c:
>
> @@ -639,7 +663,6 @@
> startGC(Collector *gcif)
> {
> gc_unit* unit;
> - gc_unit* nunit;
>
> gcStats.freedmem = 0;
> gcStats.freedobj = 0;
> @@ -663,9 +686,8 @@
> startTiming(&gc_time, "gctime-scan");
>
> /* Walk all objects on the finalizer list */
> - for (unit = gclists[finalise].cnext;
> - unit != &gclists[finalise]; unit = nunit) {
> - nunit = unit->cnext;
> + while (gclists[finalise].cnext != &gclists[finalise]) {
> + unit = gclists[finalise].cnext;
> gcMarkObject(gcif, UTOMEM(unit));
> }
>
>
> Restoring the old version makes things work again, is this important for
> the leak problem you found?
I'll try to get tritonus up and running and will respond
once I can reproduce the problems (tritonus refuses to
play any sound :( ).
Regards,
Helmer