guile-user
[Top][All Lists]
Advanced

[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.

:-)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]