>>>>> "Laurynas" == Laurynas Biveinis <[EMAIL PROTECTED]> writes:

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

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

I don't know why this is crashing -- in libjava we don't mess around
with registering roots like this.

But... instead of registering the hash table contents as a root, I
would suggest instead registering 'ident_hash' as a root and then
allocating the hash table contents as scanned memory via the GC.  This
way I think the right thing will happen in all situations.

Tom

Reply via email to