You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
test_epoll fails on Solaris with 4 failures, caused by two non-portable assumptions.
A non-blocking connect() is assumed to fail._connected_pair() requires EINPROGRESS, but it is only returned if the connection cannot be established immediately, and over the loopback Solaris establishes it at once. This affects test_add, test_control_and_wait, test_fromfd and test_unregister_closed:
AssertionError: Connect should have raised EINPROGRESS
Unregistering a closed file descriptor is assumed to fail with EBADF. On Solaris it succeeds, so test_unregister_closed fails with AssertionError: OSError not raised. The descriptor is really closed (the peer reads EOF), but removing it from the epoll set still succeeds. On Linux closing a descriptor removes it from the set, so the later removal fails.
The assertion cannot be relaxed: it is the point of gh-83420, select.epoll.unregister() no longer ignores EBADF since 3.9. Solaris has no error to report, so the test can only be skipped there.
Bug report
test_epollfails on Solaris with 4 failures, caused by two non-portable assumptions.A non-blocking
connect()is assumed to fail._connected_pair()requiresEINPROGRESS, but it is only returned if the connection cannot be established immediately, and over the loopback Solaris establishes it at once. This affectstest_add,test_control_and_wait,test_fromfdandtest_unregister_closed:Unregistering a closed file descriptor is assumed to fail with
EBADF. On Solaris it succeeds, sotest_unregister_closedfails withAssertionError: OSError not raised. The descriptor is really closed (the peer reads EOF), but removing it from the epoll set still succeeds. On Linux closing a descriptor removes it from the set, so the later removal fails.The assertion cannot be relaxed: it is the point of gh-83420,
select.epoll.unregister()no longer ignoresEBADFsince 3.9. Solaris has no error to report, so the test can only be skipped there.Linked PRs