2

実行可能ファイルのテスト バージョンで 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 を同じフォルダーに保存します。 .

助言がありますか?

4

0 に答える 0