[Gc] Running Boehm-Demers-Weiser gc on a simulator

Boehm, Hans hans.boehm at hp.com
Wed Nov 29 15:02:46 PST 2006


Is it possible for you to set the equivalent of a watchpoint on the
offending location?  Is the problem reproducible enough?

Assuming it's a pointer-containing object, the object should be cleared
when it is added to the free list again.  Hence the watchpoint should be
triggered when that happens.  If not, you should be able to get a better
handle on why it's getting overwritten.

Hans

> -----Original Message-----
> From: seojiwon at gmail.com [mailto:seojiwon at gmail.com] On 
> Behalf Of Jiwon Seo
> Sent: Wednesday, November 29, 2006 2:15 PM
> To: Boehm, Hans
> Cc: gc at napali.hpl.hp.com
> Subject: Re: [Gc] Running Boehm-Demers-Weiser gc on a simulator
> 
> On 11/29/06, Boehm, Hans <hans.boehm at hp.com> wrote:
> > If you haven't done so already, have a look at the last section in 
> > http://www.hpl.hp.com/personal/Hans_Boehm/gc/debugging.html .
> 
> Yup, just did that. Strange thing is, right before 
> GC_finish_collection is called, the object whose field will 
> have wrong value afterward is actually marked. (confirmed with
> GC_is_marked(GC_base(p)))
> 
> Is it possible that the object is marked but still corrupted 
> by the allocator or the collector?
> 
> >
> > It sounds like it's also worth checking specifically that 
> stacks are 
> > traced.  Assuming that this a single-threaded application, 
> and you are 
> > using gc6.8 built without thread support, step through
> > GC_push_current_stack() to make sure it's doing the right thing.
> >
> > What's the simulated architecture?  Could it be a value 
> that's only in 
> > a register that is not being traced?
> 
> It's simulating power pc 64, and the register values are 
> actually pushed on the stack by gcc's __builtin_unwind_init() 
> . So I believe all the necessary registers are pushed on the stack.
> 



More information about the Gc mailing list