[bitbake-devel] [PATCH 5/8] runqueue.py: check results[0] in keys of build_pids before being used to avoid exceptions

Shane Wang shane.wang at intel.com
Thu Mar 29 12:54:54 UTC 2012


[Yocto #2186]

Signed-off-by: Shane Wang <shane.wang at intel.com>
---
 bitbake/lib/bb/runqueue.py |   20 ++++++++++++--------
 1 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 6970548..67ad14b 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -1049,17 +1049,21 @@ class RunQueueExecute:
         result = os.waitpid(-1, os.WNOHANG)
         if result[0] == 0 and result[1] == 0:
             return None
-        task = self.build_pids[result[0]]
-        del self.build_pids[result[0]]
-        self.build_pipes[result[0]].close()
-        del self.build_pipes[result[0]]
+        task = None
+        if result[0] in self.build_pids.keys():
+            task = self.build_pids[result[0]]
+            del self.build_pids[result[0]]
+        if result[0] in self.build_pipes.keys():
+            self.build_pipes[result[0]].close()
+            del self.build_pipes[result[0]]
         # self.build_stamps[result[0]] may not exist when use shared work directory.
         if result[0] in self.build_stamps.keys():
             del self.build_stamps[result[0]]
-        if result[1] != 0:
-            self.task_fail(task, result[1]>>8)
-        else:
-            self.task_complete(task)
+        if task:
+            if result[1] != 0:
+                self.task_fail(task, result[1]>>8)
+            else:
+                self.task_complete(task)
         return True
 
     def finish_now(self):
-- 
1.7.6





More information about the bitbake-devel mailing list