Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.4k
Open
Description
If you setulimit -n unlimited
on Solaris and its derivatives (where/dev/poll
is available) and importselectors
, Python crashes with aMemoryError
:
> ulimit -n unlimited> python3.11 -c"import selectors"Traceback (most recentcall last): File"<string>", line 1, in<module> File"/usr/lib/python3.11/selectors.py", line 613, in<module> elif _can_use('devpoll'):^^^^^^^^^^^^^^^^^^^ File"/usr/lib/python3.11/selectors.py", line 594, in _can_use selector_obj = selector()^^^^^^^^^^MemoryError
The issue is that Python usesRLIMIT_NOFILE
to allocatedthat manystruct pollfd
s, and there is no upper limit. Infinity is represented by something close to INT_MAX, and the allocation thus fails.
Your environment
I tested this on Oracle Solaris with 3.11, 3.9 and 3.7 (where you need a slightly different way to crash it:python3.7 -c "import select; select.devpoll()"
).
I verified that on SmartOS, it behaves the same way (on SmartOS, you can actually set hugeulimit -n
values that break it as well).
Linked PRs
Metadata
Metadata
Assignees
Labels
Projects
Status
No status