diff options
-rw-r--r-- | scsh-process.scm | 2 | ||||
-rw-r--r-- | tests/run.scm | 13 |
2 files changed, 15 insertions, 0 deletions
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" "") |