Hm...so I'm guessing my patch is the 'quick hacks' you tried and found
worked?

I agree my solution is a bit hackish. But I'm not sure how else to keep
them. The only other solution I can think of is to make a 'GC linked
list', which we put items on to immediately after construction, and take
them off as soon as we're sure they're referencable by the root set.
(Basically, add them where I set flags, and take them off where I unset
flags.) So flags or linked-list, it's a matter of style and speed, I
think.

Alternately, if we could walk the C stack to find variables, we would be
able to ensure they we caught all referencable 'things' not reachable by
the root set, but this is probably completely unportable.

Ah well, I guess I'll just leave the fate of the patch up to Dan, and see
what he thinks will be a good design decision on this.

Mike Lambert

Peter Gibbs wrote:

> Date: Thu, 28 Mar 2002 11:50:01 +0200
> From: Peter Gibbs <[EMAIL PROTECTED]>
> To: [EMAIL PROTECTED]
> Subject: GC bugs
>
> I have traced the problems with Josh's deep stack pushp/popp test to two
> problems with the garbage collector:
>
> 1) Strings pointed to by pmc->cache.struct_val are not marked as live
> 2) If a dod run is initiated while a pmc is being created, it will be freed
> as nobody points to it yet
>
> Since both these problems involve design considerations, I am leaving it to
> Dan to fix them.
> Quick hacks to bypass the problems show that the pushp/popp test then works
> fine.
>
> --
> Peter Gibbs
> EmKel Systems
>
>
>

Reply via email to