[Gc] Has anyone tried the GC on Nokia 770, N800 or arm qemu ?

Boehm, Hans hans.boehm at hp.com
Mon Jan 29 10:52:27 PST 2007


> From: Stephane Epardaud [mailto:Stephane.Epardaud at sophia.inria.fr] 
> 
> Hi, thanks for your advices. I can't seem to run gdb for ARM 
> using QEMU/Scratchbox, so I'm left with printf...
> I managed to nail it down to mark.c in GC_mark_from(), near 
> the end around this
> loop:
> 
> 	for(;;) {
> 	  PREFETCH(limit - PREF_DIST*CACHE_LINE_SIZE);
> 	  GC_ASSERT(limit >= current_p);
> 	  deferred = *(word *)limit;
> 	  FIXUP_POINTER(deferred);
> 
> 
> 
> my printf tell me the problem is the line:
> 	  deferred = *(word *)limit;
> 
> With limit starting at 0xb7f18474 and going fine until 
> 0xb7f1905c where the program quits. Is there supposed to be a 
> handler installed trapping invalid accesses to limit ?
> 
In this environment, no.  The question is how the mark stack entry
containing an invalid address range got there.  The usual answer is that
the root set was somehow wrong.  If you can call GC_dump() and check
that all address ranges in the root set are actually mapped, and that
GC_stackbottom is reasonable, that's fairly likely to tell you
something.

Hans



More information about the Gc mailing list