Skip to content

[3.14] gh-155109: Run tests exhausting the C stack with a limited C stack (GH-155120) - #155165

Merged
serhiy-storchaka merged 1 commit into
python:3.14from
serhiy-storchaka:backport-ce5ae29-3.14
Aug 4, 2026
Merged

[3.14] gh-155109: Run tests exhausting the C stack with a limited C stack (GH-155120)#155165
serhiy-storchaka merged 1 commit into
python:3.14from
serhiy-storchaka:backport-ce5ae29-3.14

Conversation

@serhiy-storchaka

Copy link
Copy Markdown
Member

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 on RLIMIT_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 for test_call.test_super_deep(), which needs a deep stack.

(cherry picked from commit ce5ae29)

Co-authored-by: Serhiy Storchaka storchaka@gmail.com

…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-storchakaserhiy-storchaka added the tests Tests in the Lib/test dir label Aug 4, 2026
@serhiy-storchaka
serhiy-storchaka enabled auto-merge (squash) August 4, 2026 10:04
@serhiy-storchaka
serhiy-storchaka merged commit b669be3 into python:3.14Aug 4, 2026
90 of 92 checks passed
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>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

testsTests in the Lib/test dir

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@serhiy-storchaka