Does this callstack make any sense?

136 Views Asked by At

I got the following listing when running dr.memory on my application, which uses openssl:

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

Now, there are a few strange things about this:

  • SSL_load_error_strings takes no arguments. I can't see how it could have a memory error in it as openSSL is a widely used library (unless my process is already dying due to heap corruption or something, of course)
  • Why would SSL_load_error_strings be calling ERR_unload_strings? I took a quick look at the source and it doesn't seem to, although there could be some inlining happening somewhere to make it hard to spot, I guess.
  • Why would wcsnlen be calling _crtFlsGetValue? I can't imagine that it needs fiber-local storage (and I can't see how it would, since I'm not using fibers anyway...)

Basically, my question is, can I trust the callstacks generated by dr.memory at all?

0

There are 0 best solutions below