1 |
commit: 071440cc30cc5a625317d5bd47e86c2bfdd8a940 |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon Feb 25 23:52:44 2013 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Feb 25 23:52:44 2013 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=071440cc |
7 |
|
8 |
EventLoop: qemu-user epoll quirk, bug #451326 |
9 |
|
10 |
The epoll implementation in qemu-user-1.2.2 appears to generate events |
11 |
for file descriptors that are no longer registered. Handle it, since it |
12 |
appears to be harmless (see bug #451326). |
13 |
|
14 |
--- |
15 |
pym/portage/util/_eventloop/EventLoop.py | 8 +++++++- |
16 |
1 files changed, 7 insertions(+), 1 deletions(-) |
17 |
|
18 |
diff --git a/pym/portage/util/_eventloop/EventLoop.py b/pym/portage/util/_eventloop/EventLoop.py |
19 |
index ad64406..3742055 100644 |
20 |
--- a/pym/portage/util/_eventloop/EventLoop.py |
21 |
+++ b/pym/portage/util/_eventloop/EventLoop.py |
22 |
@@ -256,7 +256,13 @@ class EventLoop(object): |
23 |
while event_queue: |
24 |
events_handled += 1 |
25 |
f, event = event_queue.pop() |
26 |
- x = event_handlers[f] |
27 |
+ try: |
28 |
+ x = event_handlers[f] |
29 |
+ except KeyError: |
30 |
+ # This is known to be triggered by the epoll |
31 |
+ # implementation in qemu-user-1.2.2, and appears |
32 |
+ # to be harmless (see bug #451326). |
33 |
+ continue |
34 |
if not x.callback(f, event, *x.args): |
35 |
self.source_remove(x.source_id) |