[Gc] GC_enable_incremental() fails on FreeBSD

Vitaly Magerya vmagerya at gmail.com
Tue Jul 17 03:55:03 PDT 2012

Ivan Maidanski wrote:
>>  > AFAIK, 7.2c and 7.3alpha2 do not crash, and 7.3 passes all tests.
> What are the tests of 7.2c that fail?

The failures I've seen are in 7.2b shipped with Gauche Scheme; gctest
sometimes (very rarely) segfaults there. Also Gauche sometimes hangs
on it's threading tests when built with gc 7.2. Both problems go away
with gc 7.3.

Here's the backtrace for gctest segfault:

#0  GC_typed_mark_proc (addr=0x1120000, mark_stack_ptr=0x81b1f0, mark_stack_limit=0x839850, env=9) at typd_mlc.c:395
#1  0x0000000800863d19 in GC_mark_from (mark_stack_top=Variable "mark_stack_top" is not available.) at mark.c:749
#2  0x00000008008642b9 in GC_mark_some (cold_gc_frame=Variable "cold_gc_frame" is not available.) at mark.c:401
#3  0x000000080085badc in GC_stopped_mark (stop_func=0x80085b020 <GC_never_stop_func>) at alloc.c:634
#4  0x000000080085bf9e in GC_try_to_collect_inner (stop_func=0x80085b020 <GC_never_stop_func>) at alloc.c:457
#5  0x000000080085c1f9 in GC_collect_or_expand (needed_blocks=1, ignore_off_page=0, retry=0) at alloc.c:1243
#6  0x000000080085c7e8 in GC_allocobj (gran=3, kind=6) at alloc.c:1330
#7  0x0000000800861357 in GC_generic_malloc_inner (lb=40, k=6) at malloc.c:121
#8  0x0000000800861609 in GC_generic_malloc (lb=40, k=6) at malloc.c:161
#9  0x0000000800869480 in GC_malloc_explicitly_typed (lb=40, d=4611686018427387905) at typd_mlc.c:597
#10 0x00000000004025b9 in typed_test () at tests/test.c:987

Note that Gauche configures libgc with --enable-threads=pthreads, and
it also appends -DDONT_ADD_BYTE_AT_END to CFLAGS. I don't know if this
is what causes the crash.

I can try to investigate if the same thing happens with 7.2c if you
want me to, but seeing that the problem went away in 7.3, it may be
easier to just use that.

More information about the Gc mailing list