Skip to content

experimental jit causes infinite loops on 3.13 branch #126127

Open
@tacaswell

Description

@tacaswell

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

attn @da-woods @scoder

CPython versions tested on:

3.13, CPython main branch

Operating systems tested on:

Linux

Metadata

Metadata

Assignees

Labels

3.13bugs and security fixestopic-JITtype-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions