sys.stderr and sys.excepthook can be None at interpreter shutdown,
in which case display the appropriate error message.
(part of #5319)
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index db5d0a7..7f63ae1 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -1149,7 +1149,7 @@
PySys_SetObject("last_traceback", tb);
}
hook = PySys_GetObject("excepthook");
- if (hook) {
+ if (hook && hook != Py_None) {
PyObject *args = PyTuple_Pack(3,
exception, v, tb ? tb : Py_None);
PyObject *result = PyEval_CallObject(hook, args);
@@ -1199,7 +1199,7 @@
int err = 0;
PyObject *f = PySys_GetObject("stderr");
Py_INCREF(value);
- if (f == NULL)
+ if (f == NULL || f == Py_None)
fprintf(stderr, "lost sys.stderr\n");
else {
if (Py_FlushLine())