diff --git a/include/mimalloc-types.h b/include/mimalloc-types.h index 40b6430a..df9cef74 100644 --- a/include/mimalloc-types.h +++ b/include/mimalloc-types.h @@ -70,7 +70,7 @@ terms of the MIT license. A copy of the license can be found in the file #if !defined(MI_PADDING_EXTRA) // use extra padding bytes? (so a stack trace can be preserved or next block corruption prevented) #if MI_DEBUG_TRACE > 0 -#define MI_PADDING_EXTRA (64) +#define MI_PADDING_EXTRA (64) #else #define MI_PADDING_EXTRA (0) #endif diff --git a/src/options.c b/src/options.c index 978267cd..774dc907 100644 --- a/src/options.c +++ b/src/options.c @@ -398,6 +398,8 @@ void _mi_stack_trace_capture(void** strace, size_t len, size_t skip) { void _mi_stack_trace_print(const char* msg, void** strace, size_t len, const mi_block_t* block, size_t bsize, size_t avail) { _mi_fprintf(NULL, NULL, "trace %s at %p of size %zu (%zub usable), allocated at:\n", (msg==NULL ? "block" : msg), block, avail, bsize); + while( len > 0 && strace[len-1] == NULL) { len--; } + if (len == 0) return; char** names = backtrace_symbols(strace, len); for (size_t i = 0; i < len && strace[i] != NULL; i++) { _mi_fprintf(NULL, NULL, " %2zu: %8p: %s\n", i, strace[i], (names == NULL || names[i] == NULL ? "" : names[i]));