On 20 May 2011, at 15:58, Andy Wingo wrote: > Did you enable threads? `grep PTHREAD scmconfig.h` to check.
$ grep PTHREAD libguile/scmconfig.h #define SCM_USE_PTHREAD_THREADS 1 /* 0 or 1 */ /* Define to 1 if need braces around PTHREAD_ONCE_INIT (for Solaris). */ #define SCM_NEED_BRACES_ON_PTHREAD_ONCE_INIT 0 /* 0 or 1 */ /* Define to 1 if need braces around PTHREAD_MUTEX_INITIALIZER #define SCM_NEED_BRACES_ON_PTHREAD_MUTEX_INITIALIZER 0 /* 0 or 1 */ #define SCM_HAVE_GC_PTHREAD_CANCEL 0 /* 0 or 1 */ #define SCM_HAVE_GC_PTHREAD_EXIT 0 /* 0 or 1 */ #define SCM_HAVE_GC_PTHREAD_SIGMASK 0 /* 0 or 1 */ > Here is the current definition of GC_INIT (): > > /* Portable clients should call this at the program start-up. More */ > /* over, some platforms require this call to be done strictly from the */ > /* primordial thread. */ > #define GC_INIT() { GC_INIT_CONF_DONT_EXPAND; /* pre-init */ \ > GC_INIT_CONF_FORCE_UNMAP_ON_GCOLLECT; \ > GC_INIT_CONF_MAX_RETRIES; \ > GC_INIT_CONF_FREE_SPACE_DIVISOR; \ > GC_INIT_CONF_FULL_FREQ; \ > GC_INIT_CONF_TIME_LIMIT; \ > GC_INIT_CONF_MAXIMUM_HEAP_SIZE; \ > GC_init(); /* real GC initialization */ \ > GC_INIT_CONF_ROOTS; /* post-init */ \ > GC_INIT_CONF_IGNORE_WARN; \ > GC_INIT_CONF_INITIAL_HEAP_SIZE; } > > So you see it does GC_init(). That was not always the case in previous > versions, AFAIK. And adding it does not help. Hans