Browse Source
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.
pull/10520/head
Victor Stinner
8 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
10 additions and
0 deletions
Lib/test/test_capi.py
Modules/_tracemalloc.c
@ -486,6 +486,8 @@ class PyMemDebugTests(unittest.TestCase):
r " The block was made by call #[0-9]+ to debug malloc/realloc. \ n "
r " Data at p: cb cb cb .* \ n "
r " \ n "
r " Enable tracemalloc to get the memory block allocation traceback \ n "
r " \ n "
r " Fatal Python error: bad trailing pad byte " )
regex = regex . format ( ptr = self . PTR_REGEX )
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 " Data at p: cb cb cb .* \ 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 " )
regex = regex . format ( ptr = self . PTR_REGEX )
self . assertRegex ( out , regex )
@ -1471,6 +1471,12 @@ _PyMem_DumpTraceback(int fd, const void *ptr)
traceback_t * traceback ;
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 ) ;
if ( traceback = = NULL )
return ;