]> git.lyx.org Git - lyx.git/blob - development/Win32/vld/CHANGES.txt
update CTAN download URL
[lyx.git] / development / Win32 / vld / CHANGES.txt
1 Visual Leak Detector (VLD) Version 1.9f (beta)
2
3   Change Log / Release Notes
4   
5 1.9f beta (18 November 2006)
6 ----------------------------
7   Bugs Fixed:
8   + Deadlocks or access violations may occur when loading DLLs into
9     multithreaded processes.
10   + In multithreaded programs, if the main thread terminates before other
11     threads in the process, then Visual Leak Detector may cause an access
12     violation while generating the memory leak report.
13     
14   Known Bugs/Restrictions:
15   + Memory allocations made through calls to functions loaded from a DLL using
16     delayed loading may not be detected.
17   + Support for programs that use MFC 7.0 or MFC 7.1 is not complete yet. Some
18     memory leaks from such MFC-based programs may not be detected.
19   + Visual Leak Detector may report leaks internal to Visual Leak Detector
20     if the main thread of the process terminates while other threads are still
21     running.
22   + If more than one copy of the same C Runtime DLL is loaded in the process at
23     the same time, then some leaks may go undetected (note that loading more
24     than one copy of the C Runtime DLL into a process at the same time is
25     probably a bad idea to begin with).
26   
27 1.9e beta (16 November 2006)
28 ----------------------------
29   New Features/Enhancements:
30   + Added a master on/off switch configuration option to vld.ini that can be
31     used to completely disable Visual Leak Detector.
32     
33   Bugs Fixed:
34   + Numerous deadlock situations. The multithread synchronization scheme has
35     been completely re-written which should make deadlocks in VLD much less
36     likey to happen.
37   + An access violation will occur in VLD if GetProcAddress is called to obtain
38     an export's address by ordinal, for certain libraries.
39   + Problems may potentially occur when the program being debugged exits due to
40     the Debug Help Library having been detached from the process too early.
41     Symptoms might include access violation exceptions or other erratic behavior
42     just as the program exits and while VLD is generating the leak report.
43   + The copy of vld.ini installed in VLD's installation directory overrides any
44     other copies of vld.ini that are created, even copies placed in the
45     working directory of the program being debugged.
46     
47   Known Bugs/Restrictions:
48   + Memory allocations made through calls to functions loaded from a DLL using
49     delayed loading may not be detected.
50   + Support for programs that use MFC 7.0 or MFC 7.1 is not complete yet. Some
51     memory leaks from such MFC-based programs may not be detected.
52   + If more than one copy of the same C Runtime DLL is loaded in the process at
53     the same time, then some leaks may go undetected (note that loading more
54     than one copy of the C Runtime DLL into a process at the same time is
55     probably a bad idea to begin with).
56   
57 1.9d beta (12 November 2006)
58 ----------------------------
59   Bugs Fixed:
60   + Failed assertion "freed == TRUE" pops up when running a program with VLD
61     without the debugger attached.
62   + Some, but not all, multithreaded programs that dynamically load and unload
63     many DLLs have been known to experience problems, such as deadlocks or
64     exceptions, when used with VLD.
65   + Failed assertion "exportmodule != NULL" pops up when running some programs
66     with VLD.
67   + VLD fails to show file names or function names in the memory leak report for
68     some programs that are linked with the dynamic CRT library.
69   + Access violation exceptions are thrown, but caught by the operating system,
70     when running some programs with VLD.
71
72 1.9c beta (6 November 2006)
73 ---------------------------
74   New Features/Enhancments:
75   + New NSIS installer makes setting up and using VLD much easier.
76   + No need to manually copy dbghelp.dll to the right location, VLD will always
77     find the right version.
78   + MFC 8.0 is now fully supported.
79   + The memory leak report is now written to the output window much faster.
80     Support has been added, through a new configuration option, to slow down
81     the report output for older versions of Visual Studio that have trouble
82     when it is written too quickly.
83   
84   Bugs Fixed:
85   + All known compatibilities with Visual Studio 2005 have been eliminated.
86   + Leaks from calloc may go undetected.
87   + Leaks from vector new operator may go undetected.
88   + VLDDisable and VLDEnable do not work as expected; some memory leaks that
89     should be ignored by VLD due to a previous call to VLDDisable are still
90     reported.
91   + Unloading and reloading a previously loaded module may cause leaks that
92     occur in the module after it was reloaded to go undetected.
93   + If vld.h is included in a release build, then the compiler will generate
94     errors if the VLDEnable or VLDDisable APIs have been used.
95
96 1.9b beta (26 October 2006)
97 ---------------------------
98   Bugs Fixed:
99   + Source compiles under Visual Studio 2005 and the binaries are compatible
100     with applications that link with the Visual Studio 2005 C Runtime Library
101     (msvcr80d.dll).
102
103   Known Restrictions in this Release:
104   + Memory allocations made through calls to functions loaded from a DLL using
105     delayed loading may not be detected.
106
107   + Support for programs that use MFC 7.0, MFC 7.1, or MFC 8.0 is not complete
108     yet. Some memory leaks from such MFC-based programs may not be detected. A
109     workaround for this restriction is to forcefully include the MFC DLLs in
110     memory leak detection, by setting the "ForceIncludeModules" configuration
111     option to: "mfc70d.dll mfc71d.dll mfc80d.dll" and explicitly adding vld.lib
112     as an input file on the linker command line (can be added through project
113     settings by adding it to the list of library modules in the linker options).
114     This restriction does not apply to programs that use MFC 4.2, which is fully
115     supported.
116
117 1.9a beta (9 March 2006)
118 ------------------------
119   New Features/Enhancments:
120   + All new leak detection engine detects most, if not all, in-process memory
121     leaks, not just leaks from "new" or "malloc", including COM-based leaks.
122
123   + Packaged as an easier-to-use DLL. There's no longer any need to carefully
124     decide which modules should be linked with the VLD library. Instead, you
125     just include the vld.h header file in at least one source file from each
126     module (DLL or EXE) to be included in memory leak detection.
127
128   + Configuration is done from an INI file instead of using preprocessor macros.
129     This allows VLD's configuration to be changed without needing to recompile
130     the program.
131
132   + Many new configuration options have been added. One of the most often
133     requested option that has been added is the option to save the leak report
134     to a file instead of, or in addition to, the debugger.
135
136   Bugs Fixed:
137   + The improved design of the new leak detection engine has resolved all of the
138     previously known restrictions in version 1.0.
139
140   Known Restrictions in this Release:
141   + Memory allocations made through calls to functions loaded from a DLL using
142     delayed loading may not be detected.
143
144   + Support for programs that use MFC 7.0, MFC 7.1, or MFC 8.0 is not complete
145     yet. Some memory leaks from such MFC-based programs may not be detected. A
146     workaround for this restriction is to forcefully include the MFC DLLs in
147     memory leak detection, by setting the "ForceIncludeModules" configuration
148     option to: "mfc70d.dll mfc71d.dll mfc80d.dll" and explicitly adding vld.lib
149     as an input file on the linker command line (can be added through project
150     settings by adding it to the list of library modules in the linker options).
151     This restriction does not apply to programs that use MFC 4.2, which is fully
152     supported.
153
154
155 1.0 (5 August 2005)
156 -------------------
157   New Features/Enhancements:
158   + Memory leak detection can now be selectively disabled and enabled at
159     runtime, using provided APIs. This provides a straightforward way of
160     allowing VLD to selectively "ignore" certain allocations. It can also be
161     used to disable VLD altogether at runtime, improving application performance
162     without needing to recompile.
163
164   + If there are multiple identical memory leaks (i.e. leaks that originate from
165     the same call stack and that leak the same size memory block) then VLD can
166     optionally aggregate all of the repeated leaks, showing only the first such
167     leaked block in detail in the memory leak report. A tally of the total
168     number of leaks that match that particular size and call stack accompanies
169     the information for that leak.
170
171   + When VLD is initialized at program startup, the library type which was
172     linked-in is displayed. This can help verify that the expected VLD library
173     (either single-threaded static, multithreaded static, or multithreaded DLL)
174     is being linked with your program.
175
176   + The Visual Leak Detector name is displayed on most messages output to the
177     debugger to easily differentiate VLD's output from the output produced by
178     the built-in memory leak detector.
179
180   + If any of the compile-time configuration options have been changed from
181     their default values, then the current state of the option is displayed in
182     the debugger when VLD is initialized.
183
184   + VLD's memory leak self-checking capability (checking for leaks in VLD
185     itself) can be verified using a new preprocessor macro that allows VLD to
186     perform a self-test at runtime.
187
188   Bugs Fixed:
189   + If the MFC libraries are statically linked to the program being debugged,
190     then MFC will erroneously report memory leaks in the Visual Leak Detector
191     code and may cause an access violation while attempting to report the false
192     memory leaks. These bogus leaks are always reported as "client block at
193     <address>, subtype bf42" and are claimed to be "invalid objects".
194
195   + VLD will leak a fixed-sized block of memory when the program exits if VLD
196     failed to initialize because the Debug Help library (dbghelp.dll) could not
197     be loaded.
198
199   + In multithreaded programs, if the program's main thread terminates before
200     other threads in the same process, then VLD may cause an access violation
201     while freeing resources used internally by VLD.
202
203
204 0.9i beta (30 April 2005)
205 -------------------------
206   New Features/Enhancements:
207   + Added support in the source code for x64 architecture. The pre-built
208     libraries will continue to support 32-bit only. If you need 64-bit support
209     you'll need to build 64-bit versions of the libraries from source. Note that
210     x64 is the only 64-bit architecture supported at this time. Itanium (aka
211     IA-64) is NOT currently supported.
212
213   Bugs Fixed:
214   + VLD does not report memory leaks that are the result of a failure to free
215     memory allocated via a call to realloc().
216   + In multithreaded programs, if the program's main thread terminates before
217     other threads in the same process, then VLD may cause an access violation
218     while checking for memory leaks.
219   + If VLD cannot find the source file and line number information for a program
220     address, the last known file and line number will be repeated in the call
221     stack section of the memory leak report. The correct behavior should be for
222     VLD to print "File and line number not available" for that call stack entry.
223
224
225 0.9h beta (22 April 2005)
226 -------------------------
227   Bugs Fixed:
228   + Access Violations occur at random places within the VLD code when using
229     VLD version 0.9g.
230   + When using VLD version 0.9g, VLD may fail to report some memory leaks.
231
232
233 0.9g beta (22 April 2005)
234 -------------------------
235   New Features/Enhancements:
236   + Replaced the temporary internal search algorithm with a permanent search
237     algorithm that is much faster. Programs that dynamically allocate a large
238     number of memory blocks (tens of thousands or more) will see the most
239     significant performance boost from this version of VLD versus the previous
240     version. Overall, this is the fastest version of VLD released to date.
241
242
243 0.9f beta (13 April 2005)
244 -------------------------
245   New Features/Enhancements:
246   + Changed the internal search algorithm to a temporary simpler, but
247     more stable algorithm. A permanent algorithm which should be much
248     more efficient will be in a forthcoming release.
249
250   Bugs Fixed:
251   + Access Violation at line 319 in vldutil.cpp may occur when running a
252     program linked with the VLD library.
253
254
255 0.9e beta (12 April 2005)
256 -------------------------
257   New Features/Enhancements:
258   + VLD no longer uses any STL containers or STL strings. This solves all of the
259     compatibility problems with Visual Studio .NET when using the pre-built
260     VLD libraries.
261
262   + The configuration preprocessor macros now work with C programs without the
263     need to call VLDConfigure from within the program being debugged.
264     Because VLDConfigure is now obsolete, it has been removed.
265
266   + One new source file (vldutil.cpp) and one new header (vldutil.h) have been
267     added. They contain utility functions and utility classes that replace
268     functionality previously performed by STL containers and strings.
269
270   + The VisualLeakDetector global class object is now constructed at C runtime
271     initialization (i.e. it resides in the "compiler" initialization area).
272     Because VLD no longer uses any STL components, there is no longer the risk
273     that VLD will conflict with any STL libraries that also are constructed at
274     C runtime initialization. The end result is that VLD starts running earlier
275     and is destroyed later, which leads to more accurate leak detection.
276
277   Bugs Fixed:
278   + Linking to the VLD 0.9d libraries from the VLD distribution under Visual
279     Studio .NET results in a number of linker "unresolved external symbol"
280     errors. Unresolved symbols include "__declspec(dllimport) void __cdecl
281     std::_Xran(void)" and "__declspec(dllimport) private: void __thiscall
282     std::basic_string,class std::allocator >::_Eos(unsigned int)", among others.
283
284   + Call stacks do not appear in the memory leak report when linking against
285     release VLD libraries built from source with Visual Studio .NET.
286
287   + If the preprocessor macro VLD_MAX_DATA_DUMP is defined as 0 (zero), then VLD
288     will get stuck in an infinite loop, repeatedly printing the same information
289     while attempting to display the memory leak report in the debugger's output
290     window.
291
292
293 0.9d beta (30 March 2005)
294 -------------------------
295   New Features/Enhancements:
296   + This version of VLD brings with it some major changes to the way VLD
297     interfaces with programs that use it. Instead of requiring that VLD be built
298     from source and then linked with the application, VLD is now packaged as a
299     pre-built static library. For those who just want to use VLD and are not
300     interested in modifying the source, this eliminates the complexities of
301     building VLD from source. A single header file, vld.h, has been added. To
302     link with the static library, this header needs to be included in one of the
303     program's source files. Please see the README.txt file for details on how
304     these changes affect how to use Visual Leak Detector.
305
306   + The Microsoft Debug Help Library (dbghelp.dll) version 6.3 is now included
307     with the VLD distribution.
308
309
310 0.9c beta (17 March 2005)
311 -------------------------
312   Bugs Fixed:
313   + Compile error, "error C2039: 'size' : is not a member of '_CrtMemBlockHeader'"
314     occurs at line 644 of vld.cpp when building VLD with the VLD_MAX_DATA_DUMP
315     preprocessor macro defined.
316
317
318 0.9b beta (15 March 2005)
319 -------------------------
320   Bugs Fixed:
321   + VLD fails to detect memory leaks in class constructors if the objects
322     constructed are global objects.
323
324   + If a debug executable is built with certain compiler optimizations turned on,
325     specifically frame pointer omission optimization or automatic inlining, then
326     theoretically VLD may produce incomplete or inaccurate stack traces or might
327     fail to produce stack traces altogether.
328
329
330 0.9a beta (12 March 2005)
331 -------------------------
332   Initial Public Release
333
334
335
336
337
338
339
340
341
342
343
344