Skip to content

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

Description

@jjhelmus

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

Activity

  1. jjhelmus commented on Feb 11, 2026

    @jjhelmus
    ContributorAuthor

    This is a bit tricky. When statically linking _testinternalcapi the symbol must not be duplicated and the second definition can be marked extern. In the more common case where _testinternalcapi is dynamic the symbol needs to be defined in the module because it is not a global.

  2. jjhelmus commented on Feb 11, 2026

    @jjhelmus
    ContributorAuthor

    The declaration of _Py_jit_entry in Modules/_testinternalcapi/interpreter.c is unusual as it is NULL. I does not seem to be used for anything functionally but is needed to allow the extension to be properly linked. Should this be made more clear in the file?

  3. dlin09119-design commented on Feb 19, 2026

    @dlin09119-design
  4. added 2 commits that reference this issue on Apr 29, 2026
  5. added 2 commits that reference this issue on May 19, 2026
  6. added a commit that references this issue on Sep 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions