I am calling SymGetSymFromAddr32 in test-versions of my executable. Until recently this worked correctly, but when using dbghelp.dll and symsrv.dll from the Windows SDK 8.1, my application hangs when calling this function.
This is the call stack I get:
ZwWaitForKeyedEvent()
RtlpRunOnceWaitForInit()
string "Enabling heap debug options\n"()
InitOnceExecuteOnce()
GlobalDataInitialize()
InternetSetStatusCallbackCore()
InternetSetStatusCallbackW()
000007fed1e57d52
[Frames below may be incorrect and/or missing, no symbols loaded for symsrv.dll]
000007fed1e5786e
000007fed1ef0149
000007fed1ef03ac
000007fed1edc68e
000007fed1edd563
000007fed1f00da8
000007fed1eff61f
000007fed1eff30f
000007fed1ef5679
000007fed1ef5705
MyClass::SymGetSymFromAddr64(void *, unsigned __int64, unsigned __int64 *, _IMAGEHLP_SYMBOL64 *) C++
This is when using the DLL's from the Windows SDK 8.1 (tried versions 6.3.9600.17200 and 6.3.9600.17298).
When I switch back to the DLL's from the Windows SDK 8.0 (version 6.2.9200.20512) the application works correctly and doesn't hang anymore.
Note: to make sure that I am using the correct dbghelp.dll (the one that supports a symbol server, not the one default installed in Windows), I explicitly load dbghelp.dll using LoadLibrary and symsrv.dll is stored in the same folder.
Any suggestions?