From: Cleber Rosa Date: Mon, 28 Oct 2019 23:04:04 +0000 (-0400) Subject: Python libs: close console sockets before shutting down the VMs X-Git-Tag: v4.2.0-rc0~21^2~13 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=085809670201c6d3a33e37dc753a23115ba8ceb3;p=users%2Fdwmw2%2Fqemu.git Python libs: close console sockets before shutting down the VMs Currently, the console socket on QEMUMachine is closed after the QMP command to gracefully exit QEMU is executed. Because of a possible deadlock (QEMU waiting for the socket to become writable) let's close the console socket earlier. Reference: <20190607034214.GB22416@habkost.net> Reference: https://bugs.launchpad.net/qemu/+bug/1829779 From: Eduardo Habkost Signed-off-by: Cleber Rosa Message-Id: <20190911023558.4880-2-crosa@redhat.com> --- diff --git a/python/qemu/machine.py b/python/qemu/machine.py index 2024e8b1b1..a4631d6934 100644 --- a/python/qemu/machine.py +++ b/python/qemu/machine.py @@ -277,10 +277,6 @@ class QEMUMachine(object): self._qemu_log_path = None - if self._console_socket is not None: - self._console_socket.close() - self._console_socket = None - if self._temp_dir is not None: shutil.rmtree(self._temp_dir) self._temp_dir = None @@ -342,6 +338,13 @@ class QEMUMachine(object): """ Terminate the VM and clean up """ + # If we keep the console socket open, we may deadlock waiting + # for QEMU to exit, while QEMU is waiting for the socket to + # become writeable. + if self._console_socket is not None: + self._console_socket.close() + self._console_socket = None + if self.is_running(): try: if not has_quit: