mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
bpo-36389: _PyObject_CheckConsistency() available in release mode (GH-16612)
bpo-36389, bpo-38376: The _PyObject_CheckConsistency() function is now also available in release mode. For example, it can be used to debug a crash in the visit_decref() function of the GC. Modify the following functions to also work in release mode: * _PyDict_CheckConsistency() * _PyObject_CheckConsistency() * _PyType_CheckConsistency() * _PyUnicode_CheckConsistency() Other changes: * _PyMem_IsPtrFreed(ptr) now also returns 1 if ptr is NULL (equals to 0). * _PyBytesWriter_CheckConsistency() now returns 1 and is only used with assert(). * Reorder _PyObject_Dump() to write safe fields first, and only attempt to render repr() at the end.
This commit is contained in:
parent
321def805a
commit
6876257eaa
14 changed files with 155 additions and 140 deletions
|
@ -985,16 +985,19 @@ class GCCallbackTests(unittest.TestCase):
|
|||
br'gcmodule\.c:[0-9]+: gc_decref: Assertion "gc_get_refs\(g\) > 0" failed.')
|
||||
self.assertRegex(stderr,
|
||||
br'refcount is too small')
|
||||
self.assertRegex(stderr,
|
||||
br'object : \[1, 2, 3\]')
|
||||
self.assertRegex(stderr,
|
||||
br'type : list')
|
||||
self.assertRegex(stderr,
|
||||
br'refcount: 1')
|
||||
# "address : 0x7fb5062efc18"
|
||||
# "address : 7FB5062EFC18"
|
||||
address_regex = br'[0-9a-fA-Fx]+'
|
||||
self.assertRegex(stderr,
|
||||
br'address : [0-9a-fA-Fx]+')
|
||||
br'object address : ' + address_regex)
|
||||
self.assertRegex(stderr,
|
||||
br'object refcount : 1')
|
||||
self.assertRegex(stderr,
|
||||
br'object type : ' + address_regex)
|
||||
self.assertRegex(stderr,
|
||||
br'object type name: list')
|
||||
self.assertRegex(stderr,
|
||||
br'object repr : \[1, 2, 3\]')
|
||||
|
||||
|
||||
class GCTogglingTests(unittest.TestCase):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue