[cmucl-imp] gc & blocked signals

Helmut Eller heller at common-lisp.net
Tue Jan 31 22:03:13 UTC 2012


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.

The sigmask 000000001fc90000 corresponds to the signals:

 17 SIGCHLD
 20 SIGTSTP
 23 SIGURG
 24 SIGXCPU
 25 SIGXFSZ
 26 SIGVTALRM
 27 SIGPROF
 28 SIGWINCH
 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
stop the process; presumably because SIGTSTP is blocked.  

lisp-implementation-version is "20c release-20c (20C Unicode)".

Helmut



More information about the cmucl-imp mailing list