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-storchaka serhiy-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.14 Aug 4, 2026
90 of 92 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

tests Tests in the Lib/test dir

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant