Handle job-control signals and clear tostop

Prevent terminal job-control signals from suspending the script during recovery by trapping TSTP, TTIN and TTOU (instead of only TSTP) and restoring them on exit. Also clear the terminal 'tostop' flag in stop_spinner() with `stty -tostop` to avoid background spinner I/O from stopping the process group.
This commit is contained in:
CanbiZ (MickLesk)
2026-02-25 14:45:11 +01:00
parent 340d999b2b
commit b09f2db2a9
2 changed files with 6 additions and 4 deletions

View File

@@ -4098,10 +4098,11 @@ EOF'
# Installation failed?
if [[ $install_exit_code -ne 0 ]]; then
# Prevent SIGTSTP (Ctrl+Z) from suspending the script during recovery.
# Prevent job-control signals from suspending the script during recovery.
# In non-interactive shells (bash -c), background processes (spinner) can
# trigger terminal-related signals that stop the entire process group.
trap '' TSTP
# TSTP = Ctrl+Z, TTIN = bg read from tty, TTOU = bg write to tty (tostop)
trap '' TSTP TTIN TTOU
msg_error "Installation failed in container ${CTID} (exit code: ${install_exit_code})"
@@ -4551,8 +4552,8 @@ EOF'
post_update_to_api "failed" "$install_exit_code" "force"
$STD echo -e "${TAB}${CM:-} Telemetry finalized"
# Restore default SIGTSTP handling before exit
trap - TSTP
# Restore default job-control signal handling before exit
trap - TSTP TTIN TTOU
exit $install_exit_code
fi

View File

@@ -607,6 +607,7 @@ stop_spinner() {
unset SPINNER_PID SPINNER_MSG
stty sane 2>/dev/null || true
stty -tostop 2>/dev/null || true
}
# ==============================================================================