openssl を使用するアプリケーションで dr.memory を実行すると、次のリストが表示されます。
Error #476: UNADDRESSABLE ACCESS beyond heap bounds: reading 4 byte(s)
KERNELBASE.dll!FlsGetValue
??:0
MSVCR110.dll!_crtFlsGetValue
??:0
MSVCR110.dll!wcsnlen
??:0
LIBEAY32.dll!ERR_unload_strings
??:0
LIBEAY32.dll!ERR_load_ERR_strings
??:0
LIBEAY32.dll!ERR_load_crypto_strings
??:0
SSLEAY32.dll!SSL_load_error_strings
??:0
さて、これにはいくつかの奇妙な点があります。
SSL_load_error_strings
引数を取らない。openSSLは広く使用されているライブラリであるため、メモリエラーがどのように発生するかわかりません(もちろん、ヒープの破損などでプロセスがすでに停止していない限り)- なぜ
SSL_load_error_strings
電話するのERR_unload_strings
ですか?ソースをざっと見てみたところ、どこかでインライン化が行われて見つけにくくなっている可能性はあると思いますが、そうではないようです。 - なぜ
wcsnlen
電話するの_crtFlsGetValue
ですか?ファイバーローカルストレージが必要だとは想像できません(とにかくファイバーを使用していないので、どうなるかわかりません...)
基本的に、私の質問は、dr.memory によって生成されたコールスタックをまったく信頼できますか?