Some code simplification.
[simple-x264-launcher.git] / etc / vld / CHANGES.txt
blobf280f419295ffaa5f5e91213f80c9df5d659c621
1 Visual Leak Detector (VLD) Version 2.4.0
3   
4   Change Log / Release Notes
6 2.4RC (23 March 2014)
7 ----------------------------
8   Enhancements:
9   + VS2013 support added.
10   + Improved usage in C code.
11   + Setup rewrited to InnoSetup, autopatching common props implemented for VS2008-2013.
12   + Called allocation function added to printed callstack.
13   ! Memory leaks count fixed for case static/dynamic linked MFC.
14   ! Release static linked CRT detection improved (VLD_OPT_RELEASE_CRT_RUNTIME define removed).
16   Bugs Fixed:
17   + Memory leaks with static linked CRT fixed for VS2012/2013.
18   + Deadlock fixed and missed memory leaks when dll loading (first appear in version 2.2.2).
20 2.3 (29 April 2013)
21 ----------------------------
22   Enhancements:
23   + Windows 8 support added.
25   Bugs Fixed:
26   + Memory leaks with duplicate thread id fixed (thanks to jlddodger).
28 2.2.3 (15 Febrary 2012)
29 ----------------------------
30   Enhancements:
31   + New option VLD_OPT_RELEASE_CRT_RUNTIME added. Useful only with define VLD_FORCE_ENABLE.
32   
33   Bugs Fixed:
34   + Memory leaks with static linking fixed finally.
36 2.2.2 (18 December 2011)
37 ----------------------------
38   Bugs Fixed:
39   + Memory leaks with static linking fixed.
40   + Visual Studio C++ 2008/2010 Express Edition compilation fixed.
41   + Hang fixed with GetOpenFileName().
43 2.2.1 (22 November 2011)
44 ----------------------------
45   Enhancements:
46   + strdup and _wcsdup functions support added.
47   + Preliminary support for VS 11 added.
49   Bugs Fixed:
50   + Low performance after upgrading from VLD v2.1.
51   + Runtime error R6002 fixed because of wrong memory dump format.
52   + version.h fixed in installer.
53   + Some PVS studio warning fixed.
55 2.2 (21 Jule 2011)
56 ----------------------------
57   Enhancements:
58   + New functions added: VLDSetReportHook.
60   Bugs Fixed:
61   + Resolved call stack printing fixed.
63 2.2b (8 Jule 2011)
64 ----------------------------
65   Enhancements:
66   + New functions added: VLDGetLeaksCount, VLDMarkAllLeaksAsReported (see vld.h).
67   + Introduced define called VLD_FORCE_ENABLE that allows one to active VLD even if not running in DEBUG.
68   + Adding Heap Validation.
69   + _aligned... functions and _recalloc support added.
70   + Memory leaks additional statistic added.
71         
72   Bugs Fixed:
73   + Issue fixed with loading wrong version of dbghelp.dll on Windows XP and bellow.
74   + VLDReportLeaks with aggregate duplicate links fixed.
75   + CoTaskMemAlloc memory leak detection fixed.
76   + Rare crash at exit on some platforms fixed.
77   + Asserts in release build disabled.
78   + LoaderLock fixed.
79   + LoadLibrary crash fixed with some applications like regsrv32.
80   + Callstack hash fixed with ASLR.
81   + VLDGlobalEnable fixed with new threads.
82   + Option VLD_OPT_MODULE_LIST_INCLUDE fixed.
84 2.1 (26 March 2011)
85 ----------------------------
86   Enhancements:
87   + New functions added: VLDGlobalDisable, VLDGlobalEnable, VLDGetOptions, 
88     VLDGetReportFilename, VLDSetOptions, VLDSetModulesList,
89     VLDGetModulesList, VLDResolveCallstacks (see vld.h).
90   + Option VLD_OPT_SKIP_HEAPFREE_LEAKS added.
91   + Hash for each leak added
92   + Supported loading symbols from Visual Studio symbol cache directory
94   Bugs Fixed:
95   + Improved LdrLoadDll, GetProcAddress hooking on Windows 7.
96   + "HMODULE not founded" bug fixed.
97   + Bugs fixed when VLD off.
98   + Problem fixed with GetModuleHandleW for SxS dll's (mfc*.dll, msvcr*.dll).
99   + Unicode-to-multibyte conversion fixed.
101 2.1 (26 March 2011)
102 ----------------------------
103   Enhancements:
104   + New functions added: VLDGlobalDisable, VLDGlobalEnable, VLDGetOptions, 
105     VLDGetReportFilename, VLDSetOptions, VLDSetModulesList,
106     VLDGetModulesList, VLDResolveCallstacks (see vld.h).
107   + Option VLD_OPT_SKIP_HEAPFREE_LEAKS added.
108   + Hash for each leak added
109   + Supported loading symbols from Visual Studio symbol cache directory
111   Bugs Fixed:
112   + Improved LdrLoadDll, GetProcAddress hooking on Windows 7.
113   + "HMODULE not founded" bug fixed.
114   + Bugs fixed when VLD off.
115   + Problem fixed with GetModuleHandleW for SxS dll's (mfc*.dll, msvcr*.dll).
116   + Unicode-to-multibyte conversion fixed.
118 2.0b (24 August 2010)
119 ----------------------------
120   Enhancements:
121   + Added new commands: VLDReportLeaks, VLDRefreshModules, VLDEnableModule,
122     VLDDisableModule, VLDSetReportOptions (see vld.h).
123   
124   Bugs Fixed:
125   + Problems with MSVC 2008 SP1 fixed. Thanks to Laurent Lessieux for contributing this patch.
127 2.0a (13 May 2010)
128 ----------------------------
129   Enhancements:
130   + Renamed vld dll files.
131   
132   Bugs Fixed:
133   + Problem with MSVC 2010 Unicode library fixed.
135 2.0 (25 April 2010)
136 ----------------------------
137   Enhancements:
138   + Added support to work with 64-bit applications
139   + Added support to work with Visual Studio 2010
141 1.9h beta (24 February 2009)
142 ----------------------------
143   Enhancements:
144   + Added support to work with Visual Studio 2008.
146   Known Bugs/Restrictions:
147   + Same bugs/restrictions as version 1.9f.
150 1.9g beta (16 April 2008)
151 ----------------------------
152   Bugs Fixed:
153   + Another deadlock condition may occur when loading DLLs into the process
154     being debugged. Special thanks to Eric Bissonnette and Kristian Paradis for
155     contributing this patch.
157   Known Bugs/Restrictions:
158   + Same bugs/restrictions as version 1.9f.
161 1.9f beta (18 November 2006)
162 ----------------------------
163   Bugs Fixed:
164   + Deadlocks or access violations may occur when loading DLLs into
165     multithreaded processes.
167   + In multithreaded programs, if the main thread terminates before other
168     threads in the process, then Visual Leak Detector may cause an access
169     violation while generating the memory leak report.
170     
171   Known Bugs/Restrictions:
172   + Memory allocations made through calls to functions loaded from a DLL using
173     delayed loading may not be detected.
175   + Support for programs that use MFC 7.0 or MFC 7.1 is not complete yet. Some
176     memory leaks from such MFC-based programs may not be detected.
178   + Visual Leak Detector may report leaks internal to Visual Leak Detector
179     if the main thread of the process terminates while other threads are still
180     running.
182   + If more than one copy of the same C Runtime DLL is loaded in the process at
183     the same time, then some leaks may go undetected (note that loading more
184     than one copy of the C Runtime DLL into a process at the same time is
185     probably a bad idea to begin with).
187   
188 1.9e beta (16 November 2006)
189 ----------------------------
190   New Features/Enhancements:
191   + Added a master on/off switch configuration option to vld.ini that can be
192     used to completely disable Visual Leak Detector.
193     
194   Bugs Fixed:
195   + Numerous deadlock situations. The multithread synchronization scheme has
196     been completely re-written which should make deadlocks in VLD much less
197     likely to happen.
199   + An access violation will occur in VLD if GetProcAddress is called to obtain
200     an export's address by ordinal, for certain libraries.
202   + Problems may potentially occur when the program being debugged exits due to
203     the Debug Help Library having been detached from the process too early.
204     Symptoms might include access violation exceptions or other erratic behavior
205     just as the program exits and while VLD is generating the leak report.
207   + The copy of vld.ini installed in VLD's installation directory overrides any
208     other copies of vld.ini that are created, even copies placed in the
209     working directory of the program being debugged.
210     
211   Known Bugs/Restrictions:
212   + Memory allocations made through calls to functions loaded from a DLL using
213     delayed loading may not be detected.
215   + Support for programs that use MFC 7.0 or MFC 7.1 is not complete yet. Some
216     memory leaks from such MFC-based programs may not be detected.
218   + If more than one copy of the same C Runtime DLL is loaded in the process at
219     the same time, then some leaks may go undetected (note that loading more
220     than one copy of the C Runtime DLL into a process at the same time is
221     probably a bad idea to begin with).
223   
224 1.9d beta (12 November 2006)
225 ----------------------------
226   Bugs Fixed:
227   + Failed assertion "freed == TRUE" pops up when running a program with VLD
228     without the debugger attached.
230   + Some, but not all, multithreaded programs that dynamically load and unload
231     many DLLs have been known to experience problems, such as deadlocks or
232     exceptions, when used with VLD.
234   + Failed assertion "exportmodule != NULL" pops up when running some programs
235     with VLD.
237   + VLD fails to show file names or function names in the memory leak report for
238     some programs that are linked with the dynamic CRT library.
240   + Access violation exceptions are thrown, but caught by the operating system,
241     when running some programs with VLD.
244 1.9c beta (6 November 2006)
245 ---------------------------
246   New Features/Enhancements:
247   + New NSIS installer makes setting up and using VLD much easier.
249   + No need to manually copy dbghelp.dll to the right location, VLD will always
250     find the right version.
252   + MFC 8.0 is now fully supported.
254   + The memory leak report is now written to the output window much faster.
255     Support has been added, through a new configuration option, to slow down
256     the report output for older versions of Visual Studio that have trouble
257     when it is written too quickly.
258   
259   Bugs Fixed:
260   + All known compatibilities with Visual Studio 2005 have been eliminated.
262   + Leaks from calloc may go undetected.
264   + Leaks from vector new operator may go undetected.
266   + VLDDisable and VLDEnable do not work as expected; some memory leaks that
267     should be ignored by VLD due to a previous call to VLDDisable are still
268     reported.
270   + Unloading and reloading a previously loaded module may cause leaks that
271     occur in the module after it was reloaded to go undetected.
273   + If vld.h is included in a release build, then the compiler will generate
274     errors if the VLDEnable or VLDDisable APIs have been used.
277 1.9b beta (26 October 2006)
278 ---------------------------
279   Bugs Fixed:
280   + Source compiles under Visual Studio 2005 and the binaries are compatible
281     with applications that link with the Visual Studio 2005 C Runtime Library
282     (msvcr80d.dll).
284   Known Restrictions in this Release:
285   + Memory allocations made through calls to functions loaded from a DLL using
286     delayed loading may not be detected.
288   + Support for programs that use MFC 7.0, MFC 7.1, or MFC 8.0 is not complete
289     yet. Some memory leaks from such MFC-based programs may not be detected. A
290     workaround for this restriction is to forcefully include the MFC DLLs in
291     memory leak detection, by setting the "ForceIncludeModules" configuration
292     option to: "mfc70d.dll mfc71d.dll mfc80d.dll" and explicitly adding vld.lib
293     as an input file on the linker command line (can be added through project
294     settings by adding it to the list of library modules in the linker options).
295     This restriction does not apply to programs that use MFC 4.2, which is fully
296     supported.
299 1.9a beta (9 March 2006)
300 ------------------------
301   New Features/Enhancements:
302   + All new leak detection engine detects most, if not all, in-process memory
303     leaks, not just leaks from "new" or "malloc", including COM-based leaks.
305   + Packaged as an easier-to-use DLL. There's no longer any need to carefully
306     decide which modules should be linked with the VLD library. Instead, you
307     just include the vld.h header file in at least one source file from each
308     module (DLL or EXE) to be included in memory leak detection.
310   + Configuration is done from an INI file instead of using preprocessor macros.
311     This allows VLD's configuration to be changed without needing to recompile
312     the program.
314   + Many new configuration options have been added. One of the most often
315     requested option that has been added is the option to save the leak report
316     to a file instead of, or in addition to, the debugger.
318   Bugs Fixed:
319   + The improved design of the new leak detection engine has resolved all of the
320     previously known restrictions in version 1.0.
322   Known Restrictions in this Release:
323   + Memory allocations made through calls to functions loaded from a DLL using
324     delayed loading may not be detected.
326   + Support for programs that use MFC 7.0, MFC 7.1, or MFC 8.0 is not complete
327     yet. Some memory leaks from such MFC-based programs may not be detected. A
328     workaround for this restriction is to forcefully include the MFC DLLs in
329     memory leak detection, by setting the "ForceIncludeModules" configuration
330     option to: "mfc70d.dll mfc71d.dll mfc80d.dll" and explicitly adding vld.lib
331     as an input file on the linker command line (can be added through project
332     settings by adding it to the list of library modules in the linker options).
333     This restriction does not apply to programs that use MFC 4.2, which is fully
334     supported.
337 1.0 (5 August 2005)
338 -------------------
339   New Features/Enhancements:
340   + Memory leak detection can now be selectively disabled and enabled at
341     runtime, using provided APIs. This provides a straightforward way of
342     allowing VLD to selectively "ignore" certain allocations. It can also be
343     used to disable VLD altogether at runtime, improving application performance
344     without needing to recompile.
346   + If there are multiple identical memory leaks (i.e. leaks that originate from
347     the same call stack and that leak the same size memory block) then VLD can
348     optionally aggregate all of the repeated leaks, showing only the first such
349     leaked block in detail in the memory leak report. A tally of the total
350     number of leaks that match that particular size and call stack accompanies
351     the information for that leak.
353   + When VLD is initialized at program startup, the library type which was
354     linked-in is displayed. This can help verify that the expected VLD library
355     (either single-threaded static, multithreaded static, or multithreaded DLL)
356     is being linked with your program.
358   + The Visual Leak Detector name is displayed on most messages output to the
359     debugger to easily differentiate VLD's output from the output produced by
360     the built-in memory leak detector.
362   + If any of the compile-time configuration options have been changed from
363     their default values, then the current state of the option is displayed in
364     the debugger when VLD is initialized.
366   + VLD's memory leak self-checking capability (checking for leaks in VLD
367     itself) can be verified using a new preprocessor macro that allows VLD to
368     perform a self-test at runtime.
370   Bugs Fixed:
371   + If the MFC libraries are statically linked to the program being debugged,
372     then MFC will erroneously report memory leaks in the Visual Leak Detector
373     code and may cause an access violation while attempting to report the false
374     memory leaks. These bogus leaks are always reported as "client block at
375     <address>, subtype bf42" and are claimed to be "invalid objects".
377   + VLD will leak a fixed-sized block of memory when the program exits if VLD
378     failed to initialize because the Debug Help library (dbghelp.dll) could not
379     be loaded.
381   + In multithreaded programs, if the program's main thread terminates before
382     other threads in the same process, then VLD may cause an access violation
383     while freeing resources used internally by VLD.
386 0.9i beta (30 April 2005)
387 -------------------------
388   New Features/Enhancements:
389   + Added support in the source code for x64 architecture. The pre-built
390     libraries will continue to support 32-bit only. If you need 64-bit support
391     you'll need to build 64-bit versions of the libraries from source. Note that
392     x64 is the only 64-bit architecture supported at this time. Itanium (aka
393     IA-64) is NOT currently supported.
395   Bugs Fixed:
396   + VLD does not report memory leaks that are the result of a failure to free
397     memory allocated via a call to realloc().
398   + In multithreaded programs, if the program's main thread terminates before
399     other threads in the same process, then VLD may cause an access violation
400     while checking for memory leaks.
401   + If VLD cannot find the source file and line number information for a program
402     address, the last known file and line number will be repeated in the call
403     stack section of the memory leak report. The correct behavior should be for
404     VLD to print "File and line number not available" for that call stack entry.
407 0.9h beta (22 April 2005)
408 -------------------------
409   Bugs Fixed:
410   + Access Violations occur at random places within the VLD code when using
411     VLD version 0.9g.
412   + When using VLD version 0.9g, VLD may fail to report some memory leaks.
415 0.9g beta (22 April 2005)
416 -------------------------
417   New Features/Enhancements:
418   + Replaced the temporary internal search algorithm with a permanent search
419     algorithm that is much faster. Programs that dynamically allocate a large
420     number of memory blocks (tens of thousands or more) will see the most
421     significant performance boost from this version of VLD versus the previous
422     version. Overall, this is the fastest version of VLD released to date.
425 0.9f beta (13 April 2005)
426 -------------------------
427   New Features/Enhancements:
428   + Changed the internal search algorithm to a temporary simpler, but
429     more stable algorithm. A permanent algorithm which should be much
430     more efficient will be in a forthcoming release.
432   Bugs Fixed:
433   + Access Violation at line 319 in vldutil.cpp may occur when running a
434     program linked with the VLD library.
437 0.9e beta (12 April 2005)
438 -------------------------
439   New Features/Enhancements:
440   + VLD no longer uses any STL containers or STL strings. This solves all of the
441     compatibility problems with Visual Studio .NET when using the pre-built
442     VLD libraries.
444   + The configuration preprocessor macros now work with C programs without the
445     need to call VLDConfigure from within the program being debugged.
446     Because VLDConfigure is now obsolete, it has been removed.
448   + One new source file (vldutil.cpp) and one new header (vldutil.h) have been
449     added. They contain utility functions and utility classes that replace
450     functionality previously performed by STL containers and strings.
452   + The VisualLeakDetector global class object is now constructed at C runtime
453     initialization (i.e. it resides in the "compiler" initialization area).
454     Because VLD no longer uses any STL components, there is no longer the risk
455     that VLD will conflict with any STL libraries that also are constructed at
456     C runtime initialization. The end result is that VLD starts running earlier
457     and is destroyed later, which leads to more accurate leak detection.
459   Bugs Fixed:
460   + Linking to the VLD 0.9d libraries from the VLD distribution under Visual
461     Studio .NET results in a number of linker "unresolved external symbol"
462     errors. Unresolved symbols include "__declspec(dllimport) void __cdecl
463     std::_Xran(void)" and "__declspec(dllimport) private: void __thiscall
464     std::basic_string,class std::allocator >::_Eos(unsigned int)", among others.
466   + Call stacks do not appear in the memory leak report when linking against
467     release VLD libraries built from source with Visual Studio .NET.
469   + If the preprocessor macro VLD_MAX_DATA_DUMP is defined as 0 (zero), then VLD
470     will get stuck in an infinite loop, repeatedly printing the same information
471     while attempting to display the memory leak report in the debugger's output
472     window.
475 0.9d beta (30 March 2005)
476 -------------------------
477   New Features/Enhancements:
478   + This version of VLD brings with it some major changes to the way VLD
479     interfaces with programs that use it. Instead of requiring that VLD be built
480     from source and then linked with the application, VLD is now packaged as a
481     pre-built static library. For those who just want to use VLD and are not
482     interested in modifying the source, this eliminates the complexities of
483     building VLD from source. A single header file, vld.h, has been added. To
484     link with the static library, this header needs to be included in one of the
485     program's source files. Please see the README.txt file for details on how
486     these changes affect how to use Visual Leak Detector.
488   + The Microsoft Debug Help Library (dbghelp.dll) version 6.3 is now included
489     with the VLD distribution.
492 0.9c beta (17 March 2005)
493 -------------------------
494   Bugs Fixed:
495   + Compile error, "error C2039: 'size' : is not a member of '_CrtMemBlockHeader'"
496     occurs at line 644 of vld.cpp when building VLD with the VLD_MAX_DATA_DUMP
497     preprocessor macro defined.
500 0.9b beta (15 March 2005)
501 -------------------------
502   Bugs Fixed:
503   + VLD fails to detect memory leaks in class constructors if the objects
504     constructed are global objects.
506   + If a debug executable is built with certain compiler optimizations turned on,
507     specifically frame pointer omission optimization or automatic inlining, then
508     theoretically VLD may produce incomplete or inaccurate stack traces or might
509     fail to produce stack traces altogether.
512 0.9a beta (12 March 2005)
513 -------------------------
514   Initial Public Release