[cmucl-imp] gc & blocked signals

Raymond Toy toy.raymond at gmail.com
Wed Feb 1 03:27:24 UTC 2012


On 1/31/12 2:03 PM, Helmut Eller wrote:
> I think there is a problem related to blocked signals and garbage
> collection:
>
> 1. Start cmucl -noinit -eval '(loop (ext:gc :full t))' 
>    in a terminal and let it run.
>
> 2. Under Linux,  cat /proc/<pid>/status  shows that SigBlk is 0 i.e. 
>    no signals are blocked.
>
> 3. Interrupt the loop with C-c (SIGINT) and wait for the debugger.
>
> 4. SigBlk is still 0.
>
> 5. Type c to continue the loop.
>
> 6. SigBlk is now 000000001fc90000
>
> That's a bug, right?  It should again be zero.
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.

>  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.

Ray



More information about the cmucl-imp mailing list