From 3c6e5e8ce13dc3bf286ff977a7806f2b342dfdab Mon Sep 17 00:00:00 2001 From: John Snow Date: Thu, 27 Oct 2022 14:58:36 -0400 Subject: [PATCH] python/machine: Handle termination cases without QMP If we request a shutdown of a VM without a QMP console, we'll just hang waiting. Not ideal. Add in code that attempts graceful termination in these cases. Tested lightly; it appears to work and I doubt we rely on this case anywhere, but it's a corner you're allowed to wedge yourself in, so it should be handled. Signed-off-by: John Snow --- python/qemu/machine/machine.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/python/qemu/machine/machine.py b/python/qemu/machine/machine.py index 6f1374a755..748a0d807c 100644 --- a/python/qemu/machine/machine.py +++ b/python/qemu/machine/machine.py @@ -547,6 +547,12 @@ def _soft_shutdown(self, timeout: Optional[int]) -> None: finally: # Regardless, we want to quiesce the connection. self._close_qmp_connection() + elif not self._quit_issued: + LOG.debug( + "Not anticipating QEMU quit and no QMP connection present, " + "issuing SIGTERM" + ) + self._subp.terminate() # May raise subprocess.TimeoutExpired LOG.debug(