| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565 |
- Visual Leak Detector (VLD) Version 2.5.1
- Change Log / Release Notes
- 2.5.1 (30 January 2017)
- ----------------------------
- Enhancements:
- + PDB added to installer.
- Bugs Fixed:
- + Fix ntdll loader patch for Windows 10 (1607) Anniversary Update causing crashes (thanks to ioannis-e).
- + Vld dll loading order fixed with MFC.
- + Supressible msgboxes in setup with cmdline /silent /suppressmsgboxes.
- 2.5 (09 January 2016)
- ----------------------------
- Enhancements:
- + VS2015 support added.
- + Windows 10 support added.
- + Support MFC 12 MBCS (thanks to mnissl).
- + VLD config through env. vars (thanks to akaStiX).
- + Support detection DllMain allocations (thanks to ioannis-e).
- + Add option to skip reporting crt startup allocations as memory leaks (thanks to ioannis-e).
- + Improve the vld.ini searching from additional locations (thanks to ioannis-e).
- + Changed implementation of FastCallStack::getStackTrace for 32-bit code.
- Bugs Fixed:
- + Fix #9519, #9859, #10544, use LoaderLock to serialize any calls which load additional libraries or require access to the Loader Lock (thanks to ioannis-e).
- + Fix #6359, #10553, fix crashes and failure to register COM dlls where Visual Leak Detector is unloaded before IMalloc interface is released (thanks to ioannis-e).
- + Fix #10548, vld.ini search path (thanks to ioannis-e).
- + Fix #10587, Visual Leak Detector reporting strange leaks in CRT module of VC++ (thanks to ioannis-e).
- + Fix #10588, false positives from CRT in VS2013 with /MTd (thanks to ioannis-e).
- + Deadlock fixed with StackWalkMethod=safe.
- 2.4RC2 (07 April 2014)
- ----------------------------
- Enhancements:
- + VLD will display last internal frame.
- + Installer also add path for static library.
- Bugs Fixed:
- + Internal memory leak fixed.
- 2.4RC (23 March 2014)
- ----------------------------
- Enhancements:
- + VS2013 support added.
- + Improved usage in C code.
- + Setup rewrited to InnoSetup, autopatching common props implemented for VS2008-2013.
- + Called allocation function added to printed callstack.
- ! Memory leaks count fixed for case static/dynamic linked MFC.
- ! Release static linked CRT detection improved (VLD_OPT_RELEASE_CRT_RUNTIME define removed).
- Bugs Fixed:
- + Memory leaks with static linked CRT fixed for VS2012/2013.
- + Deadlock fixed and missed memory leaks when dll loading (first appear in version 2.2.2).
- 2.3 (29 April 2013)
- ----------------------------
- Enhancements:
- + Windows 8 support added.
- Bugs Fixed:
- + Memory leaks with duplicate thread id fixed (thanks to jlddodger).
- 2.2.3 (15 Febrary 2012)
- ----------------------------
- Enhancements:
- + New option VLD_OPT_RELEASE_CRT_RUNTIME added. Useful only with define VLD_FORCE_ENABLE.
- Bugs Fixed:
- + Memory leaks with static linking fixed finally.
- 2.2.2 (18 December 2011)
- ----------------------------
- Bugs Fixed:
- + Memory leaks with static linking fixed.
- + Visual Studio C++ 2008/2010 Express Edition compilation fixed.
- + Hang fixed with GetOpenFileName().
- 2.2.1 (22 November 2011)
- ----------------------------
- Enhancements:
- + strdup and _wcsdup functions support added.
- + Preliminary support for VS 11 added.
- Bugs Fixed:
- + Low performance after upgrading from VLD v2.1.
- + Runtime error R6002 fixed because of wrong memory dump format.
- + version.h fixed in installer.
- + Some PVS studio warning fixed.
- 2.2 (21 Jule 2011)
- ----------------------------
- Enhancements:
- + New functions added: VLDSetReportHook.
- Bugs Fixed:
- + Resolved call stack printing fixed.
- 2.2b (8 Jule 2011)
- ----------------------------
- Enhancements:
- + New functions added: VLDGetLeaksCount, VLDMarkAllLeaksAsReported (see vld.h).
- + Introduced define called VLD_FORCE_ENABLE that allows one to active VLD even if not running in DEBUG.
- + Adding Heap Validation.
- + _aligned... functions and _recalloc support added.
- + Memory leaks additional statistic added.
- Bugs Fixed:
- + Issue fixed with loading wrong version of dbghelp.dll on Windows XP and bellow.
- + VLDReportLeaks with aggregate duplicate links fixed.
- + CoTaskMemAlloc memory leak detection fixed.
- + Rare crash at exit on some platforms fixed.
- + Asserts in release build disabled.
- + LoaderLock fixed.
- + LoadLibrary crash fixed with some applications like regsrv32.
- + Callstack hash fixed with ASLR.
- + VLDGlobalEnable fixed with new threads.
- + Option VLD_OPT_MODULE_LIST_INCLUDE fixed.
- 2.1 (26 March 2011)
- ----------------------------
- Enhancements:
- + New functions added: VLDGlobalDisable, VLDGlobalEnable, VLDGetOptions,
- VLDGetReportFilename, VLDSetOptions, VLDSetModulesList,
- VLDGetModulesList, VLDResolveCallstacks (see vld.h).
- + Option VLD_OPT_SKIP_HEAPFREE_LEAKS added.
- + Hash for each leak added
- + Supported loading symbols from Visual Studio symbol cache directory
- Bugs Fixed:
- + Improved LdrLoadDll, GetProcAddress hooking on Windows 7.
- + "HMODULE not founded" bug fixed.
- + Bugs fixed when VLD off.
- + Problem fixed with GetModuleHandleW for SxS dll's (mfc*.dll, msvcr*.dll).
- + Unicode-to-multibyte conversion fixed.
- 2.1 (26 March 2011)
- ----------------------------
- Enhancements:
- + New functions added: VLDGlobalDisable, VLDGlobalEnable, VLDGetOptions,
- VLDGetReportFilename, VLDSetOptions, VLDSetModulesList,
- VLDGetModulesList, VLDResolveCallstacks (see vld.h).
- + Option VLD_OPT_SKIP_HEAPFREE_LEAKS added.
- + Hash for each leak added
- + Supported loading symbols from Visual Studio symbol cache directory
- Bugs Fixed:
- + Improved LdrLoadDll, GetProcAddress hooking on Windows 7.
- + "HMODULE not founded" bug fixed.
- + Bugs fixed when VLD off.
- + Problem fixed with GetModuleHandleW for SxS dll's (mfc*.dll, msvcr*.dll).
- + Unicode-to-multibyte conversion fixed.
- 2.0b (24 August 2010)
- ----------------------------
- Enhancements:
- + Added new commands: VLDReportLeaks, VLDRefreshModules, VLDEnableModule,
- VLDDisableModule, VLDSetReportOptions (see vld.h).
- Bugs Fixed:
- + Problems with MSVC 2008 SP1 fixed. Thanks to Laurent Lessieux for contributing this patch.
- 2.0a (13 May 2010)
- ----------------------------
- Enhancements:
- + Renamed vld dll files.
- Bugs Fixed:
- + Problem with MSVC 2010 Unicode library fixed.
- 2.0 (25 April 2010)
- ----------------------------
- Enhancements:
- + Added support to work with 64-bit applications
- + Added support to work with Visual Studio 2010
- 1.9h beta (24 February 2009)
- ----------------------------
- Enhancements:
- + Added support to work with Visual Studio 2008.
- Known Bugs/Restrictions:
- + Same bugs/restrictions as version 1.9f.
- 1.9g beta (16 April 2008)
- ----------------------------
- Bugs Fixed:
- + Another deadlock condition may occur when loading DLLs into the process
- being debugged. Special thanks to Eric Bissonnette and Kristian Paradis for
- contributing this patch.
- Known Bugs/Restrictions:
- + Same bugs/restrictions as version 1.9f.
- 1.9f beta (18 November 2006)
- ----------------------------
- Bugs Fixed:
- + Deadlocks or access violations may occur when loading DLLs into
- multithreaded processes.
- + In multithreaded programs, if the main thread terminates before other
- threads in the process, then Visual Leak Detector may cause an access
- violation while generating the memory leak report.
- Known Bugs/Restrictions:
- + Memory allocations made through calls to functions loaded from a DLL using
- delayed loading may not be detected.
- + Support for programs that use MFC 7.0 or MFC 7.1 is not complete yet. Some
- memory leaks from such MFC-based programs may not be detected.
- + Visual Leak Detector may report leaks internal to Visual Leak Detector
- if the main thread of the process terminates while other threads are still
- running.
- + If more than one copy of the same C Runtime DLL is loaded in the process at
- the same time, then some leaks may go undetected (note that loading more
- than one copy of the C Runtime DLL into a process at the same time is
- probably a bad idea to begin with).
- 1.9e beta (16 November 2006)
- ----------------------------
- New Features/Enhancements:
- + Added a master on/off switch configuration option to vld.ini that can be
- used to completely disable Visual Leak Detector.
- Bugs Fixed:
- + Numerous deadlock situations. The multithread synchronization scheme has
- been completely re-written which should make deadlocks in VLD much less
- likely to happen.
- + An access violation will occur in VLD if GetProcAddress is called to obtain
- an export's address by ordinal, for certain libraries.
- + Problems may potentially occur when the program being debugged exits due to
- the Debug Help Library having been detached from the process too early.
- Symptoms might include access violation exceptions or other erratic behavior
- just as the program exits and while VLD is generating the leak report.
- + The copy of vld.ini installed in VLD's installation directory overrides any
- other copies of vld.ini that are created, even copies placed in the
- working directory of the program being debugged.
- Known Bugs/Restrictions:
- + Memory allocations made through calls to functions loaded from a DLL using
- delayed loading may not be detected.
- + Support for programs that use MFC 7.0 or MFC 7.1 is not complete yet. Some
- memory leaks from such MFC-based programs may not be detected.
- + If more than one copy of the same C Runtime DLL is loaded in the process at
- the same time, then some leaks may go undetected (note that loading more
- than one copy of the C Runtime DLL into a process at the same time is
- probably a bad idea to begin with).
- 1.9d beta (12 November 2006)
- ----------------------------
- Bugs Fixed:
- + Failed assertion "freed == TRUE" pops up when running a program with VLD
- without the debugger attached.
- + Some, but not all, multithreaded programs that dynamically load and unload
- many DLLs have been known to experience problems, such as deadlocks or
- exceptions, when used with VLD.
- + Failed assertion "exportmodule != NULL" pops up when running some programs
- with VLD.
- + VLD fails to show file names or function names in the memory leak report for
- some programs that are linked with the dynamic CRT library.
- + Access violation exceptions are thrown, but caught by the operating system,
- when running some programs with VLD.
- 1.9c beta (6 November 2006)
- ---------------------------
- New Features/Enhancements:
- + New NSIS installer makes setting up and using VLD much easier.
- + No need to manually copy dbghelp.dll to the right location, VLD will always
- find the right version.
- + MFC 8.0 is now fully supported.
- + The memory leak report is now written to the output window much faster.
- Support has been added, through a new configuration option, to slow down
- the report output for older versions of Visual Studio that have trouble
- when it is written too quickly.
- Bugs Fixed:
- + All known compatibilities with Visual Studio 2005 have been eliminated.
- + Leaks from calloc may go undetected.
- + Leaks from vector new operator may go undetected.
- + VLDDisable and VLDEnable do not work as expected; some memory leaks that
- should be ignored by VLD due to a previous call to VLDDisable are still
- reported.
- + Unloading and reloading a previously loaded module may cause leaks that
- occur in the module after it was reloaded to go undetected.
- + If vld.h is included in a release build, then the compiler will generate
- errors if the VLDEnable or VLDDisable APIs have been used.
- 1.9b beta (26 October 2006)
- ---------------------------
- Bugs Fixed:
- + Source compiles under Visual Studio 2005 and the binaries are compatible
- with applications that link with the Visual Studio 2005 C Runtime Library
- (msvcr80d.dll).
- Known Restrictions in this Release:
- + Memory allocations made through calls to functions loaded from a DLL using
- delayed loading may not be detected.
- + Support for programs that use MFC 7.0, MFC 7.1, or MFC 8.0 is not complete
- yet. Some memory leaks from such MFC-based programs may not be detected. A
- workaround for this restriction is to forcefully include the MFC DLLs in
- memory leak detection, by setting the "ForceIncludeModules" configuration
- option to: "mfc70d.dll mfc71d.dll mfc80d.dll" and explicitly adding vld.lib
- as an input file on the linker command line (can be added through project
- settings by adding it to the list of library modules in the linker options).
- This restriction does not apply to programs that use MFC 4.2, which is fully
- supported.
- 1.9a beta (9 March 2006)
- ------------------------
- New Features/Enhancements:
- + All new leak detection engine detects most, if not all, in-process memory
- leaks, not just leaks from "new" or "malloc", including COM-based leaks.
- + Packaged as an easier-to-use DLL. There's no longer any need to carefully
- decide which modules should be linked with the VLD library. Instead, you
- just include the vld.h header file in at least one source file from each
- module (DLL or EXE) to be included in memory leak detection.
- + Configuration is done from an INI file instead of using preprocessor macros.
- This allows VLD's configuration to be changed without needing to recompile
- the program.
- + Many new configuration options have been added. One of the most often
- requested option that has been added is the option to save the leak report
- to a file instead of, or in addition to, the debugger.
- Bugs Fixed:
- + The improved design of the new leak detection engine has resolved all of the
- previously known restrictions in version 1.0.
- Known Restrictions in this Release:
- + Memory allocations made through calls to functions loaded from a DLL using
- delayed loading may not be detected.
- + Support for programs that use MFC 7.0, MFC 7.1, or MFC 8.0 is not complete
- yet. Some memory leaks from such MFC-based programs may not be detected. A
- workaround for this restriction is to forcefully include the MFC DLLs in
- memory leak detection, by setting the "ForceIncludeModules" configuration
- option to: "mfc70d.dll mfc71d.dll mfc80d.dll" and explicitly adding vld.lib
- as an input file on the linker command line (can be added through project
- settings by adding it to the list of library modules in the linker options).
- This restriction does not apply to programs that use MFC 4.2, which is fully
- supported.
- 1.0 (5 August 2005)
- -------------------
- New Features/Enhancements:
- + Memory leak detection can now be selectively disabled and enabled at
- runtime, using provided APIs. This provides a straightforward way of
- allowing VLD to selectively "ignore" certain allocations. It can also be
- used to disable VLD altogether at runtime, improving application performance
- without needing to recompile.
- + If there are multiple identical memory leaks (i.e. leaks that originate from
- the same call stack and that leak the same size memory block) then VLD can
- optionally aggregate all of the repeated leaks, showing only the first such
- leaked block in detail in the memory leak report. A tally of the total
- number of leaks that match that particular size and call stack accompanies
- the information for that leak.
- + When VLD is initialized at program startup, the library type which was
- linked-in is displayed. This can help verify that the expected VLD library
- (either single-threaded static, multithreaded static, or multithreaded DLL)
- is being linked with your program.
- + The Visual Leak Detector name is displayed on most messages output to the
- debugger to easily differentiate VLD's output from the output produced by
- the built-in memory leak detector.
- + If any of the compile-time configuration options have been changed from
- their default values, then the current state of the option is displayed in
- the debugger when VLD is initialized.
- + VLD's memory leak self-checking capability (checking for leaks in VLD
- itself) can be verified using a new preprocessor macro that allows VLD to
- perform a self-test at runtime.
- Bugs Fixed:
- + If the MFC libraries are statically linked to the program being debugged,
- then MFC will erroneously report memory leaks in the Visual Leak Detector
- code and may cause an access violation while attempting to report the false
- memory leaks. These bogus leaks are always reported as "client block at
- <address>, subtype bf42" and are claimed to be "invalid objects".
- + VLD will leak a fixed-sized block of memory when the program exits if VLD
- failed to initialize because the Debug Help library (dbghelp.dll) could not
- be loaded.
- + In multithreaded programs, if the program's main thread terminates before
- other threads in the same process, then VLD may cause an access violation
- while freeing resources used internally by VLD.
- 0.9i beta (30 April 2005)
- -------------------------
- New Features/Enhancements:
- + Added support in the source code for x64 architecture. The pre-built
- libraries will continue to support 32-bit only. If you need 64-bit support
- you'll need to build 64-bit versions of the libraries from source. Note that
- x64 is the only 64-bit architecture supported at this time. Itanium (aka
- IA-64) is NOT currently supported.
- Bugs Fixed:
- + VLD does not report memory leaks that are the result of a failure to free
- memory allocated via a call to realloc().
- + In multithreaded programs, if the program's main thread terminates before
- other threads in the same process, then VLD may cause an access violation
- while checking for memory leaks.
- + If VLD cannot find the source file and line number information for a program
- address, the last known file and line number will be repeated in the call
- stack section of the memory leak report. The correct behavior should be for
- VLD to print "File and line number not available" for that call stack entry.
- 0.9h beta (22 April 2005)
- -------------------------
- Bugs Fixed:
- + Access Violations occur at random places within the VLD code when using
- VLD version 0.9g.
- + When using VLD version 0.9g, VLD may fail to report some memory leaks.
- 0.9g beta (22 April 2005)
- -------------------------
- New Features/Enhancements:
- + Replaced the temporary internal search algorithm with a permanent search
- algorithm that is much faster. Programs that dynamically allocate a large
- number of memory blocks (tens of thousands or more) will see the most
- significant performance boost from this version of VLD versus the previous
- version. Overall, this is the fastest version of VLD released to date.
- 0.9f beta (13 April 2005)
- -------------------------
- New Features/Enhancements:
- + Changed the internal search algorithm to a temporary simpler, but
- more stable algorithm. A permanent algorithm which should be much
- more efficient will be in a forthcoming release.
- Bugs Fixed:
- + Access Violation at line 319 in vldutil.cpp may occur when running a
- program linked with the VLD library.
- 0.9e beta (12 April 2005)
- -------------------------
- New Features/Enhancements:
- + VLD no longer uses any STL containers or STL strings. This solves all of the
- compatibility problems with Visual Studio .NET when using the pre-built
- VLD libraries.
- + The configuration preprocessor macros now work with C programs without the
- need to call VLDConfigure from within the program being debugged.
- Because VLDConfigure is now obsolete, it has been removed.
- + One new source file (vldutil.cpp) and one new header (vldutil.h) have been
- added. They contain utility functions and utility classes that replace
- functionality previously performed by STL containers and strings.
- + The VisualLeakDetector global class object is now constructed at C runtime
- initialization (i.e. it resides in the "compiler" initialization area).
- Because VLD no longer uses any STL components, there is no longer the risk
- that VLD will conflict with any STL libraries that also are constructed at
- C runtime initialization. The end result is that VLD starts running earlier
- and is destroyed later, which leads to more accurate leak detection.
- Bugs Fixed:
- + Linking to the VLD 0.9d libraries from the VLD distribution under Visual
- Studio .NET results in a number of linker "unresolved external symbol"
- errors. Unresolved symbols include "__declspec(dllimport) void __cdecl
- std::_Xran(void)" and "__declspec(dllimport) private: void __thiscall
- std::basic_string,class std::allocator >::_Eos(unsigned int)", among others.
- + Call stacks do not appear in the memory leak report when linking against
- release VLD libraries built from source with Visual Studio .NET.
- + If the preprocessor macro VLD_MAX_DATA_DUMP is defined as 0 (zero), then VLD
- will get stuck in an infinite loop, repeatedly printing the same information
- while attempting to display the memory leak report in the debugger's output
- window.
- 0.9d beta (30 March 2005)
- -------------------------
- New Features/Enhancements:
- + This version of VLD brings with it some major changes to the way VLD
- interfaces with programs that use it. Instead of requiring that VLD be built
- from source and then linked with the application, VLD is now packaged as a
- pre-built static library. For those who just want to use VLD and are not
- interested in modifying the source, this eliminates the complexities of
- building VLD from source. A single header file, vld.h, has been added. To
- link with the static library, this header needs to be included in one of the
- program's source files. Please see the README.txt file for details on how
- these changes affect how to use Visual Leak Detector.
- + The Microsoft Debug Help Library (dbghelp.dll) version 6.3 is now included
- with the VLD distribution.
- 0.9c beta (17 March 2005)
- -------------------------
- Bugs Fixed:
- + Compile error, "error C2039: 'size' : is not a member of '_CrtMemBlockHeader'"
- occurs at line 644 of vld.cpp when building VLD with the VLD_MAX_DATA_DUMP
- preprocessor macro defined.
- 0.9b beta (15 March 2005)
- -------------------------
- Bugs Fixed:
- + VLD fails to detect memory leaks in class constructors if the objects
- constructed are global objects.
- + If a debug executable is built with certain compiler optimizations turned on,
- specifically frame pointer omission optimization or automatic inlining, then
- theoretically VLD may produce incomplete or inaccurate stack traces or might
- fail to produce stack traces altogether.
- 0.9a beta (12 March 2005)
- -------------------------
- Initial Public Release
|