Uh oh!
There was an error while loading. Please reload this page.
[3.14] gh-155109: Run tests exhausting the C stack with a limited C stack (GH-155120) - #155165
Merged
serhiy-storchaka merged 1 commit intoAug 4, 2026
Merged
Conversation
…ack (pythonGH-155120) Add the @support.run_with_limited_c_stack() decorator which runs the test in a thread with a 8 MiB C stack, so that the outcome does not depend on RLIMIT_STACK. Use it in tests which recurse to a fixed depth -- @support.skip_if_huge_c_stack() failed to skip them with a 16 MiB stack. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> (cherry picked from commit ce5ae29)
serhiy-storchaka
requested review from
AlexWaygood, Eclips4, JelleZijlstra and iritkatriel
as code ownersAugust 4, 2026 09:49
serhiy-storchaka
enabled auto-merge (squash)
August 4, 2026 10:04
Uh oh!
There was an error while loading. Please reload this page.
deadlovelll pushed a commit
to deadlovelll/cpython
that referenced
this pull request
Aug 5, 2026
…ed C stack (pythonGH-155120) (pythonGH-155165) Add the @support.run_with_limited_c_stack() decorator which runs the test in a thread with a 8 MiB C stack, so that the outcome does not depend on RLIMIT_STACK. Use it in tests which recurse to a fixed depth -- @support.skip_if_huge_c_stack() failed to skip them with a 16 MiB stack. (cherry picked from commit ce5ae29) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add the
@support.run_with_limited_c_stack(depth)decorator: it runs the test in a thread with an 8 MiB C stack, so that the outcome does not depend onRLIMIT_STACK. If the thread stack size cannot be limited, it falls back to the old behavior — run in the current thread and skip if the C stack is too large.Use it in tests which recurse to a fixed depth.
@support.skip_if_huge_c_stack()estimates the remaining stack in interpreter loop frames (~328 bytes), so it fails to skip tests which recurse with much smaller C frames (~100 bytes) — they fail with a 16 MiB stack. It is kept for tests with unbounded recursion and fortest_call.test_super_deep(), which needs a deep stack.(cherry picked from commit ce5ae29)
Co-authored-by: Serhiy Storchaka storchaka@gmail.com
skip_if_huge_c_stackunderestimates available C recursion depth #155109