improve stacktrace on linux

This commit is contained in:
Daan Leijen 2021-12-10 11:42:54 -08:00
parent 28893a6c1b
commit 65b2cebcef
3 changed files with 7 additions and 3 deletions

View file

@ -131,6 +131,7 @@ if(MI_DEBUG_TRACE)
else() else()
message(STATUS "Enable allocation trace in each heap block (MI_DEBUG_TRACE=ON)") message(STATUS "Enable allocation trace in each heap block (MI_DEBUG_TRACE=ON)")
list(APPEND mi_defines MI_DEBUG_TRACE=1) list(APPEND mi_defines MI_DEBUG_TRACE=1)
set(CMAKE_ENABLE_EXPORTS TRUE)
endif() endif()
endif() endif()
@ -296,6 +297,7 @@ else()
endif() endif()
message(STATUS "Compiler flags : ${mi_cflags}") message(STATUS "Compiler flags : ${mi_cflags}")
message(STATUS "Compiler defines : ${mi_defines}") message(STATUS "Compiler defines : ${mi_defines}")
message(STATUS "Link libraries : ${mi_libraries}")
message(STATUS "Build targets : ${mi_build_targets}") message(STATUS "Build targets : ${mi_build_targets}")
message(STATUS "") message(STATUS "")

View file

@ -395,8 +395,9 @@ void _mi_stack_trace_print(const char* msg, void** strace, size_t len, const mi_
(msg==NULL ? "block" : msg), block, avail, bsize); (msg==NULL ? "block" : msg), block, avail, bsize);
char** names = backtrace_symbols(strace, len); char** names = backtrace_symbols(strace, len);
for (size_t i = 0; i < len && strace[i] != NULL; i++) { for (size_t i = 0; i < len && strace[i] != NULL; i++) {
_mi_fprintf(NULL, NULL, " %2zu: %8p: %s\n", i, strace[i], (names[i] == NULL ? "<unknown>" : names[i])); _mi_fprintf(NULL, NULL, " %2zu: %8p: %s\n", i, strace[i], (names == NULL || names[i] == NULL ? "<unknown>" : names[i]));
} }
// free(names); // avoid potential recursion and leak the trace
} }
#else #else
void _mi_stack_trace_capture(void** strace, size_t len, size_t skip) { void _mi_stack_trace_capture(void** strace, size_t len, size_t skip) {

View file

@ -15,6 +15,7 @@ if (NOT CMAKE_BUILD_TYPE)
endif() endif()
endif() endif()
# Import mimalloc (if installed) # Import mimalloc (if installed)
find_package(mimalloc 1.7 REQUIRED NO_SYSTEM_ENVIRONMENT_PATH) find_package(mimalloc 1.7 REQUIRED NO_SYSTEM_ENVIRONMENT_PATH)
message(STATUS "Found mimalloc installed at: ${MIMALLOC_LIBRARY_DIR}") message(STATUS "Found mimalloc installed at: ${MIMALLOC_LIBRARY_DIR}")