如何破译Visual Leak Detector

时间:2015-05-06 15:49:43

标签: memory-leaks openssl boost-asio visual-leak-detector

任何人都可以帮助破译Visual Leak Detector报告的内存泄漏吗?

它在openssl中的某个地方吗?

另外,为什么没有这样的驱动器映射时它会引用驱动器f:上的文件?

类似的post表明它可能与为初始化分配一次的内存有关。

WARNING: Visual Leak Detector detected memory leaks!
---------- Block 364 at 0x005D2E38: 20 bytes ----------
  Leak Hash: 0x8FD6682B, Count: 1, Total 20 bytes
  Call Stack (TID 11424):
    0x771CE046 (File and line number not available): ntdll.dll!RtlAllocateHeap
    f:\dd\vctools\crt\crtw32\heap\malloc.c (58): utilities-test.exe!_heap_alloc_base
    f:\dd\vctools\crt\crtw32\misc\dbgheap.c (431): utilities-test.exe!_heap_alloc_dbg_impl + 0x9 bytes
    f:\dd\vctools\crt\crtw32\misc\dbgheap.c (239): utilities-test.exe!_nh_malloc_dbg_impl + 0x19 bytes
    f:\dd\vctools\crt\crtw32\misc\dbgheap.c (302): utilities-test.exe!_nh_malloc_dbg + 0x1D bytes
    f:\dd\vctools\crt\crtw32\misc\dbgmalloc.c (56): utilities-test.exe!malloc + 0x15 bytes
    d:\cfiles\projects\winssl\openssl-1.0.1e\crypto\mem.c (79): utilities-test.exe!default_malloc_ex + 0xB bytes
    c:\development\cots\boost\boost\asio\ssl\detail\impl\openssl_init.ipp (127): utilities-test.exe!boost::asio::ssl::detail
::openssl_init_base::instance + 0x3F bytes
    c:\development\cots\boost\boost\asio\ssl\detail\openssl_init.hpp (61): utilities-test.exe!boost::asio::ssl::detail::open
ssl_init<1>::openssl_init<1> + 0x9 bytes
    d:\server\programs\microsoft visual studio 12.0\vc\include\xmemory0 (611): utilities-test.exe!`dynamic initializer for 'boost::asio::ssl
::detail::openssl_init<1>::instance_'' + 0xD bytes
    f:\dd\vctools\crt\crtw32\startup\crt0dat.c (955): utilities-test.exe!_initterm
    f:\dd\vctools\crt\crtw32\startup\crt0dat.c (308): utilities-test.exe!_cinit + 0xF bytes
    f:\dd\vctools\crt\crtw32\startup\crt0.c (237): utilities-test.exe!__tmainCRTStartup + 0x7 bytes
    f:\dd\vctools\crt\crtw32\startup\crt0.c (165): utilities-test.exe!mainCRTStartup
    0x76BA336A (File and line number not available): kernel32.dll!BaseThreadInitThunk + 0x12 bytes
    0x771D92B2 (File and line number not available): ntdll.dll!RtlInitializeExceptionChain + 0x63 bytes
    0x771D9285 (File and line number not available): ntdll.dll!RtlInitializeExceptionChain + 0x36 bytes
  Data:
    00 00 00 00    B8 2E 5D 00    01 00 00 00    04 00 00 00     ......]. ........
    50 E1 60 01                                                  P.`..... ........

2 个答案:

答案 0 :(得分:0)

它指向f:因为这些路径保存在调试信息中。当CRT建成时,源被放置在驱动器f:。

我认为这是一个你不应该(并且无法修复)的泄漏,它看起来像是一次性初始化。

无论如何,我还建议尝试其他第三方工具来查找内存泄漏,可能会获得更多信息。

答案 1 :(得分:0)

  

它在openssl中的某个地方吗?

是的,OpenSSL已知内存泄漏。例如,请参阅OpenSSL Issue #2561: Memory leak with SSL built-in compressionsHow to properly uninitialize OpenSSL

这可能(或可能不会)导致您的问题。

可能还有其他人。

  

任何人都可以帮助破译Visual Leak Detector报告的内存泄漏吗?

抱歉,我无法帮助那里。

  

另外,为什么它会引用驱动器f上的文件:没有这样的驱动器映射?

Microsoft的调试记录包括路径。例如,请参阅Generating and Deploying Debug Symbols

但是,由于您没有Microsoft的构建环境,因此对您没有帮助。可以安全地忽略。