CHANGES.txt 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. Visual Leak Detector (VLD) Version 1.0
  2. Change Log / Release Notes
  3. 1.0 (5 August 2005)
  4. -------------------
  5. New Features/Enhancements:
  6. + Memory leak detection can now be selectively disabled and enabled at
  7. runtime, using provided APIs. This provides a straight-forward way of
  8. allowing VLD to selectively "ignore" certain allocations. It can also be
  9. used to disable VLD altogether at runtime, improving application performance
  10. without needing to recompile.
  11. + If there are multiple identical memory leaks (i.e. leaks that originate from
  12. the same call stack and that leak the same size memory block) then VLD can
  13. optionally aggregate all of the repeated leaks, showing only the first such
  14. leaked block in detail in the memory leak report. A tally of the total
  15. number of leaks that match that particular size and call stack accompanies
  16. the information for that leak.
  17. + When VLD is initialized at program startup, the library type which was
  18. linked-in is displayed. This can help verify that the expected VLD library
  19. (either single-threaded static, multithreaded static, or multithreaded DLL)
  20. is being linked with your program.
  21. + The Visual Leak Detector name is displayed on most messages output to the
  22. debugger to easily differentiate VLD's output from the output produced by
  23. the built-in memory leak detector.
  24. + If any of the compile-time configuration options have been changed from
  25. their default values, then the current state of the option is displayed in
  26. the debugger when VLD is initialized.
  27. + VLD's memory leak self-checking capability (checking for leaks in VLD
  28. itself) can be verified using a new preprocessor macro that allows VLD to
  29. perform a self-test at runtime.
  30. Bugs Fixed:
  31. + If the MFC libraries are statically linked to the program being debugged,
  32. then MFC will erroneously report memory leaks in the Visual Leak Detector
  33. code and may cause an access violation while attempting to report the false
  34. memory leaks. These bogus leaks are always reported as "client block at
  35. <address>, subtype bf42" and are claimed to be "invalid objects".
  36. + VLD will leak a fixed-sized block of memory when the program exits if VLD
  37. failed to initialize because the Debug Help library (dbghelp.dll) could not
  38. be loaded.
  39. + In multithreaded programs, if the program's main thread terminates before
  40. other threads in the same process, then VLD may cause an access violation
  41. while freeing resources used internally by VLD.
  42. 0.9i (30 April 2005)
  43. --------------------
  44. New Features/Enhancements:
  45. + Added support in the source code for x64 architecture. The pre-built
  46. libraries will continue to support 32-bit only. If you need 64-bit support
  47. you'll need to build 64-bit versions of the libraries from source. Note that
  48. x64 is the only 64-bit architecture supported at this time. Itanium (aka
  49. IA-64) is NOT currently supported.
  50. Bugs Fixed:
  51. + VLD does not report memory leaks that are the result of a failure to free
  52. memory allocated via a call to realloc().
  53. + In multithreaded programs, if the program's main thread terminates before
  54. other threads in the same process, then VLD may cause an access violation
  55. while checking for memory leaks.
  56. + If VLD cannot find the source file and line number information for a program
  57. address, the last known file and line number will be repeated in the call
  58. stack section of the memory leak report. The correct behavior should be for
  59. VLD to print "File and line number not available" for that call stack entry.
  60. 0.9h (22 April 2005)
  61. --------------------
  62. Bugs Fixed:
  63. + Access Violations occur at random places within the VLD code when using
  64. VLD version 0.9g.
  65. + When using VLD version 0.9g, VLD may fail to report some memory leaks.
  66. 0.9g (22 April 2005)
  67. --------------------
  68. New Features/Enhancements:
  69. + Replaced the temporary internal search algorithm with a permanent search
  70. algorithm that is much faster. Programs that dynamically allocate a large
  71. number of memory blocks (tens of thousands or more) will see the most
  72. significant performance boost from this version of VLD versus the previous
  73. version. Overall, this is the fastest version of VLD released to date.
  74. 0.9f (13 April 2005)
  75. --------------------
  76. New Features/Enhancements:
  77. + Changed the internal search algorithm to a temporary simpler, but
  78. more stable algorithm. A permanent algorithm which should be much
  79. more efficient will be in a forthcoming release.
  80. Bugs Fixed:
  81. + Access Violation at line 319 in vldutil.cpp may occur when running a
  82. program linked with the VLD library.
  83. 0.9e (12 April 2005)
  84. --------------------
  85. New Features/Enhancements:
  86. + VLD no longer uses any STL containers or STL strings. This solves all of the
  87. compatibility problems with Visual Studio .NET when using the pre-built
  88. VLD libraries.
  89. + The configuration preprocessor macros now work with C programs without the
  90. need to call VLDConfigure from within the program being debugged.
  91. Because VLDConfigure is now obsolete, it has been removed.
  92. + One new source file (vldutil.cpp) and one new header (vldutil.h) have been
  93. added. They contain utility functions and utility classes that replace
  94. functionality previously performed by STL containers and strings.
  95. + The VisualLeakDetector global class object is now constructed at C runtime
  96. initialization (i.e. it resides in the "compiler" initialization area).
  97. Because VLD no longer uses any STL components, there is no longer the risk
  98. that VLD will conflict with any STL libraries that also are constructed at
  99. C runtime initialization. The end result is that VLD starts running earlier
  100. and is destroyed later, which leads to more accurate leak detection.
  101. Bugs Fixed:
  102. + Linking to the VLD 0.9d libraries from the VLD distribution under Visual
  103. Studio .NET results in a number of linker "unresolved external symbol"
  104. errors. Unresolved symbols include "__declspec(dllimport) void __cdecl
  105. std::_Xran(void)" and "__declspec(dllimport) private: void __thiscall
  106. std::basic_string,class std::allocator >::_Eos(unsigned int)", among others.
  107. + Call stacks do not appear in the memory leak report when linking against
  108. release VLD libraries built from source with Visual Studio .NET.
  109. + If the preprocessor macro VLD_MAX_DATA_DUMP is defined as 0 (zero), then VLD
  110. will get stuck in an infinite loop, repeatedly printing the same information
  111. while attempting to display the memory leak report in the debugger's output
  112. window.
  113. 0.9d (30 March 2005)
  114. --------------------
  115. New Features/Enhancements:
  116. + This version of VLD brings with it some major changes to the way VLD
  117. interfaces with programs that use it. Instead of requiring that VLD be built
  118. from source and then linked with the application, VLD is now packaged as a
  119. pre-built static library. For those who just want to use VLD and are not
  120. interested in modifying the source, this eliminates the complexities of
  121. building VLD from source. A single header file, vld.h, has been added. To
  122. link with the static library, this header needs to be included in one of the
  123. program's source files. Please see the README.txt file for details on how
  124. these changes affect how to use Visual Leak Detector.
  125. + The Microsoft Debug Help Library (dbghelp.dll) version 6.3 is now included
  126. with the VLD distribution.
  127. 0.9c (17 March 2005)
  128. --------------------
  129. Bugs Fixed:
  130. + Compile error, "error C2039: 'size' : is not a member of '_CrtMemBlockHeader'"
  131. occurs at line 644 of vld.cpp when building VLD with the VLD_MAX_DATA_DUMP
  132. preprocessor macro defined.
  133. 0.9b (15 March 2005)
  134. --------------------
  135. Bugs Fixed:
  136. + VLD fails to detect memory leaks in class constructors if the objects
  137. constructed are global objects.
  138. + If a debug executable is built with certain compiler optimizations turned on,
  139. specifically frame pointer omission optimization or automatic inlining, then
  140. theoretically VLD may produce incomplete or inaccurate stack traces or might
  141. fail to produce stack traces altogether.
  142. 0.9a (12 March 2005)
  143. --------------------
  144. Initial Public Release