From dcf198b5b64a6c44dd644cd9ca6037e355d863c8 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Thu, 16 May 2019 15:07:58 -0400 Subject: [PATCH] Fix: utils.sh: handle SIGPIPE MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit perl prove closes its child pipes before giving it a chance to execute the signal trap handler. This means the child will not be able to complete execution of the trap handler if that handler writes to stdout or stderr. Work-around this situation by redirecting stdin, stdout, and stderr to /dev/null if a SIGPIPE is caught. Signed-off-by: Mathieu Desnoyers Signed-off-by: Jérémie Galarneau --- tests/utils/utils.sh | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh index 71ddaa2cb..0278bcf5e 100644 --- a/tests/utils/utils.sh +++ b/tests/utils/utils.sh @@ -68,9 +68,21 @@ function full_cleanup () trap - SIGTERM && kill -- -$$ } +function null_pipes () +{ + exec 0>/dev/null + exec 1>/dev/null + exec 2>/dev/null +} trap full_cleanup SIGINT SIGTERM +# perl prove closes its child pipes before giving it a chance to run its +# signal trap handlers. Redirect pipes to /dev/null if SIGPIPE is caught +# to allow those trap handlers to proceed. + +trap null_pipes SIGPIPE + function print_ok () { # Check if we are a terminal -- 2.34.1