Skip to content

Conversation

@vstinner
Copy link
Member

@vstinner vstinner commented Jan 29, 2020

Replace Py_FatalError() with _PyObject_ASSERT_FAILED_MSG() in
object.c and typeobject.c to also dump the involved Python object on
a fatal error. It should ease debug when such fatal error occurs.

https://bugs.python.org/issue38631

Replace Py_FatalError() with _PyObject_ASSERT_FAILED_MSG() in
object.c and typeobject.c to also dump the involved Python object on
a fatal error. It should ease debug when such fatal error occurs.

If the double linked list is inconsistent, _Py_ForgetReference() no
longer dumps previous and next objects in the fatal error, it now
only dumps the current object. It should prevent to get a crash when
dumping an invalid object, before writing the error message.

Enhance _Py_ForgetReference() error messages;
_PyObject_ASSERT_FAILED_MSG() logs the "_Py_ForgetReference" function
name.
@vstinner vstinner changed the title Replace Py_FatalError() with _PyObject_ASSERT_FAILED_MSG() bpo-38631: Replace Py_FatalError() with _PyObject_ASSERT_FAILED_MSG() Jan 29, 2020
@vstinner vstinner merged commit 5eb8bff into python:master Jan 30, 2020
@vstinner vstinner deleted the assert_failed branch January 30, 2020 08:01
shihai1991 pushed a commit to shihai1991/cpython that referenced this pull request Jan 31, 2020
…pythonGH-18258)

Replace Py_FatalError() with _PyObject_ASSERT_FAILED_MSG() in
object.c and typeobject.c to also dump the involved Python object on
a fatal error. It should ease debug when such fatal error occurs.

If the double linked list is inconsistent, _Py_ForgetReference() no
longer dumps previous and next objects in the fatal error, it now
only dumps the current object. It ensures that the error message
is displayed even if dumping the object does crash Python.

Enhance _Py_ForgetReference() error messages;
_PyObject_ASSERT_FAILED_MSG() logs the "_Py_ForgetReference" function
name.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants