From 11bde5de8343f5b37c65c10a71824cdd57b85f86 Mon Sep 17 00:00:00 2001 From: Robert Yang Date: Tue, 8 Aug 2017 02:12:07 -0700 Subject: bitbake: process: Fix disconnect when BB_SERVER_TIMEOUT Fixed: $ export BB_SERVER_TIMEOUT=10000 $ bitbake --server-only $ bitbake --status-only [snip] File "/buildarea/lyang1/poky/bitbake/lib/bb/server/process.py", line 472, in recvfds msg, ancdata, flags, addr = sock.recvmsg(1, socket.CMSG_LEN(bytes_size)) OSError: [Errno 9] Bad file descriptor And: $ export BB_SERVER_TIMEOUT=10000 $ bitbake --server-only -B localhost:-1 $ bitbake --status-only # Everything is fine in first run $ bitbake --status-only [snip] File "/buildarea/lyang1/poky/bitbake/lib/bb/server/process.py", line 472, in recvfds msg, ancdata, flags, addr = sock.recvmsg(1, socket.CMSG_LEN(bytes_size)) OSError: [Errno 9] Bad file descriptor This was because self.controllersock was not set to False, so it still ran sock.recvmsg() when sock was closed. And also need set command_channel to Flase, otherwise the self.command_channel.get() will always run when EOF, and cause infinite loop. (Bitbake rev: 7b739a38601b053d9bea4df2c0b44a952ab670c4) Signed-off-by: Robert Yang Signed-off-by: Richard Purdie --- bitbake/lib/bb/server/process.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py index bfd6404b73..5b8a549f94 100644 --- a/bitbake/lib/bb/server/process.py +++ b/bitbake/lib/bb/server/process.py @@ -173,6 +173,7 @@ class ProcessServer(multiprocessing.Process): self.event_writer.writer.close() del self.event_writer self.controllersock.close() + self.controllersock = False self.haveui = False self.lastui = time.time() self.cooker.clientComplete() @@ -188,6 +189,7 @@ class ProcessServer(multiprocessing.Process): command = self.command_channel.get() except EOFError: # Client connection shutting down + self.command_channel = False continue if command[0] == "terminateServer": self.quit = True -- cgit v1.2.3-54-g00ecf