From: Serhiy Storchaka Date: Tue, 8 Oct 2019 10:46:17 +0000 (+0300) Subject: bpo-33714: Output an exception raised in module's m_clear(). (GH-16592) X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d7c387384a27f37e4e3fa7890c859212c56b45b2;p=python bpo-33714: Output an exception raised in module's m_clear(). (GH-16592) It is similar to the more general code in the gc module, but here we know the name of the module. https://bugs.python.org/issue33714 Automerge-Triggered-By: @encukou --- diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c index 92f97e6dd4..03c7381311 100644 --- a/Objects/moduleobject.c +++ b/Objects/moduleobject.c @@ -681,7 +681,7 @@ module_dealloc(PyModuleObject *m) PyObject_GC_UnTrack(m); if (verbose && m->md_name) { - PySys_FormatStderr("# destroy %S\n", m->md_name); + PySys_FormatStderr("# destroy %U\n", m->md_name); } if (m->md_weaklist != NULL) PyObject_ClearWeakRefs((PyObject *) m); @@ -784,6 +784,12 @@ module_clear(PyModuleObject *m) { if (m->md_def && m->md_def->m_clear) { int res = m->md_def->m_clear((PyObject*)m); + if (PyErr_Occurred()) { + PySys_FormatStderr("Exception ignored in m_clear of module%s%V\n", + m->md_name ? " " : "", + m->md_name, ""); + PyErr_WriteUnraisable(NULL); + } if (res) return res; }