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
Thanks for the report. This is caused by macOS's default per-process file descriptor limit rather than a bug in the event loop.
test_event deliberately opens 256 UDP sockets (to exceed Winsock's 64-descriptor select() limit) plus a sender socket and the loop's own kqueue descriptor. A stock macOS Terminal session starts with a soft limit of 256 (ulimit -n prints 256), so socket() starts returning -1 near the end of that loop and the unchecked descriptor trips the bind() assertion you saw. Running with a higher limit already makes the test pass on 3.3.6:
#3060 fixes this properly: CTest now raises the soft limit to 1024 before launching each unit test, test_event raises its own limit when run directly, and a socket() failure is now reported as such instead of as a bind() failure.
Activity
madeye commentedon Sep 12, 2026
Thanks for the report. This is caused by macOS's default per-process file descriptor limit rather than a bug in the event loop.
test_eventdeliberately opens 256 UDP sockets (to exceed Winsock's 64-descriptorselect()limit) plus a sender socket and the loop's own kqueue descriptor. A stock macOS Terminal session starts with a soft limit of 256 (ulimit -nprints256), sosocket()starts returning -1 near the end of that loop and the unchecked descriptor trips thebind()assertion you saw. Running with a higher limit already makes the test pass on 3.3.6:#3060 fixes this properly: CTest now raises the soft limit to 1024 before launching each unit test,
test_eventraises its own limit when run directly, and asocket()failure is now reported as such instead of as abind()failure.Raise the file descriptor limit for descriptor-heavy tests