diff options
Diffstat (limited to 'meta/lib')
| -rw-r--r-- | meta/lib/oeqa/utils/qemurunner.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/meta/lib/oeqa/utils/qemurunner.py b/meta/lib/oeqa/utils/qemurunner.py index 7ae309845a..cd95d33bdc 100644 --- a/meta/lib/oeqa/utils/qemurunner.py +++ b/meta/lib/oeqa/utils/qemurunner.py | |||
| @@ -36,6 +36,7 @@ class QemuRunner: | |||
| 36 | 36 | ||
| 37 | # Popen object for runqemu | 37 | # Popen object for runqemu |
| 38 | self.runqemu = None | 38 | self.runqemu = None |
| 39 | self.runqemu_exited = False | ||
| 39 | # pid of the qemu process that runqemu will start | 40 | # pid of the qemu process that runqemu will start |
| 40 | self.qemupid = None | 41 | self.qemupid = None |
| 41 | # target ip - from the command line or runqemu output | 42 | # target ip - from the command line or runqemu output |
| @@ -124,7 +125,6 @@ class QemuRunner: | |||
| 124 | self.logger.error('Output from runqemu:\n%s' % self.getOutput(self.runqemu.stdout)) | 125 | self.logger.error('Output from runqemu:\n%s' % self.getOutput(self.runqemu.stdout)) |
| 125 | self.stop() | 126 | self.stop() |
| 126 | self._dump_host() | 127 | self._dump_host() |
| 127 | raise SystemExit | ||
| 128 | 128 | ||
| 129 | def start(self, qemuparams = None, get_ip = True, extra_bootparams = None, runqemuparams='', launch_cmd=None, discard_writes=True): | 129 | def start(self, qemuparams = None, get_ip = True, extra_bootparams = None, runqemuparams='', launch_cmd=None, discard_writes=True): |
| 130 | env = os.environ.copy() | 130 | env = os.environ.copy() |
| @@ -232,6 +232,8 @@ class QemuRunner: | |||
| 232 | endtime = time.time() + self.runqemutime | 232 | endtime = time.time() + self.runqemutime |
| 233 | while not self.is_alive() and time.time() < endtime: | 233 | while not self.is_alive() and time.time() < endtime: |
| 234 | if self.runqemu.poll(): | 234 | if self.runqemu.poll(): |
| 235 | if self.runqemu_exited: | ||
| 236 | return False | ||
| 235 | if self.runqemu.returncode: | 237 | if self.runqemu.returncode: |
| 236 | # No point waiting any longer | 238 | # No point waiting any longer |
| 237 | self.logger.warning('runqemu exited with code %d' % self.runqemu.returncode) | 239 | self.logger.warning('runqemu exited with code %d' % self.runqemu.returncode) |
| @@ -241,6 +243,9 @@ class QemuRunner: | |||
| 241 | return False | 243 | return False |
| 242 | time.sleep(0.5) | 244 | time.sleep(0.5) |
| 243 | 245 | ||
| 246 | if self.runqemu_exited: | ||
| 247 | return False | ||
| 248 | |||
| 244 | if not self.is_alive(): | 249 | if not self.is_alive(): |
| 245 | self.logger.error("Qemu pid didn't appear in %s seconds (%s)" % | 250 | self.logger.error("Qemu pid didn't appear in %s seconds (%s)" % |
| 246 | (self.runqemutime, time.strftime("%D %H:%M:%S"))) | 251 | (self.runqemutime, time.strftime("%D %H:%M:%S"))) |
| @@ -416,7 +421,7 @@ class QemuRunner: | |||
| 416 | os.killpg(os.getpgid(self.runqemu.pid), signal.SIGKILL) | 421 | os.killpg(os.getpgid(self.runqemu.pid), signal.SIGKILL) |
| 417 | self.runqemu.stdin.close() | 422 | self.runqemu.stdin.close() |
| 418 | self.runqemu.stdout.close() | 423 | self.runqemu.stdout.close() |
| 419 | self.runqemu = None | 424 | self.runqemu_exited = True |
| 420 | 425 | ||
| 421 | if hasattr(self, 'server_socket') and self.server_socket: | 426 | if hasattr(self, 'server_socket') and self.server_socket: |
| 422 | self.server_socket.close() | 427 | self.server_socket.close() |
| @@ -457,7 +462,7 @@ class QemuRunner: | |||
| 457 | return False | 462 | return False |
| 458 | 463 | ||
| 459 | def is_alive(self): | 464 | def is_alive(self): |
| 460 | if not self.runqemu or self.runqemu.poll() is not None: | 465 | if not self.runqemu or self.runqemu.poll() is not None or self.runqemu_exited: |
| 461 | return False | 466 | return False |
| 462 | if os.path.isfile(self.qemu_pidfile): | 467 | if os.path.isfile(self.qemu_pidfile): |
| 463 | # when handling pidfile, qemu creates the file, stat it, lock it and then write to it | 468 | # when handling pidfile, qemu creates the file, stat it, lock it and then write to it |
