From: Neal Norwitz Date: Fri, 5 Jan 2007 05:25:22 +0000 (+0000) Subject: Prevent crash on shutdown which can occur if we are finalizing X-Git-Tag: v2.6a1~2318 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=72cd02c04107c1bd16603d7b6451cc5e53785faf;p=python Prevent crash on shutdown which can occur if we are finalizing and the module dict has been cleared already and some object raises a warning (like in a __del__). Will backport. --- diff --git a/Misc/NEWS b/Misc/NEWS index f3749abb84..b1a794b1ae 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,9 @@ What's New in Python 2.6 alpha 1? Core and builtins ----------------- +- Prevent seg fault on shutdown which could occur if an object + raised a warning. + - Bug #1566280: Explicitly invoke threading._shutdown from Py_Main, to avoid relying on atexit. diff --git a/Python/errors.c b/Python/errors.c index 66a734eb15..f31f025112 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -640,7 +640,8 @@ PyErr_WarnEx(PyObject *category, const char *message, Py_ssize_t stack_level) if (warnings_module != NULL) { dict = PyModule_GetDict(warnings_module); - func = PyDict_GetItemString(dict, "warn"); + if (dict != NULL) + func = PyDict_GetItemString(dict, "warn"); } if (func == NULL) { PySys_WriteStderr("warning: %s\n", message);