From 8a433b683fecafe1cb04469a301df2b4618167d0 Mon Sep 17 00:00:00 2001 From: Kumar Aditya Date: Wed, 18 Dec 2024 19:55:03 +0530 Subject: [PATCH] gh-121621: clear running loop early in asyncio (#128004) --- Modules/_asynciomodule.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c index 13dd2fd55fd..27c16364457 100644 --- a/Modules/_asynciomodule.c +++ b/Modules/_asynciomodule.c @@ -3723,6 +3723,11 @@ module_clear(PyObject *mod) Py_CLEAR(state->iscoroutine_typecache); Py_CLEAR(state->context_kwname); + // Clear the ref to running loop so that finalizers can run early. + // If there are other running loops in different threads, + // those get cleared in PyThreadState_Clear. + _PyThreadStateImpl *ts = (_PyThreadStateImpl *)_PyThreadState_GET(); + Py_CLEAR(ts->asyncio_running_loop); return 0; }