SIGSEGV in GC_mark_from

Boehm, Hans hans_boehm@hp.com
Thu Sep 6 10:25:00 GMT 2001


Is the object in question perhaps part of a free list?  Are you trying to
get thread-local allocation working, or is the tree basically unmodified?
Is the GC up-to-date?

There are some known subtle issues related to gcj style descriptors and free
lists.  In particular, the collector may see a pointer to a free list (due
to a misidentified pointer), and treat the free list link as a vtable
pointer.  The claim is that this is OK (though it wasn't always), since free
lists for gcj-style objects are cleared, and hence either the free list link
will be null, or the "GC descriptor" slot will be 0 in this case.  I believe
I thought about all the issues, but I wouldn't be incredibly surprised if
there is a yet-to-be-discovered race surrounding this.  In any case, you
have to keep this in mind if you are changing the code.

Hans

> -----Original Message-----
> From: Jeff Sturm [ mailto:jsturm@one-point.com ]
> Sent: Wednesday, September 05, 2001 10:41 PM
> To: Boehm, Hans
> Cc: java@gcc.gnu.org
> Subject: RE: SIGSEGV in GC_mark_from
> 
> 
> 
> 
> On Wed, 5 Sep 2001, Boehm, Hans wrote:
> > I assume this is the trunk?
> 
> Yes.
> 
> > You might check that current_p points to an object which is properly
> > described, i.e. has a pointer to a proper vtable.
> 
> The first word at current_p points to another heap object.  
> It's not yet
> clear to me whether current_p is invalid or it was somehow 
> overwritten.
> 
> > Failing that, probably the only real way to debug this is 
> to insert code
> > that looks for absurd descriptors at various places, i.e. 
> anything huge with
> > the 4 low order bits zero.  I would start by inserting such 
> a test around
> > line 622.
> 
> That helps, thanks.
> 
> Jeff
> 



More information about the Java mailing list