summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2013-02-25 15:52:44 -0800
committerZac Medico <zmedico@gentoo.org>2013-02-25 15:52:44 -0800
commit071440cc30cc5a625317d5bd47e86c2bfdd8a940 (patch)
treebc0dcad85baa9901c6fa4ed1f6ae2da47775a194
parentman/ru/env-update.1: fix some bold and italics (diff)
downloadportage-071440cc30cc5a625317d5bd47e86c2bfdd8a940.tar.gz
portage-071440cc30cc5a625317d5bd47e86c2bfdd8a940.tar.bz2
portage-071440cc30cc5a625317d5bd47e86c2bfdd8a940.zip
EventLoop: qemu-user epoll quirk, bug #451326
The epoll implementation in qemu-user-1.2.2 appears to generate events for file descriptors that are no longer registered. Handle it, since it appears to be harmless (see bug #451326).
-rw-r--r--pym/portage/util/_eventloop/EventLoop.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/pym/portage/util/_eventloop/EventLoop.py b/pym/portage/util/_eventloop/EventLoop.py
index ad64406c0..3742055e9 100644
--- a/pym/portage/util/_eventloop/EventLoop.py
+++ b/pym/portage/util/_eventloop/EventLoop.py
@@ -256,7 +256,13 @@ class EventLoop(object):
while event_queue:
events_handled += 1
f, event = event_queue.pop()
- x = event_handlers[f]
+ try:
+ x = event_handlers[f]
+ except KeyError:
+ # This is known to be triggered by the epoll
+ # implementation in qemu-user-1.2.2, and appears
+ # to be harmless (see bug #451326).
+ continue
if not x.callback(f, event, *x.args):
self.source_remove(x.source_id)