blob: f4951019566938dff31298eac6d28595b0821f92 [file] [log] [blame]
jseward43230652003-12-14 00:14:54 +00001
njn4a9f6f42005-07-19 23:46:08 +00002[[TODO: fix all the TODO items!]]
3
4Release 3.0.0 ([[TODO: add release date]])
5~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
njn7b1a6a42005-07-20 04:20:44 +000063.0.0 is a major overhaul of Valgrind. The most significant
7user-visible change is that Valgrind now supports architectures other
8than x86. The new architectures it supports are AMD64 and PPC32, and
sewardjc371bd02005-07-27 09:55:24 +00009the infrastructure is present for other architectures to be added
10later.
njn4a9f6f42005-07-19 23:46:08 +000011
12The AMD64 support works well, but has some shortcomings:
13
njn7b1a6a42005-07-20 04:20:44 +000014- It generally won't be as solid as the x86 version. For example,
15 support for more obscure instructions and system calls may be missing.
16 We will fix these as they arise.
njn4a9f6f42005-07-19 23:46:08 +000017
sewardjc371bd02005-07-27 09:55:24 +000018- Address space may be limited; see the point about
njn7b1a6a42005-07-20 04:20:44 +000019 position-independent executables below.
njn4a9f6f42005-07-19 23:46:08 +000020
njn7b1a6a42005-07-20 04:20:44 +000021- If Valgrind is built on an AMD64 machine, it will only run 64-bit
22 executables. If you want to run 32-bit x86 executables under Valgrind
23 on an AMD64, you will need to build Valgrind on an x86 machine and
24 copy it to the AMD64 machine. And it probably won't work if you do
25 something tricky like exec'ing a 32-bit program from a 64-bit program
26 while using --trace-children=yes. We hope to improve this situation
27 in the future.
28
29The PPC32 support is very basic. It may not work reliably even for
sewardjc371bd02005-07-27 09:55:24 +000030small programs, but it's a start. Many thanks to Paul Mackerras for
31his great work that enabled this support. We are working to make
32PPC32 usable as soon as possible.
njn4a9f6f42005-07-19 23:46:08 +000033
34Other user-visible changes:
35
sewardjc371bd02005-07-27 09:55:24 +000036- No longer building Valgrind as a position-independent executable
njn7b1a6a42005-07-20 04:20:44 +000037 (PIE) by default, as it caused too many problems.
njn4a9f6f42005-07-19 23:46:08 +000038
39 Without PIE enabled, AMD64 programs will only be able to access 2GB of
40 address space. We will fix this eventually, but not for the moment.
41
42 Use --enable-pie at configure-time to turn this on.
43
44- Support for programs that use stack-switching has been improved. Use
45 the --max-stackframe flag for simple cases, and the
46 VALGRIND_STACK_REGISTER, VALGRIND_STACK_DEREGISTER and
47 VALGRIND_STACK_CHANGE client requests for trickier cases.
48
njn7b1a6a42005-07-20 04:20:44 +000049- Support for programs that use self-modifying code has been improved,
50 in particular programs that put temporary code fragments on the stack.
51 This helps for C programs compiled with GCC that use nested functions,
njne7723322005-07-24 17:19:09 +000052 and also Ada programs. This is controlled with the --smc-check
njn7b1a6a42005-07-20 04:20:44 +000053 flag, although the default setting should work in most cases.
njn4a9f6f42005-07-19 23:46:08 +000054
njn7b1a6a42005-07-20 04:20:44 +000055- Output can now be printed in XML format. This should make it easier
sewardjc371bd02005-07-27 09:55:24 +000056 for tools such as GUI front-ends and automated error-processing
57 schemes to use Valgrind output as input. The --xml flag controls this.
58 As part of this change, ELF directory information is read from executables,
59 so absolute source file paths are available if needed.
60 [[TODO: describe the related CLOs added (eg. --log-file-qualifier)]]
njn4a9f6f42005-07-19 23:46:08 +000061
62- Programs that allocate many heap blocks may run faster, due to
63 improvements in certain data structures.
64
njn7b1a6a42005-07-20 04:20:44 +000065- Addrcheck is currently not working. We hope to get it working again
66 soon. Helgrind is still not working, as was the case for the 2.4.0
67 release.
njn4a9f6f42005-07-19 23:46:08 +000068
sewardjc371bd02005-07-27 09:55:24 +000069- The JITter has been completely rewritten, and is now in a separate
70 library, called Vex. This enabled a lot of the user-visible changes,
71 such as new architecture support. The new JIT unfortunately translates
72 more slowly than the old one, so programs may take longer to start.
73 We believe the code quality is produces is about the same, so once
74 started, programs should run at about the same speed. Feedback about
75 this would be useful.
76
77 On the plus side, Vex and hence Memcheck tracks value flow properly
78 through floating point and vector registers, something the 2.X line
79 could not do. That means that Memcheck is much more likely to be
80 usably accurate on vectorised code.
81
82- There is a subtle change to the way exiting of threaded programs
83 is handled. In 3.0, Valgrind's final diagnostic output (leak check,
84 etc) is not printed until the last thread exits. If the last thread
85 to exit was not the original thread which started the program, any
86 other process wait()-ing on this one to exit may conclude it has
87 finished before the diagnostic output is printed. This may not be
88 what you expect. 2.X had a different scheme which avoided this
89 problem, but caused deadlocks under obscure circumstances, so we
90 are trying something different for 3.0.
91
92- Small changes in control log file naming which make it easier to
93 use valgrind for debugging MPI-based programs.
94
95- As part of adding AMD64 support, DWARF2 CFI-based stack unwinding
96 support was added. In principle this means Valgrind can produce
97 meaningful backtraces on x86 code compiled with -fomit-frame-pointer
tom81868f02005-07-27 10:33:08 +000098 providing you also compile your code with -fasynchronous-unwind-tables.
sewardjc371bd02005-07-27 09:55:24 +000099
njn4a9f6f42005-07-19 23:46:08 +0000100- [[TODO: add more here]]
101
102Changes that are not user-visible:
103
sewardjc371bd02005-07-27 09:55:24 +0000104- The code has been massively overhauled in order to modularise it.
105 As a result we hope it is easier to navigate and understand.
njn4a9f6f42005-07-19 23:46:08 +0000106
107- Lots of code has been rewritten.
108
109- [[TODO: add more here]]
110
111BUGS FIXED
112
113[[TODO: add the full list here (once the RCs are out of the way?)]]
114
115
njn8c927302005-03-12 16:45:01 +0000116Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
njn1aa5ae42005-03-26 16:04:27 +0000117~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1182.4.0 brings many significant changes and bug fixes. The most
119significant user-visible change is that we no longer supply our own
120pthread implementation. Instead, Valgrind is finally capable of
121running the native thread library, either LinuxThreads or NPTL.
njn8c927302005-03-12 16:45:01 +0000122
njn1aa5ae42005-03-26 16:04:27 +0000123This means our libpthread has gone, along with the bugs associated
124with it. Valgrind now supports the kernel's threading syscalls, and
125lets you use your standard system libpthread. As a result:
njn8c927302005-03-12 16:45:01 +0000126
njn1aa5ae42005-03-26 16:04:27 +0000127* There are many fewer system dependencies and strange library-related
128 bugs. There is a small performance improvement, and a large
129 stability improvement.
njn8c927302005-03-12 16:45:01 +0000130
njn1aa5ae42005-03-26 16:04:27 +0000131* On the downside, Valgrind can no longer report misuses of the POSIX
132 PThreads API. It also means that Helgrind currently does not work.
133 We hope to fix these problems in a future release.
njn8c927302005-03-12 16:45:01 +0000134
njn1aa5ae42005-03-26 16:04:27 +0000135Note that running the native thread libraries does not mean Valgrind
136is able to provide genuine concurrent execution on SMPs. We still
137impose the restriction that only one thread is running at any given
138time.
njn8c927302005-03-12 16:45:01 +0000139
njn1aa5ae42005-03-26 16:04:27 +0000140There are many other significant changes too:
njn8c927302005-03-12 16:45:01 +0000141
njn1aa5ae42005-03-26 16:04:27 +0000142* Memcheck is (once again) the default tool.
njn8c927302005-03-12 16:45:01 +0000143
njn1aa5ae42005-03-26 16:04:27 +0000144* The default stack backtrace is now 12 call frames, rather than 4.
njn8c927302005-03-12 16:45:01 +0000145
njn1aa5ae42005-03-26 16:04:27 +0000146* Suppressions can have up to 25 call frame matches, rather than 4.
njn8c927302005-03-12 16:45:01 +0000147
njn1aa5ae42005-03-26 16:04:27 +0000148* Memcheck and Addrcheck use less memory. Under some circumstances,
149 they no longer allocate shadow memory if there are large regions of
150 memory with the same A/V states - such as an mmaped file.
njn8c927302005-03-12 16:45:01 +0000151
njn1aa5ae42005-03-26 16:04:27 +0000152* The memory-leak detector in Memcheck and Addrcheck has been
153 improved. It now reports more types of memory leak, including
154 leaked cycles. When reporting leaked memory, it can distinguish
155 between directly leaked memory (memory with no references), and
156 indirectly leaked memory (memory only referred to by other leaked
157 memory).
njn8c927302005-03-12 16:45:01 +0000158
njn1aa5ae42005-03-26 16:04:27 +0000159* Memcheck's confusion over the effect of mprotect() has been fixed:
160 previously mprotect could erroneously mark undefined data as
161 defined.
njn8c927302005-03-12 16:45:01 +0000162
njn1aa5ae42005-03-26 16:04:27 +0000163* Signal handling is much improved and should be very close to what
164 you get when running natively.
165
166 One result of this is that Valgrind observes changes to sigcontexts
167 passed to signal handlers. Such modifications will take effect when
168 the signal returns. You will need to run with --single-step=yes to
169 make this useful.
njn8c927302005-03-12 16:45:01 +0000170
171* Valgrind is built in Position Independent Executable (PIE) format if
njn1aa5ae42005-03-26 16:04:27 +0000172 your toolchain supports it. This allows it to take advantage of all
njn8c927302005-03-12 16:45:01 +0000173 the available address space on systems with 4Gbyte user address
174 spaces.
175
176* Valgrind can now run itself (requires PIE support).
177
njn1aa5ae42005-03-26 16:04:27 +0000178* Syscall arguments are now checked for validity. Previously all
179 memory used by syscalls was checked, but now the actual values
180 passed are also checked.
njn8c927302005-03-12 16:45:01 +0000181
njn1aa5ae42005-03-26 16:04:27 +0000182* Syscall wrappers are more robust against bad addresses being passed
183 to syscalls: they will fail with EFAULT rather than killing Valgrind
184 with SIGSEGV.
njn8c927302005-03-12 16:45:01 +0000185
njn1aa5ae42005-03-26 16:04:27 +0000186* Because clone() is directly supported, some non-pthread uses of it
187 will work. Partial sharing (where some resources are shared, and
188 some are not) is not supported.
189
190* open() and readlink() on /proc/self/exe are supported.
191
192BUGS FIXED:
193
19488520 pipe+fork+dup2 kills the main program
19588604 Valgrind Aborts when using $VALGRIND_OPTS and user progra...
19688614 valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt...
19788703 Stabs parser fails to handle ";"
19888886 ioctl wrappers for TIOCMBIS and TIOCMBIC
19989032 valgrind pthread_cond_timedwait fails
20089106 the 'impossible' happened
20189139 Missing sched_setaffinity & sched_getaffinity
20289198 valgrind lacks support for SIOCSPGRP and SIOCGPGRP
20389263 Missing ioctl translations for scsi-generic and CD playing
20489440 tests/deadlock.c line endings
20589481 `impossible' happened: EXEC FAILED
20689663 valgrind 2.2.0 crash on Redhat 7.2
20789792 Report pthread_mutex_lock() deadlocks instead of returnin...
20890111 statvfs64 gives invalid error/warning
20990128 crash+memory fault with stabs generated by gnat for a run...
21090778 VALGRIND_CHECK_DEFINED() not as documented in memcheck.h
21190834 cachegrind crashes at end of program without reporting re...
21291028 valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio...
21391162 valgrind crash while debugging drivel 1.2.1
21491199 Unimplemented function
21591325 Signal routing does not propagate the siginfo structure
21691599 Assertion `cv == ((void *)0)'
21791604 rw_lookup clears orig and sends the NULL value to rw_new
21891821 Small problems building valgrind with $top_builddir ne $t...
21991844 signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec...
22092264 UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared
22192331 per-target flags necessitate AM_PROG_CC_C_O
22292420 valgrind doesn't compile with linux 2.6.8.1/9
22392513 Valgrind 2.2.0 generates some warning messages
22492528 vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed.
22593096 unhandled ioctl 0x4B3A and 0x5601
22693117 Tool and core interface versions do not match
22793128 Can't run valgrind --tool=memcheck because of unimplement...
22893174 Valgrind can crash if passed bad args to certain syscalls
22993309 Stack frame in new thread is badly aligned
23093328 Wrong types used with sys_sigprocmask()
23193763 /usr/include/asm/msr.h is missing
23293776 valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser...
23393810 fcntl() argument checking a bit too strict
23494378 Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed.
23594429 valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3
23694645 Impossible happened: PINSRW mem
23794953 valgrind: the `impossible' happened: SIGSEGV
23895667 Valgrind does not work with any KDE app
23996243 Assertion 'res==0' failed
24096252 stage2 loader of valgrind fails to allocate memory
24196520 All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ...
24296660 ioctl CDROMREADTOCENTRY causes bogus warnings
24396747 After looping in a segfault handler, the impossible happens
24496923 Zero sized arrays crash valgrind trace back with SIGFPE
24596948 valgrind stops with assertion failure regarding mmap2
24696966 valgrind fails when application opens more than 16 sockets
24797398 valgrind: vg_libpthread.c:2667 Assertion failed
24897407 valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `...
24997427 "Warning: invalid file descriptor -1 in syscall close()" ...
25097785 missing backtrace
25197792 build in obj dir fails - autoconf / makefile cleanup
25297880 pthread_mutex_lock fails from shared library (special ker...
25397975 program aborts without ang VG messages
25498129 Failed when open and close file 230000 times using stdio
25598175 Crashes when using valgrind-2.2.0 with a program using al...
25698288 Massif broken
25798303 UNIMPLEMENTED FUNCTION pthread_condattr_setpshared
25898630 failed--compilation missing warnings.pm, fails to make he...
25998756 Cannot valgrind signal-heavy kdrive X server
26098966 valgrinding the JVM fails with a sanity check assertion
26199035 Valgrind crashes while profiling
26299142 loops with message "Signal 11 being dropped from thread 0...
26399195 threaded apps crash on thread start (using QThread::start...
26499348 Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off...
26599568 False negative due to mishandling of mprotect
26699738 valgrind memcheck crashes on program that uses sigitimer
26799923 0-sized allocations are reported as leaks
26899949 program seg faults after exit()
269100036 "newSuperblock's request for 1048576 bytes failed"
270100116 valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ...
271100486 memcheck reports "valgrind: the `impossible' happened: V...
272100833 second call to "mremap" fails with EINVAL
273101156 (vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1...
274101173 Assertion `recDepth >= 0 && recDepth < 500' failed
275101291 creating threads in a forked process fails
276101313 valgrind causes different behavior when resizing a window...
277101423 segfault for c++ array of floats
278101562 valgrind massif dies on SIGINT even with signal handler r...
279
njn8c927302005-03-12 16:45:01 +0000280
jseward34ed74f2004-08-30 18:04:42 +0000281Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0
282~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jseward7d180d92004-08-30 18:15:37 +00002832.2.0 brings nine months worth of improvements and bug fixes. We
284believe it to be a worthy successor to 2.0.0. There are literally
285hundreds of bug fixes and minor improvements. There are also some
286fairly major user-visible changes:
287
288* A complete overhaul of handling of system calls and signals, and
289 their interaction with threads. In general, the accuracy of the
290 system call, thread and signal simulations is much improved:
291
292 - Blocking system calls behave exactly as they do when running
293 natively (not on valgrind). That is, if a syscall blocks only the
294 calling thread when running natively, than it behaves the same on
295 valgrind. No more mysterious hangs because V doesn't know that some
296 syscall or other, should block only the calling thread.
297
298 - Interrupted syscalls should now give more faithful results.
299
300 - Signal contexts in signal handlers are supported.
301
302* Improvements to NPTL support to the extent that V now works
303 properly on NPTL-only setups.
304
305* Greater isolation between Valgrind and the program being run, so
306 the program is less likely to inadvertently kill Valgrind by
307 doing wild writes.
308
309* Massif: a new space profiling tool. Try it! It's cool, and it'll
310 tell you in detail where and when your C/C++ code is allocating heap.
311 Draws pretty .ps pictures of memory use against time. A potentially
312 powerful tool for making sense of your program's space use.
313
314* File descriptor leakage checks. When enabled, Valgrind will print out
315 a list of open file descriptors on exit.
316
317* Improved SSE2/SSE3 support.
318
jseward2eb002b2004-08-31 00:14:02 +0000319* Time-stamped output; use --time-stamp=yes
320
jseward34ed74f2004-08-30 18:04:42 +0000321
322
323Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.1.2
324~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3252.2.0 is not much different from 2.1.2, released seven weeks ago.
326A number of bugs have been fixed, most notably #85658, which gave
327problems for quite a few people. There have been many internal
328cleanups, but those are not user visible.
329
330The following bugs have been fixed since 2.1.2:
331
33285658 Assert in coregrind/vg_libpthread.c:2326 (open64) !=
333 (void*)0 failed
334 This bug was reported multiple times, and so the following
335 duplicates of it are also fixed: 87620, 85796, 85935, 86065,
336 86919, 86988, 87917, 88156
337
33880716 Semaphore mapping bug caused by unmap (sem_destroy)
339 (Was fixed prior to 2.1.2)
340
34186987 semctl and shmctl syscalls family is not handled properly
342
34386696 valgrind 2.1.2 + RH AS2.1 + librt
344
34586730 valgrind locks up at end of run with assertion failure
346 in __pthread_unwind
347
34886641 memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1
349 (also fixes 74298, a duplicate of this)
350
35185947 MMX/SSE unhandled instruction 'sfence'
352
35384978 Wrong error "Conditional jump or move depends on
354 uninitialised value" resulting from "sbbl %reg, %reg"
355
35686254 ssort() fails when signed int return type from comparison is
357 too small to handle result of unsigned int subtraction
358
35987089 memalign( 4, xxx) makes valgrind assert
360
jseward2eb002b2004-08-31 00:14:02 +000036186407 Add support for low-level parallel port driver ioctls.
jseward34ed74f2004-08-30 18:04:42 +0000362
36370587 Add timestamps to Valgrind output? (wishlist)
364
36584937 vg_libpthread.c:2505 (se_remap): Assertion `res == 0'
366 (fixed prior to 2.1.2)
367
36886317 cannot load libSDL-1.2.so.0 using valgrind
369
37086989 memcpy from mac_replace_strmem.c complains about
371 uninitialized pointers passed when length to copy is zero
372
37385811 gnu pascal symbol causes segmentation fault; ok in 2.0.0
374
37579138 writing to sbrk()'d memory causes segfault
376
37777369 sched deadlock while signal received during pthread_join
378 and the joined thread exited
379
38088115 In signal handler for SIGFPE, siginfo->si_addr is wrong
381 under Valgrind
382
38378765 Massif crashes on app exit if FP exceptions are enabled
384
385Additionally there are the following changes, which are not
386connected to any bug report numbers, AFAICS:
387
388* Fix scary bug causing mis-identification of SSE stores vs
389 loads and so causing memcheck to sometimes give nonsense results
390 on SSE code.
391
392* Add support for the POSIX message queue system calls.
393
394* Fix to allow 32-bit Valgrind to run on AMD64 boxes. Note: this does
395 NOT allow Valgrind to work with 64-bit executables - only with 32-bit
396 executables on an AMD64 box.
397
398* At configure time, only check whether linux/mii.h can be processed
399 so that we don't generate ugly warnings by trying to compile it.
400
jseward2eb002b2004-08-31 00:14:02 +0000401* Add support for POSIX clocks and timers.
402
jseward34ed74f2004-08-30 18:04:42 +0000403
404
jseward9cd978c2004-07-17 13:38:12 +0000405Developer (cvs head) release 2.1.2 (18 July 2004)
jsewardbd0a6e42004-07-17 12:19:43 +0000406~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4072.1.2 contains four months worth of bug fixes and refinements.
jseward9cd978c2004-07-17 13:38:12 +0000408Although officially a developer release, we believe it to be stable
409enough for widespread day-to-day use. 2.1.2 is pretty good, so try it
410first, although there is a chance it won't work. If so then try 2.0.0
411and tell us what went wrong." 2.1.2 fixes a lot of problems present
412in 2.0.0 and is generally a much better product.
jsewardbd0a6e42004-07-17 12:19:43 +0000413
jseward9cd978c2004-07-17 13:38:12 +0000414Relative to 2.1.1, a large number of minor problems with 2.1.1 have
415been fixed, and so if you use 2.1.1 you should try 2.1.2. Users of
416the last stable release, 2.0.0, might also want to try this release.
jsewardbd0a6e42004-07-17 12:19:43 +0000417
418The following bugs, and probably many more, have been fixed. These
419are listed at http://bugs.kde.org. Reporting a bug for valgrind in
420the http://bugs.kde.org is much more likely to get you a fix than
421mailing developers directly, so please continue to keep sending bugs
422there.
423
42476869 Crashes when running any tool under Fedora Core 2 test1
425 This fixes the problem with returning from a signal handler
jseward0400d4d2004-07-17 23:26:46 +0000426 when VDSOs are turned off in FC2.
jsewardbd0a6e42004-07-17 12:19:43 +0000427
jseward0400d4d2004-07-17 23:26:46 +000042869508 java 1.4.2 client fails with erroneous "stack size too small".
429 This fix makes more of the pthread stack attribute related
430 functions work properly. Java still doesn't work though.
jsewardbd0a6e42004-07-17 12:19:43 +0000431
43271906 malloc alignment should be 8, not 4
433 All memory returned by malloc/new etc is now at least
434 8-byte aligned.
435
jsewarda6017a42004-07-17 23:44:35 +000043681970 vg_alloc_ThreadState: no free slots available
437 (closed because the workaround is simple: increase
438 VG_N_THREADS, rebuild and try again.)
439
jsewardbd0a6e42004-07-17 12:19:43 +000044078514 Conditional jump or move depends on uninitialized value(s)
441 (a slight mishanding of FP code in memcheck)
442
jsewarda6017a42004-07-17 23:44:35 +000044377952 pThread Support (crash) (due to initialisation-ordering probs)
444 (also 85118)
445
jsewardbd0a6e42004-07-17 12:19:43 +000044680942 Addrcheck wasn't doing overlap checking as it should.
44778048 return NULL on malloc/new etc failure, instead of asserting
44873655 operator new() override in user .so files often doesn't get picked up
44983060 Valgrind does not handle native kernel AIO
45069872 Create proper coredumps after fatal signals
45182026 failure with new glibc versions: __libc_* functions are not exported
45270344 UNIMPLEMENTED FUNCTION: tcdrain
45381297 Cancellation of pthread_cond_wait does not require mutex
45482872 Using debug info from additional packages (wishlist)
45583025 Support for ioctls FIGETBSZ and FIBMAP
45683340 Support for ioctl HDIO_GET_IDENTITY
45779714 Support for the semtimedop system call.
45877022 Support for ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO
45982098 hp2ps ansification (wishlist)
46083573 Valgrind SIGSEGV on execve
46182999 show which cmdline option was erroneous (wishlist)
46283040 make valgrind VPATH and distcheck-clean (wishlist)
jsewarda6017a42004-07-17 23:44:35 +000046383998 Assertion `newfd > vgPlain_max_fd' failed (see below)
46482722 Unchecked mmap in as_pad leads to mysterious failures later
46578958 memcheck seg faults while running Mozilla
jsewarda2c08002004-07-18 09:24:57 +000046685416 Arguments with colon (e.g. --logsocket) ignored
jsewardbd0a6e42004-07-17 12:19:43 +0000467
468
469Additionally there are the following changes, which are not
470connected to any bug report numbers, AFAICS:
471
472* Rearranged address space layout relative to 2.1.1, so that
473 Valgrind/tools will run out of memory later than currently in many
474 circumstances. This is good news esp. for Calltree. It should
475 be possible for client programs to allocate over 800MB of
476 memory when using memcheck now.
477
jseward9cd978c2004-07-17 13:38:12 +0000478* Improved checking when laying out memory. Should hopefully avoid
479 the random segmentation faults that 2.1.1 sometimes caused.
480
jsewardbd0a6e42004-07-17 12:19:43 +0000481* Support for Fedora Core 2 and SuSE 9.1. Improvements to NPTL
482 support to the extent that V now works properly on NPTL-only setups.
483
484* Renamed the following options:
485 --logfile-fd --> --log-fd
486 --logfile --> --log-file
487 --logsocket --> --log-socket
488 to be consistent with each other and other options (esp. --input-fd).
489
490* Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and
491 improve the checking of other interface related ioctls.
492
jsewardbd0a6e42004-07-17 12:19:43 +0000493* Fix building with gcc-3.4.1.
494
495* Remove limit on number of semaphores supported.
496
jsewardbd0a6e42004-07-17 12:19:43 +0000497* Add support for syscalls: set_tid_address (258), acct (51).
498
499* Support instruction "repne movs" -- not official but seems to occur.
500
501* Implement an emulated soft limit for file descriptors in addition to
502 the current reserved area, which effectively acts as a hard limit. The
503 setrlimit system call now simply updates the emulated limits as best
504 as possible - the hard limit is not allowed to move at all and just
505 returns EPERM if you try and change it. This should stop reductions
506 in the soft limit causing assertions when valgrind tries to allocate
507 descriptors from the reserved area.
jsewarda6017a42004-07-17 23:44:35 +0000508 (This actually came from bug #83998).
jsewardbd0a6e42004-07-17 12:19:43 +0000509
nethercote76e8fd92004-07-21 10:37:31 +0000510* Major overhaul of Cachegrind implementation. First user-visible change
nethercote5e63bfb2004-07-17 12:49:53 +0000511 is that cachegrind.out files are now typically 90% smaller than they
nethercote76e8fd92004-07-21 10:37:31 +0000512 used to be; code annotation times are correspondingly much smaller.
513 Second user-visible change is that hit/miss counts for code that is
514 unloaded at run-time is no longer dumped into a single "discard" pile,
515 but accurately preserved.
jsewardbd0a6e42004-07-17 12:19:43 +0000516
517* Client requests for telling valgrind about memory pools.
518
519
520
jseward9cd978c2004-07-17 13:38:12 +0000521Developer (cvs head) release 2.1.1 (12 March 2004)
522~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jsewardbd0a6e42004-07-17 12:19:43 +00005232.1.1 contains some internal structural changes needed for V's
jsewarde3e77042004-03-12 21:07:05 +0000524long-term future. These don't affect end-users. Most notable
525user-visible changes are:
526
527* Greater isolation between Valgrind and the program being run, so
528 the program is less likely to inadvertently kill Valgrind by
529 doing wild writes.
530
531* Massif: a new space profiling tool. Try it! It's cool, and it'll
532 tell you in detail where and when your C/C++ code is allocating heap.
533 Draws pretty .ps pictures of memory use against time. A potentially
534 powerful tool for making sense of your program's space use.
535
536* Fixes for many bugs, including support for more SSE2/SSE3 instructions,
537 various signal/syscall things, and various problems with debug
538 info readers.
539
540* Support for glibc-2.3.3 based systems.
541
542We are now doing automatic overnight build-and-test runs on a variety
543of distros. As a result, we believe 2.1.1 builds and runs on:
544Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9.
545
546
547The following bugs, and probably many more, have been fixed. These
548are listed at http://bugs.kde.org. Reporting a bug for valgrind in
549the http://bugs.kde.org is much more likely to get you a fix than
550mailing developers directly, so please continue to keep sending bugs
551there.
552
55369616 glibc 2.3.2 w/NPTL is massively different than what valgrind expects
55469856 I don't know how to instrument MMXish stuff (Helgrind)
55573892 valgrind segfaults starting with Objective-C debug info
556 (fix for S-type stabs)
55773145 Valgrind complains too much about close(<reserved fd>)
55873902 Shadow memory allocation seems to fail on RedHat 8.0
55968633 VG_N_SEMAPHORES too low (V itself was leaking semaphores)
56075099 impossible to trace multiprocess programs
56176839 the `impossible' happened: disInstr: INT but not 0x80 !
56276762 vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed.
56376747 cannot include valgrind.h in c++ program
56476223 parsing B(3,10) gave NULL type => impossible happens
56575604 shmdt handling problem
56676416 Problems with gcc 3.4 snap 20040225
56775614 using -gstabs when building your programs the `impossible' happened
56875787 Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET,
56975294 gcc 3.4 snapshot's libstdc++ have unsupported instructions.
570 (REP RET)
57173326 vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed.
57272596 not recognizing __libc_malloc
57369489 Would like to attach ddd to running program
57472781 Cachegrind crashes with kde programs
57573055 Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes)
57673026 Descriptor leak check reports port numbers wrongly
57771705 README_MISSING_SYSCALL_OR_IOCTL out of date
57872643 Improve support for SSE/SSE2 instructions
57972484 valgrind leaves it's own signal mask in place when execing
58072650 Signal Handling always seems to restart system calls
58172006 The mmap system call turns all errors in ENOMEM
58271781 gdb attach is pretty useless
58371180 unhandled instruction bytes: 0xF 0xAE 0x85 0xE8
58469886 writes to zero page cause valgrind to assert on exit
58571791 crash when valgrinding gimp 1.3 (stabs reader problem)
58669783 unhandled syscall: 218
58769782 unhandled instruction bytes: 0x66 0xF 0x2B 0x80
58870385 valgrind fails if the soft file descriptor limit is less
589 than about 828
59069529 "rep; nop" should do a yield
59170827 programs with lots of shared libraries report "mmap failed"
592 for some of them when reading symbols
59371028 glibc's strnlen is optimised enough to confuse valgrind
594
595
596
597
jseward43230652003-12-14 00:14:54 +0000598Unstable (cvs head) release 2.1.0 (15 December 2003)
599~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
600For whatever it's worth, 2.1.0 actually seems pretty darn stable to me
601(Julian). It looks eminently usable, and given that it fixes some
602significant bugs, may well be worth using on a day-to-day basis.
6032.1.0 is known to build and pass regression tests on: SuSE 9, SuSE
6048.2, RedHat 8.
605
6062.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of
607handling of system calls and signals, and their interaction with
608threads. In general, the accuracy of the system call, thread and
609signal simulations is much improved. Specifically:
610
611- Blocking system calls behave exactly as they do when running
612 natively (not on valgrind). That is, if a syscall blocks only the
613 calling thread when running natively, than it behaves the same on
614 valgrind. No more mysterious hangs because V doesn't know that some
615 syscall or other, should block only the calling thread.
616
617- Interrupted syscalls should now give more faithful results.
618
619- Finally, signal contexts in signal handlers are supported. As a
620 result, konqueror on SuSE 9 no longer segfaults when notified of
621 file changes in directories it is watching.
622
623Other changes:
624
625- Robert Walsh's file descriptor leakage checks. When enabled,
626 Valgrind will print out a list of open file descriptors on
627 exit. Along with each file descriptor, Valgrind prints out a stack
628 backtrace of where the file was opened and any details relating to the
629 file descriptor such as the file name or socket details.
630 To use, give: --track-fds=yes
631
632- Implemented a few more SSE/SSE2 instructions.
633
634- Less crud on the stack when you do 'where' inside a GDB attach.
635
636- Fixed the following bugs:
637 68360: Valgrind does not compile against 2.6.0-testX kernels
638 68525: CVS head doesn't compile on C90 compilers
639 68566: pkgconfig support (wishlist)
640 68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr)
641 69140: valgrind not able to explicitly specify a path to a binary.
642 69432: helgrind asserts encountering a MutexErr when there are
643 EraserErr suppressions
644
jseward0b12daf2003-12-14 14:35:28 +0000645- Increase the max size of the translation cache from 200k average bbs
646 to 300k average bbs. Programs on the size of OOo (680m17) are
647 thrashing the cache at the smaller size, creating large numbers of
648 retranslations and wasting significant time as a result.
649
jseward43230652003-12-14 00:14:54 +0000650
651
652Stable release 2.0.0 (5 Nov 2003)
653~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
654
6552.0.0 improves SSE/SSE2 support, fixes some minor bugs, and
656improves support for SuSE 9 and the Red Hat "Severn" beta.
657
658- Further improvements to SSE/SSE2 support. The entire test suite of
659 the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1
660 20030307Z '-g -O -xW' now works. I think this gives pretty good
661 coverage of SSE/SSE2 floating point instructions, or at least the
662 subset emitted by Icc.
663
664- Also added support for the following instructions:
665 MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS
666 PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS).
667
668- CFI support for GDB version 6. Needed to enable newer GDBs
669 to figure out where they are when using --gdb-attach=yes.
670
671- Fix this:
672 mc_translate.c:1091 (memcheck_instrument): Assertion
673 `u_in->size == 4 || u_in->size == 16' failed.
674
675- Return an error rather than panicing when given a bad socketcall.
676
677- Fix checking of syscall rt_sigtimedwait().
678
679- Implement __NR_clock_gettime (syscall 265). Needed on Red Hat Severn.
680
681- Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n'
682 bytes long, when it could be shorter, which could cause false
683 positives.
684
685- Support use of select() for very large numbers of file descriptors.
686
687- Don't fail silently if the executable is statically linked, or is
688 setuid/setgid. Print an error message instead.
689
690- Support for old DWARF-1 format line number info.
691
692
693
694Snapshot 20031012 (12 October 2003)
695~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
696
697Three months worth of bug fixes, roughly. Most significant single
698change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
699
70020031012 builds on Red Hat Fedora ("Severn") but doesn't really work
701(curiosly, mozilla runs OK, but a modest "ls -l" bombs). I hope to
702get a working version out soon. It may or may not work ok on the
703forthcoming SuSE 9; I hear positive noises about it but haven't been
704able to verify this myself (not until I get hold of a copy of 9).
705
706A detailed list of changes, in no particular order:
707
708- Describe --gen-suppressions in the FAQ.
709
710- Syscall __NR_waitpid supported.
711
712- Minor MMX bug fix.
713
714- -v prints program's argv[] at startup.
715
716- More glibc-2.3 suppressions.
717
718- Suppressions for stack underrun bug(s) in the c++ support library
719 distributed with Intel Icc 7.0.
720
721- Fix problems reading /proc/self/maps.
722
723- Fix a couple of messages that should have been suppressed by -q,
724 but weren't.
725
726- Make Addrcheck understand "Overlap" suppressions.
727
728- At startup, check if program is statically linked and bail out if so.
729
730- Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
731
732- Memcheck/addrcheck: minor speed optimisations
733
734- Handle syscall __NR_brk more correctly than before.
735
736- Fixed incorrect allocate/free mismatch errors when using
737 operator new(unsigned, std::nothrow_t const&)
738 operator new[](unsigned, std::nothrow_t const&)
739
740- Support POSIX pthread spinlocks.
741
742- Fixups for clean compilation with gcc-3.3.1.
daywalker5d945de2003-09-26 00:32:53 +0000743
744- Implemented more opcodes:
745 - push %es
746 - push %ds
747 - pop %es
748 - pop %ds
749 - movntq
750 - sfence
751 - pshufw
752 - pavgb
753 - ucomiss
754 - enter
daywalkerb18d2532003-09-27 20:15:01 +0000755 - mov imm32, %esp
756 - all "in" and "out" opcodes
daywalker79aad842003-09-30 22:58:12 +0000757 - inc/dec %esp
jseward43230652003-12-14 00:14:54 +0000758 - A whole bunch of SSE/SSE2 instructions
daywalker5d945de2003-09-26 00:32:53 +0000759
jseward43230652003-12-14 00:14:54 +0000760- Memcheck: don't bomb on SSE/SSE2 code.
daywalker5d945de2003-09-26 00:32:53 +0000761
sewardj90238792003-05-05 00:23:42 +0000762
sewardj945f39f2003-07-25 21:11:40 +0000763Snapshot 20030725 (25 July 2003)
764~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
765
766Fixes some minor problems in 20030716.
767
768- Fix bugs in overlap checking for strcpy/memcpy etc.
769
770- Do overlap checking with Addrcheck as well as Memcheck.
771
772- Fix this:
773 Memcheck: the `impossible' happened:
774 get_error_name: unexpected type
775
776- Install headers needed to compile new skins.
777
sewardje3dd2e02003-07-27 08:04:48 +0000778- Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD
sewardj945f39f2003-07-25 21:11:40 +0000779 passed to non-traced children.
780
sewardjb9eda952003-07-26 21:39:05 +0000781- Fix file descriptor leak in valgrind-listener.
782
sewardje3dd2e02003-07-27 08:04:48 +0000783- Fix longstanding bug in which the allocation point of a
784 block resized by realloc was not correctly set. This may
785 have caused confusing error messages.
sewardj945f39f2003-07-25 21:11:40 +0000786
787
sewardj626fd892003-07-16 20:10:26 +0000788Snapshot 20030716 (16 July 2003)
sewardj9d916ed2003-07-14 23:38:40 +0000789~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
790
sewardj626fd892003-07-16 20:10:26 +000079120030716 is a snapshot of our current CVS head (development) branch.
sewardj9d916ed2003-07-14 23:38:40 +0000792This is the branch which will become valgrind-2.0. It contains
793significant enhancements over the 1.9.X branch.
794
795Despite this being a snapshot of the CVS head, it is believed to be
796quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so
797-- and therefore suitable for widespread use. Please let us know asap
798if it causes problems for you.
799
800Two reasons for releasing a snapshot now are:
801
802- It's been a while since 1.9.6, and this snapshot fixes
803 various problems that 1.9.6 has with threaded programs
804 on glibc-2.3.X based systems.
805
806- So as to make available improvements in the 2.0 line.
807
sewardj626fd892003-07-16 20:10:26 +0000808Major changes in 20030716, as compared to 1.9.6:
sewardj9d916ed2003-07-14 23:38:40 +0000809
810- More fixes to threading support on glibc-2.3.1 and 2.3.2-based
811 systems (SuSE 8.2, Red Hat 9). If you have had problems
812 with inconsistent/illogical behaviour of errno, h_errno or the DNS
sewardj626fd892003-07-16 20:10:26 +0000813 resolver functions in threaded programs, 20030716 should improve
sewardj9d916ed2003-07-14 23:38:40 +0000814 matters. This snapshot seems stable enough to run OpenOffice.org
815 1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big
816 threaded app if ever I saw one.
817
818- Automatic generation of suppression records; you no longer
819 need to write them by hand. Use --gen-suppressions=yes.
820
sewardj21511802003-07-22 17:47:42 +0000821- strcpy/memcpy/etc check their arguments for overlaps, when
822 running with the Memcheck or Addrcheck skins.
823
824- malloc_usable_size() is now supported.
825
826- new client requests:
827 - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS:
828 useful with regression testing
829 - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions
830 on real CPU (use with caution!)
831
sewardj9d916ed2003-07-14 23:38:40 +0000832- The GDB attach mechanism is more flexible. Allow the GDB to
833 be run to be specified by --gdb-path=/path/to/gdb, and specify
834 which file descriptor V will read its input from with
835 --input-fd=<number>.
836
sewardj21511802003-07-22 17:47:42 +0000837- Cachegrind gives more accurate results (wasn't tracking instructions in
838 malloc() and friends previously, is now).
839
sewardj9d916ed2003-07-14 23:38:40 +0000840- Complete support for the MMX instruction set.
841
842- Partial support for the SSE and SSE2 instruction sets. Work for this
843 is ongoing. About half the SSE/SSE2 instructions are done, so
844 some SSE based programs may work. Currently you need to specify
845 --skin=addrcheck. Basically not suitable for real use yet.
846
847- Significant speedups (10%-20%) for standard memory checking.
848
849- Fix assertion failure in pthread_once().
850
851- Fix this:
852 valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select):
853 Assertion `ms_end >= ms_now' failed.
854
855- Implement pthread_mutexattr_setpshared.
856
857- Understand Pentium 4 branch hints. Also implemented a couple more
858 obscure x86 instructions.
859
860- Lots of other minor bug fixes.
861
sewardj626fd892003-07-16 20:10:26 +0000862- We have a decent regression test system, for the first time.
863 This doesn't help you directly, but it does make it a lot easier
864 for us to track the quality of the system, especially across
865 multiple linux distributions.
866
867 You can run the regression tests with 'make regtest' after 'make
868 install' completes. On SuSE 8.2 and Red Hat 9 I get this:
869
870 == 84 tests, 0 stderr failures, 0 stdout failures ==
871
872 On Red Hat 8, I get this:
873
874 == 84 tests, 2 stderr failures, 1 stdout failure ==
875 corecheck/tests/res_search (stdout)
876 memcheck/tests/sigaltstack (stderr)
877
878 sigaltstack is probably harmless. res_search doesn't work
879 on R H 8 even running natively, so I'm not too worried.
880
881 On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures:
882
883 == 84 tests, 2 stderr failures, 1 stdout failure ==
884 corecheck/tests/pth_atfork1 (stdout)
885 corecheck/tests/pth_atfork1 (stderr)
886 memcheck/tests/sigaltstack (stderr)
887
888 You need to run on a PII system, at least, since some tests
889 contain P6-specific instructions, and the test machine needs
890 access to the internet so that corecheck/tests/res_search
891 (a test that the DNS resolver works) can function.
892
sewardj9d916ed2003-07-14 23:38:40 +0000893As ever, thanks for the vast amount of feedback :) and bug reports :(
894We may not answer all messages, but we do at least look at all of
895them, and tend to fix the most frequently reported bugs.
896
897
898
sewardj37918822003-05-05 01:05:09 +0000899Version 1.9.6 (7 May 2003 or thereabouts)
900~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
901
902Major changes in 1.9.6:
903
904- Improved threading support for glibc >= 2.3.2 (SuSE 8.2,
905 RedHat 9, to name but two ...) It turned out that 1.9.5
906 had problems with threading support on glibc >= 2.3.2,
907 usually manifested by threaded programs deadlocking in system calls,
908 or running unbelievably slowly. Hopefully these are fixed now. 1.9.6
909 is the first valgrind which gives reasonable support for
910 glibc-2.3.2. Also fixed a 2.3.2 problem with pthread_atfork().
911
912- Majorly expanded FAQ.txt. We've added workarounds for all
913 common problems for which a workaround is known.
914
915Minor changes in 1.9.6:
916
917- Fix identification of the main thread's stack. Incorrect
918 identification of it was causing some on-stack addresses to not get
919 identified as such. This only affected the usefulness of some error
920 messages; the correctness of the checks made is unchanged.
921
922- Support for kernels >= 2.5.68.
923
924- Dummy implementations of __libc_current_sigrtmin,
925 __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully
926 good enough to keep alive programs which previously died for lack of
927 them.
928
929- Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request.
930
sewardj3d47b792003-05-05 22:15:35 +0000931- Fix bug in the DWARF2 debug line info loader, when instructions
932 following each other have source lines far from each other
933 (e.g. with inlined functions).
934
sewardj37918822003-05-05 01:05:09 +0000935- Debug info reading: read symbols from both "symtab" and "dynsym"
936 sections, rather than merely from the one that comes last in the
937 file.
938
939- New syscall support: prctl(), creat(), lookup_dcookie().
940
941- When checking calls to accept(), recvfrom(), getsocketopt(),
942 don't complain if buffer values are NULL.
943
944- Try and avoid assertion failures in
945 mash_LD_PRELOAD_and_LD_LIBRARY_PATH.
946
947- Minor bug fixes in cg_annotate.
948
949
950
sewardj90238792003-05-05 00:23:42 +0000951Version 1.9.5 (7 April 2003)
952~~~~~~~~~~~~~~~~~~~~~~~~~~~~
953
954It occurs to me that it would be helpful for valgrind users to record
955in the source distribution the changes in each release. So I now
956attempt to mend my errant ways :-) Changes in this and future releases
957will be documented in the NEWS file in the source distribution.
958
959Major changes in 1.9.5:
960
961- (Critical bug fix): Fix a bug in the FPU simulation. This was
962 causing some floating point conditional tests not to work right.
963 Several people reported this. If you had floating point code which
964 didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5.
965
966- Partial support for Red Hat 9. RH9 uses the new Native Posix
967 Threads Library (NPTL), instead of the older LinuxThreads.
968 This potentially causes problems with V which will take some
969 time to correct. In the meantime we have partially worked around
970 this, and so 1.9.5 works on RH9. Threaded programs still work,
971 but they may deadlock, because some system calls (accept, read,
972 write, etc) which should be nonblocking, in fact do block. This
973 is a known bug which we are looking into.
974
975 If you can, your best bet (unfortunately) is to avoid using
976 1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution.
977 If your glibc is 2.3.1 or earlier, you're almost certainly OK.
978
979Minor changes in 1.9.5:
980
981- Added some #errors to valgrind.h to ensure people don't include
982 it accidentally in their sources. This is a change from 1.0.X
983 which was never properly documented. The right thing to include
984 is now memcheck.h. Some people reported problems and strange
985 behaviour when (incorrectly) including valgrind.h in code with
986 1.9.1 -- 1.9.4. This is no longer possible.
987
988- Add some __extension__ bits and pieces so that gcc configured
989 for valgrind-checking compiles even with -Werror. If you
990 don't understand this, ignore it. Of interest to gcc developers
991 only.
992
993- Removed a pointless check which caused problems interworking
994 with Clearcase. V would complain about shared objects whose
995 names did not end ".so", and refuse to run. This is now fixed.
996 In fact it was fixed in 1.9.4 but not documented.
997
998- Fixed a bug causing an assertion failure of "waiters == 1"
999 somewhere in vg_scheduler.c, when running large threaded apps,
1000 notably MySQL.
1001
1002- Add support for the munlock system call (124).
1003
1004Some comments about future releases:
1005
10061.9.5 is, we hope, the most stable Valgrind so far. It pretty much
1007supersedes the 1.0.X branch. If you are a valgrind packager, please
1008consider making 1.9.5 available to your users. You can regard the
10091.0.X branch as obsolete: 1.9.5 is stable and vastly superior. There
1010are no plans at all for further releases of the 1.0.X branch.
1011
1012If you want a leading-edge valgrind, consider building the cvs head
1013(from SourceForge), or getting a snapshot of it. Current cool stuff
1014going in includes MMX support (done); SSE/SSE2 support (in progress),
1015a significant (10-20%) performance improvement (done), and the usual
1016large collection of minor changes. Hopefully we will be able to
1017improve our NPTL support, but no promises.
1018