From d7c387384a27f37e4e3fa7890c859212c56b45b2 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 8 Oct 2019 13:46:17 +0300 Subject: 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 --- Objects/moduleobject.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c index 92f97e6..03c7381 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; } -- cgit v0.12