@@ -66,21 +66,34 @@ debug_sleep_and_shutdown() {
6666 if [[ " $debug " =~ ^[0-9]+$ ]]; then
6767 local sleep_minutes=" $debug "
6868 local sleep_seconds=$(( sleep_minutes * 60 ))
69- log " Debug: Sleeping ${sleep_minutes} minutes before shutdown..."
69+ log " Debug: Sleeping ${sleep_minutes} minutes before shutdown..." || true
7070 # Detect the SSH user from the home directory
7171 local ssh_user=$( basename " $homedir " 2> $dn || echo " ec2-user" )
7272 local public_ip=$( curl -s http://169.254.169.254/latest/meta-data/public-ipv4)
73- log " SSH into instance with: ssh ${ssh_user} @${public_ip} "
74- log " Then check: /var/log/runner-setup.log and /var/log/runner-debug.log"
73+ log " SSH into instance with: ssh ${ssh_user} @${public_ip} " || true
74+ log " Then check: /var/log/runner-setup.log and /var/log/runner-debug.log" || true
7575 sleep " $sleep_seconds "
76- log " Debug period ended, shutting down"
76+ log " Debug period ended, shutting down" || true
7777 elif [ " $debug " = " true" ] || [ " $debug " = " True" ] || [ " $debug " = " trace" ]; then
7878 # Just tracing enabled, no sleep
79- log " Shutting down immediately (debug tracing enabled but no sleep requested)"
79+ log " Shutting down immediately (debug tracing enabled but no sleep requested)" || true
8080 else
81- log " Shutting down immediately (debug mode not enabled)"
81+ log " Shutting down immediately (debug mode not enabled)" || true
8282 fi
83- shutdown -h now
83+
84+ # Try multiple shutdown methods as fallbacks (important when disk is full)
85+ shutdown -h now 2> /dev/null || {
86+ # If shutdown fails, try halt
87+ halt -f 2> /dev/null || {
88+ # If halt fails, try sysrq if available (Linux only)
89+ if [ -w /proc/sysrq-trigger ]; then
90+ echo 1 > /proc/sys/kernel/sysrq 2> /dev/null
91+ echo o > /proc/sysrq-trigger 2> /dev/null
92+ fi
93+ # Last resort: force immediate reboot
94+ reboot -f 2> /dev/null || true
95+ }
96+ }
8497}
8598
8699# Function to handle fatal errors and terminate the instance
0 commit comments