Fix SystemError buffer overflow on Python 3.14+ and add Python 3.14 support #1123
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.
Problem
Fixes #1119 - B2 CLI crashes with
SystemError: buffer overflowon Python 3.14+ due to a bug in therst2ansidependency.The issue occurs because rst2ansi passes a 4-byte buffer to the
TIOCGWINSZioctl call, which expects 8 bytes on most platforms. Python 3.14 enforces stricter buffer validation, causing the crash.Solution
b2/_internal/arg_parser.pyto catch SystemError and fall back to plain text formattingTest Plan
test_help_with_ttythat reproduces the issue on Python 3.14Upstream Fix
Also submitted upstream fix to rst2ansi: Snaipe/python-rst2ansi#20
The fallback can be removed once rst2ansi is updated.
Submitted from reef-technologies fork after internal review