summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/_asynciomodule.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c
index 13dd2fd..27c1636 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;
}