[Gc] Strange issues

Boehm, Hans hans.boehm at hp.com
Thu Jan 5 12:02:07 PST 2006


I expect the collector should try to follow this pointer starting with
the

current = *current_p;

statement around line 784 in mark.c.  It would be interesting to see if
that is ever executed with current_p == 0xc0562c.  (This is not the only
place the collector could be looking at it.  If it's not examined there,
also look at the two instances of "deferred = *limit;" slightly earlier
in the code, and check whether those are executed with *limit ==
0xc0562c.)

If you get there, the next question is whether HC_PUSH_CONTENTS results
in the referenced object getting marked (testable with the
GC_is_marked() function), and if not, why not.  Unfortunately, this is
very performance critical code, which has become rather convoluted
(manually unrolled, macros to avoid code duplication) to make it fast.
Thus the "why not" part of this may be tricky to answer.

Hans

> -----Original Message-----
> From: Emmanuel Stapf [ES] [mailto:manus at eiffel.com] 
> Sent: Thursday, January 05, 2006 6:39 AM
> To: Boehm, Hans
> Cc: 'Ben Hutchings'; gc at napali.hpl.hp.com; 'Shiro Kawai'
> Subject: RE: [Gc] Strange issues
> 
> 
> > Did you mistype the address of the static variable?  Was it
> > 0xc0562c?  If so, the yes, it does appear to be included.
> 
> Yes you are right it was 0xc0562c.
> 
> Where should I put a breakpoints to see that it goes through 
> the static variable and reach my object that seems to be 
> garbage collected too soon.
> 
> Otherwise, if I keep ALL_INTERIOR_POINTERS then everything 
> seems to be fine.
> 
> Regards,
> Manu
> 
> 



More information about the Gc mailing list