Public bug reported: Python 3.12 has a bug that can cause both livelocks and segfaults in some asyncio garbage collection C code.
What I experienced today was the livelock symptom, but a team mate experienced the segfault symptom in 2024, which lead to the issue being fixed in upstream CPython. Original CPython issue: https://github.com/python/cpython/issues/122695 Description of the livelock in that original issue: https://github.com/python/cpython/issues/122695#issuecomment-2270732541 CPython 3.12 branch fix: https://github.com/python/cpython/pull/122859 CPython 3.13 branch fix: https://github.com/python/cpython/pull/122837 $ apt-cache policy python3 python3: Installed: 3.12.3-0ubuntu2.1 Candidate: 3.12.3-0ubuntu2.1 Version table: *** 3.12.3-0ubuntu2.1 500 500 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages 500 http://archive.ubuntu.com/ubuntu noble-security/main amd64 Packages 100 /var/lib/dpkg/status 3.12.3-0ubuntu1 500 500 http://archive.ubuntu.com/ubuntu noble/main amd64 Packages $ lsb_release -rd No LSB modules are available. Description: Ubuntu 24.04.3 LTS Release: 24.04 Todays's backtrace of the livelock (taken with gdb and the python3.12-dbg package): Thread 1 (Thread 0x701a05959080 (LWP 1032357) "python3"): #0 0x000000000061d82f in _PyObject_IS_GC (obj=<_asyncio.FutureIter at remote 0x70199dce8f70>) at ../Include/object.h:968 #1 visit_decref (op=<_asyncio.FutureIter at remote 0x70199dce8f70>, parent=0x701a045d59e0) at ../Modules/gcmodule.c:465 #2 0x0000701a058269e0 in module_traverse (mod=<optimized out>, visit=0x61d820 <visit_decref>, arg=0x701a045d59e0) at ../Modules/_asynciomodule.c:3596 #3 0x00000000005823a6 in module_traverse (m=0x701a045d59e0, visit=0x61d820 <visit_decref>, arg=0x701a045d59e0) at ../Objects/moduleobject.c:874 #4 0x000000000061ca86 in subtract_refs (containers=0xb47ee0 <_PyRuntime+76576>) at ../Modules/gcmodule.c:491 #5 deduce_unreachable (unreachable=0x7ffdf55df770, base=0xb47ee0 <_PyRuntime+76576>) at ../Modules/gcmodule.c:1116 #6 gc_collect_main (tstate=tstate@entry=0xba5748 <_PyRuntime+459656>, generation=generation@entry=2, n_collected=n_collected@entry=0x7ffdf55df870, n_uncollectable=n_uncollectable@entry=0x7ffdf55df878, nofail=nofail@entry=0) at ../Modules/gcmodule.c:1242 #7 0x000000000061c471 in gc_collect_with_callback (generation=2, tstate=0xba5748 <_PyRuntime+459656>) at ../Modules/gcmodule.c:1426 #8 gc_collect_generations (tstate=0xba5748 <_PyRuntime+459656>) at ../Modules/gcmodule.c:1481 #9 _Py_RunGC (tstate=tstate@entry=0xba5748 <_PyRuntime+459656>) at ../Modules/gcmodule.c:2295 ProblemType: Bug DistroRelease: Ubuntu 24.04 Package: python3 3.12.3-0ubuntu2.1 ProcVersionSignature: Ubuntu 6.8.0-90.91-generic 6.8.12 Uname: Linux 6.8.0-90-generic x86_64 ApportVersion: 2.28.1-0ubuntu3.8 Architecture: amd64 CasperMD5CheckResult: unknown CurrentDesktop: KDE Date: Thu Jan 22 14:03:11 2026 SourcePackage: python3-defaults UpgradeStatus: No upgrade log present (probably fresh install) ** Affects: python3-defaults (Ubuntu) Importance: Undecided Status: New ** Tags: amd64 apport-bug noble -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2138881 Title: Python 3.12 livelock in asyncio module_traverse() To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/python3-defaults/+bug/2138881/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
