mirror of
https://github.com/microsoft/mimalloc.git
synced 2025-05-10 01:09:31 +03:00
fix trace on windows if symbol initialization fails
This commit is contained in:
parent
1270eec6c0
commit
6d852d9ff5
1 changed files with 8 additions and 3 deletions
|
@ -419,17 +419,22 @@ void _mi_stack_trace_print(const char* msg, void** strace, size_t len, const mi_
|
||||||
info->MaxNameLen = 255;
|
info->MaxNameLen = 255;
|
||||||
info->SizeOfStruct = sizeof(SYMBOL_INFO);
|
info->SizeOfStruct = sizeof(SYMBOL_INFO);
|
||||||
HANDLE current_process = GetCurrentProcess();
|
HANDLE current_process = GetCurrentProcess();
|
||||||
if (!SymInitialize(current_process, NULL, TRUE)) return;
|
bool initialized = (SymInitialize(current_process, NULL, TRUE) == TRUE);
|
||||||
for (size_t i = 0; i < len && strace[i] != NULL; i++) {
|
for (size_t i = 0; i < len && strace[i] != NULL; i++) {
|
||||||
if (SymFromAddr(current_process, (DWORD64)(strace[i]), 0, info)) {
|
if (!initialized) {
|
||||||
|
_mi_fprintf(NULL, NULL, " %2zu: %8p: <unknown address>\n", i, strace[i]);
|
||||||
|
}
|
||||||
|
else if (SymFromAddr(current_process, (DWORD64)(strace[i]), 0, info)) {
|
||||||
_mi_fprintf(NULL, NULL, " %2zu: %8p: %s\n", i, strace[i], info->Name);
|
_mi_fprintf(NULL, NULL, " %2zu: %8p: %s\n", i, strace[i], info->Name);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
_mi_fprintf(NULL, NULL, " %2zu: %8p: <unknown address: error: 0x%04x>\n", i, strace[i], GetLastError());
|
_mi_fprintf(NULL, NULL, " %2zu: %8p: <unknown address: error: 0x%04x>\n", i, strace[i], GetLastError());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (initialized) {
|
||||||
SymCleanup(current_process);
|
SymCleanup(current_process);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#elif (MI_DEBUG_TRACE > 0) && (defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__))
|
#elif (MI_DEBUG_TRACE > 0) && (defined(__linux__) || defined(__FreeBSD__) || defined(__APPLE__))
|
||||||
#include <execinfo.h>
|
#include <execinfo.h>
|
||||||
|
|
Loading…
Add table
Reference in a new issue