Guido van Rossum added the comment: There's a bug in the kqueue selector. The following code in your patch has 'fd' instead of 'key.fd', twice:
if events & SELECT_IN: kev = kevent(key.fd, KQ_FILTER_READ, KQ_EV_ADD) self._kqueue.control([kev], 0, 0) if events & SELECT_OUT: kev = kevent(key.fd, KQ_FILTER_WRITE, KQ_EV_ADD) self._kqueue.control([kev], 0, 0) One kqueue test fails on OSX: ERROR: test_sock_client_ops (tulip.events_test.KqueueEventLoopTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/guido/tulip/tulip/selectors.py", line 178, in _key_from_fd return self._fd_to_key[fd] KeyError: 11 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/guido/tulip/tulip/events_test.py", line 167, in test_sock_client_ops el.run_until_complete(el.sock_sendall(sock, b'GET / HTTP/1.0\r\n\r\n')) File "/Users/guido/tulip/tulip/unix_events.py", line 146, in run_until_complete self.run() File "/Users/guido/tulip/tulip/unix_events.py", line 110, in run self._run_once() File "/Users/guido/tulip/tulip/unix_events.py", line 582, in _run_once event_list = self._selector.select(timeout) File "/Users/guido/tulip/tulip/selectors.py", line 329, in select key = self._key_from_fd(fd) File "/Users/guido/tulip/tulip/selectors.py", line 180, in _key_from_fd raise RuntimeError("No key found for fd {}".format(fd)) RuntimeError: No key found for fd 11 ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue16853> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com