blob: a8bb36e1610f354077cf4b2f06ed0c46dfb13dab [file] [log] [blame]
jseward43230652003-12-14 00:14:54 +00001
njn8c927302005-03-12 16:45:01 +00002Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
njn1aa5ae42005-03-26 16:04:27 +00003~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
42.4.0 brings many significant changes and bug fixes. The most
5significant user-visible change is that we no longer supply our own
6pthread implementation. Instead, Valgrind is finally capable of
7running the native thread library, either LinuxThreads or NPTL.
njn8c927302005-03-12 16:45:01 +00008
njn1aa5ae42005-03-26 16:04:27 +00009This means our libpthread has gone, along with the bugs associated
10with it. Valgrind now supports the kernel's threading syscalls, and
11lets you use your standard system libpthread. As a result:
njn8c927302005-03-12 16:45:01 +000012
njn1aa5ae42005-03-26 16:04:27 +000013* There are many fewer system dependencies and strange library-related
14 bugs. There is a small performance improvement, and a large
15 stability improvement.
njn8c927302005-03-12 16:45:01 +000016
njn1aa5ae42005-03-26 16:04:27 +000017* On the downside, Valgrind can no longer report misuses of the POSIX
18 PThreads API. It also means that Helgrind currently does not work.
19 We hope to fix these problems in a future release.
njn8c927302005-03-12 16:45:01 +000020
njn1aa5ae42005-03-26 16:04:27 +000021Note that running the native thread libraries does not mean Valgrind
22is able to provide genuine concurrent execution on SMPs. We still
23impose the restriction that only one thread is running at any given
24time.
njn8c927302005-03-12 16:45:01 +000025
njn1aa5ae42005-03-26 16:04:27 +000026There are many other significant changes too:
njn8c927302005-03-12 16:45:01 +000027
njn1aa5ae42005-03-26 16:04:27 +000028* Memcheck is (once again) the default tool.
njn8c927302005-03-12 16:45:01 +000029
njn1aa5ae42005-03-26 16:04:27 +000030* The default stack backtrace is now 12 call frames, rather than 4.
njn8c927302005-03-12 16:45:01 +000031
njn1aa5ae42005-03-26 16:04:27 +000032* Suppressions can have up to 25 call frame matches, rather than 4.
njn8c927302005-03-12 16:45:01 +000033
njn1aa5ae42005-03-26 16:04:27 +000034* Memcheck and Addrcheck use less memory. Under some circumstances,
35 they no longer allocate shadow memory if there are large regions of
36 memory with the same A/V states - such as an mmaped file.
njn8c927302005-03-12 16:45:01 +000037
njn1aa5ae42005-03-26 16:04:27 +000038* The memory-leak detector in Memcheck and Addrcheck has been
39 improved. It now reports more types of memory leak, including
40 leaked cycles. When reporting leaked memory, it can distinguish
41 between directly leaked memory (memory with no references), and
42 indirectly leaked memory (memory only referred to by other leaked
43 memory).
njn8c927302005-03-12 16:45:01 +000044
njn1aa5ae42005-03-26 16:04:27 +000045* Memcheck's confusion over the effect of mprotect() has been fixed:
46 previously mprotect could erroneously mark undefined data as
47 defined.
njn8c927302005-03-12 16:45:01 +000048
njn1aa5ae42005-03-26 16:04:27 +000049* Signal handling is much improved and should be very close to what
50 you get when running natively.
51
52 One result of this is that Valgrind observes changes to sigcontexts
53 passed to signal handlers. Such modifications will take effect when
54 the signal returns. You will need to run with --single-step=yes to
55 make this useful.
njn8c927302005-03-12 16:45:01 +000056
57* Valgrind is built in Position Independent Executable (PIE) format if
njn1aa5ae42005-03-26 16:04:27 +000058 your toolchain supports it. This allows it to take advantage of all
njn8c927302005-03-12 16:45:01 +000059 the available address space on systems with 4Gbyte user address
60 spaces.
61
62* Valgrind can now run itself (requires PIE support).
63
njn1aa5ae42005-03-26 16:04:27 +000064* Syscall arguments are now checked for validity. Previously all
65 memory used by syscalls was checked, but now the actual values
66 passed are also checked.
njn8c927302005-03-12 16:45:01 +000067
njn1aa5ae42005-03-26 16:04:27 +000068* Syscall wrappers are more robust against bad addresses being passed
69 to syscalls: they will fail with EFAULT rather than killing Valgrind
70 with SIGSEGV.
njn8c927302005-03-12 16:45:01 +000071
njn1aa5ae42005-03-26 16:04:27 +000072* Because clone() is directly supported, some non-pthread uses of it
73 will work. Partial sharing (where some resources are shared, and
74 some are not) is not supported.
75
76* open() and readlink() on /proc/self/exe are supported.
77
78BUGS FIXED:
79
8088520 pipe+fork+dup2 kills the main program
8188604 Valgrind Aborts when using $VALGRIND_OPTS and user progra...
8288614 valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt...
8388703 Stabs parser fails to handle ";"
8488886 ioctl wrappers for TIOCMBIS and TIOCMBIC
8589032 valgrind pthread_cond_timedwait fails
8689106 the 'impossible' happened
8789139 Missing sched_setaffinity & sched_getaffinity
8889198 valgrind lacks support for SIOCSPGRP and SIOCGPGRP
8989263 Missing ioctl translations for scsi-generic and CD playing
9089440 tests/deadlock.c line endings
9189481 `impossible' happened: EXEC FAILED
9289663 valgrind 2.2.0 crash on Redhat 7.2
9389792 Report pthread_mutex_lock() deadlocks instead of returnin...
9490111 statvfs64 gives invalid error/warning
9590128 crash+memory fault with stabs generated by gnat for a run...
9690778 VALGRIND_CHECK_DEFINED() not as documented in memcheck.h
9790834 cachegrind crashes at end of program without reporting re...
9891028 valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio...
9991162 valgrind crash while debugging drivel 1.2.1
10091199 Unimplemented function
10191325 Signal routing does not propagate the siginfo structure
10291599 Assertion `cv == ((void *)0)'
10391604 rw_lookup clears orig and sends the NULL value to rw_new
10491821 Small problems building valgrind with $top_builddir ne $t...
10591844 signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec...
10692264 UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared
10792331 per-target flags necessitate AM_PROG_CC_C_O
10892420 valgrind doesn't compile with linux 2.6.8.1/9
10992513 Valgrind 2.2.0 generates some warning messages
11092528 vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed.
11193096 unhandled ioctl 0x4B3A and 0x5601
11293117 Tool and core interface versions do not match
11393128 Can't run valgrind --tool=memcheck because of unimplement...
11493174 Valgrind can crash if passed bad args to certain syscalls
11593309 Stack frame in new thread is badly aligned
11693328 Wrong types used with sys_sigprocmask()
11793763 /usr/include/asm/msr.h is missing
11893776 valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser...
11993810 fcntl() argument checking a bit too strict
12094378 Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed.
12194429 valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3
12294645 Impossible happened: PINSRW mem
12394953 valgrind: the `impossible' happened: SIGSEGV
12495667 Valgrind does not work with any KDE app
12596243 Assertion 'res==0' failed
12696252 stage2 loader of valgrind fails to allocate memory
12796520 All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ...
12896660 ioctl CDROMREADTOCENTRY causes bogus warnings
12996747 After looping in a segfault handler, the impossible happens
13096923 Zero sized arrays crash valgrind trace back with SIGFPE
13196948 valgrind stops with assertion failure regarding mmap2
13296966 valgrind fails when application opens more than 16 sockets
13397398 valgrind: vg_libpthread.c:2667 Assertion failed
13497407 valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `...
13597427 "Warning: invalid file descriptor -1 in syscall close()" ...
13697785 missing backtrace
13797792 build in obj dir fails - autoconf / makefile cleanup
13897880 pthread_mutex_lock fails from shared library (special ker...
13997975 program aborts without ang VG messages
14098129 Failed when open and close file 230000 times using stdio
14198175 Crashes when using valgrind-2.2.0 with a program using al...
14298288 Massif broken
14398303 UNIMPLEMENTED FUNCTION pthread_condattr_setpshared
14498630 failed--compilation missing warnings.pm, fails to make he...
14598756 Cannot valgrind signal-heavy kdrive X server
14698966 valgrinding the JVM fails with a sanity check assertion
14799035 Valgrind crashes while profiling
14899142 loops with message "Signal 11 being dropped from thread 0...
14999195 threaded apps crash on thread start (using QThread::start...
15099348 Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off...
15199568 False negative due to mishandling of mprotect
15299738 valgrind memcheck crashes on program that uses sigitimer
15399923 0-sized allocations are reported as leaks
15499949 program seg faults after exit()
155100036 "newSuperblock's request for 1048576 bytes failed"
156100116 valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ...
157100486 memcheck reports "valgrind: the `impossible' happened: V...
158100833 second call to "mremap" fails with EINVAL
159101156 (vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1...
160101173 Assertion `recDepth >= 0 && recDepth < 500' failed
161101291 creating threads in a forked process fails
162101313 valgrind causes different behavior when resizing a window...
163101423 segfault for c++ array of floats
164101562 valgrind massif dies on SIGINT even with signal handler r...
165
njn8c927302005-03-12 16:45:01 +0000166
jseward34ed74f2004-08-30 18:04:42 +0000167Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0
168~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jseward7d180d92004-08-30 18:15:37 +00001692.2.0 brings nine months worth of improvements and bug fixes. We
170believe it to be a worthy successor to 2.0.0. There are literally
171hundreds of bug fixes and minor improvements. There are also some
172fairly major user-visible changes:
173
174* A complete overhaul of handling of system calls and signals, and
175 their interaction with threads. In general, the accuracy of the
176 system call, thread and signal simulations is much improved:
177
178 - Blocking system calls behave exactly as they do when running
179 natively (not on valgrind). That is, if a syscall blocks only the
180 calling thread when running natively, than it behaves the same on
181 valgrind. No more mysterious hangs because V doesn't know that some
182 syscall or other, should block only the calling thread.
183
184 - Interrupted syscalls should now give more faithful results.
185
186 - Signal contexts in signal handlers are supported.
187
188* Improvements to NPTL support to the extent that V now works
189 properly on NPTL-only setups.
190
191* Greater isolation between Valgrind and the program being run, so
192 the program is less likely to inadvertently kill Valgrind by
193 doing wild writes.
194
195* Massif: a new space profiling tool. Try it! It's cool, and it'll
196 tell you in detail where and when your C/C++ code is allocating heap.
197 Draws pretty .ps pictures of memory use against time. A potentially
198 powerful tool for making sense of your program's space use.
199
200* File descriptor leakage checks. When enabled, Valgrind will print out
201 a list of open file descriptors on exit.
202
203* Improved SSE2/SSE3 support.
204
jseward2eb002b2004-08-31 00:14:02 +0000205* Time-stamped output; use --time-stamp=yes
206
jseward34ed74f2004-08-30 18:04:42 +0000207
208
209Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.1.2
210~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2112.2.0 is not much different from 2.1.2, released seven weeks ago.
212A number of bugs have been fixed, most notably #85658, which gave
213problems for quite a few people. There have been many internal
214cleanups, but those are not user visible.
215
216The following bugs have been fixed since 2.1.2:
217
21885658 Assert in coregrind/vg_libpthread.c:2326 (open64) !=
219 (void*)0 failed
220 This bug was reported multiple times, and so the following
221 duplicates of it are also fixed: 87620, 85796, 85935, 86065,
222 86919, 86988, 87917, 88156
223
22480716 Semaphore mapping bug caused by unmap (sem_destroy)
225 (Was fixed prior to 2.1.2)
226
22786987 semctl and shmctl syscalls family is not handled properly
228
22986696 valgrind 2.1.2 + RH AS2.1 + librt
230
23186730 valgrind locks up at end of run with assertion failure
232 in __pthread_unwind
233
23486641 memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1
235 (also fixes 74298, a duplicate of this)
236
23785947 MMX/SSE unhandled instruction 'sfence'
238
23984978 Wrong error "Conditional jump or move depends on
240 uninitialised value" resulting from "sbbl %reg, %reg"
241
24286254 ssort() fails when signed int return type from comparison is
243 too small to handle result of unsigned int subtraction
244
24587089 memalign( 4, xxx) makes valgrind assert
246
jseward2eb002b2004-08-31 00:14:02 +000024786407 Add support for low-level parallel port driver ioctls.
jseward34ed74f2004-08-30 18:04:42 +0000248
24970587 Add timestamps to Valgrind output? (wishlist)
250
25184937 vg_libpthread.c:2505 (se_remap): Assertion `res == 0'
252 (fixed prior to 2.1.2)
253
25486317 cannot load libSDL-1.2.so.0 using valgrind
255
25686989 memcpy from mac_replace_strmem.c complains about
257 uninitialized pointers passed when length to copy is zero
258
25985811 gnu pascal symbol causes segmentation fault; ok in 2.0.0
260
26179138 writing to sbrk()'d memory causes segfault
262
26377369 sched deadlock while signal received during pthread_join
264 and the joined thread exited
265
26688115 In signal handler for SIGFPE, siginfo->si_addr is wrong
267 under Valgrind
268
26978765 Massif crashes on app exit if FP exceptions are enabled
270
271Additionally there are the following changes, which are not
272connected to any bug report numbers, AFAICS:
273
274* Fix scary bug causing mis-identification of SSE stores vs
275 loads and so causing memcheck to sometimes give nonsense results
276 on SSE code.
277
278* Add support for the POSIX message queue system calls.
279
280* Fix to allow 32-bit Valgrind to run on AMD64 boxes. Note: this does
281 NOT allow Valgrind to work with 64-bit executables - only with 32-bit
282 executables on an AMD64 box.
283
284* At configure time, only check whether linux/mii.h can be processed
285 so that we don't generate ugly warnings by trying to compile it.
286
jseward2eb002b2004-08-31 00:14:02 +0000287* Add support for POSIX clocks and timers.
288
jseward34ed74f2004-08-30 18:04:42 +0000289
290
jseward9cd978c2004-07-17 13:38:12 +0000291Developer (cvs head) release 2.1.2 (18 July 2004)
jsewardbd0a6e42004-07-17 12:19:43 +0000292~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2932.1.2 contains four months worth of bug fixes and refinements.
jseward9cd978c2004-07-17 13:38:12 +0000294Although officially a developer release, we believe it to be stable
295enough for widespread day-to-day use. 2.1.2 is pretty good, so try it
296first, although there is a chance it won't work. If so then try 2.0.0
297and tell us what went wrong." 2.1.2 fixes a lot of problems present
298in 2.0.0 and is generally a much better product.
jsewardbd0a6e42004-07-17 12:19:43 +0000299
jseward9cd978c2004-07-17 13:38:12 +0000300Relative to 2.1.1, a large number of minor problems with 2.1.1 have
301been fixed, and so if you use 2.1.1 you should try 2.1.2. Users of
302the last stable release, 2.0.0, might also want to try this release.
jsewardbd0a6e42004-07-17 12:19:43 +0000303
304The following bugs, and probably many more, have been fixed. These
305are listed at http://bugs.kde.org. Reporting a bug for valgrind in
306the http://bugs.kde.org is much more likely to get you a fix than
307mailing developers directly, so please continue to keep sending bugs
308there.
309
31076869 Crashes when running any tool under Fedora Core 2 test1
311 This fixes the problem with returning from a signal handler
jseward0400d4d2004-07-17 23:26:46 +0000312 when VDSOs are turned off in FC2.
jsewardbd0a6e42004-07-17 12:19:43 +0000313
jseward0400d4d2004-07-17 23:26:46 +000031469508 java 1.4.2 client fails with erroneous "stack size too small".
315 This fix makes more of the pthread stack attribute related
316 functions work properly. Java still doesn't work though.
jsewardbd0a6e42004-07-17 12:19:43 +0000317
31871906 malloc alignment should be 8, not 4
319 All memory returned by malloc/new etc is now at least
320 8-byte aligned.
321
jsewarda6017a42004-07-17 23:44:35 +000032281970 vg_alloc_ThreadState: no free slots available
323 (closed because the workaround is simple: increase
324 VG_N_THREADS, rebuild and try again.)
325
jsewardbd0a6e42004-07-17 12:19:43 +000032678514 Conditional jump or move depends on uninitialized value(s)
327 (a slight mishanding of FP code in memcheck)
328
jsewarda6017a42004-07-17 23:44:35 +000032977952 pThread Support (crash) (due to initialisation-ordering probs)
330 (also 85118)
331
jsewardbd0a6e42004-07-17 12:19:43 +000033280942 Addrcheck wasn't doing overlap checking as it should.
33378048 return NULL on malloc/new etc failure, instead of asserting
33473655 operator new() override in user .so files often doesn't get picked up
33583060 Valgrind does not handle native kernel AIO
33669872 Create proper coredumps after fatal signals
33782026 failure with new glibc versions: __libc_* functions are not exported
33870344 UNIMPLEMENTED FUNCTION: tcdrain
33981297 Cancellation of pthread_cond_wait does not require mutex
34082872 Using debug info from additional packages (wishlist)
34183025 Support for ioctls FIGETBSZ and FIBMAP
34283340 Support for ioctl HDIO_GET_IDENTITY
34379714 Support for the semtimedop system call.
34477022 Support for ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO
34582098 hp2ps ansification (wishlist)
34683573 Valgrind SIGSEGV on execve
34782999 show which cmdline option was erroneous (wishlist)
34883040 make valgrind VPATH and distcheck-clean (wishlist)
jsewarda6017a42004-07-17 23:44:35 +000034983998 Assertion `newfd > vgPlain_max_fd' failed (see below)
35082722 Unchecked mmap in as_pad leads to mysterious failures later
35178958 memcheck seg faults while running Mozilla
jsewarda2c08002004-07-18 09:24:57 +000035285416 Arguments with colon (e.g. --logsocket) ignored
jsewardbd0a6e42004-07-17 12:19:43 +0000353
354
355Additionally there are the following changes, which are not
356connected to any bug report numbers, AFAICS:
357
358* Rearranged address space layout relative to 2.1.1, so that
359 Valgrind/tools will run out of memory later than currently in many
360 circumstances. This is good news esp. for Calltree. It should
361 be possible for client programs to allocate over 800MB of
362 memory when using memcheck now.
363
jseward9cd978c2004-07-17 13:38:12 +0000364* Improved checking when laying out memory. Should hopefully avoid
365 the random segmentation faults that 2.1.1 sometimes caused.
366
jsewardbd0a6e42004-07-17 12:19:43 +0000367* Support for Fedora Core 2 and SuSE 9.1. Improvements to NPTL
368 support to the extent that V now works properly on NPTL-only setups.
369
370* Renamed the following options:
371 --logfile-fd --> --log-fd
372 --logfile --> --log-file
373 --logsocket --> --log-socket
374 to be consistent with each other and other options (esp. --input-fd).
375
376* Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and
377 improve the checking of other interface related ioctls.
378
jsewardbd0a6e42004-07-17 12:19:43 +0000379* Fix building with gcc-3.4.1.
380
381* Remove limit on number of semaphores supported.
382
jsewardbd0a6e42004-07-17 12:19:43 +0000383* Add support for syscalls: set_tid_address (258), acct (51).
384
385* Support instruction "repne movs" -- not official but seems to occur.
386
387* Implement an emulated soft limit for file descriptors in addition to
388 the current reserved area, which effectively acts as a hard limit. The
389 setrlimit system call now simply updates the emulated limits as best
390 as possible - the hard limit is not allowed to move at all and just
391 returns EPERM if you try and change it. This should stop reductions
392 in the soft limit causing assertions when valgrind tries to allocate
393 descriptors from the reserved area.
jsewarda6017a42004-07-17 23:44:35 +0000394 (This actually came from bug #83998).
jsewardbd0a6e42004-07-17 12:19:43 +0000395
nethercote76e8fd92004-07-21 10:37:31 +0000396* Major overhaul of Cachegrind implementation. First user-visible change
nethercote5e63bfb2004-07-17 12:49:53 +0000397 is that cachegrind.out files are now typically 90% smaller than they
nethercote76e8fd92004-07-21 10:37:31 +0000398 used to be; code annotation times are correspondingly much smaller.
399 Second user-visible change is that hit/miss counts for code that is
400 unloaded at run-time is no longer dumped into a single "discard" pile,
401 but accurately preserved.
jsewardbd0a6e42004-07-17 12:19:43 +0000402
403* Client requests for telling valgrind about memory pools.
404
405
406
jseward9cd978c2004-07-17 13:38:12 +0000407Developer (cvs head) release 2.1.1 (12 March 2004)
408~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jsewardbd0a6e42004-07-17 12:19:43 +00004092.1.1 contains some internal structural changes needed for V's
jsewarde3e77042004-03-12 21:07:05 +0000410long-term future. These don't affect end-users. Most notable
411user-visible changes are:
412
413* Greater isolation between Valgrind and the program being run, so
414 the program is less likely to inadvertently kill Valgrind by
415 doing wild writes.
416
417* Massif: a new space profiling tool. Try it! It's cool, and it'll
418 tell you in detail where and when your C/C++ code is allocating heap.
419 Draws pretty .ps pictures of memory use against time. A potentially
420 powerful tool for making sense of your program's space use.
421
422* Fixes for many bugs, including support for more SSE2/SSE3 instructions,
423 various signal/syscall things, and various problems with debug
424 info readers.
425
426* Support for glibc-2.3.3 based systems.
427
428We are now doing automatic overnight build-and-test runs on a variety
429of distros. As a result, we believe 2.1.1 builds and runs on:
430Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9.
431
432
433The following bugs, and probably many more, have been fixed. These
434are listed at http://bugs.kde.org. Reporting a bug for valgrind in
435the http://bugs.kde.org is much more likely to get you a fix than
436mailing developers directly, so please continue to keep sending bugs
437there.
438
43969616 glibc 2.3.2 w/NPTL is massively different than what valgrind expects
44069856 I don't know how to instrument MMXish stuff (Helgrind)
44173892 valgrind segfaults starting with Objective-C debug info
442 (fix for S-type stabs)
44373145 Valgrind complains too much about close(<reserved fd>)
44473902 Shadow memory allocation seems to fail on RedHat 8.0
44568633 VG_N_SEMAPHORES too low (V itself was leaking semaphores)
44675099 impossible to trace multiprocess programs
44776839 the `impossible' happened: disInstr: INT but not 0x80 !
44876762 vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed.
44976747 cannot include valgrind.h in c++ program
45076223 parsing B(3,10) gave NULL type => impossible happens
45175604 shmdt handling problem
45276416 Problems with gcc 3.4 snap 20040225
45375614 using -gstabs when building your programs the `impossible' happened
45475787 Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET,
45575294 gcc 3.4 snapshot's libstdc++ have unsupported instructions.
456 (REP RET)
45773326 vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed.
45872596 not recognizing __libc_malloc
45969489 Would like to attach ddd to running program
46072781 Cachegrind crashes with kde programs
46173055 Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes)
46273026 Descriptor leak check reports port numbers wrongly
46371705 README_MISSING_SYSCALL_OR_IOCTL out of date
46472643 Improve support for SSE/SSE2 instructions
46572484 valgrind leaves it's own signal mask in place when execing
46672650 Signal Handling always seems to restart system calls
46772006 The mmap system call turns all errors in ENOMEM
46871781 gdb attach is pretty useless
46971180 unhandled instruction bytes: 0xF 0xAE 0x85 0xE8
47069886 writes to zero page cause valgrind to assert on exit
47171791 crash when valgrinding gimp 1.3 (stabs reader problem)
47269783 unhandled syscall: 218
47369782 unhandled instruction bytes: 0x66 0xF 0x2B 0x80
47470385 valgrind fails if the soft file descriptor limit is less
475 than about 828
47669529 "rep; nop" should do a yield
47770827 programs with lots of shared libraries report "mmap failed"
478 for some of them when reading symbols
47971028 glibc's strnlen is optimised enough to confuse valgrind
480
481
482
483
jseward43230652003-12-14 00:14:54 +0000484Unstable (cvs head) release 2.1.0 (15 December 2003)
485~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
486For whatever it's worth, 2.1.0 actually seems pretty darn stable to me
487(Julian). It looks eminently usable, and given that it fixes some
488significant bugs, may well be worth using on a day-to-day basis.
4892.1.0 is known to build and pass regression tests on: SuSE 9, SuSE
4908.2, RedHat 8.
491
4922.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of
493handling of system calls and signals, and their interaction with
494threads. In general, the accuracy of the system call, thread and
495signal simulations is much improved. Specifically:
496
497- Blocking system calls behave exactly as they do when running
498 natively (not on valgrind). That is, if a syscall blocks only the
499 calling thread when running natively, than it behaves the same on
500 valgrind. No more mysterious hangs because V doesn't know that some
501 syscall or other, should block only the calling thread.
502
503- Interrupted syscalls should now give more faithful results.
504
505- Finally, signal contexts in signal handlers are supported. As a
506 result, konqueror on SuSE 9 no longer segfaults when notified of
507 file changes in directories it is watching.
508
509Other changes:
510
511- Robert Walsh's file descriptor leakage checks. When enabled,
512 Valgrind will print out a list of open file descriptors on
513 exit. Along with each file descriptor, Valgrind prints out a stack
514 backtrace of where the file was opened and any details relating to the
515 file descriptor such as the file name or socket details.
516 To use, give: --track-fds=yes
517
518- Implemented a few more SSE/SSE2 instructions.
519
520- Less crud on the stack when you do 'where' inside a GDB attach.
521
522- Fixed the following bugs:
523 68360: Valgrind does not compile against 2.6.0-testX kernels
524 68525: CVS head doesn't compile on C90 compilers
525 68566: pkgconfig support (wishlist)
526 68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr)
527 69140: valgrind not able to explicitly specify a path to a binary.
528 69432: helgrind asserts encountering a MutexErr when there are
529 EraserErr suppressions
530
jseward0b12daf2003-12-14 14:35:28 +0000531- Increase the max size of the translation cache from 200k average bbs
532 to 300k average bbs. Programs on the size of OOo (680m17) are
533 thrashing the cache at the smaller size, creating large numbers of
534 retranslations and wasting significant time as a result.
535
jseward43230652003-12-14 00:14:54 +0000536
537
538Stable release 2.0.0 (5 Nov 2003)
539~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
540
5412.0.0 improves SSE/SSE2 support, fixes some minor bugs, and
542improves support for SuSE 9 and the Red Hat "Severn" beta.
543
544- Further improvements to SSE/SSE2 support. The entire test suite of
545 the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1
546 20030307Z '-g -O -xW' now works. I think this gives pretty good
547 coverage of SSE/SSE2 floating point instructions, or at least the
548 subset emitted by Icc.
549
550- Also added support for the following instructions:
551 MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS
552 PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS).
553
554- CFI support for GDB version 6. Needed to enable newer GDBs
555 to figure out where they are when using --gdb-attach=yes.
556
557- Fix this:
558 mc_translate.c:1091 (memcheck_instrument): Assertion
559 `u_in->size == 4 || u_in->size == 16' failed.
560
561- Return an error rather than panicing when given a bad socketcall.
562
563- Fix checking of syscall rt_sigtimedwait().
564
565- Implement __NR_clock_gettime (syscall 265). Needed on Red Hat Severn.
566
567- Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n'
568 bytes long, when it could be shorter, which could cause false
569 positives.
570
571- Support use of select() for very large numbers of file descriptors.
572
573- Don't fail silently if the executable is statically linked, or is
574 setuid/setgid. Print an error message instead.
575
576- Support for old DWARF-1 format line number info.
577
578
579
580Snapshot 20031012 (12 October 2003)
581~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
582
583Three months worth of bug fixes, roughly. Most significant single
584change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
585
58620031012 builds on Red Hat Fedora ("Severn") but doesn't really work
587(curiosly, mozilla runs OK, but a modest "ls -l" bombs). I hope to
588get a working version out soon. It may or may not work ok on the
589forthcoming SuSE 9; I hear positive noises about it but haven't been
590able to verify this myself (not until I get hold of a copy of 9).
591
592A detailed list of changes, in no particular order:
593
594- Describe --gen-suppressions in the FAQ.
595
596- Syscall __NR_waitpid supported.
597
598- Minor MMX bug fix.
599
600- -v prints program's argv[] at startup.
601
602- More glibc-2.3 suppressions.
603
604- Suppressions for stack underrun bug(s) in the c++ support library
605 distributed with Intel Icc 7.0.
606
607- Fix problems reading /proc/self/maps.
608
609- Fix a couple of messages that should have been suppressed by -q,
610 but weren't.
611
612- Make Addrcheck understand "Overlap" suppressions.
613
614- At startup, check if program is statically linked and bail out if so.
615
616- Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
617
618- Memcheck/addrcheck: minor speed optimisations
619
620- Handle syscall __NR_brk more correctly than before.
621
622- Fixed incorrect allocate/free mismatch errors when using
623 operator new(unsigned, std::nothrow_t const&)
624 operator new[](unsigned, std::nothrow_t const&)
625
626- Support POSIX pthread spinlocks.
627
628- Fixups for clean compilation with gcc-3.3.1.
daywalker5d945de2003-09-26 00:32:53 +0000629
630- Implemented more opcodes:
631 - push %es
632 - push %ds
633 - pop %es
634 - pop %ds
635 - movntq
636 - sfence
637 - pshufw
638 - pavgb
639 - ucomiss
640 - enter
daywalkerb18d2532003-09-27 20:15:01 +0000641 - mov imm32, %esp
642 - all "in" and "out" opcodes
daywalker79aad842003-09-30 22:58:12 +0000643 - inc/dec %esp
jseward43230652003-12-14 00:14:54 +0000644 - A whole bunch of SSE/SSE2 instructions
daywalker5d945de2003-09-26 00:32:53 +0000645
jseward43230652003-12-14 00:14:54 +0000646- Memcheck: don't bomb on SSE/SSE2 code.
daywalker5d945de2003-09-26 00:32:53 +0000647
sewardj90238792003-05-05 00:23:42 +0000648
sewardj945f39f2003-07-25 21:11:40 +0000649Snapshot 20030725 (25 July 2003)
650~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
651
652Fixes some minor problems in 20030716.
653
654- Fix bugs in overlap checking for strcpy/memcpy etc.
655
656- Do overlap checking with Addrcheck as well as Memcheck.
657
658- Fix this:
659 Memcheck: the `impossible' happened:
660 get_error_name: unexpected type
661
662- Install headers needed to compile new skins.
663
sewardje3dd2e02003-07-27 08:04:48 +0000664- Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD
sewardj945f39f2003-07-25 21:11:40 +0000665 passed to non-traced children.
666
sewardjb9eda952003-07-26 21:39:05 +0000667- Fix file descriptor leak in valgrind-listener.
668
sewardje3dd2e02003-07-27 08:04:48 +0000669- Fix longstanding bug in which the allocation point of a
670 block resized by realloc was not correctly set. This may
671 have caused confusing error messages.
sewardj945f39f2003-07-25 21:11:40 +0000672
673
sewardj626fd892003-07-16 20:10:26 +0000674Snapshot 20030716 (16 July 2003)
sewardj9d916ed2003-07-14 23:38:40 +0000675~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
676
sewardj626fd892003-07-16 20:10:26 +000067720030716 is a snapshot of our current CVS head (development) branch.
sewardj9d916ed2003-07-14 23:38:40 +0000678This is the branch which will become valgrind-2.0. It contains
679significant enhancements over the 1.9.X branch.
680
681Despite this being a snapshot of the CVS head, it is believed to be
682quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so
683-- and therefore suitable for widespread use. Please let us know asap
684if it causes problems for you.
685
686Two reasons for releasing a snapshot now are:
687
688- It's been a while since 1.9.6, and this snapshot fixes
689 various problems that 1.9.6 has with threaded programs
690 on glibc-2.3.X based systems.
691
692- So as to make available improvements in the 2.0 line.
693
sewardj626fd892003-07-16 20:10:26 +0000694Major changes in 20030716, as compared to 1.9.6:
sewardj9d916ed2003-07-14 23:38:40 +0000695
696- More fixes to threading support on glibc-2.3.1 and 2.3.2-based
697 systems (SuSE 8.2, Red Hat 9). If you have had problems
698 with inconsistent/illogical behaviour of errno, h_errno or the DNS
sewardj626fd892003-07-16 20:10:26 +0000699 resolver functions in threaded programs, 20030716 should improve
sewardj9d916ed2003-07-14 23:38:40 +0000700 matters. This snapshot seems stable enough to run OpenOffice.org
701 1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big
702 threaded app if ever I saw one.
703
704- Automatic generation of suppression records; you no longer
705 need to write them by hand. Use --gen-suppressions=yes.
706
sewardj21511802003-07-22 17:47:42 +0000707- strcpy/memcpy/etc check their arguments for overlaps, when
708 running with the Memcheck or Addrcheck skins.
709
710- malloc_usable_size() is now supported.
711
712- new client requests:
713 - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS:
714 useful with regression testing
715 - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions
716 on real CPU (use with caution!)
717
sewardj9d916ed2003-07-14 23:38:40 +0000718- The GDB attach mechanism is more flexible. Allow the GDB to
719 be run to be specified by --gdb-path=/path/to/gdb, and specify
720 which file descriptor V will read its input from with
721 --input-fd=<number>.
722
sewardj21511802003-07-22 17:47:42 +0000723- Cachegrind gives more accurate results (wasn't tracking instructions in
724 malloc() and friends previously, is now).
725
sewardj9d916ed2003-07-14 23:38:40 +0000726- Complete support for the MMX instruction set.
727
728- Partial support for the SSE and SSE2 instruction sets. Work for this
729 is ongoing. About half the SSE/SSE2 instructions are done, so
730 some SSE based programs may work. Currently you need to specify
731 --skin=addrcheck. Basically not suitable for real use yet.
732
733- Significant speedups (10%-20%) for standard memory checking.
734
735- Fix assertion failure in pthread_once().
736
737- Fix this:
738 valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select):
739 Assertion `ms_end >= ms_now' failed.
740
741- Implement pthread_mutexattr_setpshared.
742
743- Understand Pentium 4 branch hints. Also implemented a couple more
744 obscure x86 instructions.
745
746- Lots of other minor bug fixes.
747
sewardj626fd892003-07-16 20:10:26 +0000748- We have a decent regression test system, for the first time.
749 This doesn't help you directly, but it does make it a lot easier
750 for us to track the quality of the system, especially across
751 multiple linux distributions.
752
753 You can run the regression tests with 'make regtest' after 'make
754 install' completes. On SuSE 8.2 and Red Hat 9 I get this:
755
756 == 84 tests, 0 stderr failures, 0 stdout failures ==
757
758 On Red Hat 8, I get this:
759
760 == 84 tests, 2 stderr failures, 1 stdout failure ==
761 corecheck/tests/res_search (stdout)
762 memcheck/tests/sigaltstack (stderr)
763
764 sigaltstack is probably harmless. res_search doesn't work
765 on R H 8 even running natively, so I'm not too worried.
766
767 On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures:
768
769 == 84 tests, 2 stderr failures, 1 stdout failure ==
770 corecheck/tests/pth_atfork1 (stdout)
771 corecheck/tests/pth_atfork1 (stderr)
772 memcheck/tests/sigaltstack (stderr)
773
774 You need to run on a PII system, at least, since some tests
775 contain P6-specific instructions, and the test machine needs
776 access to the internet so that corecheck/tests/res_search
777 (a test that the DNS resolver works) can function.
778
sewardj9d916ed2003-07-14 23:38:40 +0000779As ever, thanks for the vast amount of feedback :) and bug reports :(
780We may not answer all messages, but we do at least look at all of
781them, and tend to fix the most frequently reported bugs.
782
783
784
sewardj37918822003-05-05 01:05:09 +0000785Version 1.9.6 (7 May 2003 or thereabouts)
786~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
787
788Major changes in 1.9.6:
789
790- Improved threading support for glibc >= 2.3.2 (SuSE 8.2,
791 RedHat 9, to name but two ...) It turned out that 1.9.5
792 had problems with threading support on glibc >= 2.3.2,
793 usually manifested by threaded programs deadlocking in system calls,
794 or running unbelievably slowly. Hopefully these are fixed now. 1.9.6
795 is the first valgrind which gives reasonable support for
796 glibc-2.3.2. Also fixed a 2.3.2 problem with pthread_atfork().
797
798- Majorly expanded FAQ.txt. We've added workarounds for all
799 common problems for which a workaround is known.
800
801Minor changes in 1.9.6:
802
803- Fix identification of the main thread's stack. Incorrect
804 identification of it was causing some on-stack addresses to not get
805 identified as such. This only affected the usefulness of some error
806 messages; the correctness of the checks made is unchanged.
807
808- Support for kernels >= 2.5.68.
809
810- Dummy implementations of __libc_current_sigrtmin,
811 __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully
812 good enough to keep alive programs which previously died for lack of
813 them.
814
815- Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request.
816
sewardj3d47b792003-05-05 22:15:35 +0000817- Fix bug in the DWARF2 debug line info loader, when instructions
818 following each other have source lines far from each other
819 (e.g. with inlined functions).
820
sewardj37918822003-05-05 01:05:09 +0000821- Debug info reading: read symbols from both "symtab" and "dynsym"
822 sections, rather than merely from the one that comes last in the
823 file.
824
825- New syscall support: prctl(), creat(), lookup_dcookie().
826
827- When checking calls to accept(), recvfrom(), getsocketopt(),
828 don't complain if buffer values are NULL.
829
830- Try and avoid assertion failures in
831 mash_LD_PRELOAD_and_LD_LIBRARY_PATH.
832
833- Minor bug fixes in cg_annotate.
834
835
836
sewardj90238792003-05-05 00:23:42 +0000837Version 1.9.5 (7 April 2003)
838~~~~~~~~~~~~~~~~~~~~~~~~~~~~
839
840It occurs to me that it would be helpful for valgrind users to record
841in the source distribution the changes in each release. So I now
842attempt to mend my errant ways :-) Changes in this and future releases
843will be documented in the NEWS file in the source distribution.
844
845Major changes in 1.9.5:
846
847- (Critical bug fix): Fix a bug in the FPU simulation. This was
848 causing some floating point conditional tests not to work right.
849 Several people reported this. If you had floating point code which
850 didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5.
851
852- Partial support for Red Hat 9. RH9 uses the new Native Posix
853 Threads Library (NPTL), instead of the older LinuxThreads.
854 This potentially causes problems with V which will take some
855 time to correct. In the meantime we have partially worked around
856 this, and so 1.9.5 works on RH9. Threaded programs still work,
857 but they may deadlock, because some system calls (accept, read,
858 write, etc) which should be nonblocking, in fact do block. This
859 is a known bug which we are looking into.
860
861 If you can, your best bet (unfortunately) is to avoid using
862 1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution.
863 If your glibc is 2.3.1 or earlier, you're almost certainly OK.
864
865Minor changes in 1.9.5:
866
867- Added some #errors to valgrind.h to ensure people don't include
868 it accidentally in their sources. This is a change from 1.0.X
869 which was never properly documented. The right thing to include
870 is now memcheck.h. Some people reported problems and strange
871 behaviour when (incorrectly) including valgrind.h in code with
872 1.9.1 -- 1.9.4. This is no longer possible.
873
874- Add some __extension__ bits and pieces so that gcc configured
875 for valgrind-checking compiles even with -Werror. If you
876 don't understand this, ignore it. Of interest to gcc developers
877 only.
878
879- Removed a pointless check which caused problems interworking
880 with Clearcase. V would complain about shared objects whose
881 names did not end ".so", and refuse to run. This is now fixed.
882 In fact it was fixed in 1.9.4 but not documented.
883
884- Fixed a bug causing an assertion failure of "waiters == 1"
885 somewhere in vg_scheduler.c, when running large threaded apps,
886 notably MySQL.
887
888- Add support for the munlock system call (124).
889
890Some comments about future releases:
891
8921.9.5 is, we hope, the most stable Valgrind so far. It pretty much
893supersedes the 1.0.X branch. If you are a valgrind packager, please
894consider making 1.9.5 available to your users. You can regard the
8951.0.X branch as obsolete: 1.9.5 is stable and vastly superior. There
896are no plans at all for further releases of the 1.0.X branch.
897
898If you want a leading-edge valgrind, consider building the cvs head
899(from SourceForge), or getting a snapshot of it. Current cool stuff
900going in includes MMX support (done); SSE/SSE2 support (in progress),
901a significant (10-20%) performance improvement (done), and the usual
902large collection of minor changes. Hopefully we will be able to
903improve our NPTL support, but no promises.
904