From patchwork Mon Sep 17 22:43:38 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [bitbake-devel,8/8] knotty.py: Handle rare interrupted select call Date: Mon, 17 Sep 2012 22:43:38 -0000 From: Jason Wessel X-Patchwork-Id: 36673 Message-Id: <1347921818-60562-9-git-send-email-jason.wessel@windriver.com> To: Under a high load and while resizing the terminal window, I received the following traceback: Traceback (most recent call last): File "/bitbake/bin//bitbake", line 263, in ret = main() File "/bitbake/bin//bitbake", line 252, in main return server.launchUI(ui_main, server_connection.connection, server_connection.events) File "/bitbake/lib/bb/server/process.py", line 269, in launchUI return bb.cooker.server_main(self.cooker, uifunc, *args) File "/bitbake/lib/bb/cooker.py", line 1407, in server_main ret = func(*args) File "/bitbake/lib/bb/ui/knotty.py", line 385, in main if stdin_mgr.poll(): error: (4, 'Interrupted system call') Interrupted system calls from a sigwinch are certainly possible and the right thing to do is just restart the system call, or in this case, punt and wait until the next poll cycle. (LOCAL REV: NOT UPSTREAM) Signed-off-by: Jason Wessel --- lib/bb/ui/knotty.py | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/lib/bb/ui/knotty.py b/lib/bb/ui/knotty.py index 2d58ebe..73327b5 100644 --- a/lib/bb/ui/knotty.py +++ b/lib/bb/ui/knotty.py @@ -257,7 +257,11 @@ class StdinMgr: def poll(self): if not self.stdinbackup: return False - return select.select([sys.stdin], [], [], 0) == ([sys.stdin], [], []) + try: + ret = select.select([sys.stdin], [], [], 0) == ([sys.stdin], [], []) + except: + return False + return ret def restore(self): if self.stdinbackup: