[Ecls-list] ecl with old libc: deadlock in gc due to signal handling

Anton Vodonosov avodonosov at yandex.ru
Thu Jan 20 12:41:55 UTC 2011



20.01.2011, 14:55, "Juan Jose Garcia-Ripoll" <juanjose.garciaripoll at googlemail.com>:
> On Thu, Jan 20, 2011 at 12:31 PM, Anton Vodonosov <avodonosov at yandex.ru> wrote:
>> It's a good idea, thanks. I will only need to think about race conditions, like if GC starts after the sigwait returns, but before we called
>> GC_register_my_thread. Or this code doesn't allocate any heap memory and should not be protected by GC?
>
> Code in the library is itself protected, so one should not worry about it.

You mean the libc code?

I worry about this code:

        if (status == 0) {
            if (interrupt_signal == signo)
                goto RETURN;
            signal_code = call_handler(lisp_signal_handler, signo,
                           NULL, NULL);
            if (!Null(signal_code)) {
                mp_process_run_function(3, @'si::handle-signal',
                            @'si::handle-signal',
                            signal_code);
            }
        }

Can we run it in parallel with GC?




More information about the ecl-devel mailing list