Open
Description
Bug report
Bug description:
Attempting to install cython on the 3.13 branch fails with what looks like an infinite loop that sits there and burns CPU forever.
I have bisected this to #124266 which makes no sense to me, but I'm pretty confident about it as observed behavior.
bisect log:
git bisect log
git bisect start
# status: waiting for both good and bad commits
# good: [60403a5] Python 3.13.0
git bisect good 60403a5
# status: waiting for bad commit, 1 good commit known
# bad: [ff044ed] [3.13] gh-124295: Add translation tests for argparse (GH-124803) (GH-126046)
git bisect bad ff044ed
# bad: [1279be6] [3.13] gh-123133: clarify p=0 case for "f" and "e" formatting types (GH-125426) (#125428)
git bisect bad 1279be6
# bad: [7bc99dd] [3.13] Tee of tee was not producing n independent iterators (gh-123884) (gh-125081)
git bisect bad 7bc99dd
# bad: [db3ccd8] [3.13] gh-53780: Ignore the first "--" (double dash) between an option and command in argparse (GH-124275) (GH-125073)
git bisect bad db3ccd8
# bad: [11d4b54] [3.13] gh-116850: Fix argparse for namespaces with not directly writable dict (GH-124667) (GH-124757)
git bisect bad 11d4b54
# bad: [167d8d2] [3.13] gh-63143: Fix parsing mutually exclusive arguments in argparse (GH-124307) (GH-124418)
git bisect bad 167d8d2
# good: [80ba17a] [3.13] gh-112804: Clamping timeout value for _PySemaphore_PlatformWait (gh-124914) (gh-124991)
git bisect good 80ba17a
# bad: [6387016] [3.13] gh-81691: Fix handling of multiple "--" (double dashes) in argparse (GH-124233) (GH-124266)
git bisect bad 6387016
# good: [6fe746d] [3.13] gh-122392: IDLE - Fix overlapping lines in browsers (GH-122392) (GH-124975) (#125061)
git bisect good 6fe746d
# first bad commit: [6387016] [3.13] gh-81691: Fix handling of multiple "--" (double dashes) in argparse (GH-124233) (GH-124266)
The Python invocation it is failing on from setuptools is :
/home/tcaswell/.virtualenvs/bisect/bin/python3 -u -c
exec(compile('''
# This is <pip-setuptools-caller> -- a caller that pip uses to run setup.py
#
# - It imports setuptools before invoking setup.py, to enable projects that directly
# import from `distutils.core` to work with newer packaging standards.
# - It provides a clear error message when setuptools is not installed.
# - It sets `sys.argv[0]` to the underlying `setup.py`, when invoking `setup.py` so
# setuptools doesn't think the script is `-c`. This avoids the following warning:
# manifest_maker: standard file '-c' not found".
# - It generates a shim setup.py, for handling setup.cfg-only projects.
import os, sys, tokenize
try:
import setuptools
except ImportError as error:
print(
"ERROR: Can not execute `setup.py` since setuptools is not available in "
"the build environment.",
file=sys.stderr,
)
sys.exit(1)
__file__ = %r
sys.argv[0] = __file__
if os.path.exists(__file__):
filename = __file__
with tokenize.open(__file__) as f:
setup_py_code = f.read()
else:
filename = "<auto-generated setuptools caller>"
setup_py_code = "from setuptools import setup; setup()"
exec(compile(setup_py_code, filename, "exec"))
''' % ('/home/tcaswell/source/p/cython/cython/setup.py',), "<pip-setuptools-caller>", "exec")) bdist_wheel -d /tmp/pip-wheel-l3necg1_~
I have not succeeded in getting traceback out of this yet.
- I'm pretty confident in the bisect on the 3.13 branch, turning the jit off works fine on the both the tip of the branch and 6387016
- the initial commit on main that was backported fails to build cython for other reasons (see GH-125868: Fix STORE_ATTR_WITH_HINT specialization #125876)
- the current main branch works fine both with and without the jit
CPython versions tested on:
3.13, CPython main branch
Operating systems tested on:
Linux