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