Browse Source

fix: Kill QEMU after 5 seconds when it hangs (#1515)

Kroese 2 weeks ago
parent
commit
0e95680704
1 changed files with 11 additions and 0 deletions
  1. 11 0
      src/power.sh

+ 11 - 0
src/power.sh

@@ -74,6 +74,7 @@ ready() {
 finish() {
 
   local pid
+  local cnt=0
   local reason=$1
 
   touch "$QEMU_END"
@@ -85,10 +86,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
 
   if [ ! -f "$STORAGE/windows.boot" ] && [ -f "$BOOT" ]; then