[cmucl-imp] gc & blocked signals
Helmut Eller
heller at common-lisp.net
Wed Feb 1 08:32:08 UTC 2012
* Raymond Toy [2012-02-01 03:27] writes:
> Yeah, that looks like a bug. I think the problem is not with gc, but
> with the signal handler(s). I was planning on doing some work on the
> signal handlers to make them simpler, based on what Carl did for
> Windows. This should make them simpler and safer. Don't know if it
> will take care of this problem or not.
The problem doesn't occur with an empty loop. Therefore I think it has
something to do with GC.
>
>> 29 SIGIO
>>
>> SLIME uses SIGIO on a socket and if that stays blocked then SLIME can't
>> interrupt the Lisp process. Also note that C-z in the terminal doesn't
>
> Does SIGIO actually work for you? I stopped using it long ago because
> it caused strange errors to occur (on darwin). I think it's because
> SIGIO causes interrupts at bad places because cmucl isn't really
> interrupt-safe.
Works good enough for me (on Linux). The GC should of course be
interrupt-safe. The stream code is not reentrant so it is problematic
to use streams in signal handlers. SLIME tries to be careful when
reading/writing to it's own stream and tries to delay interrupts to
safe-points. SLIME can't fix other streams or non-reentrant code, but
the situation there is IMO the same as if the debugger is invoked with
SIGINT.
Helmut
More information about the cmucl-imp
mailing list