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/Modules/faulthandler.c b/Modules/faulthandler.c
index fe5dbc1..da8b774 100644
--- a/Modules/faulthandler.c
+++ b/Modules/faulthandler.c
@@ -1,5 +1,6 @@
#include "Python.h"
#include "pycore_initconfig.h" // _PyStatus_ERR
+#include "pycore_pyerrors.h" // _Py_DumpExtensionModules
#include "pycore_traceback.h" // _Py_DumpTracebackThreads
#include <signal.h>
#include <object.h>
@@ -349,6 +350,8 @@ faulthandler_fatal_error(int signum)
faulthandler_dump_traceback(fd, fatal_error.all_threads,
fatal_error.interp);
+ _Py_DumpExtensionModules(fd, fatal_error.interp);
+
errno = save_errno;
#ifdef MS_WINDOWS
if (signum == SIGSEGV) {