blob: dc6a09bd1e63d0b5341732cb25879ebdb540a155 [file] [log] [blame]
jseward43230652003-12-14 00:14:54 +00001
sewardjec39f332005-08-02 15:28:07 +00002Release 3.0.0 (3 August 2005)
3~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
njn7b1a6a42005-07-20 04:20:44 +000043.0.0 is a major overhaul of Valgrind. The most significant
5user-visible change is that Valgrind now supports architectures other
6than x86. The new architectures it supports are AMD64 and PPC32, and
sewardjc371bd02005-07-27 09:55:24 +00007the infrastructure is present for other architectures to be added
8later.
njn4a9f6f42005-07-19 23:46:08 +00009
10The AMD64 support works well, but has some shortcomings:
11
njn7b1a6a42005-07-20 04:20:44 +000012- It generally won't be as solid as the x86 version. For example,
13 support for more obscure instructions and system calls may be missing.
14 We will fix these as they arise.
njn4a9f6f42005-07-19 23:46:08 +000015
sewardjc371bd02005-07-27 09:55:24 +000016- Address space may be limited; see the point about
njn7b1a6a42005-07-20 04:20:44 +000017 position-independent executables below.
njn4a9f6f42005-07-19 23:46:08 +000018
njn7b1a6a42005-07-20 04:20:44 +000019- If Valgrind is built on an AMD64 machine, it will only run 64-bit
20 executables. If you want to run 32-bit x86 executables under Valgrind
21 on an AMD64, you will need to build Valgrind on an x86 machine and
22 copy it to the AMD64 machine. And it probably won't work if you do
23 something tricky like exec'ing a 32-bit program from a 64-bit program
24 while using --trace-children=yes. We hope to improve this situation
25 in the future.
26
27The PPC32 support is very basic. It may not work reliably even for
sewardjc371bd02005-07-27 09:55:24 +000028small programs, but it's a start. Many thanks to Paul Mackerras for
29his great work that enabled this support. We are working to make
30PPC32 usable as soon as possible.
njn4a9f6f42005-07-19 23:46:08 +000031
32Other user-visible changes:
33
sewardjec39f332005-08-02 15:28:07 +000034- Valgrind is no longer built by default as a position-independent
35 executable (PIE), as this caused too many problems.
njn4a9f6f42005-07-19 23:46:08 +000036
37 Without PIE enabled, AMD64 programs will only be able to access 2GB of
38 address space. We will fix this eventually, but not for the moment.
39
40 Use --enable-pie at configure-time to turn this on.
41
42- Support for programs that use stack-switching has been improved. Use
43 the --max-stackframe flag for simple cases, and the
44 VALGRIND_STACK_REGISTER, VALGRIND_STACK_DEREGISTER and
45 VALGRIND_STACK_CHANGE client requests for trickier cases.
46
njn7b1a6a42005-07-20 04:20:44 +000047- Support for programs that use self-modifying code has been improved,
48 in particular programs that put temporary code fragments on the stack.
49 This helps for C programs compiled with GCC that use nested functions,
njne7723322005-07-24 17:19:09 +000050 and also Ada programs. This is controlled with the --smc-check
njn7b1a6a42005-07-20 04:20:44 +000051 flag, although the default setting should work in most cases.
njn4a9f6f42005-07-19 23:46:08 +000052
njn7b1a6a42005-07-20 04:20:44 +000053- Output can now be printed in XML format. This should make it easier
sewardjc371bd02005-07-27 09:55:24 +000054 for tools such as GUI front-ends and automated error-processing
55 schemes to use Valgrind output as input. The --xml flag controls this.
56 As part of this change, ELF directory information is read from executables,
57 so absolute source file paths are available if needed.
njn4a9f6f42005-07-19 23:46:08 +000058
59- Programs that allocate many heap blocks may run faster, due to
60 improvements in certain data structures.
61
njn7b1a6a42005-07-20 04:20:44 +000062- Addrcheck is currently not working. We hope to get it working again
63 soon. Helgrind is still not working, as was the case for the 2.4.0
64 release.
njn4a9f6f42005-07-19 23:46:08 +000065
sewardjc371bd02005-07-27 09:55:24 +000066- The JITter has been completely rewritten, and is now in a separate
67 library, called Vex. This enabled a lot of the user-visible changes,
68 such as new architecture support. The new JIT unfortunately translates
69 more slowly than the old one, so programs may take longer to start.
70 We believe the code quality is produces is about the same, so once
71 started, programs should run at about the same speed. Feedback about
72 this would be useful.
73
74 On the plus side, Vex and hence Memcheck tracks value flow properly
75 through floating point and vector registers, something the 2.X line
76 could not do. That means that Memcheck is much more likely to be
77 usably accurate on vectorised code.
78
sewardjec39f332005-08-02 15:28:07 +000079- There is a subtle change to the way exiting of threaded programs
sewardjc371bd02005-07-27 09:55:24 +000080 is handled. In 3.0, Valgrind's final diagnostic output (leak check,
81 etc) is not printed until the last thread exits. If the last thread
82 to exit was not the original thread which started the program, any
83 other process wait()-ing on this one to exit may conclude it has
84 finished before the diagnostic output is printed. This may not be
85 what you expect. 2.X had a different scheme which avoided this
86 problem, but caused deadlocks under obscure circumstances, so we
87 are trying something different for 3.0.
88
89- Small changes in control log file naming which make it easier to
sewardjec39f332005-08-02 15:28:07 +000090 use valgrind for debugging MPI-based programs. The relevant
91 new flags are --log-file-exactly= and --log-file-qualifier=.
sewardjc371bd02005-07-27 09:55:24 +000092
93- As part of adding AMD64 support, DWARF2 CFI-based stack unwinding
94 support was added. In principle this means Valgrind can produce
95 meaningful backtraces on x86 code compiled with -fomit-frame-pointer
tom81868f02005-07-27 10:33:08 +000096 providing you also compile your code with -fasynchronous-unwind-tables.
sewardjc371bd02005-07-27 09:55:24 +000097
sewardjec39f332005-08-02 15:28:07 +000098- The documentation build system has been completely redone.
99 The documentation masters are now in XML format, and from that
100 HTML, PostScript and PDF documentation is generated. As a result
101 the manual is now available in book form. Note that the
102 documentation in the source tarballs is pre-built, so you don't need
103 any XML processing tools to build Valgrind from a tarball.
njn4a9f6f42005-07-19 23:46:08 +0000104
105Changes that are not user-visible:
106
sewardjc371bd02005-07-27 09:55:24 +0000107- The code has been massively overhauled in order to modularise it.
108 As a result we hope it is easier to navigate and understand.
njn4a9f6f42005-07-19 23:46:08 +0000109
110- Lots of code has been rewritten.
111
njn4a9f6f42005-07-19 23:46:08 +0000112BUGS FIXED
113
114[[TODO: add the full list here (once the RCs are out of the way?)]]
115
116
sewardjbfa2b992005-07-27 17:49:17 +0000117(3.0RC1: 27 July 05, vex r1303, valgrind r4283).
118
119
120
njn8c927302005-03-12 16:45:01 +0000121Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
njn1aa5ae42005-03-26 16:04:27 +0000122~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1232.4.0 brings many significant changes and bug fixes. The most
124significant user-visible change is that we no longer supply our own
125pthread implementation. Instead, Valgrind is finally capable of
126running the native thread library, either LinuxThreads or NPTL.
njn8c927302005-03-12 16:45:01 +0000127
njn1aa5ae42005-03-26 16:04:27 +0000128This means our libpthread has gone, along with the bugs associated
129with it. Valgrind now supports the kernel's threading syscalls, and
130lets you use your standard system libpthread. As a result:
njn8c927302005-03-12 16:45:01 +0000131
njn1aa5ae42005-03-26 16:04:27 +0000132* There are many fewer system dependencies and strange library-related
133 bugs. There is a small performance improvement, and a large
134 stability improvement.
njn8c927302005-03-12 16:45:01 +0000135
njn1aa5ae42005-03-26 16:04:27 +0000136* On the downside, Valgrind can no longer report misuses of the POSIX
137 PThreads API. It also means that Helgrind currently does not work.
138 We hope to fix these problems in a future release.
njn8c927302005-03-12 16:45:01 +0000139
njn1aa5ae42005-03-26 16:04:27 +0000140Note that running the native thread libraries does not mean Valgrind
141is able to provide genuine concurrent execution on SMPs. We still
142impose the restriction that only one thread is running at any given
143time.
njn8c927302005-03-12 16:45:01 +0000144
njn1aa5ae42005-03-26 16:04:27 +0000145There are many other significant changes too:
njn8c927302005-03-12 16:45:01 +0000146
njn1aa5ae42005-03-26 16:04:27 +0000147* Memcheck is (once again) the default tool.
njn8c927302005-03-12 16:45:01 +0000148
njn1aa5ae42005-03-26 16:04:27 +0000149* The default stack backtrace is now 12 call frames, rather than 4.
njn8c927302005-03-12 16:45:01 +0000150
njn1aa5ae42005-03-26 16:04:27 +0000151* Suppressions can have up to 25 call frame matches, rather than 4.
njn8c927302005-03-12 16:45:01 +0000152
njn1aa5ae42005-03-26 16:04:27 +0000153* Memcheck and Addrcheck use less memory. Under some circumstances,
154 they no longer allocate shadow memory if there are large regions of
155 memory with the same A/V states - such as an mmaped file.
njn8c927302005-03-12 16:45:01 +0000156
njn1aa5ae42005-03-26 16:04:27 +0000157* The memory-leak detector in Memcheck and Addrcheck has been
158 improved. It now reports more types of memory leak, including
159 leaked cycles. When reporting leaked memory, it can distinguish
160 between directly leaked memory (memory with no references), and
161 indirectly leaked memory (memory only referred to by other leaked
162 memory).
njn8c927302005-03-12 16:45:01 +0000163
njn1aa5ae42005-03-26 16:04:27 +0000164* Memcheck's confusion over the effect of mprotect() has been fixed:
165 previously mprotect could erroneously mark undefined data as
166 defined.
njn8c927302005-03-12 16:45:01 +0000167
njn1aa5ae42005-03-26 16:04:27 +0000168* Signal handling is much improved and should be very close to what
169 you get when running natively.
170
171 One result of this is that Valgrind observes changes to sigcontexts
172 passed to signal handlers. Such modifications will take effect when
173 the signal returns. You will need to run with --single-step=yes to
174 make this useful.
njn8c927302005-03-12 16:45:01 +0000175
176* Valgrind is built in Position Independent Executable (PIE) format if
njn1aa5ae42005-03-26 16:04:27 +0000177 your toolchain supports it. This allows it to take advantage of all
njn8c927302005-03-12 16:45:01 +0000178 the available address space on systems with 4Gbyte user address
179 spaces.
180
181* Valgrind can now run itself (requires PIE support).
182
njn1aa5ae42005-03-26 16:04:27 +0000183* Syscall arguments are now checked for validity. Previously all
184 memory used by syscalls was checked, but now the actual values
185 passed are also checked.
njn8c927302005-03-12 16:45:01 +0000186
njn1aa5ae42005-03-26 16:04:27 +0000187* Syscall wrappers are more robust against bad addresses being passed
188 to syscalls: they will fail with EFAULT rather than killing Valgrind
189 with SIGSEGV.
njn8c927302005-03-12 16:45:01 +0000190
njn1aa5ae42005-03-26 16:04:27 +0000191* Because clone() is directly supported, some non-pthread uses of it
192 will work. Partial sharing (where some resources are shared, and
193 some are not) is not supported.
194
195* open() and readlink() on /proc/self/exe are supported.
196
197BUGS FIXED:
198
19988520 pipe+fork+dup2 kills the main program
20088604 Valgrind Aborts when using $VALGRIND_OPTS and user progra...
20188614 valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt...
20288703 Stabs parser fails to handle ";"
20388886 ioctl wrappers for TIOCMBIS and TIOCMBIC
20489032 valgrind pthread_cond_timedwait fails
20589106 the 'impossible' happened
20689139 Missing sched_setaffinity & sched_getaffinity
20789198 valgrind lacks support for SIOCSPGRP and SIOCGPGRP
20889263 Missing ioctl translations for scsi-generic and CD playing
20989440 tests/deadlock.c line endings
21089481 `impossible' happened: EXEC FAILED
21189663 valgrind 2.2.0 crash on Redhat 7.2
21289792 Report pthread_mutex_lock() deadlocks instead of returnin...
21390111 statvfs64 gives invalid error/warning
21490128 crash+memory fault with stabs generated by gnat for a run...
21590778 VALGRIND_CHECK_DEFINED() not as documented in memcheck.h
21690834 cachegrind crashes at end of program without reporting re...
21791028 valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio...
21891162 valgrind crash while debugging drivel 1.2.1
21991199 Unimplemented function
22091325 Signal routing does not propagate the siginfo structure
22191599 Assertion `cv == ((void *)0)'
22291604 rw_lookup clears orig and sends the NULL value to rw_new
22391821 Small problems building valgrind with $top_builddir ne $t...
22491844 signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec...
22592264 UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared
22692331 per-target flags necessitate AM_PROG_CC_C_O
22792420 valgrind doesn't compile with linux 2.6.8.1/9
22892513 Valgrind 2.2.0 generates some warning messages
22992528 vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed.
23093096 unhandled ioctl 0x4B3A and 0x5601
23193117 Tool and core interface versions do not match
23293128 Can't run valgrind --tool=memcheck because of unimplement...
23393174 Valgrind can crash if passed bad args to certain syscalls
23493309 Stack frame in new thread is badly aligned
23593328 Wrong types used with sys_sigprocmask()
23693763 /usr/include/asm/msr.h is missing
23793776 valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser...
23893810 fcntl() argument checking a bit too strict
23994378 Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed.
24094429 valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3
24194645 Impossible happened: PINSRW mem
24294953 valgrind: the `impossible' happened: SIGSEGV
24395667 Valgrind does not work with any KDE app
24496243 Assertion 'res==0' failed
24596252 stage2 loader of valgrind fails to allocate memory
24696520 All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ...
24796660 ioctl CDROMREADTOCENTRY causes bogus warnings
24896747 After looping in a segfault handler, the impossible happens
24996923 Zero sized arrays crash valgrind trace back with SIGFPE
25096948 valgrind stops with assertion failure regarding mmap2
25196966 valgrind fails when application opens more than 16 sockets
25297398 valgrind: vg_libpthread.c:2667 Assertion failed
25397407 valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `...
25497427 "Warning: invalid file descriptor -1 in syscall close()" ...
25597785 missing backtrace
25697792 build in obj dir fails - autoconf / makefile cleanup
25797880 pthread_mutex_lock fails from shared library (special ker...
25897975 program aborts without ang VG messages
25998129 Failed when open and close file 230000 times using stdio
26098175 Crashes when using valgrind-2.2.0 with a program using al...
26198288 Massif broken
26298303 UNIMPLEMENTED FUNCTION pthread_condattr_setpshared
26398630 failed--compilation missing warnings.pm, fails to make he...
26498756 Cannot valgrind signal-heavy kdrive X server
26598966 valgrinding the JVM fails with a sanity check assertion
26699035 Valgrind crashes while profiling
26799142 loops with message "Signal 11 being dropped from thread 0...
26899195 threaded apps crash on thread start (using QThread::start...
26999348 Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off...
27099568 False negative due to mishandling of mprotect
27199738 valgrind memcheck crashes on program that uses sigitimer
27299923 0-sized allocations are reported as leaks
27399949 program seg faults after exit()
274100036 "newSuperblock's request for 1048576 bytes failed"
275100116 valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ...
276100486 memcheck reports "valgrind: the `impossible' happened: V...
277100833 second call to "mremap" fails with EINVAL
278101156 (vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1...
279101173 Assertion `recDepth >= 0 && recDepth < 500' failed
280101291 creating threads in a forked process fails
281101313 valgrind causes different behavior when resizing a window...
282101423 segfault for c++ array of floats
283101562 valgrind massif dies on SIGINT even with signal handler r...
284
njn8c927302005-03-12 16:45:01 +0000285
jseward34ed74f2004-08-30 18:04:42 +0000286Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0
287~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jseward7d180d92004-08-30 18:15:37 +00002882.2.0 brings nine months worth of improvements and bug fixes. We
289believe it to be a worthy successor to 2.0.0. There are literally
290hundreds of bug fixes and minor improvements. There are also some
291fairly major user-visible changes:
292
293* A complete overhaul of handling of system calls and signals, and
294 their interaction with threads. In general, the accuracy of the
295 system call, thread and signal simulations is much improved:
296
297 - Blocking system calls behave exactly as they do when running
298 natively (not on valgrind). That is, if a syscall blocks only the
299 calling thread when running natively, than it behaves the same on
300 valgrind. No more mysterious hangs because V doesn't know that some
301 syscall or other, should block only the calling thread.
302
303 - Interrupted syscalls should now give more faithful results.
304
305 - Signal contexts in signal handlers are supported.
306
307* Improvements to NPTL support to the extent that V now works
308 properly on NPTL-only setups.
309
310* Greater isolation between Valgrind and the program being run, so
311 the program is less likely to inadvertently kill Valgrind by
312 doing wild writes.
313
314* Massif: a new space profiling tool. Try it! It's cool, and it'll
315 tell you in detail where and when your C/C++ code is allocating heap.
316 Draws pretty .ps pictures of memory use against time. A potentially
317 powerful tool for making sense of your program's space use.
318
319* File descriptor leakage checks. When enabled, Valgrind will print out
320 a list of open file descriptors on exit.
321
322* Improved SSE2/SSE3 support.
323
jseward2eb002b2004-08-31 00:14:02 +0000324* Time-stamped output; use --time-stamp=yes
325
jseward34ed74f2004-08-30 18:04:42 +0000326
327
328Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.1.2
329~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3302.2.0 is not much different from 2.1.2, released seven weeks ago.
331A number of bugs have been fixed, most notably #85658, which gave
332problems for quite a few people. There have been many internal
333cleanups, but those are not user visible.
334
335The following bugs have been fixed since 2.1.2:
336
33785658 Assert in coregrind/vg_libpthread.c:2326 (open64) !=
338 (void*)0 failed
339 This bug was reported multiple times, and so the following
340 duplicates of it are also fixed: 87620, 85796, 85935, 86065,
341 86919, 86988, 87917, 88156
342
34380716 Semaphore mapping bug caused by unmap (sem_destroy)
344 (Was fixed prior to 2.1.2)
345
34686987 semctl and shmctl syscalls family is not handled properly
347
34886696 valgrind 2.1.2 + RH AS2.1 + librt
349
35086730 valgrind locks up at end of run with assertion failure
351 in __pthread_unwind
352
35386641 memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1
354 (also fixes 74298, a duplicate of this)
355
35685947 MMX/SSE unhandled instruction 'sfence'
357
35884978 Wrong error "Conditional jump or move depends on
359 uninitialised value" resulting from "sbbl %reg, %reg"
360
36186254 ssort() fails when signed int return type from comparison is
362 too small to handle result of unsigned int subtraction
363
36487089 memalign( 4, xxx) makes valgrind assert
365
jseward2eb002b2004-08-31 00:14:02 +000036686407 Add support for low-level parallel port driver ioctls.
jseward34ed74f2004-08-30 18:04:42 +0000367
36870587 Add timestamps to Valgrind output? (wishlist)
369
37084937 vg_libpthread.c:2505 (se_remap): Assertion `res == 0'
371 (fixed prior to 2.1.2)
372
37386317 cannot load libSDL-1.2.so.0 using valgrind
374
37586989 memcpy from mac_replace_strmem.c complains about
376 uninitialized pointers passed when length to copy is zero
377
37885811 gnu pascal symbol causes segmentation fault; ok in 2.0.0
379
38079138 writing to sbrk()'d memory causes segfault
381
38277369 sched deadlock while signal received during pthread_join
383 and the joined thread exited
384
38588115 In signal handler for SIGFPE, siginfo->si_addr is wrong
386 under Valgrind
387
38878765 Massif crashes on app exit if FP exceptions are enabled
389
390Additionally there are the following changes, which are not
391connected to any bug report numbers, AFAICS:
392
393* Fix scary bug causing mis-identification of SSE stores vs
394 loads and so causing memcheck to sometimes give nonsense results
395 on SSE code.
396
397* Add support for the POSIX message queue system calls.
398
399* Fix to allow 32-bit Valgrind to run on AMD64 boxes. Note: this does
400 NOT allow Valgrind to work with 64-bit executables - only with 32-bit
401 executables on an AMD64 box.
402
403* At configure time, only check whether linux/mii.h can be processed
404 so that we don't generate ugly warnings by trying to compile it.
405
jseward2eb002b2004-08-31 00:14:02 +0000406* Add support for POSIX clocks and timers.
407
jseward34ed74f2004-08-30 18:04:42 +0000408
409
jseward9cd978c2004-07-17 13:38:12 +0000410Developer (cvs head) release 2.1.2 (18 July 2004)
jsewardbd0a6e42004-07-17 12:19:43 +0000411~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4122.1.2 contains four months worth of bug fixes and refinements.
jseward9cd978c2004-07-17 13:38:12 +0000413Although officially a developer release, we believe it to be stable
414enough for widespread day-to-day use. 2.1.2 is pretty good, so try it
415first, although there is a chance it won't work. If so then try 2.0.0
416and tell us what went wrong." 2.1.2 fixes a lot of problems present
417in 2.0.0 and is generally a much better product.
jsewardbd0a6e42004-07-17 12:19:43 +0000418
jseward9cd978c2004-07-17 13:38:12 +0000419Relative to 2.1.1, a large number of minor problems with 2.1.1 have
420been fixed, and so if you use 2.1.1 you should try 2.1.2. Users of
421the last stable release, 2.0.0, might also want to try this release.
jsewardbd0a6e42004-07-17 12:19:43 +0000422
423The following bugs, and probably many more, have been fixed. These
424are listed at http://bugs.kde.org. Reporting a bug for valgrind in
425the http://bugs.kde.org is much more likely to get you a fix than
426mailing developers directly, so please continue to keep sending bugs
427there.
428
42976869 Crashes when running any tool under Fedora Core 2 test1
430 This fixes the problem with returning from a signal handler
jseward0400d4d2004-07-17 23:26:46 +0000431 when VDSOs are turned off in FC2.
jsewardbd0a6e42004-07-17 12:19:43 +0000432
jseward0400d4d2004-07-17 23:26:46 +000043369508 java 1.4.2 client fails with erroneous "stack size too small".
434 This fix makes more of the pthread stack attribute related
435 functions work properly. Java still doesn't work though.
jsewardbd0a6e42004-07-17 12:19:43 +0000436
43771906 malloc alignment should be 8, not 4
438 All memory returned by malloc/new etc is now at least
439 8-byte aligned.
440
jsewarda6017a42004-07-17 23:44:35 +000044181970 vg_alloc_ThreadState: no free slots available
442 (closed because the workaround is simple: increase
443 VG_N_THREADS, rebuild and try again.)
444
jsewardbd0a6e42004-07-17 12:19:43 +000044578514 Conditional jump or move depends on uninitialized value(s)
446 (a slight mishanding of FP code in memcheck)
447
jsewarda6017a42004-07-17 23:44:35 +000044877952 pThread Support (crash) (due to initialisation-ordering probs)
449 (also 85118)
450
jsewardbd0a6e42004-07-17 12:19:43 +000045180942 Addrcheck wasn't doing overlap checking as it should.
45278048 return NULL on malloc/new etc failure, instead of asserting
45373655 operator new() override in user .so files often doesn't get picked up
45483060 Valgrind does not handle native kernel AIO
45569872 Create proper coredumps after fatal signals
45682026 failure with new glibc versions: __libc_* functions are not exported
45770344 UNIMPLEMENTED FUNCTION: tcdrain
45881297 Cancellation of pthread_cond_wait does not require mutex
45982872 Using debug info from additional packages (wishlist)
46083025 Support for ioctls FIGETBSZ and FIBMAP
46183340 Support for ioctl HDIO_GET_IDENTITY
46279714 Support for the semtimedop system call.
46377022 Support for ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO
46482098 hp2ps ansification (wishlist)
46583573 Valgrind SIGSEGV on execve
46682999 show which cmdline option was erroneous (wishlist)
46783040 make valgrind VPATH and distcheck-clean (wishlist)
jsewarda6017a42004-07-17 23:44:35 +000046883998 Assertion `newfd > vgPlain_max_fd' failed (see below)
46982722 Unchecked mmap in as_pad leads to mysterious failures later
47078958 memcheck seg faults while running Mozilla
jsewarda2c08002004-07-18 09:24:57 +000047185416 Arguments with colon (e.g. --logsocket) ignored
jsewardbd0a6e42004-07-17 12:19:43 +0000472
473
474Additionally there are the following changes, which are not
475connected to any bug report numbers, AFAICS:
476
477* Rearranged address space layout relative to 2.1.1, so that
478 Valgrind/tools will run out of memory later than currently in many
479 circumstances. This is good news esp. for Calltree. It should
480 be possible for client programs to allocate over 800MB of
481 memory when using memcheck now.
482
jseward9cd978c2004-07-17 13:38:12 +0000483* Improved checking when laying out memory. Should hopefully avoid
484 the random segmentation faults that 2.1.1 sometimes caused.
485
jsewardbd0a6e42004-07-17 12:19:43 +0000486* Support for Fedora Core 2 and SuSE 9.1. Improvements to NPTL
487 support to the extent that V now works properly on NPTL-only setups.
488
489* Renamed the following options:
490 --logfile-fd --> --log-fd
491 --logfile --> --log-file
492 --logsocket --> --log-socket
493 to be consistent with each other and other options (esp. --input-fd).
494
495* Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and
496 improve the checking of other interface related ioctls.
497
jsewardbd0a6e42004-07-17 12:19:43 +0000498* Fix building with gcc-3.4.1.
499
500* Remove limit on number of semaphores supported.
501
jsewardbd0a6e42004-07-17 12:19:43 +0000502* Add support for syscalls: set_tid_address (258), acct (51).
503
504* Support instruction "repne movs" -- not official but seems to occur.
505
506* Implement an emulated soft limit for file descriptors in addition to
507 the current reserved area, which effectively acts as a hard limit. The
508 setrlimit system call now simply updates the emulated limits as best
509 as possible - the hard limit is not allowed to move at all and just
510 returns EPERM if you try and change it. This should stop reductions
511 in the soft limit causing assertions when valgrind tries to allocate
512 descriptors from the reserved area.
jsewarda6017a42004-07-17 23:44:35 +0000513 (This actually came from bug #83998).
jsewardbd0a6e42004-07-17 12:19:43 +0000514
nethercote76e8fd92004-07-21 10:37:31 +0000515* Major overhaul of Cachegrind implementation. First user-visible change
nethercote5e63bfb2004-07-17 12:49:53 +0000516 is that cachegrind.out files are now typically 90% smaller than they
nethercote76e8fd92004-07-21 10:37:31 +0000517 used to be; code annotation times are correspondingly much smaller.
518 Second user-visible change is that hit/miss counts for code that is
519 unloaded at run-time is no longer dumped into a single "discard" pile,
520 but accurately preserved.
jsewardbd0a6e42004-07-17 12:19:43 +0000521
522* Client requests for telling valgrind about memory pools.
523
524
525
jseward9cd978c2004-07-17 13:38:12 +0000526Developer (cvs head) release 2.1.1 (12 March 2004)
527~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jsewardbd0a6e42004-07-17 12:19:43 +00005282.1.1 contains some internal structural changes needed for V's
jsewarde3e77042004-03-12 21:07:05 +0000529long-term future. These don't affect end-users. Most notable
530user-visible changes are:
531
532* Greater isolation between Valgrind and the program being run, so
533 the program is less likely to inadvertently kill Valgrind by
534 doing wild writes.
535
536* Massif: a new space profiling tool. Try it! It's cool, and it'll
537 tell you in detail where and when your C/C++ code is allocating heap.
538 Draws pretty .ps pictures of memory use against time. A potentially
539 powerful tool for making sense of your program's space use.
540
541* Fixes for many bugs, including support for more SSE2/SSE3 instructions,
542 various signal/syscall things, and various problems with debug
543 info readers.
544
545* Support for glibc-2.3.3 based systems.
546
547We are now doing automatic overnight build-and-test runs on a variety
548of distros. As a result, we believe 2.1.1 builds and runs on:
549Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9.
550
551
552The following bugs, and probably many more, have been fixed. These
553are listed at http://bugs.kde.org. Reporting a bug for valgrind in
554the http://bugs.kde.org is much more likely to get you a fix than
555mailing developers directly, so please continue to keep sending bugs
556there.
557
55869616 glibc 2.3.2 w/NPTL is massively different than what valgrind expects
55969856 I don't know how to instrument MMXish stuff (Helgrind)
56073892 valgrind segfaults starting with Objective-C debug info
561 (fix for S-type stabs)
56273145 Valgrind complains too much about close(<reserved fd>)
56373902 Shadow memory allocation seems to fail on RedHat 8.0
56468633 VG_N_SEMAPHORES too low (V itself was leaking semaphores)
56575099 impossible to trace multiprocess programs
56676839 the `impossible' happened: disInstr: INT but not 0x80 !
56776762 vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed.
56876747 cannot include valgrind.h in c++ program
56976223 parsing B(3,10) gave NULL type => impossible happens
57075604 shmdt handling problem
57176416 Problems with gcc 3.4 snap 20040225
57275614 using -gstabs when building your programs the `impossible' happened
57375787 Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET,
57475294 gcc 3.4 snapshot's libstdc++ have unsupported instructions.
575 (REP RET)
57673326 vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed.
57772596 not recognizing __libc_malloc
57869489 Would like to attach ddd to running program
57972781 Cachegrind crashes with kde programs
58073055 Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes)
58173026 Descriptor leak check reports port numbers wrongly
58271705 README_MISSING_SYSCALL_OR_IOCTL out of date
58372643 Improve support for SSE/SSE2 instructions
58472484 valgrind leaves it's own signal mask in place when execing
58572650 Signal Handling always seems to restart system calls
58672006 The mmap system call turns all errors in ENOMEM
58771781 gdb attach is pretty useless
58871180 unhandled instruction bytes: 0xF 0xAE 0x85 0xE8
58969886 writes to zero page cause valgrind to assert on exit
59071791 crash when valgrinding gimp 1.3 (stabs reader problem)
59169783 unhandled syscall: 218
59269782 unhandled instruction bytes: 0x66 0xF 0x2B 0x80
59370385 valgrind fails if the soft file descriptor limit is less
594 than about 828
59569529 "rep; nop" should do a yield
59670827 programs with lots of shared libraries report "mmap failed"
597 for some of them when reading symbols
59871028 glibc's strnlen is optimised enough to confuse valgrind
599
600
601
602
jseward43230652003-12-14 00:14:54 +0000603Unstable (cvs head) release 2.1.0 (15 December 2003)
604~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
605For whatever it's worth, 2.1.0 actually seems pretty darn stable to me
606(Julian). It looks eminently usable, and given that it fixes some
607significant bugs, may well be worth using on a day-to-day basis.
6082.1.0 is known to build and pass regression tests on: SuSE 9, SuSE
6098.2, RedHat 8.
610
6112.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of
612handling of system calls and signals, and their interaction with
613threads. In general, the accuracy of the system call, thread and
614signal simulations is much improved. Specifically:
615
616- Blocking system calls behave exactly as they do when running
617 natively (not on valgrind). That is, if a syscall blocks only the
618 calling thread when running natively, than it behaves the same on
619 valgrind. No more mysterious hangs because V doesn't know that some
620 syscall or other, should block only the calling thread.
621
622- Interrupted syscalls should now give more faithful results.
623
624- Finally, signal contexts in signal handlers are supported. As a
625 result, konqueror on SuSE 9 no longer segfaults when notified of
626 file changes in directories it is watching.
627
628Other changes:
629
630- Robert Walsh's file descriptor leakage checks. When enabled,
631 Valgrind will print out a list of open file descriptors on
632 exit. Along with each file descriptor, Valgrind prints out a stack
633 backtrace of where the file was opened and any details relating to the
634 file descriptor such as the file name or socket details.
635 To use, give: --track-fds=yes
636
637- Implemented a few more SSE/SSE2 instructions.
638
639- Less crud on the stack when you do 'where' inside a GDB attach.
640
641- Fixed the following bugs:
642 68360: Valgrind does not compile against 2.6.0-testX kernels
643 68525: CVS head doesn't compile on C90 compilers
644 68566: pkgconfig support (wishlist)
645 68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr)
646 69140: valgrind not able to explicitly specify a path to a binary.
647 69432: helgrind asserts encountering a MutexErr when there are
648 EraserErr suppressions
649
jseward0b12daf2003-12-14 14:35:28 +0000650- Increase the max size of the translation cache from 200k average bbs
651 to 300k average bbs. Programs on the size of OOo (680m17) are
652 thrashing the cache at the smaller size, creating large numbers of
653 retranslations and wasting significant time as a result.
654
jseward43230652003-12-14 00:14:54 +0000655
656
657Stable release 2.0.0 (5 Nov 2003)
658~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
659
6602.0.0 improves SSE/SSE2 support, fixes some minor bugs, and
661improves support for SuSE 9 and the Red Hat "Severn" beta.
662
663- Further improvements to SSE/SSE2 support. The entire test suite of
664 the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1
665 20030307Z '-g -O -xW' now works. I think this gives pretty good
666 coverage of SSE/SSE2 floating point instructions, or at least the
667 subset emitted by Icc.
668
669- Also added support for the following instructions:
670 MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS
671 PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS).
672
673- CFI support for GDB version 6. Needed to enable newer GDBs
674 to figure out where they are when using --gdb-attach=yes.
675
676- Fix this:
677 mc_translate.c:1091 (memcheck_instrument): Assertion
678 `u_in->size == 4 || u_in->size == 16' failed.
679
680- Return an error rather than panicing when given a bad socketcall.
681
682- Fix checking of syscall rt_sigtimedwait().
683
684- Implement __NR_clock_gettime (syscall 265). Needed on Red Hat Severn.
685
686- Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n'
687 bytes long, when it could be shorter, which could cause false
688 positives.
689
690- Support use of select() for very large numbers of file descriptors.
691
692- Don't fail silently if the executable is statically linked, or is
693 setuid/setgid. Print an error message instead.
694
695- Support for old DWARF-1 format line number info.
696
697
698
699Snapshot 20031012 (12 October 2003)
700~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
701
702Three months worth of bug fixes, roughly. Most significant single
703change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
704
70520031012 builds on Red Hat Fedora ("Severn") but doesn't really work
706(curiosly, mozilla runs OK, but a modest "ls -l" bombs). I hope to
707get a working version out soon. It may or may not work ok on the
708forthcoming SuSE 9; I hear positive noises about it but haven't been
709able to verify this myself (not until I get hold of a copy of 9).
710
711A detailed list of changes, in no particular order:
712
713- Describe --gen-suppressions in the FAQ.
714
715- Syscall __NR_waitpid supported.
716
717- Minor MMX bug fix.
718
719- -v prints program's argv[] at startup.
720
721- More glibc-2.3 suppressions.
722
723- Suppressions for stack underrun bug(s) in the c++ support library
724 distributed with Intel Icc 7.0.
725
726- Fix problems reading /proc/self/maps.
727
728- Fix a couple of messages that should have been suppressed by -q,
729 but weren't.
730
731- Make Addrcheck understand "Overlap" suppressions.
732
733- At startup, check if program is statically linked and bail out if so.
734
735- Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
736
737- Memcheck/addrcheck: minor speed optimisations
738
739- Handle syscall __NR_brk more correctly than before.
740
741- Fixed incorrect allocate/free mismatch errors when using
742 operator new(unsigned, std::nothrow_t const&)
743 operator new[](unsigned, std::nothrow_t const&)
744
745- Support POSIX pthread spinlocks.
746
747- Fixups for clean compilation with gcc-3.3.1.
daywalker5d945de2003-09-26 00:32:53 +0000748
749- Implemented more opcodes:
750 - push %es
751 - push %ds
752 - pop %es
753 - pop %ds
754 - movntq
755 - sfence
756 - pshufw
757 - pavgb
758 - ucomiss
759 - enter
daywalkerb18d2532003-09-27 20:15:01 +0000760 - mov imm32, %esp
761 - all "in" and "out" opcodes
daywalker79aad842003-09-30 22:58:12 +0000762 - inc/dec %esp
jseward43230652003-12-14 00:14:54 +0000763 - A whole bunch of SSE/SSE2 instructions
daywalker5d945de2003-09-26 00:32:53 +0000764
jseward43230652003-12-14 00:14:54 +0000765- Memcheck: don't bomb on SSE/SSE2 code.
daywalker5d945de2003-09-26 00:32:53 +0000766
sewardj90238792003-05-05 00:23:42 +0000767
sewardj945f39f2003-07-25 21:11:40 +0000768Snapshot 20030725 (25 July 2003)
769~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
770
771Fixes some minor problems in 20030716.
772
773- Fix bugs in overlap checking for strcpy/memcpy etc.
774
775- Do overlap checking with Addrcheck as well as Memcheck.
776
777- Fix this:
778 Memcheck: the `impossible' happened:
779 get_error_name: unexpected type
780
781- Install headers needed to compile new skins.
782
sewardje3dd2e02003-07-27 08:04:48 +0000783- Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD
sewardj945f39f2003-07-25 21:11:40 +0000784 passed to non-traced children.
785
sewardjb9eda952003-07-26 21:39:05 +0000786- Fix file descriptor leak in valgrind-listener.
787
sewardje3dd2e02003-07-27 08:04:48 +0000788- Fix longstanding bug in which the allocation point of a
789 block resized by realloc was not correctly set. This may
790 have caused confusing error messages.
sewardj945f39f2003-07-25 21:11:40 +0000791
792
sewardj626fd892003-07-16 20:10:26 +0000793Snapshot 20030716 (16 July 2003)
sewardj9d916ed2003-07-14 23:38:40 +0000794~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
795
sewardj626fd892003-07-16 20:10:26 +000079620030716 is a snapshot of our current CVS head (development) branch.
sewardj9d916ed2003-07-14 23:38:40 +0000797This is the branch which will become valgrind-2.0. It contains
798significant enhancements over the 1.9.X branch.
799
800Despite this being a snapshot of the CVS head, it is believed to be
801quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so
802-- and therefore suitable for widespread use. Please let us know asap
803if it causes problems for you.
804
805Two reasons for releasing a snapshot now are:
806
807- It's been a while since 1.9.6, and this snapshot fixes
808 various problems that 1.9.6 has with threaded programs
809 on glibc-2.3.X based systems.
810
811- So as to make available improvements in the 2.0 line.
812
sewardj626fd892003-07-16 20:10:26 +0000813Major changes in 20030716, as compared to 1.9.6:
sewardj9d916ed2003-07-14 23:38:40 +0000814
815- More fixes to threading support on glibc-2.3.1 and 2.3.2-based
816 systems (SuSE 8.2, Red Hat 9). If you have had problems
817 with inconsistent/illogical behaviour of errno, h_errno or the DNS
sewardj626fd892003-07-16 20:10:26 +0000818 resolver functions in threaded programs, 20030716 should improve
sewardj9d916ed2003-07-14 23:38:40 +0000819 matters. This snapshot seems stable enough to run OpenOffice.org
820 1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big
821 threaded app if ever I saw one.
822
823- Automatic generation of suppression records; you no longer
824 need to write them by hand. Use --gen-suppressions=yes.
825
sewardj21511802003-07-22 17:47:42 +0000826- strcpy/memcpy/etc check their arguments for overlaps, when
827 running with the Memcheck or Addrcheck skins.
828
829- malloc_usable_size() is now supported.
830
831- new client requests:
832 - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS:
833 useful with regression testing
834 - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions
835 on real CPU (use with caution!)
836
sewardj9d916ed2003-07-14 23:38:40 +0000837- The GDB attach mechanism is more flexible. Allow the GDB to
838 be run to be specified by --gdb-path=/path/to/gdb, and specify
839 which file descriptor V will read its input from with
840 --input-fd=<number>.
841
sewardj21511802003-07-22 17:47:42 +0000842- Cachegrind gives more accurate results (wasn't tracking instructions in
843 malloc() and friends previously, is now).
844
sewardj9d916ed2003-07-14 23:38:40 +0000845- Complete support for the MMX instruction set.
846
847- Partial support for the SSE and SSE2 instruction sets. Work for this
848 is ongoing. About half the SSE/SSE2 instructions are done, so
849 some SSE based programs may work. Currently you need to specify
850 --skin=addrcheck. Basically not suitable for real use yet.
851
852- Significant speedups (10%-20%) for standard memory checking.
853
854- Fix assertion failure in pthread_once().
855
856- Fix this:
857 valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select):
858 Assertion `ms_end >= ms_now' failed.
859
860- Implement pthread_mutexattr_setpshared.
861
862- Understand Pentium 4 branch hints. Also implemented a couple more
863 obscure x86 instructions.
864
865- Lots of other minor bug fixes.
866
sewardj626fd892003-07-16 20:10:26 +0000867- We have a decent regression test system, for the first time.
868 This doesn't help you directly, but it does make it a lot easier
869 for us to track the quality of the system, especially across
870 multiple linux distributions.
871
872 You can run the regression tests with 'make regtest' after 'make
873 install' completes. On SuSE 8.2 and Red Hat 9 I get this:
874
875 == 84 tests, 0 stderr failures, 0 stdout failures ==
876
877 On Red Hat 8, I get this:
878
879 == 84 tests, 2 stderr failures, 1 stdout failure ==
880 corecheck/tests/res_search (stdout)
881 memcheck/tests/sigaltstack (stderr)
882
883 sigaltstack is probably harmless. res_search doesn't work
884 on R H 8 even running natively, so I'm not too worried.
885
886 On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures:
887
888 == 84 tests, 2 stderr failures, 1 stdout failure ==
889 corecheck/tests/pth_atfork1 (stdout)
890 corecheck/tests/pth_atfork1 (stderr)
891 memcheck/tests/sigaltstack (stderr)
892
893 You need to run on a PII system, at least, since some tests
894 contain P6-specific instructions, and the test machine needs
895 access to the internet so that corecheck/tests/res_search
896 (a test that the DNS resolver works) can function.
897
sewardj9d916ed2003-07-14 23:38:40 +0000898As ever, thanks for the vast amount of feedback :) and bug reports :(
899We may not answer all messages, but we do at least look at all of
900them, and tend to fix the most frequently reported bugs.
901
902
903
sewardj37918822003-05-05 01:05:09 +0000904Version 1.9.6 (7 May 2003 or thereabouts)
905~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
906
907Major changes in 1.9.6:
908
909- Improved threading support for glibc >= 2.3.2 (SuSE 8.2,
910 RedHat 9, to name but two ...) It turned out that 1.9.5
911 had problems with threading support on glibc >= 2.3.2,
912 usually manifested by threaded programs deadlocking in system calls,
913 or running unbelievably slowly. Hopefully these are fixed now. 1.9.6
914 is the first valgrind which gives reasonable support for
915 glibc-2.3.2. Also fixed a 2.3.2 problem with pthread_atfork().
916
917- Majorly expanded FAQ.txt. We've added workarounds for all
918 common problems for which a workaround is known.
919
920Minor changes in 1.9.6:
921
922- Fix identification of the main thread's stack. Incorrect
923 identification of it was causing some on-stack addresses to not get
924 identified as such. This only affected the usefulness of some error
925 messages; the correctness of the checks made is unchanged.
926
927- Support for kernels >= 2.5.68.
928
929- Dummy implementations of __libc_current_sigrtmin,
930 __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully
931 good enough to keep alive programs which previously died for lack of
932 them.
933
934- Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request.
935
sewardj3d47b792003-05-05 22:15:35 +0000936- Fix bug in the DWARF2 debug line info loader, when instructions
937 following each other have source lines far from each other
938 (e.g. with inlined functions).
939
sewardj37918822003-05-05 01:05:09 +0000940- Debug info reading: read symbols from both "symtab" and "dynsym"
941 sections, rather than merely from the one that comes last in the
942 file.
943
944- New syscall support: prctl(), creat(), lookup_dcookie().
945
946- When checking calls to accept(), recvfrom(), getsocketopt(),
947 don't complain if buffer values are NULL.
948
949- Try and avoid assertion failures in
950 mash_LD_PRELOAD_and_LD_LIBRARY_PATH.
951
952- Minor bug fixes in cg_annotate.
953
954
955
sewardj90238792003-05-05 00:23:42 +0000956Version 1.9.5 (7 April 2003)
957~~~~~~~~~~~~~~~~~~~~~~~~~~~~
958
959It occurs to me that it would be helpful for valgrind users to record
960in the source distribution the changes in each release. So I now
961attempt to mend my errant ways :-) Changes in this and future releases
962will be documented in the NEWS file in the source distribution.
963
964Major changes in 1.9.5:
965
966- (Critical bug fix): Fix a bug in the FPU simulation. This was
967 causing some floating point conditional tests not to work right.
968 Several people reported this. If you had floating point code which
969 didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5.
970
971- Partial support for Red Hat 9. RH9 uses the new Native Posix
972 Threads Library (NPTL), instead of the older LinuxThreads.
973 This potentially causes problems with V which will take some
974 time to correct. In the meantime we have partially worked around
975 this, and so 1.9.5 works on RH9. Threaded programs still work,
976 but they may deadlock, because some system calls (accept, read,
977 write, etc) which should be nonblocking, in fact do block. This
978 is a known bug which we are looking into.
979
980 If you can, your best bet (unfortunately) is to avoid using
981 1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution.
982 If your glibc is 2.3.1 or earlier, you're almost certainly OK.
983
984Minor changes in 1.9.5:
985
986- Added some #errors to valgrind.h to ensure people don't include
987 it accidentally in their sources. This is a change from 1.0.X
988 which was never properly documented. The right thing to include
989 is now memcheck.h. Some people reported problems and strange
990 behaviour when (incorrectly) including valgrind.h in code with
991 1.9.1 -- 1.9.4. This is no longer possible.
992
993- Add some __extension__ bits and pieces so that gcc configured
994 for valgrind-checking compiles even with -Werror. If you
995 don't understand this, ignore it. Of interest to gcc developers
996 only.
997
998- Removed a pointless check which caused problems interworking
999 with Clearcase. V would complain about shared objects whose
1000 names did not end ".so", and refuse to run. This is now fixed.
1001 In fact it was fixed in 1.9.4 but not documented.
1002
1003- Fixed a bug causing an assertion failure of "waiters == 1"
1004 somewhere in vg_scheduler.c, when running large threaded apps,
1005 notably MySQL.
1006
1007- Add support for the munlock system call (124).
1008
1009Some comments about future releases:
1010
10111.9.5 is, we hope, the most stable Valgrind so far. It pretty much
1012supersedes the 1.0.X branch. If you are a valgrind packager, please
1013consider making 1.9.5 available to your users. You can regard the
10141.0.X branch as obsolete: 1.9.5 is stable and vastly superior. There
1015are no plans at all for further releases of the 1.0.X branch.
1016
1017If you want a leading-edge valgrind, consider building the cvs head
1018(from SourceForge), or getting a snapshot of it. Current cool stuff
1019going in includes MMX support (done); SSE/SSE2 support (in progress),
1020a significant (10-20%) performance improvement (done), and the usual
1021large collection of minor changes. Hopefully we will be able to
1022improve our NPTL support, but no promises.
1023