bpo-42923: Dump extension modules on fatal error (GH-24207)
The Py_FatalError() function and the faulthandler module now dump the
list of extension modules on a fatal error.
Add _Py_DumpExtensionModules() and _PyModule_IsExtension() internal
functions.
diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c
index 6590387..e57ea86 100644
--- a/Objects/moduleobject.c
+++ b/Objects/moduleobject.c
@@ -35,6 +35,19 @@ PyTypeObject PyModuleDef_Type = {
};
+int
+_PyModule_IsExtension(PyObject *obj)
+{
+ if (!PyModule_Check(obj)) {
+ return 0;
+ }
+ PyModuleObject *module = (PyModuleObject*)obj;
+
+ struct PyModuleDef *def = module->md_def;
+ return (def != NULL && def->m_methods != NULL);
+}
+
+
PyObject*
PyModuleDef_Init(struct PyModuleDef* def)
{