This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Boehm's GC crashed by adjustment of GC root set


Hi,

So far I've been debugging GCC bootstrap failures with Boehm's GC, and
now I'm stuck.

I used to register all GC roots at the startup of GCC, including
stringpool roots. That worked fine until first ht_expand() call, which
moves identifier hash table around in the memory and Boehm's GC still
uses its old location as a root segment. Oops. But if I try to remove
the old root segment and register the current one with
GC_remove_roots() and GC_add_roots(), first GC_collect() crashes with

Program received signal SIGSEGV, Segmentation fault.
0x01046191 in GC_mark_from (mark_stack_top=0x22e7b4, mark_stack=0x0,
   mark_stack_limit=0x0) at ../../../gcc-boehm-test/boehm-gc/mark.c:759
759		  deferred = *limit;
(gdb) bt
#0  0x01046191 in GC_mark_from (mark_stack_top=0x22e7b4, mark_stack=0x0,
   mark_stack_limit=0x0) at ../../../gcc-boehm-test/boehm-gc/mark.c:759
#1  0x00000000 in ?? () from

I've verified by GC_dump() call right before collection, that the root
set is correctly adjusted (i.e. pointing to the current hash table
location). I

The collector is compiled with all debugging options I could find:
"--enable-gc-debug --enable-full-debug"  CFLAGS="-DKEEP_BACK_PTRS
-DGC_ASSERTIONS -g -O2"

At this point I've run out of ideas, how to proceed. Any clues would
much appreciated.

--
TIA,
Laurynas


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]