From 4e420e4d032b550fa6e0193a3bbf04f4db76cc8b Mon Sep 17 00:00:00 2001 From: Peter Bex Date: Fri, 10 Nov 2017 21:08:02 +0100 Subject: Also unmask (if needed) sigchld in the child process thunk This would be otherwise kept in masked mode because the thunk is in the dynamic extent of the dynamic-wind. --- scsh-process.scm | 2 ++ tests/run.scm | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/scsh-process.scm b/scsh-process.scm index 5bfd7e9..3682c68 100644 --- a/scsh-process.scm +++ b/scsh-process.scm @@ -240,6 +240,8 @@ (thunk (and thunk (lambda () (clear-scsh-pending-processes!) (maybe-reinstall-deadlock-workaround!) + (unless sigchld-was-masked? + (signal-unmask! signal/chld)) (thunk)))) (pid (cond-expand (has-thread-killer diff --git a/tests/run.scm b/tests/run.scm index f4409fd..f05d643 100644 --- a/tests/run.scm +++ b/tests/run.scm @@ -32,8 +32,21 @@ (test-assert "signal wasn't unmasked" (signal-masked? signal/chld)) + (test "sigchld is masked inside child process" + "yes" + (run/string* + (lambda () + (display (if (signal-masked? signal/chld) "yes" "no"))))) + (signal-unmask! signal/chld) + (test "after unmasking, sigchld is also unmasked inside child process" + "yes" + (run/string* + (lambda () + (display (if (signal-masked? signal/chld) "no" "yes"))))) + + ;; Reported by Haochi Kiang (test "run/string* does not redirect stderr" '("This should go to stdout" "") -- cgit v1.2.3