SymGetSymFromAddr32中的死锁

时间:2015-01-07 15:09:13

标签: dbghelp symbol-server

我在可执行文件的测试版本中调用SymGetSymFromAddr32。直到最近这个工作正常,但是当使用Windows SDK 8.1中的dbghelp.dll和symsrv.dll时,我的应用程序在调用此函数时会挂起。

这是我得到的调用堆栈:

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++

这是在使用Windows SDK 8.1中的DLL时(尝试过的版本为6.3.9600.17200和6.3.9600.17298)。

当我从Windows SDK 8.0(版本6.2.9200.20512)切换回DLL时,应用程序正常工作,不再挂起。

注意:为了确保我使用正确的dbghelp.dll(支持符号服务器的那个,而不是Windows中安装的那个),我使用LoadLibrary显式加载dbghelp.dll并且存储了symsrv.dll同一个文件夹。

有什么建议吗?

0 个答案:

没有答案