From c25a45a6b584c33aca25669afbb5dafc79cd0955 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Wed, 20 Nov 2019 19:29:14 +1100 Subject: [PATCH] don't bother logging fp and sp for previous stack frames in windows build crash log, this information has never been useful --- src/Logger.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/Logger.c b/src/Logger.c index ad9046047..7d176bb4f 100644 --- a/src/Logger.c +++ b/src/Logger.c @@ -227,10 +227,9 @@ static void Logger_PrintFrame(String* str, cc_uintptr addr, cc_uintptr symAddr, #if defined CC_BUILD_WEB void Logger_Backtrace(String* trace, void* ctx) { } #elif defined CC_BUILD_WIN -struct StackPointers { cc_uintptr ip, fp, sp; }; struct SymbolAndName { IMAGEHLP_SYMBOL Symbol; char Name[256]; }; -static int Logger_GetFrames(CONTEXT* ctx, struct StackPointers* pointers, int max) { +static int Logger_GetFrames(CONTEXT* ctx, cc_uintptr* addrs, int max) { STACKFRAME frame = { 0 }; frame.AddrPC.Mode = AddrModeFlat; frame.AddrFrame.Mode = AddrModeFlat; @@ -259,27 +258,24 @@ static int Logger_GetFrames(CONTEXT* ctx, struct StackPointers* pointers, int ma for (count = 0; count < max; count++) { if (!StackWalk(type, process, thread, &frame, ©, NULL, SymFunctionTableAccess, SymGetModuleBase, NULL)) break; if (!frame.AddrFrame.Offset) break; - - pointers[count].ip = frame.AddrPC.Offset; - pointers[count].fp = frame.AddrFrame.Offset; - pointers[count].sp = frame.AddrStack.Offset; + addrs[count] = frame.AddrPC.Offset; } return count; } void Logger_Backtrace(String* trace, void* ctx) { char strBuffer[512]; String str; - struct StackPointers pointers[40]; + cc_uintptr addrs[40]; int i, frames; HANDLE process; cc_uintptr addr; process = GetCurrentProcess(); SymInitialize(process, NULL, TRUE); - frames = Logger_GetFrames((CONTEXT*)ctx, pointers, 40); + frames = Logger_GetFrames((CONTEXT*)ctx, addrs, 40); for (i = 0; i < frames; i++) { - addr = pointers[i].ip; + addr = addrs[i]; String_InitArray(str, strBuffer); struct SymbolAndName s = { 0 }; @@ -294,9 +290,6 @@ void Logger_Backtrace(String* trace, void* ctx) { Logger_PrintFrame(&str, addr, s.Symbol.Address, s.Symbol.Name, m.ModuleName); String_AppendString(trace, &str); - /* frame and stack address */ - String_Format2(&str, " fp: %x, sp: %x\r\n", &pointers[i].fp, &pointers[i].sp); - /* This function only works for .pdb debug info */ /* This function is also missing on Windows98 + KernelEX */ #if _MSC_VER