1

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 によって生成されたコールスタックをまったく信頼できますか?

4

0 に答える 0