1.0.27.39: SIGCHLD related fixes
commit1e7fc4730aa0cafb0aba5278e8cdbdba566b8725
authorGabor Melis <mega@hotpop.com>
Fri, 24 Apr 2009 13:32:41 +0000 (24 13:32 +0000)
committerGabor Melis <mega@hotpop.com>
Fri, 24 Apr 2009 13:32:41 +0000 (24 13:32 +0000)
tree54fdcacff0bbe977bf797e8f92269498a97a30a5
parent6fc7d9db187e254b4963c9d7c3b3d0c001984212
1.0.27.39: SIGCHLD related fixes

- WITH-ACTIVE-PROCESSES-LOCK does not allow WITH-INTERRUPTS because
  that can lead to recursive lock attempts upon receiving a SIGCHLD.

- if fork() in RUN-PROGRAM fails, signal the error outside the lock.

- the SIGCHLD handler only reaps processes started by RUN-PROGRAM in
  order not to interfere with SB-POSIX:WAIT, SB-POSIX:WAITPID and
  their C equivalents (thanks to James Y Knight).

- the SIGCHLD handler is installed once at startup, because on Darwin
  sigaction() seems to do unexpected things to the current sigmask.
NEWS
src/code/run-program.lisp
src/code/target-signal.lisp
tests/run-program.impure.lisp
version.lisp-expr