From 1adc1af6d9b52ad33f0b773cfdcd64573a2b7b9e Mon Sep 17 00:00:00 2001 From: Peter Bex Date: Sat, 18 Nov 2017 13:58:13 +0100 Subject: Run signal handler in a separate thread This seems to be necessary so that condition-variable-broadcast! works when the signal handler is running in the same thread as the waiting thread. --- tests/run.scm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'tests') diff --git a/tests/run.scm b/tests/run.scm index f05d643..7690752 100644 --- a/tests/run.scm +++ b/tests/run.scm @@ -18,9 +18,12 @@ "This is a test" (run/string* (lambda () (display "This is a test")))) - ;; We must mask sigchld, because otherwise our (wait #f) will fail - ;; due to scsh-process' signal handler possibly reaping the child - ;; before our wait is able to do so. + ;; Ensure all processes up to here have been reaped + (handle-exceptions exn (void) (let lp () (when (wait #f) (lp)))) + + ;; We must mask sigchld, because otherwise our next (wait #f) will + ;; fail due to scsh-process' signal handler possibly reaping the + ;; child before our wait is able to do so. (signal-mask! signal/chld) (test "wait for next process to exit" -- cgit v1.2.3