From fa475763ef8be20247799e1ec03128f154fa34be Mon Sep 17 00:00:00 2001 From: ci Date: Mon, 31 Aug 2026 17:21:43 -0400 Subject: [PATCH 1/2] Guard adapter signal handling permanently --- adapter-tests/v1/runner.sh | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/adapter-tests/v1/runner.sh b/adapter-tests/v1/runner.sh index 0ffe8d7..af714c8 100755 --- a/adapter-tests/v1/runner.sh +++ b/adapter-tests/v1/runner.sh @@ -32,6 +32,8 @@ run_tmp=$(/usr/bin/mktemp -d "$fixture_root/scratch/run.XXXXXX") || runner_error cleanup() { /bin/rm -rf -- "$run_tmp"; } ACTIVE_CHILD_GROUP='' ACTIVE_CHILD_PID='' +SIGNAL_DEFER=0 +SIGNAL_EXITING=0 PENDING_SIGNAL_STATUS=0 group_alive() { [[ "${1:-}" =~ ^[1-9][0-9]*$ ]] && kill -0 -- "-$1" 2>/dev/null @@ -65,14 +67,18 @@ signal_exit() { cleanup exit "$status" } -record_pending_signal() { PENDING_SIGNAL_STATUS=$1; } -install_normal_signal_handlers() { - trap 'signal_exit 129' HUP - trap 'signal_exit 130' INT - trap 'signal_exit 143' TERM +handle_signal() { + local status=$1 + [ "$SIGNAL_EXITING" -eq 0 ] || return 0 + PENDING_SIGNAL_STATUS=$status + [ "$SIGNAL_DEFER" -eq 0 ] || return 0 + SIGNAL_EXITING=1 + signal_exit "$status" } trap cleanup EXIT -install_normal_signal_handlers +trap 'handle_signal 129' HUP +trap 'handle_signal 130' INT +trap 'handle_signal 143' TERM /bin/mkdir -m 700 "$run_tmp/home" sha_file() { /usr/bin/shasum -a 256 "$1" | /usr/bin/awk '{print $1}'; } @@ -351,9 +357,7 @@ run_child() { return 1 fi PENDING_SIGNAL_STATUS=0 - trap 'record_pending_signal 129' HUP - trap 'record_pending_signal 130' INT - trap 'record_pending_signal 143' TERM + SIGNAL_DEFER=1 set -m ( ulimit -t 2 -f 2048 -n 64 @@ -372,10 +376,11 @@ run_child() { ACTIVE_CHILD_GROUP=$pid ACTIVE_CHILD_PID=$pid set +m - install_normal_signal_handlers + SIGNAL_DEFER=0 pending_status=$PENDING_SIGNAL_STATUS PENDING_SIGNAL_STATUS=0 if [ "$pending_status" -ne 0 ]; then + SIGNAL_EXITING=1 signal_exit "$pending_status" fi while kill -0 "$pid" 2>/dev/null; do From 9c79b78ce98987ac50e050abf563fc877c541943 Mon Sep 17 00:00:00 2001 From: ci Date: Mon, 31 Aug 2026 17:47:48 -0400 Subject: [PATCH 2/2] Harden signal state under nounset --- adapter-tests/v1/runner.sh | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/adapter-tests/v1/runner.sh b/adapter-tests/v1/runner.sh index af714c8..c3f61f8 100755 --- a/adapter-tests/v1/runner.sh +++ b/adapter-tests/v1/runner.sh @@ -29,7 +29,11 @@ fixture_root=$(CDPATH='' cd -P -- "$fixture_root" && pwd -P) || runner_error E_F [ -d "$fixture_root/scratch" ] && [ -d "$fixture_root/target/.git" ] || runner_error E_FIXTURE run_tmp=$(/usr/bin/mktemp -d "$fixture_root/scratch/run.XXXXXX") || runner_error -cleanup() { /bin/rm -rf -- "$run_tmp"; } +cleanup() { + if [ -n "${run_tmp:-}" ]; then + /bin/rm -rf -- "$run_tmp" + fi +} ACTIVE_CHILD_GROUP='' ACTIVE_CHILD_PID='' SIGNAL_DEFER=0 @@ -39,8 +43,8 @@ group_alive() { [[ "${1:-}" =~ ^[1-9][0-9]*$ ]] && kill -0 -- "-$1" 2>/dev/null } terminate_active_group() { - local group=$ACTIVE_CHILD_GROUP - local leader=$ACTIVE_CHILD_PID + local group=${ACTIVE_CHILD_GROUP:-} + local leader=${ACTIVE_CHILD_PID:-} local tick if [[ "$group" =~ ^[1-9][0-9]*$ ]]; then kill -TERM -- "-$group" 2>/dev/null || : @@ -59,7 +63,7 @@ terminate_active_group() { ACTIVE_CHILD_PID='' } signal_exit() { - local status=$1 + local status=${1:-1} trap '' HUP INT TERM trap - EXIT exec >/dev/null 2>&1 @@ -68,10 +72,10 @@ signal_exit() { exit "$status" } handle_signal() { - local status=$1 - [ "$SIGNAL_EXITING" -eq 0 ] || return 0 + [ "${SIGNAL_EXITING:-0}" -eq 0 ] || return 0 + local status=${1:-1} PENDING_SIGNAL_STATUS=$status - [ "$SIGNAL_DEFER" -eq 0 ] || return 0 + [ "${SIGNAL_DEFER:-0}" -eq 0 ] || return 0 SIGNAL_EXITING=1 signal_exit "$status" } @@ -352,7 +356,7 @@ run_child() { CHILD_STATUS=0 CHILD_ERROR='' /bin/mkdir -m 700 "$child_home" - if [ -n "$ACTIVE_CHILD_GROUP" ] || [ -n "$ACTIVE_CHILD_PID" ]; then + if [ -n "${ACTIVE_CHILD_GROUP:-}" ] || [ -n "${ACTIVE_CHILD_PID:-}" ]; then CHILD_ERROR=E_RUNTIME return 1 fi @@ -377,7 +381,7 @@ run_child() { ACTIVE_CHILD_PID=$pid set +m SIGNAL_DEFER=0 - pending_status=$PENDING_SIGNAL_STATUS + pending_status=${PENDING_SIGNAL_STATUS:-0} PENDING_SIGNAL_STATUS=0 if [ "$pending_status" -ne 0 ]; then SIGNAL_EXITING=1 @@ -393,7 +397,7 @@ run_child() { /bin/sleep 0.05 done wait "$pid" || CHILD_STATUS=$? - if group_alive "$ACTIVE_CHILD_GROUP"; then + if group_alive "${ACTIVE_CHILD_GROUP:-}"; then terminate_active_group CHILD_ERROR=E_DESCENDANT return 1