To be honest, I thought my stack walking code worked too well. I had a lovely off-by-one error in the following code:
unsigned char byBuffer[sizeof(IMAGEHLP_SYMBOL64) + Allocation::cnBufferSize];IMAGEHLP_SYMBOL64* pSymbol = (IMAGEHLP_SYMBOL64*)byBuffer;DWORD64 dwDisplacement;memset(pSymbol, 0, sizeof(IMAGEHLP_SYMBOL64) + Allocation::cnBufferSize);pSymbol->SizeOfStruct = sizeof(IMAGEHLP_SYMBOL64);pSymbol->MaxNameLength = Allocation::cnBufferSize;if(!SymGetSymFromAddr64(GetCurrentProcess(), theStackFrame.AddrPC.Offset, &dwDisplacement, pSymbol)) strcpy(pAllocation->szFunc, "??");else strcpy(pAllocation->szFunc, pSymbol->Name);
On the plus side, my memory manager detected the corruption (I got an assertion saying that a memory sentinal was damaged when I ran this code: {std::map m;}).
In other news, my string hashing "ID" class is working, and has a debug helper doohicky for detecting collisions. Hooraj!