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



Reply via email to