From 3d55aa9e7365af76e40680271328deece27a7339 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 7 Apr 2021 23:12:45 +0200 Subject: [PATCH] bpo-42923: Fix _Py_DumpExtensionModules() for NULL sysdict (GH-25262) Fix Py_FatalError() is called before interp->sysdict is set. --- Python/pylifecycle.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 64723ce82d76c6..0ad1796e3cbc6e 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -2551,12 +2551,14 @@ _Py_DumpExtensionModules(int fd, PyInterpreterState *interp) // memory cannot be allocated on the heap in a signal handler. // Iterate on the dict instead. PyObject *stdlib_module_names = NULL; - pos = 0; - while (PyDict_Next(interp->sysdict, &pos, &key, &value)) { - if (PyUnicode_Check(key) - && PyUnicode_CompareWithASCIIString(key, "stdlib_module_names") == 0) { - stdlib_module_names = value; - break; + if (interp->sysdict != NULL) { + pos = 0; + while (PyDict_Next(interp->sysdict, &pos, &key, &value)) { + if (PyUnicode_Check(key) + && PyUnicode_CompareWithASCIIString(key, "stdlib_module_names") == 0) { + stdlib_module_names = value; + break; + } } } // If we failed to get sys.stdlib_module_names or it's not a frozenset,