diff --git a/src/power.sh b/src/power.sh index 463cb66..08744bf 100644 --- a/src/power.sh +++ b/src/power.sh @@ -33,6 +33,7 @@ _trap() { finish() { local pid + local cnt=0 local reason=$1 touch "$QEMU_END" @@ -44,10 +45,20 @@ finish() { { kill -15 "$pid" || true; } 2>/dev/null while isAlive "$pid"; do + sleep 1 + cnt=$((cnt+1)) + # Workaround for zombie pid [ ! -s "$QEMU_PID" ] && break + + if [ "$cnt" == "5" ]; then + error "QEMU did not terminate itself, forcefully killing process..." + { kill -9 "$pid" || true; } 2>/dev/null + fi + done + fi fKill "print.sh"