瀏覽代碼

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

Kroese 2 周之前
父節點
當前提交
0e95680704
共有 1 個文件被更改,包括 11 次插入0 次删除
  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