[Gc] Question on finalization

Boehm, Hans hans.boehm at hp.com
Mon May 21 17:20:28 PDT 2007


It means that the internal data structure used by the GC to track
finalizable objects did not get properly marked.  The roots for those
should have been pushed by GC_push_finalizer_structures, or implicitly
as part of othere roots if GC_no_dls is not set.  This may just be the
first symptom of a a more general problem that the static root set is
not being determined correctly.
 
Call GC_dump() and check that it finds the right static memory regions
for use as roots.
 
If threads are enabled, there might be other possibilities as well.  But
try without threads first.
 
Hans


________________________________

	From: gc-bounces at napali.hpl.hp.com
[mailto:gc-bounces at napali.hpl.hp.com] On Behalf Of Jiwon Seo
	Sent: Monday, May 14, 2007 3:28 AM
	To: gc at napali.hpl.hp.com
	Subject: [Gc] Question on finalization
	
	
	I'm trying to run boehm gc on a x86 simulator. (I'm using gc 6.8
version) 
	The gc works as long as object finalization is not used. But
when I start testing with GC_REGISTER_FINALIZER, I'm getting a assertion
error. 
	
	In finalize.c, GC_finalize() function, there is this assertion
when enqueuing for objects that are unreachable.
	
	 GC_ASSERT(GC_is_marked(GC_base((ptr_t)curr_fo)));
	
	If that assertion is false, what does that mean? What would you
recommend to check? 
	
	Thanks,
	-Jiwon
	

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://napali.hpl.hp.com/pipermail/gc/attachments/20070522/9772c4bf/attachment.htm


More information about the Gc mailing list