[bitbake-devel] [PATCH] process: Ensure we call select() to know which fds to read

Richard Purdie richard.purdie at linuxfoundation.org
Mon Aug 21 20:29:52 UTC 2017


There is an interesting bug in the current code where a sync command
is not seen until the current async command completes, by which time
the UI may have shut down.

The reason is that if there are idle commands, we may not end up sleeping
in the select call at all, partiularly under heavy load like parsing.

Fix this by calling select with a zero timeout so that we see active
fds and know to read from them. This fixes various problems toaster was
having with the recent server changes.

[YOCTO #11898]

Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 lib/bb/server/process.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/bb/server/process.py b/lib/bb/server/process.py
index 2ebfdfc..3ab793c 100644
--- a/lib/bb/server/process.py
+++ b/lib/bb/server/process.py
@@ -312,7 +312,7 @@ class ProcessServer(multiprocessing.Process):
                 # Ignore EINTR
                 return []
         else:
-            return []
+            return select.select(fds,[],[],0)[0]
 
 
 class ServerCommunicator():
-- 
2.7.4




More information about the bitbake-devel mailing list