python / python/cpython

Duplicate symbol _Py_jit_entry when built with --enable-exterimental-jit

Open
#144,712 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

extension-modules topic-JIT type-bug
Dominant language
Python
Stars
77.2k
Forks
35.9k
PR merge metrics
PR metrics pending

Description

Bug report

Bug description:

When building with the --enable-experimental-jit option, the _Py_jit_entry symbol is duplicated in Python/ceval.o and Modules/_testinternalcapi/interpreter.o preventing them from being linked into the same DSO.

The later symbol was added in #143944. This symbol should likely be marked as extern.

I found this issue when building 3.15.0a6 for python-build-standalone, astral-sh/python-build-standalone#981. The build is configured so that the _testinternalcapi module is statically linked into the interpreter.

Example build log

cpython-3.15> ld64.lld: error: duplicate symbol: _Py_jit_entry
cpython-3.15> >>> defined in Python/ceval.o
cpython-3.15> >>> defined in Modules/_testinternalcapi/interpreter.o
cpython-3.15> clang: error: linker command failed with exit code 1 (use -v to see invocation)
CPython versions tested on:

CPython main branch, 3.15

Operating systems tested on:

macOS

Linked PRs
  • gh-144713
  • gh-145840

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Inspect the definitions producing Python/ceval.o and Modules/_testinternalcapi/interpreter.o under --enable-experimental-jit, then compare the declaration introduced by #143944. Done means the two objects can be linked into the same DSO without a duplicate _Py_jit_entry symbol, including the macOS build configuration.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, python
Domain
build-system
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.