diff options
Diffstat (limited to 'lib/bb/runqueue.py')
-rw-r--r-- | lib/bb/runqueue.py | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py index e62bb5232..dbb334c55 100644 --- a/lib/bb/runqueue.py +++ b/lib/bb/runqueue.py @@ -2090,22 +2090,18 @@ class runQueuePipe(): self.rqexec = rqexec def read(self): - try: - for w in [self.rq.worker, self.rq.fakeworker]: - if not w: - continue - pid, status = os.waitpid(w.pid, os.WNOHANG) - if pid != 0 and not self.rq.teardown: - if self.rq.worker and pid == self.rq.worker.pid: - name = "Worker" - elif self.rq.fakeworker and pid == self.rq.fakeworker.pid: - name = "Fakeroot" - else: - name = "Unknown" - bb.error("%s process (%s) exited unexpectedly (%s), shutting down..." % (name, pid, str(status))) - self.rq.finish_runqueue(True) - except OSError: - pass + for w in [self.rq.worker, self.rq.fakeworker]: + if not w: + continue + w.poll() + if w.returncode is not None and not self.rq.teardown: + name = None + if self.rq.worker and w.pid == self.rq.worker.pid: + name = "Worker" + elif self.rq.fakeworker and w.pid == self.rq.fakeworker.pid: + name = "Fakeroot" + bb.error("%s process (%s) exited unexpectedly (%s), shutting down..." % (name, w.pid, str(w.returncode))) + self.rq.finish_runqueue(True) start = len(self.queue) try: |