Message 370924 - Python tracker
I'm curious about this bug, so I looked at code changes. Before Python 3.6, warnings.c "garbage" is declared as a static variable. It is initialized once but never cleared. In Python 3.7, the variable moved into _PyRuntimeState.gc. In Python 3.8, _PyGC_Fini() started to clear the "garbage" list. This function is called by Py_FinalizeEx() *after* PyList_Fini().