On 29/12/2025 03:48, Collin Funk wrote:
* tests/env/env-signal-handler.sh: Test that --ignore-signal with no
options also ignores real-time signals. Test that real-time signals can
be explicitly be ignored by listing them.
---
tests/env/env-signal-handler.sh | 59 +++++++++++++++++++++++++++++++++
1 file changed, 59 insertions(+)
diff --git a/tests/env/env-signal-handler.sh b/tests/env/env-signal-handler.sh
index 77d556457..d77f47a5a 100755
--- a/tests/env/env-signal-handler.sh
+++ b/tests/env/env-signal-handler.sh
@@ -19,6 +19,7 @@
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
print_ver_ env seq test timeout printf
trap_sigpipe_or_skip_
+getlimits_
# /bin/sh has an intermittent failure in ignoring SIGPIPE on OpenIndiana 11
# so we require bash as discussed at:
@@ -128,6 +129,64 @@ EOF
timeout_sig=PIPE env_opt='--ignore-signal=PIPE' \
retry_delay_ env_ignore_delay_ .1 6 || fail=1
+# If the system's signal.h defines SIGRTMIN and SIGRTMAX, assume that real-time
+# signals are supported.
+if test $SIGRTMIN -gt 0 && test $SIGRTMAX -gt $SIGRTMIN; then
+ # Find the lowest supported signal number used for real-time signals.
+ for i in $(seq $SIGRTMIN $SIGRTMAX); do
+ if test $i -eq $SIGRTMIN; then
+ sig=RTMIN
+ else
+ sig=RTMIN+$(($i - $SIGRTMIN))
+ fi
+ if kill -l $sig; then
+ rtmin_signal=$sig
+ break
+ fi
+ done
+
+ # Find the largest supported signal number used for real-time signals.
+ for i in $(seq $SIGRTMAX -1 $SIGRTMIN); do
+ if test $i -eq $SIGRTMAX; then
+ sig=RTMAX
+ else
+ sig=RTMAX-$(($SIGRTMAX - $i))
+ fi
+ if kill -l $sig; then
+ rtmax_signal=$sig
+ break
+ fi
+ done
+
+ # Fail if we could not find a supported real-time signal using 'kill'.
+ test -n "$rtmin_signal" && test -n "$rtmax_signal" || framework_failure_
Well all of the above is testing kill(1),
and posix doesn't specify name -> number support,
so I'm not sure framework_failure is appropriate here.
Couldn't we just exclude kill(1) here.
I.e., not do any of the above,
and just pass "RTMIN' and "RTMAX" to env, like:
if test $SIGRTMIN -gt 0 && test $SIGRTMAX -gt $SIGRTMIN; then
for sig in 'RTMIN' 'RTMAX'; do
...
done
fi
cheers,
Padraig