mirror of https://github.com/python/cpython
bpo-38631: Avoid Py_FatalError() in GC collect() (GH-18164)
collect() should not get an exception, but it does, logging the exception is enough. Override sys.unraisablehook to decide how to handle unraisable exceptions. Py_FatalError() should be avoided whenever possible.
This commit is contained in:
parent
88704334e5
commit
656c45ec9a
|
@ -118,9 +118,6 @@ gc_decref(PyGC_Head *g)
|
|||
g->_gc_prev -= 1 << _PyGC_PREV_SHIFT;
|
||||
}
|
||||
|
||||
/* Python string to use if unhandled exception occurs */
|
||||
static PyObject *gc_str = NULL;
|
||||
|
||||
/* set for debugging information */
|
||||
#define DEBUG_STATS (1<<0) /* print collection statistics */
|
||||
#define DEBUG_COLLECTABLE (1<<1) /* print collectable objects */
|
||||
|
@ -1310,10 +1307,7 @@ collect(PyThreadState *tstate, int generation,
|
|||
_PyErr_Clear(tstate);
|
||||
}
|
||||
else {
|
||||
if (gc_str == NULL)
|
||||
gc_str = PyUnicode_FromString("garbage collection");
|
||||
PyErr_WriteUnraisable(gc_str);
|
||||
Py_FatalError("unexpected exception during garbage collection");
|
||||
_PyErr_WriteUnraisableMsg("in garbage collection", NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue