--disable-gil --enable-experimental-jit=yes-off: test_jit_is_active fails
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 77.2k
- Forks
- 35.9k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
Bug report
Bug description:
Hello.
When we started to build the JIT in Fedora's Python, we didn't do it for the freethreading build, as I was told it's not yet ready. I circled back to the referenced issue https://github.com/python/cpython/issues/118844 and saw it is long closed. Hence, I tried to build the JIT with the freethreading build as well. It builds fine, but the tests fail:
Re-running test_sys in verbose mode (matching: test_jit_is_active)
test_jit_is_active (test.test_sys.TestSysJIT.test_jit_is_active) ... FAIL
======================================================================
FAIL: test_jit_is_active (test.test_sys.TestSysJIT.test_jit_is_active)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/builddir/build/BUILD/python3.15-3.15.0_a2-build/Python-3.15.0a2/Lib/test/test_sys.py", line 2275, in test_jit_is_active
assert_python_ok("-c", script.format(enabled=available), PYTHON_JIT="1")
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/builddir/build/BUILD/python3.15-3.15.0_a2-build/Python-3.15.0a2/Lib/test/support/script_helper.py", line 182, in assert_python_ok
return _assert_python(True, *args, **env_vars)
File "/builddir/build/BUILD/python3.15-3.15.0_a2-build/Python-3.15.0a2/Lib/test/support/script_helper.py", line 167, in _assert_python
res.fail(cmd_line)
~~~~~~~~^^^^^^^^^^
File "/builddir/build/BUILD/python3.15-3.15.0_a2-build/Python-3.15.0a2/Lib/test/support/script_helper.py", line 80, in fail
raise AssertionError(f"Process return code is {exitcode}\n"
...<10 lines>...
f"---")
AssertionError: Process return code is 1
command line: ['/builddir/build/BUILD/python3.15-3.15.0_a2-build/Python-3.15.0a2/build/freethreading-debug/python', '-X', 'faulthandler', '-c', '\nimport _testcapi\nimport _testinternalcapi\nimport sys\n\ndef frame_0_interpreter() -> None:\n assert sys._jit.is_active() is False\n\ndef frame_1_interpreter() -> None:\n assert sys._jit.is_active() is False\n frame_0_interpreter()\n assert sys._jit.is_active() is False\n\ndef frame_2_jit(expected: bool) -> None:\n # Inlined into the last loop of frame_3_jit:\n assert sys._jit.is_active() is expected\n # Insert C frame:\n _testcapi.pyobject_vectorcall(frame_1_interpreter, None, None)\n assert sys._jit.is_active() is expected\n\ndef frame_3_jit() -> None:\n # JITs just before the last loop:\n # 1 extra iteration for tracing.\n for i in range(_testinternalcapi.TIER2_THRESHOLD + 2):\n # Careful, doing this in the reverse order breaks tracing:\n expected = True and i >= _testinternalcapi.TIER2_THRESHOLD + 1\n assert sys._jit.is_active() is expected\n frame_2_jit(expected)\n assert sys._jit.is_active() is expected\n\ndef frame_4_interpreter() -> None:\n assert sys._jit.is_active() is False\n frame_3_jit()\n assert sys._jit.is_active() is False\n\nassert sys._jit.is_active() is False\nframe_4_interpreter()\nassert sys._jit.is_active() is False\n']
stdout:
---
---
stderr:
---
Traceback (most recent call last):
File "<string>", line 37, in <module>
frame_4_interpreter()
~~~~~~~~~~~~~~~~~~~^^
File "<string>", line 33, in frame_4_interpreter
frame_3_jit()
~~~~~~~~~~~^^
File "<string>", line 27, in frame_3_jit
assert sys._jit.is_active() is expected
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError
---
----------------------------------------------------------------------
Ran 1 test in 0.672s
FAILED (failures=1)
test test_sys failed
1 test failed again:
test_sys
== Tests result: FAILURE then FAILURE ==
This is a build --with-pydebug --disable-gil --enable-experimental-jit=yes-off. An optimized build without pydebug behaves the same way. I am also testing with Python 3.14.
A full log with testinfo: build.log
The same test failure happens both on x86_64 and aarch64 Fedora. This is 3.15.0a2.
CPython versions tested on:
3.15
Operating systems tested on:
Linux
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con Lib/test/test_sys.py y TestSysJIT.test_jit_is_active, y luego reproduce el fallo usando --with-pydebug --disable-gil --enable-experimental-jit=yes-off. Compara el comportamiento informado en las compilaciones freethreading con el estado JIT esperado por el test a lo largo del bucle trazado y las llamadas al intérprete. Se considera terminado cuando el test pasa para las configuraciones de compilación afectadas en las arquitecturas indicadas.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- compilers
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 42/100