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 > > >