svn commit: r362737 - head/bin/sh/tests/execution
Jilles Tjoelker
jilles at FreeBSD.org
Sun Jun 28 21:15:29 UTC 2020
Author: jilles
Date: Sun Jun 28 21:15:29 2020
New Revision: 362737
URL: https://svnweb.freebsd.org/changeset/base/362737
Log:
sh/tests: Fix flaky execution/bg12.0
When job control is not enabled, the shell ignores SIGINT while waiting for
a foreground process unless that process exits on SIGINT. In this case, the
foreground process is sleep and it does not exit on SIGINT because the
signal is only sent to the shell. Depending on order of events, this could
cause the SIGINT to be unexpectedly ignored.
On lightly loaded bare metal, the chance of this happening tends to be less
than 0.01% but with higher loads and/or virtualization it becomes more
likely.
Starting the sleep in background and using the wait builtin ensures SIGINT
will not be ignored.
PR: 247559
Reported by: lwhsu
MFC after: 1 week
Modified:
head/bin/sh/tests/execution/bg12.0
Modified: head/bin/sh/tests/execution/bg12.0
==============================================================================
--- head/bin/sh/tests/execution/bg12.0 Sun Jun 28 21:11:10 2020 (r362736)
+++ head/bin/sh/tests/execution/bg12.0 Sun Jun 28 21:15:29 2020 (r362737)
@@ -4,7 +4,7 @@ T=`mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXXXX`
trap 'rm -rf $T' 0
cd $T || exit 3
mkfifo fifo1
-{ trap - INT; : >fifo1; sleep 5; exit 4; } &
+{ trap - INT; : >fifo1; sleep 5 & wait; exit 4; } &
: <fifo1
kill -INT "$!"
wait "$!"
More information about the svn-src-all
mailing list