summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/lib/oeqa/utils/qemurunner.py50
1 files changed, 22 insertions, 28 deletions
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py
index 4f094e29c7..0032f6ed8d 100644
--- a/meta/lib/oeqa/utils/qemurunner.py
+++ b/meta/lib/oeqa/utils/qemurunner.py
@@ -277,14 +277,33 @@ class QemuRunner:
277 277
278 if self.runqemu_exited: 278 if self.runqemu_exited:
279 self.logger.warning("runqemu after timeout") 279 self.logger.warning("runqemu after timeout")
280 return False
281 280
282 if self.runqemu.returncode: 281 if self.runqemu.returncode:
283 self.logger.warning('runqemu exited with code %d' % self.runqemu.returncode) 282 self.logger.warning('runqemu exited with code %d' % self.runqemu.returncode)
284 return False
285 283
286 if not self.is_alive(): 284 if not self.is_alive():
287 self.logger.warning('is_alive() failed later') 285 self.logger.error("Qemu pid didn't appear in %s seconds (%s)" %
286 (self.runqemutime, time.strftime("%D %H:%M:%S")))
287
288 qemu_pid = None
289 if os.path.isfile(self.qemu_pidfile):
290 with open(self.qemu_pidfile, 'r') as f:
291 qemu_pid = f.read().strip()
292
293 self.logger.error("Status information, poll status: %s, pidfile exists: %s, pidfile contents %s, proc pid exists %s"
294 % (self.runqemu.poll(), os.path.isfile(self.qemu_pidfile), str(qemu_pid), os.path.exists("/proc/" + str(qemu_pid))))
295
296 # Dump all processes to help us to figure out what is going on...
297 ps = subprocess.Popen(['ps', 'axww', '-o', 'pid,ppid,pri,ni,command '], stdout=subprocess.PIPE).communicate()[0]
298 processes = ps.decode("utf-8")
299 self.logger.debug("Running processes:\n%s" % processes)
300 self._dump_host()
301 op = self.getOutput(output)
302 self.stop()
303 if op:
304 self.logger.error("Output from runqemu:\n%s" % op)
305 else:
306 self.logger.error("No output from runqemu.\n")
288 return False 307 return False
289 308
290 # Create the client socket for the QEMU Monitor Control Socket 309 # Create the client socket for the QEMU Monitor Control Socket
@@ -326,31 +345,6 @@ class QemuRunner:
326 # Release the qemu porcess to continue running 345 # Release the qemu porcess to continue running
327 self.run_monitor('cont') 346 self.run_monitor('cont')
328 347
329 if not self.is_alive():
330 self.logger.error("Qemu pid didn't appear in %s seconds (%s)" %
331 (self.runqemutime, time.strftime("%D %H:%M:%S")))
332
333 qemu_pid = None
334 if os.path.isfile(self.qemu_pidfile):
335 with open(self.qemu_pidfile, 'r') as f:
336 qemu_pid = f.read().strip()
337
338 self.logger.error("Status information, poll status: %s, pidfile exists: %s, pidfile contents %s, proc pid exists %s"
339 % (self.runqemu.poll(), os.path.isfile(self.qemu_pidfile), str(qemu_pid), os.path.exists("/proc/" + str(qemu_pid))))
340
341 # Dump all processes to help us to figure out what is going on...
342 ps = subprocess.Popen(['ps', 'axww', '-o', 'pid,ppid,pri,ni,command '], stdout=subprocess.PIPE).communicate()[0]
343 processes = ps.decode("utf-8")
344 self.logger.debug("Running processes:\n%s" % processes)
345 self._dump_host()
346 op = self.getOutput(output)
347 self.stop()
348 if op:
349 self.logger.error("Output from runqemu:\n%s" % op)
350 else:
351 self.logger.error("No output from runqemu.\n")
352 return False
353
354 # We are alive: qemu is running 348 # We are alive: qemu is running
355 out = self.getOutput(output) 349 out = self.getOutput(output)
356 netconf = False # network configuration is not required by default 350 netconf = False # network configuration is not required by default