[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Latest guile 1.9 segfault in GC
From: |
Cedric Cellier |
Subject: |
Re: Latest guile 1.9 segfault in GC |
Date: |
Tue, 17 Aug 2010 15:08:16 +0200 |
User-agent: |
Mutt/1.5.20 (2009-06-14) |
I'm using libgc v 7.2alpha4.
Apparently the value of GC_all_interior_pointers is 1 when initializing
the GC (so GC_old_normal_bl is not initialized) and suddenly is set to 1
so that the next call to GC_is_black_listed dereference it and thus
crash.
It's set to 0 by scm_storage_prehistory in liguile.
I do not understand how this GC works, but find it strange that this global
variable is changed like this, especially since the libgc gc.h reads :
"GC_all_interior_pointers (...) May not be changed after GC initialization."
How come the libgc GC_init function was already called when
scm_storage_prehistory is called ? Apparently, the libgc overload
pthread_create with its GC_pthread_create().
So, guile must be inited before starting any thread.
Let's try...
OK, it works.
:-)