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>
This commit is contained in:
Matthias Schiffer 2017-07-13 00:19:32 +02:00
parent ae30673b10
commit 1ab227d688
No known key found for this signature in database
GPG key ID: 16EF3F64CB201D9C

View file

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