Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32k
Open
Description
Crash report
What happened?
I'm encountering a segfault during garbage collection since 3.14.0b1 (I have not been able to reproduce it on 3.14.0a6), and while I've so far been able to minify the repro somewhat it still requires both pytest and trio
importtriofromcontextlibimportsuppressimportgcdeftest_error_in_run_loop()->None:# Blow stuff up real good to check we at least get a TrioInternalErrorasyncdefmain()->None:task=trio.lowlevel.current_task()task._schedule_points="hello!"# type: ignoreawaittrio.lowlevel.checkpoint()withsuppress(trio.TrioInternalError):trio.run(main)gc.collect()gc.collect()# removing this line makes the segfault disappear
$ tox -e repro_crash===================================== test session starts =====================================platform linux -- Python 3.14.0b1, pytest-8.3.5, pluggy-1.5.0cachedir: .tox/crash/.pytest_cacherootdir: /home/h/Git/trio/unbreak_314configfile: pyproject.tomlcollected 1 item Fatal Python error: Segmentation faultCurrent thread 0x00007fc3244b0bc0 [pytest] (most recent call first): Garbage-collecting File "./foo.py", line 14 in test_error_in_run_loop File ".../site-packages/_pytest/python.py", line 159 in pytest_pyfunc_call File ".../site-packages/pluggy/_callers.py", line 103 in _multicall File ".../site-packages/pluggy/_manager.py", line 120 in _hookexec File ".../site-packages/pluggy/_hooks.py", line 513 in __call__ File ".../site-packages/_pytest/python.py", line 1627 in runtest File ".../site-packages/_pytest/runner.py", line 174 in pytest_runtest_call File ".../site-packages/pluggy/_callers.py", line 103 in _multicall File ".../site-packages/pluggy/_manager.py", line 120 in _hookexec File ".../site-packages/pluggy/_hooks.py", line 513 in __call__ File ".../site-packages/_pytest/runner.py", line 242 in <lambda> File ".../site-packages/_pytest/runner.py", line 341 in from_call File ".../site-packages/_pytest/runner.py", line 241 in call_and_report File ".../site-packages/_pytest/runner.py", line 132 in runtestprotocol File ".../site-packages/_pytest/runner.py", line 113 in pytest_runtest_protocol File ".../site-packages/pluggy/_callers.py", line 103 in _multicall File ".../site-packages/pluggy/_manager.py", line 120 in _hookexec File ".../site-packages/pluggy/_hooks.py", line 513 in __call__ File ".../site-packages/_pytest/main.py", line 362 in pytest_runtestloop File ".../site-packages/pluggy/_callers.py", line 103 in _multicall File ".../site-packages/pluggy/_manager.py", line 120 in _hookexec File ".../site-packages/pluggy/_hooks.py", line 513 in __call__ File ".../site-packages/_pytest/main.py", line 337 in _main File ".../site-packages/_pytest/main.py", line 283 in wrap_session File ".../site-packages/_pytest/main.py", line 330 in pytest_cmdline_main File ".../site-packages/pluggy/_callers.py", line 103 in _multicall File ".../site-packages/pluggy/_manager.py", line 120 in _hookexec File ".../site-packages/pluggy/_hooks.py", line 513 in __call__ File ".../site-packages/_pytest/config/__init__.py", line 175 in main File ".../site-packages/_pytest/config/__init__.py", line 201 in console_main File "./.tox/crash/bin/pytest", line 10 in <module>Current thread's C stack trace (most recent call first): Binary file "/usr/lib/libpython3.14.so.1.0", at _Py_DumpStack+0x4d [0x7fc324096a8d] Binary file "/usr/lib/libpython3.14.so.1.0", at +0x2a778c [0x7fc3240a778c] Binary file "/usr/lib/libc.so.6", at +0x3dcd0 [0x7fc323c4bcd0] Binary file "/usr/lib/libpython3.14.so.1.0", at +0x23a40a [0x7fc32403a40a] Binary file "/usr/lib/libpython3.14.so.1.0", at +0xd8d80 [0x7fc323ed8d80] Binary file "/usr/lib/libpython3.14.so.1.0", at _Py_Dealloc+0x75 [0x7fc323f21745] Binary file "/usr/lib/libpython3.14.so.1.0", at +0x1436c1 [0x7fc323f436c1] Binary file "/usr/lib/libpython3.14.so.1.0", at +0x143e65 [0x7fc323f43e65] Binary file "/usr/lib/libpython3.14.so.1.0", at +0x2379db [0x7fc3240379db] Binary file "/usr/lib/libpython3.14.so.1.0", at +0x237e6c [0x7fc324037e6c] Binary file "/usr/lib/libpython3.14.so.1.0", at +0x2a4df8 [0x7fc3240a4df8] Binary file "/usr/lib/libpython3.14.so.1.0", at PyObject_Vectorcall+0x5d [0x7fc323ebbc4d] Binary file "/usr/lib/libpython3.14.so.1.0", at _PyEval_EvalFrameDefault+0x13ba [0x7fc323fef17a] Binary file "/usr/lib/libpython3.14.so.1.0", at +0x201237 [0x7fc324001237] Binary file "/usr/lib/libpython3.14.so.1.0", at +0xbb926 [0x7fc323ebb926] Binary file "/usr/lib/libpython3.14.so.1.0", at +0xbbbc0 [0x7fc323ebbbc0] Binary file "/usr/lib/libpython3.14.so.1.0", at +0x1437c9 [0x7fc323f437c9] Binary file "/usr/lib/libpython3.14.so.1.0", at _PyObject_MakeTpCall+0x9f [0x7fc323ebb52f] Binary file "/usr/lib/libpython3.14.so.1.0", at _PyEval_EvalFrameDefault+0x4bbf [0x7fc323ff297f] Binary file "/usr/lib/libpython3.14.so.1.0", at +0x201237 [0x7fc324001237] Binary file "/usr/lib/libpython3.14.so.1.0", at +0xbb926 [0x7fc323ebb926] Binary file "/usr/lib/libpython3.14.so.1.0", at +0xbbbc0 [0x7fc323ebbbc0] Binary file "/usr/lib/libpython3.14.so.1.0", at +0x1437c9 [0x7fc323f437c9] Binary file "/usr/lib/libpython3.14.so.1.0", at +0xbb231 [0x7fc323ebb231] Binary file "/usr/lib/libpython3.14.so.1.0", at _PyEval_EvalFrameDefault+0x1cae [0x7fc323fefa6e] Binary file "/usr/lib/libpython3.14.so.1.0", at +0x201237 [0x7fc324001237] Binary file "/usr/lib/libpython3.14.so.1.0", at +0xbb926 [0x7fc323ebb926] Binary file "/usr/lib/libpython3.14.so.1.0", at +0xbbbc0 [0x7fc323ebbbc0] Binary file "/usr/lib/libpython3.14.so.1.0", at +0x1437c9 [0x7fc323f437c9] Binary file "/usr/lib/libpython3.14.so.1.0", at _PyObject_MakeTpCall+0x9f [0x7fc323ebb52f] Binary file "/usr/lib/libpython3.14.so.1.0", at _PyEval_EvalFrameDefault+0x4bbf [0x7fc323ff297f] Binary file "/usr/lib/libpython3.14.so.1.0", at +0x201237 [0x7fc324001237] <truncated rest of calls>foo.py crash: exit -11 (1.06 seconds) .> pytest foo.py pid=781607 crash: FAIL code -11 (2.11 seconds) evaluation failed :( (2.22 seconds)
I also reproduced it in a clean 3.14.0b1 venv with trio==0.30.0; pytest==8.3.5 without relying on tox, but idr how to get it to print the stack trace that way.
It's not 100% reliable, so I suspect there's some thread race condition going on.
CPython versions tested on:
3.14
Operating systems tested on:
Linux
Output from running 'python -VV' on the command line:
Python 3.14.0b1 (main, May 9 2025, 13:04:07) [GCC 14.2.1 20250207]