From: Mathieu Desnoyers Date: Thu, 16 May 2019 19:07:58 +0000 (-0400) Subject: Fix: utils.sh: handle SIGPIPE X-Git-Tag: v2.12.0-rc1~458 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=27b667f7fccef66cc3490615757d969191df3d94;p=lttng-tools.git Fix: utils.sh: handle SIGPIPE 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 --- 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