Amador Pahim <apa...@redhat.com> writes: > Current implementation is broken. It does not really test if the child > process is running.
What usage exactly is broken by this? Got a reproducer for me? > The Popen.returncode will only be set after by a poll(), wait() or > communicate(). If the Popen fails to launch a VM, the Popen.returncode > will not turn to None by itself. Hmm. What is the value of .returncode then? > Instead of using Popen.returncode, let's use Popen.poll(), which > actually checks if child process has terminated. > > Signed-off-by: Amador Pahim <apa...@redhat.com> > Reviewed-by: Eduardo Habkost <ehabk...@redhat.com> > Reviewed-by: Fam Zheng <f...@redhat.com> > --- > scripts/qemu.py | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/scripts/qemu.py b/scripts/qemu.py > index 880e3e8219..f0fade32bd 100644 > --- a/scripts/qemu.py > +++ b/scripts/qemu.py > @@ -86,7 +86,7 @@ class QEMUMachine(object): > raise > > def is_running(self): > - return self._popen and (self._popen.returncode is None) > + return self._popen and (self._popen.poll() is None) > > def exitcode(self): > if self._popen is None: return None return self._popen.returncode Why is this one safe?