base-files: upgrade: don't loop forever trying to kill processes

When processes don't die on SIGKILL (usually because of kernel bugs), it's
better to give up instead of looping forever.

upgraded will trigger a reboot in this case (and if this fails, a hardware
watchdog will eventually time out and reset the system, if present).

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
master
Matthias Schiffer 7 years ago
parent ae30673b10
commit 1ab227d688
No known key found for this signature in database
GPG Key ID: 16EF3F64CB201D9C
  1. 11
      package/base-files/files/lib/upgrade/stage2

@ -78,6 +78,8 @@ switch_to_ramfs() {
}
kill_remaining() { # [ <signal> [ <loop> ] ]
local loop_limit=10
local sig="${1:-TERM}"
local loop="${2:-0}"
local run=true
@ -108,8 +110,15 @@ kill_remaining() { # [ <signal> [ <loop> ] ]
[ $loop -eq 1 ] && run=true
done
let loop_limit--
[ $loop_limit -eq 0 ] && {
echo
echo "Failed to kill all processes."
exit 1
}
done
echo ""
echo
}

Loading…
Cancel
Save