[Gc] Problem with GC on FreeBSD

Vitaly Magerya vmagerya at gmail.com
Wed Apr 18 15:25:53 PDT 2012


Petter Urkedal <urkedal at nbi.dk> wrote:
>> > I'll focus on this part first, since it's most directly related to the
>> > code I wrote.  It seems the thread local freelists are the problem,
>> > maybe they are not initialized.  The thread local key should be working
>> > now with -D USE_PTHREAD_SPECIFIC, right?

Right.

>> > But I'm wondering whether
>> > GC_init_thread_local gets called.

It is (via GC_init => GC_init_parallel => GC_init_thread_local).

>> > It may be worth trying to change
>> > pthread_create to GC_pthread_create in disclaim_test.c

Just tried that, got the same crash (with slightly different numbers,
but basically the same).

Note that I don't always get the crash in the debugger; sometimes it
just hangs (especially if I don't disable SIGUSR1 & SIGUSR2 interception).

>> > (or insert a call
>> > to GC_unregister_my_thread inside the thread call-back). If it makes a
>> > difference, this might be relevant for the above segfault, as well.
>
> Corr: "GC_unregister_my_thread" should read "GC_register_my_thread".

Doesn't seem to change anything (i.e. the same crash).

Is this the correct way to call it?

    /* main thread */
    GC_allow_register_threads();

    /* subthreads */
    GC_call_with_stack_base(GC_register_my_thread, NULL);


More information about the Gc mailing list