We continue to see qemu races where qemu fails to write out a pidfile. The pidfile name being used was based on the parent process starting the qemus so in theory, a qemu shutting down could have deleted the file into which the new qemu's pid was about to be written. This shouldn't happen as qemu processes should be exitting completely before the code returns.
In the absence of better theory for the failure, use a random pid filename rather than the parent pid so there is no overlap in the pid filename, thereby removing any theoretical race. Signed-off-by: Richard Purdie <[email protected]> --- meta/lib/oeqa/utils/qemurunner.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py index 519aa9aa1e5..73a3efdc964 100644 --- a/meta/lib/oeqa/utils/qemurunner.py +++ b/meta/lib/oeqa/utils/qemurunner.py @@ -20,6 +20,7 @@ import string import threading import codecs import logging +import tempfile from oeqa.utils.dump import HostDumper from collections import defaultdict @@ -65,7 +66,11 @@ class QemuRunner: self.runqemutime = 120 if not workdir: workdir = os.getcwd() - self.qemu_pidfile = workdir + '/pidfile_' + str(os.getpid()) + # Use tempfile to obtain a unique name. We own the directory + # so closing the file isn't an issue as long as we don't delete it + self.qemu_pidfile = tempfile.mkstemp(dir=workdir, prefix="qemupid_") + os.close(self.qemu_pidfile[0]) + self.qemu_pidfile = self.qemu_pidfile[1] self.host_dumper = HostDumper(dump_host_cmds, dump_dir) self.monitorpipe = None @@ -182,8 +187,6 @@ class QemuRunner: # Ask QEMU to store the QEMU process PID in file, this way we don't have to parse running processes # and analyze descendents in order to determine it. - if os.path.exists(self.qemu_pidfile): - os.remove(self.qemu_pidfile) self.qemuparams = 'bootparams="{0}" qemuparams="-pidfile {1}"'.format(bootparams, self.qemu_pidfile) if qemuparams: self.qemuparams = self.qemuparams[:-1] + " " + qemuparams + " " + '\"' -- 2.25.1
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#140846): https://lists.openembedded.org/g/openembedded-core/message/140846 Mute This Topic: https://lists.openembedded.org/mt/75713689/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
