bpo-29564:_PyMem_DumpTraceback() suggests enabling tracemalloc (GH-10510)
If tracemalloc is not tracing Python memory allocations, _PyMem_DumpTraceback() now suggests to enable tracemalloc to get the traceback where the memory block has been allocated.
This commit is contained in:
parent
474eedfb3d
commit
f966e5397e
|
@ -486,6 +486,8 @@ class PyMemDebugTests(unittest.TestCase):
|
||||||
r" The block was made by call #[0-9]+ to debug malloc/realloc.\n"
|
r" The block was made by call #[0-9]+ to debug malloc/realloc.\n"
|
||||||
r" Data at p: cb cb cb .*\n"
|
r" Data at p: cb cb cb .*\n"
|
||||||
r"\n"
|
r"\n"
|
||||||
|
r"Enable tracemalloc to get the memory block allocation traceback\n"
|
||||||
|
r"\n"
|
||||||
r"Fatal Python error: bad trailing pad byte")
|
r"Fatal Python error: bad trailing pad byte")
|
||||||
regex = regex.format(ptr=self.PTR_REGEX)
|
regex = regex.format(ptr=self.PTR_REGEX)
|
||||||
regex = re.compile(regex, flags=re.DOTALL)
|
regex = re.compile(regex, flags=re.DOTALL)
|
||||||
|
@ -500,6 +502,8 @@ class PyMemDebugTests(unittest.TestCase):
|
||||||
r" The block was made by call #[0-9]+ to debug malloc/realloc.\n"
|
r" The block was made by call #[0-9]+ to debug malloc/realloc.\n"
|
||||||
r" Data at p: cb cb cb .*\n"
|
r" Data at p: cb cb cb .*\n"
|
||||||
r"\n"
|
r"\n"
|
||||||
|
r"Enable tracemalloc to get the memory block allocation traceback\n"
|
||||||
|
r"\n"
|
||||||
r"Fatal Python error: bad ID: Allocated using API 'm', verified using API 'r'\n")
|
r"Fatal Python error: bad ID: Allocated using API 'm', verified using API 'r'\n")
|
||||||
regex = regex.format(ptr=self.PTR_REGEX)
|
regex = regex.format(ptr=self.PTR_REGEX)
|
||||||
self.assertRegex(out, regex)
|
self.assertRegex(out, regex)
|
||||||
|
|
|
@ -1471,6 +1471,12 @@ _PyMem_DumpTraceback(int fd, const void *ptr)
|
||||||
traceback_t *traceback;
|
traceback_t *traceback;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (!_Py_tracemalloc_config.tracing) {
|
||||||
|
PUTS(fd, "Enable tracemalloc to get the memory block "
|
||||||
|
"allocation traceback\n\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
traceback = tracemalloc_get_traceback(DEFAULT_DOMAIN, (uintptr_t)ptr);
|
traceback = tracemalloc_get_traceback(DEFAULT_DOMAIN, (uintptr_t)ptr);
|
||||||
if (traceback == NULL)
|
if (traceback == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in New Issue