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
{{ message }}
Repository navigation
Running python test suite fails on macOS 10.14.4 with resource.RLIMIT_STACK error #80613
bpo-34602: python3 resource.setrlimit strange behaviour under macOS
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee='https://github.com/ned-deily'closed_at=<Date2019-04-29.19:53:25.019>created_at=<Date2019-03-26.07:09:11.590>labels= ['OS-mac', '3.8', 'type-bug', '3.7']
title='Running python test suite fails on macOS 10.14.4 with resource.RLIMIT_STACK error'updated_at=<Date2019-07-02.07:57:03.169>user='https://github.com/ned-deily'
After upgrading my first macOS system to the newly released macOS 10.14.4 update, attempts to run the Python test suite via regrtest fail:
$ /usr/local/bin/python3.7 -m test -uall -j3 -w
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/runpy.py", line 193, in _run_module_as_main"__main__", mod_spec)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/runpy.py", line 85, in _run_codeexec(code, run_globals)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/test/__main__.py", line 2, in <module>
main()
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/test/libregrtest/main.py", line 640, in main
Regrtest().main(tests=tests, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/test/libregrtest/main.py", line 586, in mainself._main(tests, kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/test/libregrtest/main.py", line 607, in _main
setup_tests(self.ns)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/test/libregrtest/setup.py", line 77, in setup_tests
resource.setrlimit(resource.RLIMIT_STACK, (newsoft, hard))
ValueError: current limit exceeds maximum limit
The error is during regrtest initialization when it is trying to increase the process stack size to avoid previously seen problems when running tests. This code has been unchanged for a long time.
Stepping through the code in the REPL on 10.14.4:
>>> import resource
>>> resource.getrlimit(resource.RLIMIT_STACK)
(8388608, 67104768)
>>> soft, hard = resource.getrlimit(resource.RLIMIT_STACK)
>>> newsoft =min(hard, max(soft, 1024*2048))
>>> newsoft
8388608
>>> resource.setrlimit(resource.RLIMIT_STACK, (newsoft, hard))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: current limit exceeds maximum limit
The same code run on a macOS system still running 10.14.3 gives the same values from getrlimit but does not fail when calling setrlimit.
I will investigate further tomorrow; if this is a general problem with macOS 10.14.4, we'll need to provide a workaround and possibly open an incident report with Apple.
I created simple program calling setrlimit and it succeeds.
I confirmed setrlimit argument is exactly same.
It's very curious why same Python code fails...
Activity
ned-deily commentedon Mar 26, 2019
After upgrading my first macOS system to the newly released macOS 10.14.4 update, attempts to run the Python test suite via regrtest fail:
The error is during regrtest initialization when it is trying to increase the process stack size to avoid previously seen problems when running tests. This code has been unchanged for a long time.
The same code run on a macOS system still running 10.14.3 gives the same values from getrlimit but does not fail when calling setrlimit.
I will investigate further tomorrow; if this is a general problem with macOS 10.14.4, we'll need to provide a workaround and possibly open an incident report with Apple.
methane commentedon Mar 26, 2019
My mac is also 10.14.4. I don't have older macOS now. Could someone test this?
kakshay21 commentedon Mar 26, 2019
I'm on macOS 10.14.3 and running those commands gives me this ->
~ ulimit -Sa
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 8192
-c: core file size (blocks) 0
-v: address space (kbytes) unlimited
-l: locked-in-memory size (kbytes) unlimited
-u: processes 709
-n: file descriptors 4864
➜ ~ ulimit -Ha
-t: cpu time (seconds) unlimited
-f: file size (blocks) unlimited
-d: data seg size (kbytes) unlimited
-s: stack size (kbytes) 65532
-c: core file size (blocks) unlimited
-v: address space (kbytes) unlimited
-l: locked-in-memory size (kbytes) unlimited
-u: processes 1064
-n: file descriptors unlimited
methane commentedon Mar 26, 2019
I created simple program calling setrlimit and it succeeds.
I confirmed setrlimit argument is exactly same.
It's very curious why same Python code fails...
== Python code
import resource
soft, hard = resource.getrlimit(resource.RLIMIT_STACK)
print("limits=", soft, hard)
resource.setrlimit(resource.RLIMIT_STACK, (soft, hard))
methane commentedon Mar 27, 2019
I think this issue is duplicate of https://bugs.python.org/issue34602
remilapeyre commentedon Apr 1, 2019
I confirm that reverting 335ab5b work as a workaround, and does not seem to create regressions.
berkerpeksag commentedon Apr 16, 2019
I can also confirm that reverting 335ab5b fixes the problem.
ned-deily commentedon Apr 29, 2019
Thanks, Inada-san, for the pointer. Closing this as a duplicate of bpo-34602
ned-deily commentedon Jul 2, 2019
See updated bpo-34602 discussion for why reverting 335ab5b causes other problems and for a different fix for this issue.