7 - --smc-check=all is much faster
11 Release 3.5.0 (19 August 2009)
12 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13 3.5.0 is a feature release with many significant improvements and the
14 usual collection of bug fixes. The main improvement is that Valgrind
15 now works on Mac OS X.
17 This release supports X86/Linux, AMD64/Linux, PPC32/Linux, PPC64/Linux
18 and X86/Darwin. Support for recent distros and toolchain components
19 (glibc 2.10, gcc 4.5) has been added.
21 -------------------------
23 Here is a short summary of the changes. Details are shown further
26 * Support for Mac OS X (10.5.x).
28 * Improvements and simplifications to Memcheck's leak checker.
30 * Clarification and simplifications in various aspects of Valgrind's
33 * XML output for Helgrind and Ptrcheck.
35 * Performance and stability improvements for Helgrind and DRD.
37 * Genuinely atomic support for x86/amd64/ppc atomic instructions.
39 * A new experimental tool, BBV, useful for computer architecture
42 * Improved Wine support, including ability to read Windows PDB
45 -------------------------
47 Here are details of the above changes, followed by descriptions of
48 many other minor changes, and a list of fixed bugs.
51 * Valgrind now runs on Mac OS X. (Note that Mac OS X is sometimes
52 called "Darwin" because that is the name of the OS core, which is the
53 level that Valgrind works at.)
57 - It requires OS 10.5.x (Leopard). Porting to 10.4.x is not planned
58 because it would require work and 10.4 is only becoming less common.
60 - 32-bit programs on x86 and AMD64 (a.k.a x86-64) machines are supported
61 fairly well. For 10.5.x, 32-bit programs are the default even on
62 64-bit machines, so it handles most current programs.
64 - 64-bit programs on x86 and AMD64 (a.k.a x86-64) machines are not
65 officially supported, but simple programs at least will probably work.
66 However, start-up is slow.
68 - PowerPC machines are not supported.
70 Things that don't work:
74 - Objective-C garbage collection.
78 - If you have Rogue Amoeba's "Instant Hijack" program installed,
79 Valgrind will fail with a SIGTRAP at start-up. See
80 https://bugs.kde.org/show_bug.cgi?id=193917 for details and a
85 - You will likely find --dsymutil=yes a useful option, as error
86 messages may be imprecise without it.
88 - Mac OS X support is new and therefore will be less robust than the
89 Linux support. Please report any bugs you find.
91 - Threaded programs may run more slowly than on Linux.
93 Many thanks to Greg Parker for developing this port over several years.
96 * Memcheck's leak checker has been improved.
98 - The results for --leak-check=summary now match the summary results
99 for --leak-check=full. Previously they could differ because
100 --leak-check=summary counted "indirectly lost" blocks and
101 "suppressed" blocks as "definitely lost".
103 - Blocks that are only reachable via at least one interior-pointer,
104 but are directly pointed to by a start-pointer, were previously
105 marked as "still reachable". They are now correctly marked as
108 - The default value for the --leak-resolution option has been
109 changed from "low" to "high". In general, this means that more
110 leak reports will be produced, but each leak report will describe
113 - With --leak-check=full, "definitely lost" and "possibly lost"
114 leaks are now considered as proper errors, ie. they are counted
115 for the "ERROR SUMMARY" and affect the behaviour of
116 --error-exitcode. These leaks are not counted as errors if
117 --leak-check=summary is specified, however.
119 - Documentation for the leak checker has been improved.
122 * Various aspects of Valgrind's text output have changed.
124 - Valgrind's start-up message has changed. It is shorter but also
125 includes the command being run, which makes it easier to use
126 --trace-children=yes. An example:
128 - Valgrind's shut-down messages have also changed. This is most
129 noticeable with Memcheck, where the leak summary now occurs before
130 the error summary. This change was necessary to allow leaks to be
131 counted as proper errors (see the description of the leak checker
132 changes above for more details). This was also necessary to fix a
133 longstanding bug in which uses of suppressions against leaks were
134 not "counted", leading to difficulties in maintaining suppression
135 files (see https://bugs.kde.org/show_bug.cgi?id=186790).
137 - Behavior of -v has changed. In previous versions, -v printed out
138 a mixture of marginally-user-useful information, and tool/core
139 statistics. The statistics printing has now been moved to its own
140 flag, --stats=yes. This means -v is less verbose and more likely
141 to convey useful end-user information.
143 - The format of some (non-XML) stack trace entries has changed a
144 little. Previously there were six possible forms:
146 0x80483BF: really (a.c:20)
147 0x80483BF: really (in /foo/a.out)
149 0x80483BF: (within /foo/a.out)
150 0x80483BF: ??? (a.c:20)
153 The third and fourth of these forms have been made more consistent
154 with the others. The six possible forms are now:
156 0x80483BF: really (a.c:20)
157 0x80483BF: really (in /foo/a.out)
158 0x80483BF: really (in ???)
159 0x80483BF: ??? (in /foo/a.out)
160 0x80483BF: ??? (a.c:20)
163 Stack traces produced when --xml=yes is specified are different
167 * Helgrind and Ptrcheck now support XML output, so they can be used
168 from GUI tools. Also, the XML output mechanism has been
171 - The XML format has been overhauled and generalised, so it is more
172 suitable for error reporting tools in general. The Memcheck
173 specific aspects of it have been removed. The new format, which
174 is an evolution of the old format, is described in
175 docs/internals/xml-output-protocol4.txt.
177 - Memcheck has been updated to use the new format.
179 - Helgrind and Ptrcheck are now able to emit output in this format.
181 - The XML output mechanism has been overhauled. XML is now output
182 to its own file descriptor, which means that:
184 * Valgrind can output text and XML independently.
186 * The longstanding problem of XML output being corrupted by
187 unexpected un-tagged text messages is solved.
189 As before, the destination for text output is specified using
190 --log-file=, --log-fd= or --log-socket=.
192 As before, XML output for a tool is enabled using --xml=yes.
194 Because there's a new XML output channel, the XML output
195 destination is now specified by --xml-file=, --xml-fd= or
198 Initial feedback has shown this causes some confusion. To
199 clarify, the two envisaged usage scenarios are:
201 (1) Normal text output. In this case, do not specify --xml=yes
202 nor any of --xml-file=, --xml-fd= or --xml-socket=.
204 (2) XML output. In this case, specify --xml=yes, and one of
205 --xml-file=, --xml-fd= or --xml-socket= to select the XML
206 destination, one of --log-file=, --log-fd= or --log-socket=
207 to select the destination for any remaining text messages,
208 and, importantly, -q.
210 -q makes Valgrind completely silent on the text channel,
211 except in the case of critical failures, such as Valgrind
212 itself segfaulting, or failing to read debugging information.
213 Hence, in this scenario, it suffices to check whether or not
214 any output appeared on the text channel. If yes, then it is
215 likely to be a critical error which should be brought to the
216 attention of the user. If no (the text channel produced no
217 output) then it can be assumed that the run was successful.
219 This allows GUIs to make the critical distinction they need to
220 make (did the run fail or not?) without having to search or
221 filter the text output channel in any way.
223 It is also recommended to use --child-silent-after-fork=yes in
227 * Improvements and changes in Helgrind:
229 - XML output, as described above
231 - Checks for consistent association between pthread condition
232 variables and their associated mutexes are now performed.
234 - pthread_spinlock functions are supported.
236 - Modest performance improvements.
238 - Initial (skeletal) support for describing the behaviour of
239 non-POSIX synchronisation objects through ThreadSanitizer
240 compatible ANNOTATE_* macros.
242 - More controllable tradeoffs between performance and the level of
243 detail of "previous" accesses in a race. There are now three
246 * --history-level=full. This is the default, and was also the
247 default in 3.4.x. It shows both stacks involved in a race, but
248 requires a lot of memory and can be very slow in programs that
249 do many inter-thread synchronisation events.
251 * --history-level=none. This only shows the later stack involved
252 in a race. This can be much faster than --history-level=full,
253 but makes it much more difficult to find the other access
254 involved in the race.
256 The new intermediate setting is
258 * --history-level=approx
260 For the earlier (other) access, two stacks are presented. The
261 earlier access is guaranteed to be somewhere in between the two
262 program points denoted by those stacks. This is not as useful
263 as showing the exact stack for the previous access (as per
264 --history-level=full), but it is better than nothing, and it's
265 almost as fast as --history-level=none.
268 * New features and improvements in DRD:
270 - The error messages printed by DRD are now easier to interpret.
271 Instead of using two different numbers to identify each thread
272 (Valgrind thread ID and DRD thread ID), DRD does now identify
273 threads via a single number (the DRD thread ID). Furthermore
274 "first observed at" information is now printed for all error
275 messages related to synchronization objects.
277 - Added support for named semaphores (sem_open() and sem_close()).
279 - Race conditions between pthread_barrier_wait() and
280 pthread_barrier_destroy() calls are now reported.
282 - Added support for custom allocators through the macros
283 VALGRIND_MALLOCLIKE_BLOCK() VALGRIND_FREELIKE_BLOCK() (defined in
284 in <valgrind/valgrind.h>). An alternative for these two macros is
285 the new client request VG_USERREQ__DRD_CLEAN_MEMORY (defined in
288 - Added support for annotating non-POSIX synchronization objects
289 through several new ANNOTATE_*() macros.
291 - OpenMP: added support for the OpenMP runtime (libgomp) included
292 with gcc versions 4.3.0 and 4.4.0.
296 - Added two new command-line options (--first-race-only and
297 --segment-merging-interval).
300 * Genuinely atomic support for x86/amd64/ppc atomic instructions
302 Valgrind will now preserve (memory-access) atomicity of LOCK-
303 prefixed x86/amd64 instructions, and any others implying a global
304 bus lock. Ditto for PowerPC l{w,d}arx/st{w,d}cx. instructions.
306 This means that Valgrinded processes will "play nicely" in
307 situations where communication with other processes, or the kernel,
308 is done through shared memory and coordinated with such atomic
309 instructions. Prior to this change, such arrangements usually
310 resulted in hangs, races or other synchronisation failures, because
311 Valgrind did not honour atomicity of such instructions.
314 * A new experimental tool, BBV, has been added. BBV generates basic
315 block vectors for use with the SimPoint analysis tool, which allows
316 a program's overall behaviour to be approximated by running only a
317 fraction of it. This is useful for computer architecture
318 researchers. You can run BBV by specifying --tool=exp-bbv (the
319 "exp-" prefix is short for "experimental"). BBV was written by
323 * Modestly improved support for running Windows applications under
324 Wine. In particular, initial support for reading Windows .PDB debug
325 information has been added.
328 * A new Memcheck client request VALGRIND_COUNT_LEAK_BLOCKS has been
329 added. It is similar to VALGRIND_COUNT_LEAKS but counts blocks
333 * The Valgrind client requests VALGRIND_PRINTF and
334 VALGRIND_PRINTF_BACKTRACE have been changed slightly. Previously,
335 the string was always printed immediately on its own line. Now, the
336 string will be added to a buffer but not printed until a newline is
337 encountered, or other Valgrind output is printed (note that for
338 VALGRIND_PRINTF_BACKTRACE, the back-trace itself is considered
339 "other Valgrind output"). This allows you to use multiple
340 VALGRIND_PRINTF calls to build up a single output line, and also to
341 print multiple output lines with a single request (by embedding
342 multiple newlines in the string).
345 * The graphs drawn by Massif's ms_print program have changed slightly:
347 - The half-height chars '.' and ',' are no longer drawn, because
348 they are confusing. The --y option can be used if the default
349 y-resolution is not high enough.
351 - Horizontal lines are now drawn after the top of a snapshot if
352 there is a gap until the next snapshot. This makes it clear that
353 the memory usage has not dropped to zero between snapshots.
356 * Something that happened in 3.4.0, but wasn't clearly announced: the
357 option --read-var-info=yes can be used by some tools (Memcheck,
358 Helgrind and DRD). When enabled, it causes Valgrind to read DWARF3
359 variable type and location information. This makes those tools
360 start up more slowly and increases memory consumption, but
361 descriptions of data addresses in error messages become more
365 * exp-Omega, an experimental instantaneous leak-detecting tool, was
366 disabled in 3.4.0 due to a lack of interest and maintenance,
367 although the source code was still in the distribution. The source
368 code has now been removed from the distribution. For anyone
369 interested, the removal occurred in SVN revision r10247.
372 * Some changes have been made to the build system.
374 - VEX/ is now integrated properly into the build system. This means
375 that dependency tracking within VEX/ now works properly, "make
376 install" will work without requiring "make" before it, and
377 parallel builds (ie. 'make -j') now work (previously a
378 .NOTPARALLEL directive was used to serialize builds, ie. 'make -j'
379 was effectively ignored).
381 - The --with-vex configure option has been removed. It was of
382 little use and removing it simplified the build system.
384 - The location of some install files has changed. This should not
385 affect most users. Those who might be affected:
387 * For people who use Valgrind with MPI programs, the installed
388 libmpiwrap.so library has moved from
389 $(INSTALL)/<platform>/libmpiwrap.so to
390 $(INSTALL)/libmpiwrap-<platform>.so.
392 * For people who distribute standalone Valgrind tools, the
393 installed libraries such as $(INSTALL)/<platform>/libcoregrind.a
394 have moved to $(INSTALL)/libcoregrind-<platform>.a.
396 These changes simplify the build system.
398 - Previously, all the distributed suppression (*.supp) files were
399 installed. Now, only default.supp is installed. This should not
400 affect users as the other installed suppression files were not
401 read; the fact that they were installed was a mistake.
406 - Memcheck is unusable with the Intel compiler suite version 11.1,
407 when it generates code for SSE2-and-above capable targets. This
408 is because of icc's use of highly optimised inlined strlen
409 implementations. It causes Memcheck to report huge numbers of
410 false errors even in simple programs. Helgrind and DRD may also
413 Versions 11.0 and earlier may be OK, but this has not been
417 The following bugs have been fixed or resolved. Note that "n-i-bz"
418 stands for "not in bugzilla" -- that is, a bug that was reported to us
419 but never got a bugzilla entry. We encourage you to file bugs in
420 bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
421 mailing the developers (or mailing lists) directly -- bugs that are
422 not entered into bugzilla tend to get forgotten about or ignored.
424 To see details of a given bug, visit
425 https://bugs.kde.org/show_bug.cgi?id=XXXXXX
426 where XXXXXX is the bug number as listed below.
428 84303 How about a LockCheck tool?
429 91633 dereference of null ptr in vgPlain_st_basetype
430 97452 Valgrind doesn't report any pthreads problems
431 100628 leak-check gets assertion failure when using
432 VALGRIND_MALLOCLIKE_BLOCK on malloc()ed memory
433 108528 NPTL pthread cleanup handlers not called
434 110126 Valgrind 2.4.1 configure.in tramples CFLAGS
435 110128 mallinfo is not implemented...
436 110770 VEX: Generated files not always updated when making valgrind
437 111102 Memcheck: problems with large (memory footprint) applications
438 115673 Vex's decoder should never assert
439 117564 False positive: Syscall param clone(child_tidptr) contains
440 uninitialised byte(s)
441 119404 executing ssh from inside valgrind fails
442 133679 Callgrind does not write path names to sources with dwarf debug
444 135847 configure.in problem with non gnu compilers (and possible fix)
445 136154 threads.c:273 (vgCallgrind_post_signal): Assertion
446 '*(vgCallgrind_current_fn_stack.top) == 0' failed.
447 136230 memcheck reports "possibly lost", should be "still reachable"
448 137073 NULL arg to MALLOCLIKE_BLOCK causes crash
449 137904 Valgrind reports a memory leak when using POSIX threads,
451 139076 valgrind VT_GETSTATE error
452 142228 complaint of elf_dynamic_do_rela in trivial usage
453 145347 spurious warning with USBDEVFS_REAPURB
454 148441 (wine) can't find memory leak in Wine, win32 binary
456 148742 Leak-check fails assert on exit
457 149878 add (proper) check for calloc integer overflow
458 150606 Call graph is broken when using callgrind control
459 152393 leak errors produce an exit code of 0. I need some way to
460 cause leak errors to result in a nonzero exit code.
461 157154 documentation (leak-resolution doc speaks about num-callers
462 def=4) + what is a loss record
463 159501 incorrect handling of ALSA ioctls
464 162020 Valgrinding an empty/zero-byte file crashes valgrind
465 162482 ppc: Valgrind crashes while reading stabs information
466 162718 x86: avoid segment selector 0 in sys_set_thread_area()
467 163253 (wine) canonicaliseSymtab forgot some fields in DiSym
468 163560 VEX/test_main.c is missing from valgrind-3.3.1
469 164353 malloc_usable_size() doesn't return a usable size
470 165468 Inconsistent formatting in memcheck manual -- please fix
471 169505 main.c:286 (endOfInstr):
472 Assertion 'ii->cost_offset == *cost_offset' failed
473 177206 Generate default.supp during compile instead of configure
474 177209 Configure valt_load_address based on arch+os
475 177305 eventfd / syscall 323 patch lost
476 179731 Tests fail to build because of inlining of non-local asm labels
477 181394 helgrind: libhb_core.c:3762 (msm_write): Assertion
478 'ordxx == POrd_EQ || ordxx == POrd_LT' failed.
479 181594 Bogus warning for empty text segment
480 181707 dwarf doesn't require enumerations to have name
481 185038 exp-ptrcheck: "unhandled syscall: 285" (fallocate) on x86_64
482 185050 exp-ptrcheck: sg_main.c:727 (add_block_to_GlobalTree):
483 Assertion '!already_present' failed.
484 185359 exp-ptrcheck: unhandled syscall getresuid()
485 185794 "WARNING: unhandled syscall: 285" (fallocate) on x86_64
486 185816 Valgrind is unable to handle debug info for files with split
487 debug info that are prelinked afterwards
488 185980 [darwin] unhandled syscall: sem_open
489 186238 bbToIR_AMD64: disInstr miscalculated next %rip
490 186507 exp-ptrcheck unhandled syscalls prctl, etc.
491 186790 Suppression pattern used for leaks are not reported
492 186796 Symbols with length>200 in suppression files are ignored
493 187048 drd: mutex PTHREAD_PROCESS_SHARED attribute missinterpretation
494 187416 exp-ptrcheck: support for __NR_{setregid,setreuid,setresuid}
495 188038 helgrind: hg_main.c:926: mk_SHVAL_fail: the 'impossible' happened
496 188046 bashisms in the configure script
497 188127 amd64->IR: unhandled instruction bytes: 0xF0 0xF 0xB0 0xA
498 188161 memcheck: --track-origins=yes asserts "mc_machine.c:672
499 (get_otrack_shadow_offset_wrk): the 'impossible' happened."
500 188248 helgrind: pthread_cleanup_push, pthread_rwlock_unlock,
501 assertion fail "!lock->heldBy"
502 188427 Add support for epoll_create1 (with patch)
503 188530 Support for SIOCGSTAMPNS
504 188560 Include valgrind.spec in the tarball
505 188572 Valgrind on Mac should suppress setenv() mem leak
506 189054 Valgrind fails to build because of duplicate non-local asm labels
507 189737 vex amd64->IR: unhandled instruction bytes: 0xAC
508 189762 epoll_create syscall not handled (--tool=exp-ptrcheck)
509 189763 drd assertion failure: s_threadinfo[tid].is_recording
510 190219 unhandled syscall: 328 (x86-linux)
511 190391 dup of 181394; see above
512 190429 Valgrind reports lots of errors in ld.so with x86_64 2.9.90 glibc
513 190820 No debug information on powerpc-linux
514 191095 PATCH: Improve usbdevfs ioctl handling
515 191182 memcheck: VALGRIND_LEAK_CHECK quadratic when big nr of chunks
517 191189 --xml=yes should obey --gen-suppressions=all
518 191192 syslog() needs a suppression on macosx
519 191271 DARWIN: WARNING: unhandled syscall: 33554697 a.k.a.: 265
520 191761 getrlimit on MacOSX
521 191992 multiple --fn-skip only works sometimes; dependent on order
522 192634 V. reports "aspacem sync_check_mapping_callback:
523 segment mismatch" on Darwin
524 192954 __extension__ missing on 2 client requests
525 194429 Crash at start-up with glibc-2.10.1 and linux-2.6.29
526 194474 "INSTALL" file has different build instructions than "README"
527 194671 Unhandled syscall (sem_wait?) from mac valgrind
528 195069 memcheck: reports leak (memory still reachable) for
530 195169 drd: (vgDrd_barrier_post_wait):
531 Assertion 'r->sg[p->post_iteration]' failed.
532 195268 valgrind --log-file doesn't accept ~/...
533 195838 VEX abort: LibVEX_N_SPILL_BYTES too small for CPUID boilerplate
534 195860 WARNING: unhandled syscall: unix:223
535 196528 need a error suppression for pthread_rwlock_init under os x?
536 197227 Support aio_* syscalls on Darwin
537 197456 valgrind should reject --suppressions=(directory)
538 197512 DWARF2 CFI reader: unhandled CFI instruction 0:10
539 197591 unhandled syscall 27 (mincore)
540 197793 Merge DCAS branch to the trunk == 85756, 142103
541 197794 Avoid duplicate filenames in Vex
542 197898 make check fails on current SVN
543 197901 make check fails also under exp-ptrcheck in current SVN
544 197929 Make --leak-resolution=high the default
545 197930 Reduce spacing between leak reports
546 197933 Print command line of client at start-up, and shorten preamble
547 197966 unhandled syscall 205 (x86-linux, --tool=exp-ptrcheck)
548 198395 add BBV to the distribution as an experimental tool
549 198624 Missing syscalls on Darwin: 82, 167, 281, 347
550 198649 callgrind_annotate doesn't cumulate counters
551 199338 callgrind_annotate sorting/thresholds are broken for all but Ir
552 199977 Valgrind complains about an unrecognized instruction in the
553 atomic_incs test program
554 200029 valgrind isn't able to read Fedora 12 debuginfo
555 200760 darwin unhandled syscall: unix:284
556 200827 DRD doesn't work on Mac OS X
557 200990 VG_(read_millisecond_timer)() does not work correctly
558 201016 Valgrind does not support pthread_kill() on Mac OS
559 201169 Document --read-var-info
560 201323 Pre-3.5.0 performance sanity checking
561 201384 Review user manual for the 3.5.0 release
562 201585 mfpvr not implemented on ppc
563 201708 tests failing because x86 direction flag is left set
564 201757 Valgrind doesn't handle any recent sys_futex additions
565 204377 64-bit valgrind can not start a shell script
566 (with #!/path/to/shell) if the shell is a 32-bit executable
567 n-i-bz drd: fixed assertion failure triggered by mutex reinitialization.
568 n-i-bz drd: fixed a bug that caused incorrect messages to be printed
569 about memory allocation events with memory access tracing enabled
570 n-i-bz drd: fixed a memory leak triggered by vector clock deallocation
572 (3.5.0: 19 Aug 2009, vex r1913, valgrind r10846).
576 Release 3.4.1 (28 February 2009)
577 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
578 3.4.1 is a bug-fix release that fixes some regressions and assertion
579 failures in debug info reading in 3.4.0, most notably incorrect stack
580 traces on amd64-linux on older (glibc-2.3 based) systems. Various
581 other debug info problems are also fixed. A number of bugs in the
582 exp-ptrcheck tool introduced in 3.4.0 have been fixed.
584 In view of the fact that 3.4.0 contains user-visible regressions
585 relative to 3.3.x, upgrading to 3.4.1 is recommended. Packagers are
586 encouraged to ship 3.4.1 in preference to 3.4.0.
588 The fixed bugs are as follows. Note that "n-i-bz" stands for "not in
589 bugzilla" -- that is, a bug that was reported to us but never got a
590 bugzilla entry. We encourage you to file bugs in bugzilla
591 (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the
592 developers (or mailing lists) directly -- bugs that are not entered
593 into bugzilla tend to get forgotten about or ignored.
595 n-i-bz Fix various bugs reading icc-11 generated debug info
596 n-i-bz Fix various bugs reading gcc-4.4 generated debug info
597 n-i-bz Preliminary support for glibc-2.10 / Fedora 11
598 n-i-bz Cachegrind and Callgrind: handle non-power-of-two cache sizes,
599 so as to support (eg) 24k Atom D1 and Core2 with 3/6/12MB L2.
600 179618 exp-ptrcheck crashed / exit prematurely
601 179624 helgrind: false positive races with pthread_create and
603 134207 pkg-config output contains @VG_PLATFORM@
604 176926 floating point exception at valgrind startup with PPC 440EPX
605 181594 Bogus warning for empty text segment
606 173751 amd64->IR: 0x48 0xF 0x6F 0x45 (even more redundant rex prefixes)
607 181707 Dwarf3 doesn't require enumerations to have name
608 185038 exp-ptrcheck: "unhandled syscall: 285" (fallocate) on x86_64
609 185050 exp-ptrcheck: sg_main.c:727 (add_block_to_GlobalTree):
610 Assertion '!already_present' failed.
611 185359 exp-ptrcheck unhandled syscall getresuid()
613 (3.4.1.RC1: 24 Feb 2008, vex r1884, valgrind r9253).
614 (3.4.1: 28 Feb 2008, vex r1884, valgrind r9293).
618 Release 3.4.0 (2 January 2009)
619 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
620 3.4.0 is a feature release with many significant improvements and the
621 usual collection of bug fixes. This release supports X86/Linux,
622 AMD64/Linux, PPC32/Linux and PPC64/Linux. Support for recent distros
623 (using gcc 4.4, glibc 2.8 and 2.9) has been added.
625 3.4.0 brings some significant tool improvements. Memcheck can now
626 report the origin of uninitialised values, the thread checkers
627 Helgrind and DRD are much improved, and we have a new experimental
628 tool, exp-Ptrcheck, which is able to detect overruns of stack and
629 global arrays. In detail:
631 * Memcheck is now able to track the origin of uninitialised values.
632 When it reports an uninitialised value error, it will try to show
633 the origin of the value, as either a heap or stack allocation.
634 Origin tracking is expensive and so is not enabled by default. To
635 use it, specify --track-origins=yes. Memcheck's speed will be
636 essentially halved, and memory usage will be significantly
637 increased. Nevertheless it can drastically reduce the effort
638 required to identify the root cause of uninitialised value errors,
639 and so is often a programmer productivity win, despite running more
642 * A version (1.4.0) of the Valkyrie GUI, that works with Memcheck in
643 3.4.0, will be released shortly.
645 * Helgrind's race detection algorithm has been completely redesigned
646 and reimplemented, to address usability and scalability concerns:
648 - The new algorithm has a lower false-error rate: it is much less
649 likely to report races that do not really exist.
651 - Helgrind will display full call stacks for both accesses involved
652 in a race. This makes it easier to identify the root causes of
655 - Limitations on the size of program that can run have been removed.
657 - Performance has been modestly improved, although that is very
660 - Direct support for Qt4 threading has been added.
662 - pthread_barriers are now directly supported.
664 - Helgrind works well on all supported Linux targets.
666 * The DRD thread debugging tool has seen major improvements:
668 - Greatly improved performance and significantly reduced memory
671 - Support for several major threading libraries (Boost.Thread, Qt4,
672 glib, OpenMP) has been added.
674 - Support for atomic instructions, POSIX semaphores, barriers and
675 reader-writer locks has been added.
677 - Works now on PowerPC CPUs too.
679 - Added support for printing thread stack usage at thread exit time.
681 - Added support for debugging lock contention.
683 - Added a manual for Drd.
685 * A new experimental tool, exp-Ptrcheck, has been added. Ptrcheck
686 checks for misuses of pointers. In that sense it is a bit like
687 Memcheck. However, Ptrcheck can do things Memcheck can't: it can
688 detect overruns of stack and global arrays, it can detect
689 arbitrarily far out-of-bounds accesses to heap blocks, and it can
690 detect accesses heap blocks that have been freed a very long time
691 ago (millions of blocks in the past).
693 Ptrcheck currently works only on x86-linux and amd64-linux. To use
694 it, use --tool=exp-ptrcheck. A simple manual is provided, as part
695 of the main Valgrind documentation. As this is an experimental
696 tool, we would be particularly interested in hearing about your
699 * exp-Omega, an experimental instantaneous leak-detecting tool, is no
700 longer built by default, although the code remains in the repository
701 and the tarball. This is due to three factors: a perceived lack of
702 users, a lack of maintenance, and concerns that it may not be
703 possible to achieve reliable operation using the existing design.
705 * As usual, support for the latest Linux distros and toolchain
706 components has been added. It should work well on Fedora Core 10,
707 OpenSUSE 11.1 and Ubuntu 8.10. gcc-4.4 (in its current pre-release
708 state) is supported, as is glibc-2.9. The C++ demangler has been
709 updated so as to work well with C++ compiled by even the most recent
712 * You can now use frame-level wildcards in suppressions. This was a
713 frequently-requested enhancement. A line "..." in a suppression now
714 matches zero or more frames. This makes it easier to write
715 suppressions which are precise yet insensitive to changes in
718 * 3.4.0 adds support on x86/amd64 for the SSSE3 instruction set.
720 * Very basic support for IBM Power6 has been added (64-bit processes only).
722 * Valgrind is now cross-compilable. For example, it is possible to
723 cross compile Valgrind on an x86/amd64-linux host, so that it runs
724 on a ppc32/64-linux target.
726 * You can set the main thread's stack size at startup using the
727 new --main-stacksize= flag (subject of course to ulimit settings).
728 This is useful for running apps that need a lot of stack space.
730 * The limitation that you can't use --trace-children=yes together
731 with --db-attach=yes has been removed.
733 * The following bugs have been fixed. Note that "n-i-bz" stands for
734 "not in bugzilla" -- that is, a bug that was reported to us but
735 never got a bugzilla entry. We encourage you to file bugs in
736 bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
737 mailing the developers (or mailing lists) directly.
739 n-i-bz Make return types for some client requests 64-bit clean
740 n-i-bz glibc 2.9 support
741 n-i-bz ignore unsafe .valgrindrc's (CVE-2008-4865)
742 n-i-bz MPI_Init(0,0) is valid but libmpiwrap.c segfaults
743 n-i-bz Building in an env without gdb gives bogus gdb attach
744 92456 Tracing the origin of uninitialised memory
745 106497 Valgrind does not demangle some C++ template symbols
747 151612 Suppression with "..." (frame-level wildcards in .supp files)
748 156404 Unable to start oocalc under memcheck on openSUSE 10.3 (64-bit)
749 159285 unhandled syscall:25 (stime, on x86-linux)
750 159452 unhandled ioctl 0x8B01 on "valgrind iwconfig"
751 160954 ppc build of valgrind crashes with illegal instruction (isel)
752 160956 mallinfo implementation, w/ patch
753 162092 Valgrind fails to start gnome-system-monitor
754 162819 malloc_free_fill test doesn't pass on glibc2.8 x86
755 163794 assertion failure with "--track-origins=yes"
756 163933 sigcontext.err and .trapno must be set together
757 163955 remove constraint !(--db-attach=yes && --trace-children=yes)
758 164476 Missing kernel module loading system calls
759 164669 SVN regression: mmap() drops posix file locks
760 166581 Callgrind output corruption when program forks
761 167288 Patch file for missing system calls on Cell BE
762 168943 unsupported scas instruction pentium
763 171645 Unrecognised instruction (MOVSD, non-binutils encoding)
764 172417 x86->IR: 0x82 ...
765 172563 amd64->IR: 0xD9 0xF5 - fprem1
766 173099 .lds linker script generation error
767 173177 [x86_64] syscalls: 125/126/179 (capget/capset/quotactl)
768 173751 amd64->IR: 0x48 0xF 0x6F 0x45 (even more redundant prefixes)
770 174908 --log-file value not expanded correctly for core file
771 175044 Add lookup_dcookie for amd64
772 175150 x86->IR: 0xF2 0xF 0x11 0xC1 (movss non-binutils encoding)
774 Developer-visible changes:
776 * Valgrind's debug-info reading machinery has been majorly overhauled.
777 It can now correctly establish the addresses for ELF data symbols,
778 which is something that has never worked properly before now.
780 Also, Valgrind can now read DWARF3 type and location information for
781 stack and global variables. This makes it possible to use the
782 framework to build tools that rely on knowing the type and locations
783 of stack and global variables, for example exp-Ptrcheck.
785 Reading of such information is disabled by default, because most
786 tools don't need it, and because it is expensive in space and time.
787 However, you can force Valgrind to read it, using the
788 --read-var-info=yes flag. Memcheck, Helgrind and DRD are able to
789 make use of such information, if present, to provide source-level
790 descriptions of data addresses in the error messages they create.
792 (3.4.0.RC1: 24 Dec 2008, vex r1878, valgrind r8882).
793 (3.4.0: 3 Jan 2009, vex r1878, valgrind r8899).
797 Release 3.3.1 (4 June 2008)
798 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
799 3.3.1 fixes a bunch of bugs in 3.3.0, adds support for glibc-2.8 based
800 systems (openSUSE 11, Fedora Core 9), improves the existing glibc-2.7
801 support, and adds support for the SSSE3 (Core 2) instruction set.
803 3.3.1 will likely be the last release that supports some very old
804 systems. In particular, the next major release, 3.4.0, will drop
805 support for the old LinuxThreads threading library, and for gcc
806 versions prior to 3.0.
808 The fixed bugs are as follows. Note that "n-i-bz" stands for "not in
809 bugzilla" -- that is, a bug that was reported to us but never got a
810 bugzilla entry. We encourage you to file bugs in bugzilla
811 (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the
812 developers (or mailing lists) directly -- bugs that are not entered
813 into bugzilla tend to get forgotten about or ignored.
815 n-i-bz Massif segfaults at exit
816 n-i-bz Memcheck asserts on Altivec code
817 n-i-bz fix sizeof bug in Helgrind
818 n-i-bz check fd on sys_llseek
819 n-i-bz update syscall lists to kernel 2.6.23.1
820 n-i-bz support sys_sync_file_range
821 n-i-bz handle sys_sysinfo, sys_getresuid, sys_getresgid on ppc64-linux
822 n-i-bz intercept memcpy in 64-bit ld.so's
823 n-i-bz Fix wrappers for sys_{futimesat,utimensat}
824 n-i-bz Minor false-error avoidance fixes for Memcheck
825 n-i-bz libmpiwrap.c: add a wrapper for MPI_Waitany
826 n-i-bz helgrind support for glibc-2.8
827 n-i-bz partial fix for mc_leakcheck.c:698 assert:
828 'lc_shadows[i]->data + lc_shadows[i] ...
829 n-i-bz Massif/Cachegrind output corruption when programs fork
830 n-i-bz register allocator fix: handle spill stores correctly
831 n-i-bz add support for PA6T PowerPC CPUs
832 126389 vex x86->IR: 0xF 0xAE (FXRSTOR)
834 152818 vex x86->IR: 0xF3 0xAC (repz lodsb)
835 153196 vex x86->IR: 0xF2 0xA6 (repnz cmpsb)
836 155011 vex x86->IR: 0xCF (iret)
837 155091 Warning [...] unhandled DW_OP_ opcode 0x23
839 155528 support Core2/SSSE3 insns on x86/amd64
840 155929 ms_print fails on massif outputs containing long lines
841 157665 valgrind fails on shmdt(0) after shmat to 0
842 157748 support x86 PUSHFW/POPFW
843 158212 helgrind: handle pthread_rwlock_try{rd,wr}lock.
844 158425 sys_poll incorrectly emulated when RES==0
845 158744 vex amd64->IR: 0xF0 0x41 0xF 0xC0 (xaddb)
846 160907 Support for a couple of recent Linux syscalls
847 161285 Patch -- support for eventfd() syscall
848 161378 illegal opcode in debug libm (FUCOMPP)
850 161487 number of suppressions files is limited to 10
851 162386 ms_print typo in milliseconds time unit for massif
852 161036 exp-drd: client allocated memory was never freed
853 162663 signalfd_wrapper fails on 64bit linux
855 (3.3.1.RC1: 2 June 2008, vex r1854, valgrind r8169).
856 (3.3.1: 4 June 2008, vex r1854, valgrind r8180).
860 Release 3.3.0 (7 December 2007)
861 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
862 3.3.0 is a feature release with many significant improvements and the
863 usual collection of bug fixes. This release supports X86/Linux,
864 AMD64/Linux, PPC32/Linux and PPC64/Linux. Support for recent distros
865 (using gcc 4.3, glibc 2.6 and 2.7) has been added.
867 The main excitement in 3.3.0 is new and improved tools. Helgrind
868 works again, Massif has been completely overhauled and much improved,
869 Cachegrind now does branch-misprediction profiling, and a new category
870 of experimental tools has been created, containing two new tools:
871 Omega and DRD. There are many other smaller improvements. In detail:
873 - Helgrind has been completely overhauled and works for the first time
874 since Valgrind 2.2.0. Supported functionality is: detection of
875 misuses of the POSIX PThreads API, detection of potential deadlocks
876 resulting from cyclic lock dependencies, and detection of data
877 races. Compared to the 2.2.0 Helgrind, the race detection algorithm
878 has some significant improvements aimed at reducing the false error
879 rate. Handling of various kinds of corner cases has been improved.
880 Efforts have been made to make the error messages easier to
881 understand. Extensive documentation is provided.
883 - Massif has been completely overhauled. Instead of measuring
884 space-time usage -- which wasn't always useful and many people found
885 confusing -- it now measures space usage at various points in the
886 execution, including the point of peak memory allocation. Its
887 output format has also changed: instead of producing PostScript
888 graphs and HTML text, it produces a single text output (via the new
889 'ms_print' script) that contains both a graph and the old textual
890 information, but in a more compact and readable form. Finally, the
891 new version should be more reliable than the old one, as it has been
892 tested more thoroughly.
894 - Cachegrind has been extended to do branch-misprediction profiling.
895 Both conditional and indirect branches are profiled. The default
896 behaviour of Cachegrind is unchanged. To use the new functionality,
897 give the option --branch-sim=yes.
899 - A new category of "experimental tools" has been created. Such tools
900 may not work as well as the standard tools, but are included because
901 some people will find them useful, and because exposure to a wider
902 user group provides tool authors with more end-user feedback. These
903 tools have a "exp-" prefix attached to their names to indicate their
904 experimental nature. Currently there are two experimental tools:
906 * exp-Omega: an instantaneous leak detector. See
907 exp-omega/docs/omega_introduction.txt.
909 * exp-DRD: a data race detector based on the happens-before
910 relation. See exp-drd/docs/README.txt.
912 - Scalability improvements for very large programs, particularly those
913 which have a million or more malloc'd blocks in use at once. These
914 improvements mostly affect Memcheck. Memcheck is also up to 10%
915 faster for all programs, with x86-linux seeing the largest
918 - Works well on the latest Linux distros. Has been tested on Fedora
919 Core 8 (x86, amd64, ppc32, ppc64) and openSUSE 10.3. glibc 2.6 and
920 2.7 are supported. gcc-4.3 (in its current pre-release state) is
921 supported. At the same time, 3.3.0 retains support for older
924 - The documentation has been modestly reorganised with the aim of
925 making it easier to find information on common-usage scenarios.
926 Some advanced material has been moved into a new chapter in the main
927 manual, so as to unclutter the main flow, and other tidying up has
930 - There is experimental support for AIX 5.3, both 32-bit and 64-bit
931 processes. You need to be running a 64-bit kernel to use Valgrind
932 on a 64-bit executable.
934 - There have been some changes to command line options, which may
937 * --log-file-exactly and
938 --log-file-qualifier options have been removed.
940 To make up for this --log-file option has been made more powerful.
941 It now accepts a %p format specifier, which is replaced with the
942 process ID, and a %q{FOO} format specifier, which is replaced with
943 the contents of the environment variable FOO.
945 * --child-silent-after-fork=yes|no [no]
947 Causes Valgrind to not show any debugging or logging output for
948 the child process resulting from a fork() call. This can make the
949 output less confusing (although more misleading) when dealing with
950 processes that create children.
952 * --cachegrind-out-file, --callgrind-out-file and --massif-out-file
954 These control the names of the output files produced by
955 Cachegrind, Callgrind and Massif. They accept the same %p and %q
956 format specifiers that --log-file accepts. --callgrind-out-file
957 replaces Callgrind's old --base option.
959 * Cachegrind's 'cg_annotate' script no longer uses the --<pid>
960 option to specify the output file. Instead, the first non-option
961 argument is taken to be the name of the output file, and any
962 subsequent non-option arguments are taken to be the names of
963 source files to be annotated.
965 * Cachegrind and Callgrind now use directory names where possible in
966 their output files. This means that the -I option to
967 'cg_annotate' and 'callgrind_annotate' should not be needed in
968 most cases. It also means they can correctly handle the case
969 where two source files in different directories have the same
972 - Memcheck offers a new suppression kind: "Jump". This is for
973 suppressing jump-to-invalid-address errors. Previously you had to
974 use an "Addr1" suppression, which didn't make much sense.
976 - Memcheck has new flags --malloc-fill=<hexnum> and
977 --free-fill=<hexnum> which free malloc'd / free'd areas with the
978 specified byte. This can help shake out obscure memory corruption
979 problems. The definedness and addressability of these areas is
980 unchanged -- only the contents are affected.
982 - The behaviour of Memcheck's client requests VALGRIND_GET_VBITS and
983 VALGRIND_SET_VBITS have changed slightly. They no longer issue
984 addressability errors -- if either array is partially unaddressable,
985 they just return 3 (as before). Also, SET_VBITS doesn't report
986 definedness errors if any of the V bits are undefined.
988 - The following Memcheck client requests have been removed:
989 VALGRIND_MAKE_NOACCESS
990 VALGRIND_MAKE_WRITABLE
991 VALGRIND_MAKE_READABLE
992 VALGRIND_CHECK_WRITABLE
993 VALGRIND_CHECK_READABLE
994 VALGRIND_CHECK_DEFINED
995 They were deprecated in 3.2.0, when equivalent but better-named client
996 requests were added. See the 3.2.0 release notes for more details.
998 - The behaviour of the tool Lackey has changed slightly. First, the output
999 from --trace-mem has been made more compact, to reduce the size of the
1000 traces. Second, a new option --trace-superblocks has been added, which
1001 shows the addresses of superblocks (code blocks) as they are executed.
1003 - The following bugs have been fixed. Note that "n-i-bz" stands for
1004 "not in bugzilla" -- that is, a bug that was reported to us but
1005 never got a bugzilla entry. We encourage you to file bugs in
1006 bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
1007 mailing the developers (or mailing lists) directly.
1009 n-i-bz x86_linux_REDIR_FOR_index() broken
1010 n-i-bz guest-amd64/toIR.c:2512 (dis_op2_E_G): Assertion `0' failed.
1011 n-i-bz Support x86 INT insn (INT (0xCD) 0x40 - 0x43)
1012 n-i-bz Add sys_utimensat system call for Linux x86 platform
1013 79844 Helgrind complains about race condition which does not exist
1014 82871 Massif output function names too short
1015 89061 Massif: ms_main.c:485 (get_XCon): Assertion `xpt->max_chi...'
1016 92615 Write output from Massif at crash
1017 95483 massif feature request: include peak allocation in report
1018 112163 MASSIF crashed with signal 7 (SIGBUS) after running 2 days
1019 119404 problems running setuid executables (partial fix)
1020 121629 add instruction-counting mode for timing
1021 127371 java vm giving unhandled instruction bytes: 0x26 0x2E 0x64 0x65
1023 129576 Massif loses track of memory, incorrect graphs
1024 132132 massif --format=html output does not do html entity escaping
1025 132950 Heap alloc/usage summary
1026 133962 unhandled instruction bytes: 0xF2 0x4C 0xF 0x10
1027 134990 use -fno-stack-protector if possible
1029 137396 I would really like helgrind to work again...
1030 137714 x86/amd64->IR: 0x66 0xF 0xF7 0xC6 (maskmovq, maskmovdq)
1031 141631 Massif: percentages don't add up correctly
1032 142706 massif numbers don't seem to add up
1033 143062 massif crashes on app exit with signal 8 SIGFPE
1034 144453 (get_XCon): Assertion 'xpt->max_children != 0' failed.
1035 145559 valgrind aborts when malloc_stats is called
1036 145609 valgrind aborts all runs with 'repeated section!'
1037 145622 --db-attach broken again on x86-64
1039 145887 PPC32: getitimer() system call is not supported
1041 146456 (update_XCon): Assertion 'xpt->curr_space >= -space_delta'...
1043 146781 Adding support for private futexes
1044 147325 valgrind internal error on syscall (SYS_io_destroy, 0)
1045 147498 amd64->IR: 0xF0 0xF 0xB0 0xF (lock cmpxchg %cl,(%rdi))
1046 147545 Memcheck: mc_main.c:817 (get_sec_vbits8): Assertion 'n' failed.
1047 147628 SALC opcode 0xd6 unimplemented
1048 147825 crash on amd64-linux with gcc 4.2 and glibc 2.6 (CFI)
1049 148174 Incorrect type of freed_list_volume causes assertion [...]
1050 148447 x86_64 : new NOP codes: 66 66 66 66 2e 0f 1f
1051 149182 PPC Trap instructions not implemented in valgrind
1052 149504 Assertion hit on alloc_xpt->curr_space >= -space_delta
1053 149519 ppc32: V aborts with SIGSEGV on execution of a signal handler
1055 150044 SEGV during stack deregister
1056 150380 dwarf/gcc interoperation (dwarf3 read problems)
1058 150678 guest-amd64/toIR.c:3741 (dis_Grp5): Assertion `sz == 4' failed
1059 151209 V unable to execute programs for users with UID > 2^16
1060 151938 help on --db-command= misleading
1061 152022 subw $0x28, %%sp causes assertion failure in memcheck
1062 152357 inb and outb not recognized in 64-bit mode
1063 152501 vex x86->IR: 0x27 0x66 0x89 0x45 (daa)
1064 152818 vex x86->IR: 0xF3 0xAC 0xFC 0x9C (rep lodsb)
1066 Developer-visible changes:
1068 - The names of some functions and types within the Vex IR have
1069 changed. Run 'svn log -r1689 VEX/pub/libvex_ir.h' for full details.
1070 Any existing standalone tools will have to be updated to reflect
1071 these changes. The new names should be clearer. The file
1072 VEX/pub/libvex_ir.h is also much better commented.
1074 - A number of new debugging command line options have been added.
1075 These are mostly of use for debugging the symbol table and line
1078 --trace-symtab-patt=<patt> limit debuginfo tracing to obj name <patt>
1079 --trace-cfi=no|yes show call-frame-info details? [no]
1080 --debug-dump=syms mimic /usr/bin/readelf --syms
1081 --debug-dump=line mimic /usr/bin/readelf --debug-dump=line
1082 --debug-dump=frames mimic /usr/bin/readelf --debug-dump=frames
1083 --sym-offsets=yes|no show syms in form 'name+offset' ? [no]
1085 - Internally, the code base has been further factorised and
1086 abstractified, particularly with respect to support for non-Linux
1089 (3.3.0.RC1: 2 Dec 2007, vex r1803, valgrind r7268).
1090 (3.3.0.RC2: 5 Dec 2007, vex r1804, valgrind r7282).
1091 (3.3.0.RC3: 9 Dec 2007, vex r1804, valgrind r7288).
1092 (3.3.0: 10 Dec 2007, vex r1804, valgrind r7290).
1096 Release 3.2.3 (29 Jan 2007)
1097 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
1098 Unfortunately 3.2.2 introduced a regression which can cause an
1099 assertion failure ("vex: the `impossible' happened: eqIRConst") when
1100 running obscure pieces of SSE code. 3.2.3 fixes this and adds one
1101 more glibc-2.5 intercept. In all other respects it is identical to
1102 3.2.2. Please do not use (or package) 3.2.2; instead use 3.2.3.
1104 n-i-bz vex: the `impossible' happened: eqIRConst
1105 n-i-bz Add an intercept for glibc-2.5 __stpcpy_chk
1107 (3.2.3: 29 Jan 2007, vex r1732, valgrind r6560).
1110 Release 3.2.2 (22 Jan 2007)
1111 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
1112 3.2.2 fixes a bunch of bugs in 3.2.1, adds support for glibc-2.5 based
1113 systems (openSUSE 10.2, Fedora Core 6), improves support for icc-9.X
1114 compiled code, and brings modest performance improvements in some
1115 areas, including amd64 floating point, powerpc support, and startup
1116 responsiveness on all targets.
1118 The fixed bugs are as follows. Note that "n-i-bz" stands for "not in
1119 bugzilla" -- that is, a bug that was reported to us but never got a
1120 bugzilla entry. We encourage you to file bugs in bugzilla
1121 (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the
1122 developers (or mailing lists) directly.
1124 129390 ppc?->IR: some kind of VMX prefetch (dstt)
1125 129968 amd64->IR: 0xF 0xAE 0x0 (fxsave)
1127 133054 'make install' fails with syntax errors
1129 132998 startup fails in when running on UML
1130 134207 pkg-config output contains @VG_PLATFORM@
1131 134727 valgrind exits with "Value too large for defined data type"
1132 n-i-bz ppc32/64: support mcrfs
1133 n-i-bz Cachegrind/Callgrind: Update cache parameter detection
1134 135012 x86->IR: 0xD7 0x8A 0xE0 0xD0 (xlat)
1136 126147 x86->IR: 0xF2 0xA5 0xF 0x77 (repne movsw)
1137 136650 amd64->IR: 0xC2 0x8 0x0
1138 135421 x86->IR: unhandled Grp5(R) case 6
1139 n-i-bz Improved documentation of the IR intermediate representation
1140 n-i-bz jcxz (x86) (users list, 8 Nov)
1141 n-i-bz ExeContext hashing fix
1142 n-i-bz fix CFI reading failures ("Dwarf CFI 0:24 0:32 0:48 0:7")
1143 n-i-bz fix Cachegrind/Callgrind simulation bug
1144 n-i-bz libmpiwrap.c: fix handling of MPI_LONG_DOUBLE
1145 n-i-bz make User errors suppressible
1146 136844 corrupted malloc line when using --gen-suppressions=yes
1148 n-i-bz Speed up the JIT's register allocator
1149 n-i-bz Fix confusing leak-checker flag hints
1150 n-i-bz Support recent autoswamp versions
1151 n-i-bz ppc32/64 dispatcher speedups
1152 n-i-bz ppc64 front end rld/rlw improvements
1153 n-i-bz ppc64 back end imm64 improvements
1154 136300 support 64K pages on ppc64-linux
1156 n-i-bz fix ppc insn set tests for gcc >= 4.1
1157 137493 x86->IR: recent binutils no-ops
1158 137714 x86->IR: 0x66 0xF 0xF7 0xC6 (maskmovdqu)
1159 138424 "failed in UME with error 22" (produce a better error msg)
1161 138627 Enhancement support for prctl ioctls
1162 138896 Add support for usb ioctls
1164 139050 ppc32->IR: mfspr 268/269 instructions not handled
1165 n-i-bz ppc32->IR: lvxl/stvxl
1166 n-i-bz glibc-2.5 support
1167 n-i-bz memcheck: provide replacement for mempcpy
1168 n-i-bz memcheck: replace bcmp in ld.so
1169 n-i-bz Use 'ifndef' in VEX's Makefile correctly
1170 n-i-bz Suppressions for MVL 4.0.1 on ppc32-linux
1171 n-i-bz libmpiwrap.c: Fixes for MPICH
1172 n-i-bz More robust handling of hinted client mmaps
1173 139776 Invalid read in unaligned memcpy with Intel compiler v9
1174 n-i-bz Generate valid XML even for very long fn names
1175 n-i-bz Don't prompt about suppressions for unshown reachable leaks
1176 139910 amd64 rcl is not supported
1177 n-i-bz DWARF CFI reader: handle DW_CFA_undefined
1178 n-i-bz DWARF CFI reader: handle icc9 generated CFI info better
1179 n-i-bz fix false uninit-value errs in icc9 generated FP code
1180 n-i-bz reduce extraneous frames in libmpiwrap.c
1181 n-i-bz support pselect6 on amd64-linux
1183 (3.2.2: 22 Jan 2007, vex r1729, valgrind r6545).
1186 Release 3.2.1 (16 Sept 2006)
1187 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1188 3.2.1 adds x86/amd64 support for all SSE3 instructions except monitor
1189 and mwait, further reduces memcheck's false error rate on all
1190 platforms, adds support for recent binutils (in OpenSUSE 10.2 and
1191 Fedora Rawhide) and fixes a bunch of bugs in 3.2.0. Some of the fixed
1192 bugs were causing large programs to segfault with --tool=callgrind and
1193 --tool=cachegrind, so an upgrade is recommended.
1195 In view of the fact that any 3.3.0 release is unlikely to happen until
1196 well into 1Q07, we intend to keep the 3.2.X line alive for a while
1197 yet, and so we tentatively plan a 3.2.2 release sometime in December
1200 The fixed bugs are as follows. Note that "n-i-bz" stands for "not in
1201 bugzilla" -- that is, a bug that was reported to us but never got a
1204 n-i-bz Expanding brk() into last available page asserts
1205 n-i-bz ppc64-linux stack RZ fast-case snafu
1206 n-i-bz 'c' in --gen-supps=yes doesn't work
1207 n-i-bz VG_N_SEGMENTS too low (users, 28 June)
1208 n-i-bz VG_N_SEGNAMES too low (Stu Robinson)
1209 106852 x86->IR: fisttp (SSE3)
1210 117172 FUTEX_WAKE does not use uaddr2
1211 124039 Lacks support for VKI_[GP]IO_UNIMAP*
1212 127521 amd64->IR: 0xF0 0x48 0xF 0xC7 (cmpxchg8b)
1213 128917 amd64->IR: 0x66 0xF 0xF6 0xC4 (psadbw,SSE2)
1214 129246 JJ: ppc32/ppc64 syscalls, w/ patch
1215 129358 x86->IR: fisttpl (SSE3)
1216 129866 cachegrind/callgrind causes executable to die
1217 130020 Can't stat .so/.exe error while reading symbols
1218 130388 Valgrind aborts when process calls malloc_trim()
1219 130638 PATCH: ppc32 missing system calls
1220 130785 amd64->IR: unhandled instruction "pushfq"
1221 131481: (HINT_NOP) vex x86->IR: 0xF 0x1F 0x0 0xF
1223 132146 Programs with long sequences of bswap[l,q]s
1224 132918 vex amd64->IR: 0xD9 0xF8 (fprem)
1225 132813 Assertion at priv/guest-x86/toIR.c:652 fails
1226 133051 'cfsi->len > 0 && cfsi->len < 2000000' failed
1227 132722 valgrind header files are not standard C
1228 n-i-bz Livelocks entire machine (users list, Timothy Terriberry)
1229 n-i-bz Alex Bennee mmap problem (9 Aug)
1230 n-i-bz BartV: Don't print more lines of a stack-trace than were obtained.
1231 n-i-bz ppc32 SuSE 10.1 redir
1232 n-i-bz amd64 padding suppressions
1233 n-i-bz amd64 insn printing fix.
1234 n-i-bz ppc cmp reg,reg fix
1235 n-i-bz x86/amd64 iropt e/rflag reduction rules
1236 n-i-bz SuSE 10.1 (ppc32) minor fixes
1237 133678 amd64->IR: 0x48 0xF 0xC5 0xC0 (pextrw?)
1238 133694 aspacem assertion: aspacem_minAddr <= holeStart
1239 n-i-bz callgrind: fix warning about malformed creator line
1240 n-i-bz callgrind: fix annotate script for data produced with
1242 n-i-bz callgrind: fix failed assertion when toggling
1243 instrumentation mode
1244 n-i-bz callgrind: fix annotate script fix warnings with
1246 n-i-bz docs path hardwired (Dennis Lubert)
1248 The following bugs were not fixed, due primarily to lack of developer
1249 time, and also because bug reporters did not answer requests for
1250 feedback in time for the release:
1252 129390 ppc?->IR: some kind of VMX prefetch (dstt)
1253 129968 amd64->IR: 0xF 0xAE 0x0 (fxsave)
1254 133054 'make install' fails with syntax errors
1255 n-i-bz Signal race condition (users list, 13 June, Johannes Berg)
1256 n-i-bz Unrecognised instruction at address 0x70198EC2 (users list,
1258 132998 startup fails in when running on UML
1260 The following bug was tentatively fixed on the mainline but the fix
1261 was considered too risky to push into 3.2.X:
1263 133154 crash when using client requests to register/deregister stack
1265 (3.2.1: 16 Sept 2006, vex r1658, valgrind r6070).
1268 Release 3.2.0 (7 June 2006)
1269 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
1270 3.2.0 is a feature release with many significant improvements and the
1271 usual collection of bug fixes. This release supports X86/Linux,
1272 AMD64/Linux, PPC32/Linux and PPC64/Linux.
1274 Performance, especially of Memcheck, is improved, Addrcheck has been
1275 removed, Callgrind has been added, PPC64/Linux support has been added,
1276 Lackey has been improved, and MPI support has been added. In detail:
1278 - Memcheck has improved speed and reduced memory use. Run times are
1279 typically reduced by 15-30%, averaging about 24% for SPEC CPU2000.
1280 The other tools have smaller but noticeable speed improvments. We
1281 are interested to hear what improvements users get.
1283 Memcheck uses less memory due to the introduction of a compressed
1284 representation for shadow memory. The space overhead has been
1285 reduced by a factor of up to four, depending on program behaviour.
1286 This means you should be able to run programs that use more memory
1287 than before without hitting problems.
1289 - Addrcheck has been removed. It has not worked since version 2.4.0,
1290 and the speed and memory improvements to Memcheck make it redundant.
1291 If you liked using Addrcheck because it didn't give undefined value
1292 errors, you can use the new Memcheck option --undef-value-errors=no
1293 to get the same behaviour.
1295 - The number of undefined-value errors incorrectly reported by
1296 Memcheck has been reduced (such false reports were already very
1297 rare). In particular, efforts have been made to ensure Memcheck
1298 works really well with gcc 4.0/4.1-generated code on X86/Linux and
1301 - Josef Weidendorfer's popular Callgrind tool has been added. Folding
1302 it in was a logical step given its popularity and usefulness, and
1303 makes it easier for us to ensure it works "out of the box" on all
1304 supported targets. The associated KDE KCachegrind GUI remains a
1307 - A new release of the Valkyrie GUI for Memcheck, version 1.2.0,
1308 accompanies this release. Improvements over previous releases
1309 include improved robustness, many refinements to the user interface,
1310 and use of a standard autoconf/automake build system. You can get
1311 it from http://www.valgrind.org/downloads/guis.html.
1313 - Valgrind now works on PPC64/Linux. As with the AMD64/Linux port,
1314 this supports programs using to 32G of address space. On 64-bit
1315 capable PPC64/Linux setups, you get a dual architecture build so
1316 that both 32-bit and 64-bit executables can be run. Linux on POWER5
1317 is supported, and POWER4 is also believed to work. Both 32-bit and
1318 64-bit DWARF2 is supported. This port is known to work well with
1319 both gcc-compiled and xlc/xlf-compiled code.
1321 - Floating point accuracy has been improved for PPC32/Linux.
1322 Specifically, the floating point rounding mode is observed on all FP
1323 arithmetic operations, and multiply-accumulate instructions are
1324 preserved by the compilation pipeline. This means you should get FP
1325 results which are bit-for-bit identical to a native run. These
1326 improvements are also present in the PPC64/Linux port.
1328 - Lackey, the example tool, has been improved:
1330 * It has a new option --detailed-counts (off by default) which
1331 causes it to print out a count of loads, stores and ALU operations
1332 done, and their sizes.
1334 * It has a new option --trace-mem (off by default) which causes it
1335 to print out a trace of all memory accesses performed by a
1336 program. It's a good starting point for building Valgrind tools
1337 that need to track memory accesses. Read the comments at the top
1338 of the file lackey/lk_main.c for details.
1340 * The original instrumentation (counting numbers of instructions,
1341 jumps, etc) is now controlled by a new option --basic-counts. It
1344 - MPI support: partial support for debugging distributed applications
1345 using the MPI library specification has been added. Valgrind is
1346 aware of the memory state changes caused by a subset of the MPI
1347 functions, and will carefully check data passed to the (P)MPI_
1350 - A new flag, --error-exitcode=, has been added. This allows changing
1351 the exit code in runs where Valgrind reported errors, which is
1352 useful when using Valgrind as part of an automated test suite.
1354 - Various segfaults when reading old-style "stabs" debug information
1357 - A simple performance evaluation suite has been added. See
1358 perf/README and README_DEVELOPERS for details. There are
1359 various bells and whistles.
1361 - New configuration flags:
1364 By default, on 64 bit platforms (ppc64-linux, amd64-linux) the build
1365 system will attempt to build a Valgrind which supports both 32-bit
1366 and 64-bit executables. This may not be what you want, and you can
1367 override the default behaviour using these flags.
1369 Please note that Helgrind is still not working. We have made an
1370 important step towards making it work again, however, with the
1371 addition of function wrapping (see below).
1373 Other user-visible changes:
1375 - Valgrind now has the ability to intercept and wrap arbitrary
1376 functions. This is a preliminary step towards making Helgrind work
1377 again, and was required for MPI support.
1379 - There are some changes to Memcheck's client requests. Some of them
1382 MAKE_NOACCESS --> MAKE_MEM_NOACCESS
1383 MAKE_WRITABLE --> MAKE_MEM_UNDEFINED
1384 MAKE_READABLE --> MAKE_MEM_DEFINED
1386 CHECK_WRITABLE --> CHECK_MEM_IS_ADDRESSABLE
1387 CHECK_READABLE --> CHECK_MEM_IS_DEFINED
1388 CHECK_DEFINED --> CHECK_VALUE_IS_DEFINED
1390 The reason for the change is that the old names are subtly
1391 misleading. The old names will still work, but they are deprecated
1392 and may be removed in a future release.
1394 We also added a new client request:
1396 MAKE_MEM_DEFINED_IF_ADDRESSABLE(a, len)
1398 which is like MAKE_MEM_DEFINED but only affects a byte if the byte is
1399 already addressable.
1401 - The way client requests are encoded in the instruction stream has
1402 changed. Unfortunately, this means 3.2.0 will not honour client
1403 requests compiled into binaries using headers from earlier versions
1404 of Valgrind. We will try to keep the client request encodings more
1409 108258 NPTL pthread cleanup handlers not called
1410 117290 valgrind is sigKILL'd on startup
1412 118703 m_signals.c:1427 Assertion 'tst->status == VgTs_WaitSys'
1413 118466 add %reg, %reg generates incorrect validity for bit 0
1414 123210 New: strlen from ld-linux on amd64
1415 123244 DWARF2 CFI reader: unhandled CFI instruction 0:18
1416 123248 syscalls in glibc-2.4: openat, fstatat, symlinkat
1417 123258 socketcall.recvmsg(msg.msg_iov[i] points to uninit
1418 123535 mremap(new_addr) requires MREMAP_FIXED in 4th arg
1419 123836 small typo in the doc
1420 124029 ppc compile failed: `vor' gcc 3.3.5
1421 124222 Segfault: @@don't know what type ':' is
1422 124475 ppc32: crash (syscall?) timer_settime()
1423 124499 amd64->IR: 0xF 0xE 0x48 0x85 (femms)
1424 124528 FATAL: aspacem assertion failed: segment_is_sane
1425 124697 vex x86->IR: 0xF 0x70 0xC9 0x0 (pshufw)
1426 124892 vex x86->IR: 0xF3 0xAE (REPx SCASB)
1428 124808 ppc32: sys_sched_getaffinity() not handled
1429 n-i-bz Very long stabs strings crash m_debuginfo
1430 n-i-bz amd64->IR: 0x66 0xF 0xF5 (pmaddwd)
1431 125492 ppc32: support a bunch more syscalls
1432 121617 ppc32/64: coredumping gives assertion failure
1433 121814 Coregrind return error as exitcode patch
1435 125607 amd64->IR: 0x66 0xF 0xA3 0x2 (btw etc)
1436 125651 amd64->IR: 0xF8 0x49 0xFF 0xE3 (clc?)
1437 126253 x86 movx is wrong
1438 126451 3.2 SVN doesn't work on ppc32 CPU's without FPU
1439 126217 increase # threads
1440 126243 vex x86->IR: popw mem
1441 126583 amd64->IR: 0x48 0xF 0xA4 0xC2 (shld $1,%rax,%rdx)
1442 126668 amd64->IR: 0x1C 0xFF (sbb $0xff,%al)
1443 126696 support for CDROMREADRAW ioctl and CDROMREADTOCENTRY fix
1444 126722 assertion: segment_is_sane at m_aspacemgr/aspacemgr.c:1624
1445 126938 bad checking for syscalls linkat, renameat, symlinkat
1447 (3.2.0RC1: 27 May 2006, vex r1626, valgrind r5947).
1448 (3.2.0: 7 June 2006, vex r1628, valgrind r5957).
1451 Release 3.1.1 (15 March 2006)
1452 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1453 3.1.1 fixes a bunch of bugs reported in 3.1.0. There is no new
1454 functionality. The fixed bugs are:
1456 (note: "n-i-bz" means "not in bugzilla" -- this bug does not have
1459 n-i-bz ppc32: fsub 3,3,3 in dispatcher doesn't clear NaNs
1460 n-i-bz ppc32: __NR_{set,get}priority
1461 117332 x86: missing line info with icc 8.1
1462 117366 amd64: 0xDD 0x7C fnstsw
1464 117367 amd64: 0xD9 0xF4 fxtract
1465 117369 amd64: __NR_getpriority (140)
1466 117419 ppc32: lfsu f5, -4(r11)
1468 117936 more stabs problems (segfaults while reading debug info)
1471 118239 amd64: 0xF 0xAE 0x3F (clflush)
1472 118939 vm86old system call
1473 n-i-bz memcheck/tests/mempool reads freed memory
1474 n-i-bz AshleyP's custom-allocator assertion
1475 n-i-bz Dirk strict-aliasing stuff
1476 n-i-bz More space for debugger cmd line (Dan Thaler)
1477 n-i-bz Clarified leak checker output message
1478 n-i-bz AshleyP's --gen-suppressions output fix
1479 n-i-bz cg_annotate's --sort option broken
1480 n-i-bz OSet 64-bit fastcmp bug
1481 n-i-bz VG_(getgroups) fix (Shinichi Noda)
1482 n-i-bz ppc32: allocate from callee-saved FP/VMX regs
1483 n-i-bz misaligned path word-size bug in mc_main.c
1484 119297 Incorrect error message for sse code
1485 120410 x86: prefetchw (0xF 0xD 0x48 0x4)
1486 120728 TIOCSERGETLSR, TIOCGICOUNT, HDIO_GET_DMA ioctls
1487 120658 Build fixes for gcc 2.96
1488 120734 x86: Support for changing EIP in signal handler
1489 n-i-bz memcheck/tests/zeropage de-looping fix
1490 n-i-bz x86: fxtract doesn't work reliably
1491 121662 x86: lock xadd (0xF0 0xF 0xC0 0x2)
1492 121893 calloc does not always return zeroed memory
1493 121901 no support for syscall tkill
1494 n-i-bz Suppression update for Debian unstable
1495 122067 amd64: fcmovnu (0xDB 0xD9)
1496 n-i-bz ppc32: broken signal handling in cpu feature detection
1497 n-i-bz ppc32: rounding mode problems (improved, partial fix only)
1498 119482 ppc32: mtfsb1
1499 n-i-bz ppc32: mtocrf/mfocrf
1501 (3.1.1: 15 March 2006, vex r1597, valgrind r5771).
1504 Release 3.1.0 (25 November 2005)
1505 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1506 3.1.0 is a feature release with a number of significant improvements:
1507 AMD64 support is much improved, PPC32 support is good enough to be
1508 usable, and the handling of memory management and address space is
1509 much more robust. In detail:
1511 - AMD64 support is much improved. The 64-bit vs. 32-bit issues in
1512 3.0.X have been resolved, and it should "just work" now in all
1513 cases. On AMD64 machines both 64-bit and 32-bit versions of
1514 Valgrind are built. The right version will be invoked
1515 automatically, even when using --trace-children and mixing execution
1516 between 64-bit and 32-bit executables. Also, many more instructions
1519 - PPC32 support is now good enough to be usable. It should work with
1520 all tools, but please let us know if you have problems. Three
1521 classes of CPUs are supported: integer only (no FP, no Altivec),
1522 which covers embedded PPC uses, integer and FP but no Altivec
1523 (G3-ish), and CPUs capable of Altivec too (G4, G5).
1525 - Valgrind's address space management has been overhauled. As a
1526 result, Valgrind should be much more robust with programs that use
1527 large amounts of memory. There should be many fewer "memory
1528 exhausted" messages, and debug symbols should be read correctly on
1529 large (eg. 300MB+) executables. On 32-bit machines the full address
1530 space available to user programs (usually 3GB or 4GB) can be fully
1531 utilised. On 64-bit machines up to 32GB of space is usable; when
1532 using Memcheck that means your program can use up to about 14GB.
1534 A side effect of this change is that Valgrind is no longer protected
1535 against wild writes by the client. This feature was nice but relied
1536 on the x86 segment registers and so wasn't portable.
1538 - Most users should not notice, but as part of the address space
1539 manager change, the way Valgrind is built has been changed. Each
1540 tool is now built as a statically linked stand-alone executable,
1541 rather than as a shared object that is dynamically linked with the
1542 core. The "valgrind" program invokes the appropriate tool depending
1543 on the --tool option. This slightly increases the amount of disk
1544 space used by Valgrind, but it greatly simplified many things and
1545 removed Valgrind's dependence on glibc.
1547 Please note that Addrcheck and Helgrind are still not working. Work
1548 is underway to reinstate them (or equivalents). We apologise for the
1551 Other user-visible changes:
1553 - The --weird-hacks option has been renamed --sim-hints.
1555 - The --time-stamp option no longer gives an absolute date and time.
1556 It now prints the time elapsed since the program began.
1558 - It should build with gcc-2.96.
1560 - Valgrind can now run itself (see README_DEVELOPERS for how).
1561 This is not much use to you, but it means the developers can now
1562 profile Valgrind using Cachegrind. As a result a couple of
1563 performance bad cases have been fixed.
1565 - The XML output format has changed slightly. See
1566 docs/internals/xml-output.txt.
1568 - Core dumping has been reinstated (it was disabled in 3.0.0 and 3.0.1).
1569 If your program crashes while running under Valgrind, a core file with
1570 the name "vgcore.<pid>" will be created (if your settings allow core
1571 file creation). Note that the floating point information is not all
1572 there. If Valgrind itself crashes, the OS will create a normal core
1575 The following are some user-visible changes that occurred in earlier
1576 versions that may not have been announced, or were announced but not
1577 widely noticed. So we're mentioning them now.
1579 - The --tool flag is optional once again; if you omit it, Memcheck
1582 - The --num-callers flag now has a default value of 12. It was
1585 - The --xml=yes flag causes Valgrind's output to be produced in XML
1586 format. This is designed to make it easy for other programs to
1587 consume Valgrind's output. The format is described in the file
1588 docs/internals/xml-format.txt.
1590 - The --gen-suppressions flag supports an "all" value that causes every
1591 suppression to be printed without asking.
1593 - The --log-file option no longer puts "pid" in the filename, eg. the
1594 old name "foo.pid12345" is now "foo.12345".
1596 - There are several graphical front-ends for Valgrind, such as Valkyrie,
1597 Alleyoop and Valgui. See http://www.valgrind.org/downloads/guis.html
1602 109861 amd64 hangs at startup
1604 111554 valgrind crashes with Cannot allocate memory
1605 111809 Memcheck tool doesn't start java
1606 111901 cross-platform run of cachegrind fails on opteron
1607 113468 (vgPlain_mprotect_range): Assertion 'r != -1' failed.
1608 92071 Reading debugging info uses too much memory
1609 109744 memcheck loses track of mmap from direct ld-linux.so.2
1610 110183 tail of page with _end
1611 82301 FV memory layout too rigid
1612 98278 Infinite recursion possible when allocating memory
1613 108994 Valgrind runs out of memory due to 133x overhead
1614 115643 valgrind cannot allocate memory
1615 105974 vg_hashtable.c static hash table
1616 109323 ppc32: dispatch.S uses Altivec insn, which doesn't work on POWER.
1617 109345 ptrace_setregs not yet implemented for ppc
1618 110831 Would like to be able to run against both 32 and 64 bit
1621 111781 compile of valgrind-3.0.0 fails on my linux (gcc 2.X prob)
1622 112670 Cachegrind: cg_main.c:486 (handleOneStatement ...
1623 112941 vex x86: 0xD9 0xF4 (fxtract)
1625 113015 vex amd64->IR: 0xE3 0x14 0x48 0x83 (jrcxz)
1626 113126 Crash with binaries built with -gstabs+/-ggdb
1629 113403 Partial SSE3 support on x86
1630 113541 vex: Grp5(x86) (alt encoding inc/dec) case 1
1631 113642 valgrind crashes when trying to read debug information
1632 113810 vex x86->IR: 66 0F F6 (66 + PSADBW == SSE PSADBW)
1633 113796 read() and write() do not work if buffer is in shared memory
1634 113851 vex x86->IR: (pmaddwd): 0x66 0xF 0xF5 0xC7
1635 114366 vex amd64 cannnot handle __asm__( "fninit" )
1636 114412 vex amd64->IR: 0xF 0xAD 0xC2 0xD3 (128-bit shift, shrdq?)
1637 114455 vex amd64->IR: 0xF 0xAC 0xD0 0x1 (also shrdq)
1638 115590: amd64->IR: 0x67 0xE3 0x9 0xEB (address size override)
1639 115953 valgrind svn r5042 does not build with parallel make (-j3)
1640 116057 maximum instruction size - VG_MAX_INSTR_SZB too small?
1641 116483 shmat failes with invalid argument
1642 102202 valgrind crashes when realloc'ing until out of memory
1646 111724 vex amd64->IR: 0x41 0xF 0xAB (more BT{,S,R,C} fun n games)
1647 111748 vex amd64->IR: 0xDD 0xE2 (fucom)
1648 111785 make fails if CC contains spaces
1649 111829 vex x86->IR: sbb AL, Ib
1650 111851 vex x86->IR: 0x9F 0x89 (lahf/sahf)
1651 112031 iopl on AMD64 and README_MISSING_SYSCALL_OR_IOCTL update
1652 112152 code generation for Xin_MFence on x86 with SSE0 subarch
1655 112199 naked ar tool is used in vex makefile
1656 112501 vex x86->IR: movq (0xF 0x7F 0xC1 0xF) (mmx MOVQ)
1658 112538 memalign crash
1659 113190 Broken links in docs/html/
1660 113230 Valgrind sys_pipe on x86-64 wrongly thinks file descriptors
1662 113996 vex amd64->IR: fucomp (0xDD 0xE9)
1663 114196 vex x86->IR: out %eax,(%dx) (0xEF 0xC9 0xC3 0x90)
1664 114289 Memcheck fails to intercept malloc when used in an uclibc environment
1665 114756 mbind syscall support
1666 114757 Valgrind dies with assertion: Assertion 'noLargerThan > 0' failed
1667 114563 stack tracking module not informed when valgrind switches threads
1668 114564 clone() and stacks
1670 115496 glibc crashes trying to use sysinfo page
1671 116200 enable fsetxattr, fgetxattr, and fremovexattr for amd64
1673 (3.1.0RC1: 20 November 2005, vex r1466, valgrind r5224).
1674 (3.1.0: 26 November 2005, vex r1471, valgrind r5235).
1677 Release 3.0.1 (29 August 2005)
1678 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1679 3.0.1 fixes a bunch of bugs reported in 3.0.0. There is no new
1680 functionality. Some of the fixed bugs are critical, so if you
1681 use/distribute 3.0.0, an upgrade to 3.0.1 is recommended. The fixed
1684 (note: "n-i-bz" means "not in bugzilla" -- this bug does not have
1687 109313 (== 110505) x86 cmpxchg8b
1688 n-i-bz x86: track but ignore changes to %eflags.AC (alignment check)
1689 110102 dis_op2_E_G(amd64)
1690 110202 x86 sys_waitpid(#286)
1691 110203 clock_getres(,0)
1692 110208 execve fail wrong retval
1693 110274 SSE1 now mandatory for x86
1694 110388 amd64 0xDD 0xD1
1695 110464 amd64 0xDC 0x1D FCOMP
1696 110478 amd64 0xF 0xD PREFETCH
1697 n-i-bz XML <unique> printing wrong
1698 n-i-bz Dirk r4359 (amd64 syscalls from trunk)
1699 110591 amd64 and x86: rdtsc not implemented properly
1700 n-i-bz Nick r4384 (stub implementations of Addrcheck and Helgrind)
1701 110652 AMD64 valgrind crashes on cwtd instruction
1702 110653 AMD64 valgrind crashes on sarb $0x4,foo(%rip) instruction
1703 110656 PATH=/usr/bin::/bin valgrind foobar stats ./fooba
1704 110657 Small test fixes
1705 110671 vex x86->IR: unhandled instruction bytes: 0xF3 0xC3 (rep ret)
1706 n-i-bz Nick (Cachegrind should not assert when it encounters a client
1708 110685 amd64->IR: unhandled instruction bytes: 0xE1 0x56 (loope Jb)
1709 110830 configuring with --host fails to build 32 bit on 64 bit target
1710 110875 Assertion when execve fails
1711 n-i-bz Updates to Memcheck manual
1712 n-i-bz Fixed broken malloc_usable_size()
1713 110898 opteron instructions missing: btq btsq btrq bsfq
1714 110954 x86->IR: unhandled instruction bytes: 0xE2 0xF6 (loop Jb)
1715 n-i-bz Make suppressions work for "???" lines in stacktraces.
1716 111006 bogus warnings from linuxthreads
1717 111092 x86: dis_Grp2(Reg): unhandled case(x86)
1718 111231 sctp_getladdrs() and sctp_getpaddrs() returns uninitialized
1720 111102 (comment #4) Fixed 64-bit unclean "silly arg" message
1721 n-i-bz vex x86->IR: unhandled instruction bytes: 0x14 0x0
1722 n-i-bz minor umount/fcntl wrapper fixes
1723 111090 Internal Error running Massif
1724 101204 noisy warning
1725 111513 Illegal opcode for SSE instruction (x86 movups)
1726 111555 VEX/Makefile: CC is set to gcc
1727 n-i-bz Fix XML bugs in FAQ
1729 (3.0.1: 29 August 05,
1730 vex/branches/VEX_3_0_BRANCH r1367,
1731 valgrind/branches/VALGRIND_3_0_BRANCH r4574).
1735 Release 3.0.0 (3 August 2005)
1736 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1737 3.0.0 is a major overhaul of Valgrind. The most significant user
1738 visible change is that Valgrind now supports architectures other than
1739 x86. The new architectures it supports are AMD64 and PPC32, and the
1740 infrastructure is present for other architectures to be added later.
1742 AMD64 support works well, but has some shortcomings:
1744 - It generally won't be as solid as the x86 version. For example,
1745 support for more obscure instructions and system calls may be missing.
1746 We will fix these as they arise.
1748 - Address space may be limited; see the point about
1749 position-independent executables below.
1751 - If Valgrind is built on an AMD64 machine, it will only run 64-bit
1752 executables. If you want to run 32-bit x86 executables under Valgrind
1753 on an AMD64, you will need to build Valgrind on an x86 machine and
1754 copy it to the AMD64 machine. And it probably won't work if you do
1755 something tricky like exec'ing a 32-bit program from a 64-bit program
1756 while using --trace-children=yes. We hope to improve this situation
1759 The PPC32 support is very basic. It may not work reliably even for
1760 small programs, but it's a start. Many thanks to Paul Mackerras for
1761 his great work that enabled this support. We are working to make
1762 PPC32 usable as soon as possible.
1764 Other user-visible changes:
1766 - Valgrind is no longer built by default as a position-independent
1767 executable (PIE), as this caused too many problems.
1769 Without PIE enabled, AMD64 programs will only be able to access 2GB of
1770 address space. We will fix this eventually, but not for the moment.
1772 Use --enable-pie at configure-time to turn this on.
1774 - Support for programs that use stack-switching has been improved. Use
1775 the --max-stackframe flag for simple cases, and the
1776 VALGRIND_STACK_REGISTER, VALGRIND_STACK_DEREGISTER and
1777 VALGRIND_STACK_CHANGE client requests for trickier cases.
1779 - Support for programs that use self-modifying code has been improved,
1780 in particular programs that put temporary code fragments on the stack.
1781 This helps for C programs compiled with GCC that use nested functions,
1782 and also Ada programs. This is controlled with the --smc-check
1783 flag, although the default setting should work in most cases.
1785 - Output can now be printed in XML format. This should make it easier
1786 for tools such as GUI front-ends and automated error-processing
1787 schemes to use Valgrind output as input. The --xml flag controls this.
1788 As part of this change, ELF directory information is read from executables,
1789 so absolute source file paths are available if needed.
1791 - Programs that allocate many heap blocks may run faster, due to
1792 improvements in certain data structures.
1794 - Addrcheck is currently not working. We hope to get it working again
1795 soon. Helgrind is still not working, as was the case for the 2.4.0
1798 - The JITter has been completely rewritten, and is now in a separate
1799 library, called Vex. This enabled a lot of the user-visible changes,
1800 such as new architecture support. The new JIT unfortunately translates
1801 more slowly than the old one, so programs may take longer to start.
1802 We believe the code quality is produces is about the same, so once
1803 started, programs should run at about the same speed. Feedback about
1804 this would be useful.
1806 On the plus side, Vex and hence Memcheck tracks value flow properly
1807 through floating point and vector registers, something the 2.X line
1808 could not do. That means that Memcheck is much more likely to be
1809 usably accurate on vectorised code.
1811 - There is a subtle change to the way exiting of threaded programs
1812 is handled. In 3.0, Valgrind's final diagnostic output (leak check,
1813 etc) is not printed until the last thread exits. If the last thread
1814 to exit was not the original thread which started the program, any
1815 other process wait()-ing on this one to exit may conclude it has
1816 finished before the diagnostic output is printed. This may not be
1817 what you expect. 2.X had a different scheme which avoided this
1818 problem, but caused deadlocks under obscure circumstances, so we
1819 are trying something different for 3.0.
1821 - Small changes in control log file naming which make it easier to
1822 use valgrind for debugging MPI-based programs. The relevant
1823 new flags are --log-file-exactly= and --log-file-qualifier=.
1825 - As part of adding AMD64 support, DWARF2 CFI-based stack unwinding
1826 support was added. In principle this means Valgrind can produce
1827 meaningful backtraces on x86 code compiled with -fomit-frame-pointer
1828 providing you also compile your code with -fasynchronous-unwind-tables.
1830 - The documentation build system has been completely redone.
1831 The documentation masters are now in XML format, and from that
1832 HTML, PostScript and PDF documentation is generated. As a result
1833 the manual is now available in book form. Note that the
1834 documentation in the source tarballs is pre-built, so you don't need
1835 any XML processing tools to build Valgrind from a tarball.
1837 Changes that are not user-visible:
1839 - The code has been massively overhauled in order to modularise it.
1840 As a result we hope it is easier to navigate and understand.
1842 - Lots of code has been rewritten.
1846 110046 sz == 4 assertion failed
1847 109810 vex amd64->IR: unhandled instruction bytes: 0xA3 0x4C 0x70 0xD7
1848 109802 Add a plausible_stack_size command-line parameter ?
1849 109783 unhandled ioctl TIOCMGET (running hw detection tool discover)
1850 109780 unhandled ioctl BLKSSZGET (running fdisk -l /dev/hda)
1851 109718 vex x86->IR: unhandled instruction: ffreep
1852 109429 AMD64 unhandled syscall: 127 (sigpending)
1853 109401 false positive uninit in strchr from ld-linux.so.2
1854 109385 "stabs" parse failure
1855 109378 amd64: unhandled instruction REP NOP
1856 109376 amd64: unhandled instruction LOOP Jb
1857 109363 AMD64 unhandled instruction bytes
1858 109362 AMD64 unhandled syscall: 24 (sched_yield)
1859 109358 fork() won't work with valgrind-3.0 SVN
1860 109332 amd64 unhandled instruction: ADC Ev, Gv
1861 109314 Bogus memcheck report on amd64
1862 108883 Crash; vg_memory.c:905 (vgPlain_init_shadow_range):
1863 Assertion `vgPlain_defined_init_shadow_page()' failed.
1864 108349 mincore syscall parameter checked incorrectly
1865 108059 build infrastructure: small update
1866 107524 epoll_ctl event parameter checked on EPOLL_CTL_DEL
1867 107123 Vex dies with unhandled instructions: 0xD9 0x31 0xF 0xAE
1868 106841 auxmap & openGL problems
1869 106713 SDL_Init causes valgrind to exit
1870 106352 setcontext and makecontext not handled correctly
1871 106293 addresses beyond initial client stack allocation
1872 not checked in VALGRIND_DO_LEAK_CHECK
1873 106283 PIE client programs are loaded at address 0
1874 105831 Assertion `vgPlain_defined_init_shadow_page()' failed.
1875 105039 long run-times probably due to memory manager
1876 104797 valgrind needs to be aware of BLKGETSIZE64
1877 103594 unhandled instruction: FICOM
1878 103320 Valgrind 2.4.0 fails to compile with gcc 3.4.3 and -O0
1879 103168 potentially memory leak in coregrind/ume.c
1880 102039 bad permissions for mapped region at address 0xB7C73680
1881 101881 weird assertion problem
1882 101543 Support fadvise64 syscalls
1883 75247 x86_64/amd64 support (the biggest "bug" we have ever fixed)
1885 (3.0RC1: 27 July 05, vex r1303, valgrind r4283).
1886 (3.0.0: 3 August 05, vex r1313, valgrind r4316).
1890 Stable release 2.4.1 (1 August 2005)
1891 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1892 (The notes for this release have been lost. Sorry! It would have
1893 contained various bug fixes but no new features.)
1897 Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
1898 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1899 2.4.0 brings many significant changes and bug fixes. The most
1900 significant user-visible change is that we no longer supply our own
1901 pthread implementation. Instead, Valgrind is finally capable of
1902 running the native thread library, either LinuxThreads or NPTL.
1904 This means our libpthread has gone, along with the bugs associated
1905 with it. Valgrind now supports the kernel's threading syscalls, and
1906 lets you use your standard system libpthread. As a result:
1908 * There are many fewer system dependencies and strange library-related
1909 bugs. There is a small performance improvement, and a large
1910 stability improvement.
1912 * On the downside, Valgrind can no longer report misuses of the POSIX
1913 PThreads API. It also means that Helgrind currently does not work.
1914 We hope to fix these problems in a future release.
1916 Note that running the native thread libraries does not mean Valgrind
1917 is able to provide genuine concurrent execution on SMPs. We still
1918 impose the restriction that only one thread is running at any given
1921 There are many other significant changes too:
1923 * Memcheck is (once again) the default tool.
1925 * The default stack backtrace is now 12 call frames, rather than 4.
1927 * Suppressions can have up to 25 call frame matches, rather than 4.
1929 * Memcheck and Addrcheck use less memory. Under some circumstances,
1930 they no longer allocate shadow memory if there are large regions of
1931 memory with the same A/V states - such as an mmaped file.
1933 * The memory-leak detector in Memcheck and Addrcheck has been
1934 improved. It now reports more types of memory leak, including
1935 leaked cycles. When reporting leaked memory, it can distinguish
1936 between directly leaked memory (memory with no references), and
1937 indirectly leaked memory (memory only referred to by other leaked
1940 * Memcheck's confusion over the effect of mprotect() has been fixed:
1941 previously mprotect could erroneously mark undefined data as
1944 * Signal handling is much improved and should be very close to what
1945 you get when running natively.
1947 One result of this is that Valgrind observes changes to sigcontexts
1948 passed to signal handlers. Such modifications will take effect when
1949 the signal returns. You will need to run with --single-step=yes to
1952 * Valgrind is built in Position Independent Executable (PIE) format if
1953 your toolchain supports it. This allows it to take advantage of all
1954 the available address space on systems with 4Gbyte user address
1957 * Valgrind can now run itself (requires PIE support).
1959 * Syscall arguments are now checked for validity. Previously all
1960 memory used by syscalls was checked, but now the actual values
1961 passed are also checked.
1963 * Syscall wrappers are more robust against bad addresses being passed
1964 to syscalls: they will fail with EFAULT rather than killing Valgrind
1967 * Because clone() is directly supported, some non-pthread uses of it
1968 will work. Partial sharing (where some resources are shared, and
1969 some are not) is not supported.
1971 * open() and readlink() on /proc/self/exe are supported.
1975 88520 pipe+fork+dup2 kills the main program
1976 88604 Valgrind Aborts when using $VALGRIND_OPTS and user progra...
1977 88614 valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt...
1978 88703 Stabs parser fails to handle ";"
1979 88886 ioctl wrappers for TIOCMBIS and TIOCMBIC
1980 89032 valgrind pthread_cond_timedwait fails
1981 89106 the 'impossible' happened
1982 89139 Missing sched_setaffinity & sched_getaffinity
1983 89198 valgrind lacks support for SIOCSPGRP and SIOCGPGRP
1984 89263 Missing ioctl translations for scsi-generic and CD playing
1985 89440 tests/deadlock.c line endings
1986 89481 `impossible' happened: EXEC FAILED
1987 89663 valgrind 2.2.0 crash on Redhat 7.2
1988 89792 Report pthread_mutex_lock() deadlocks instead of returnin...
1989 90111 statvfs64 gives invalid error/warning
1990 90128 crash+memory fault with stabs generated by gnat for a run...
1991 90778 VALGRIND_CHECK_DEFINED() not as documented in memcheck.h
1992 90834 cachegrind crashes at end of program without reporting re...
1993 91028 valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio...
1994 91162 valgrind crash while debugging drivel 1.2.1
1995 91199 Unimplemented function
1996 91325 Signal routing does not propagate the siginfo structure
1997 91599 Assertion `cv == ((void *)0)'
1998 91604 rw_lookup clears orig and sends the NULL value to rw_new
1999 91821 Small problems building valgrind with $top_builddir ne $t...
2000 91844 signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec...
2001 92264 UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared
2002 92331 per-target flags necessitate AM_PROG_CC_C_O
2003 92420 valgrind doesn't compile with linux 2.6.8.1/9
2004 92513 Valgrind 2.2.0 generates some warning messages
2005 92528 vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed.
2006 93096 unhandled ioctl 0x4B3A and 0x5601
2007 93117 Tool and core interface versions do not match
2008 93128 Can't run valgrind --tool=memcheck because of unimplement...
2009 93174 Valgrind can crash if passed bad args to certain syscalls
2010 93309 Stack frame in new thread is badly aligned
2011 93328 Wrong types used with sys_sigprocmask()
2012 93763 /usr/include/asm/msr.h is missing
2013 93776 valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser...
2014 93810 fcntl() argument checking a bit too strict
2015 94378 Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed.
2016 94429 valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3
2017 94645 Impossible happened: PINSRW mem
2018 94953 valgrind: the `impossible' happened: SIGSEGV
2019 95667 Valgrind does not work with any KDE app
2020 96243 Assertion 'res==0' failed
2021 96252 stage2 loader of valgrind fails to allocate memory
2022 96520 All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ...
2023 96660 ioctl CDROMREADTOCENTRY causes bogus warnings
2024 96747 After looping in a segfault handler, the impossible happens
2025 96923 Zero sized arrays crash valgrind trace back with SIGFPE
2026 96948 valgrind stops with assertion failure regarding mmap2
2027 96966 valgrind fails when application opens more than 16 sockets
2028 97398 valgrind: vg_libpthread.c:2667 Assertion failed
2029 97407 valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `...
2030 97427 "Warning: invalid file descriptor -1 in syscall close()" ...
2031 97785 missing backtrace
2032 97792 build in obj dir fails - autoconf / makefile cleanup
2033 97880 pthread_mutex_lock fails from shared library (special ker...
2034 97975 program aborts without ang VG messages
2035 98129 Failed when open and close file 230000 times using stdio
2036 98175 Crashes when using valgrind-2.2.0 with a program using al...
2038 98303 UNIMPLEMENTED FUNCTION pthread_condattr_setpshared
2039 98630 failed--compilation missing warnings.pm, fails to make he...
2040 98756 Cannot valgrind signal-heavy kdrive X server
2041 98966 valgrinding the JVM fails with a sanity check assertion
2042 99035 Valgrind crashes while profiling
2043 99142 loops with message "Signal 11 being dropped from thread 0...
2044 99195 threaded apps crash on thread start (using QThread::start...
2045 99348 Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off...
2046 99568 False negative due to mishandling of mprotect
2047 99738 valgrind memcheck crashes on program that uses sigitimer
2048 99923 0-sized allocations are reported as leaks
2049 99949 program seg faults after exit()
2050 100036 "newSuperblock's request for 1048576 bytes failed"
2051 100116 valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ...
2052 100486 memcheck reports "valgrind: the `impossible' happened: V...
2053 100833 second call to "mremap" fails with EINVAL
2054 101156 (vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1...
2055 101173 Assertion `recDepth >= 0 && recDepth < 500' failed
2056 101291 creating threads in a forked process fails
2057 101313 valgrind causes different behavior when resizing a window...
2058 101423 segfault for c++ array of floats
2059 101562 valgrind massif dies on SIGINT even with signal handler r...
2062 Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0
2063 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2064 2.2.0 brings nine months worth of improvements and bug fixes. We
2065 believe it to be a worthy successor to 2.0.0. There are literally
2066 hundreds of bug fixes and minor improvements. There are also some
2067 fairly major user-visible changes:
2069 * A complete overhaul of handling of system calls and signals, and
2070 their interaction with threads. In general, the accuracy of the
2071 system call, thread and signal simulations is much improved:
2073 - Blocking system calls behave exactly as they do when running
2074 natively (not on valgrind). That is, if a syscall blocks only the
2075 calling thread when running natively, than it behaves the same on
2076 valgrind. No more mysterious hangs because V doesn't know that some
2077 syscall or other, should block only the calling thread.
2079 - Interrupted syscalls should now give more faithful results.
2081 - Signal contexts in signal handlers are supported.
2083 * Improvements to NPTL support to the extent that V now works
2084 properly on NPTL-only setups.
2086 * Greater isolation between Valgrind and the program being run, so
2087 the program is less likely to inadvertently kill Valgrind by
2090 * Massif: a new space profiling tool. Try it! It's cool, and it'll
2091 tell you in detail where and when your C/C++ code is allocating heap.
2092 Draws pretty .ps pictures of memory use against time. A potentially
2093 powerful tool for making sense of your program's space use.
2095 * File descriptor leakage checks. When enabled, Valgrind will print out
2096 a list of open file descriptors on exit.
2098 * Improved SSE2/SSE3 support.
2100 * Time-stamped output; use --time-stamp=yes
2104 Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.1.2
2105 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2106 2.2.0 is not much different from 2.1.2, released seven weeks ago.
2107 A number of bugs have been fixed, most notably #85658, which gave
2108 problems for quite a few people. There have been many internal
2109 cleanups, but those are not user visible.
2111 The following bugs have been fixed since 2.1.2:
2113 85658 Assert in coregrind/vg_libpthread.c:2326 (open64) !=
2115 This bug was reported multiple times, and so the following
2116 duplicates of it are also fixed: 87620, 85796, 85935, 86065,
2117 86919, 86988, 87917, 88156
2119 80716 Semaphore mapping bug caused by unmap (sem_destroy)
2120 (Was fixed prior to 2.1.2)
2122 86987 semctl and shmctl syscalls family is not handled properly
2124 86696 valgrind 2.1.2 + RH AS2.1 + librt
2126 86730 valgrind locks up at end of run with assertion failure
2129 86641 memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1
2130 (also fixes 74298, a duplicate of this)
2132 85947 MMX/SSE unhandled instruction 'sfence'
2134 84978 Wrong error "Conditional jump or move depends on
2135 uninitialised value" resulting from "sbbl %reg, %reg"
2137 86254 ssort() fails when signed int return type from comparison is
2138 too small to handle result of unsigned int subtraction
2140 87089 memalign( 4, xxx) makes valgrind assert
2142 86407 Add support for low-level parallel port driver ioctls.
2144 70587 Add timestamps to Valgrind output? (wishlist)
2146 84937 vg_libpthread.c:2505 (se_remap): Assertion `res == 0'
2147 (fixed prior to 2.1.2)
2149 86317 cannot load libSDL-1.2.so.0 using valgrind
2151 86989 memcpy from mac_replace_strmem.c complains about
2152 uninitialized pointers passed when length to copy is zero
2154 85811 gnu pascal symbol causes segmentation fault; ok in 2.0.0
2156 79138 writing to sbrk()'d memory causes segfault
2158 77369 sched deadlock while signal received during pthread_join
2159 and the joined thread exited
2161 88115 In signal handler for SIGFPE, siginfo->si_addr is wrong
2164 78765 Massif crashes on app exit if FP exceptions are enabled
2166 Additionally there are the following changes, which are not
2167 connected to any bug report numbers, AFAICS:
2169 * Fix scary bug causing mis-identification of SSE stores vs
2170 loads and so causing memcheck to sometimes give nonsense results
2173 * Add support for the POSIX message queue system calls.
2175 * Fix to allow 32-bit Valgrind to run on AMD64 boxes. Note: this does
2176 NOT allow Valgrind to work with 64-bit executables - only with 32-bit
2177 executables on an AMD64 box.
2179 * At configure time, only check whether linux/mii.h can be processed
2180 so that we don't generate ugly warnings by trying to compile it.
2182 * Add support for POSIX clocks and timers.
2186 Developer (cvs head) release 2.1.2 (18 July 2004)
2187 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2188 2.1.2 contains four months worth of bug fixes and refinements.
2189 Although officially a developer release, we believe it to be stable
2190 enough for widespread day-to-day use. 2.1.2 is pretty good, so try it
2191 first, although there is a chance it won't work. If so then try 2.0.0
2192 and tell us what went wrong." 2.1.2 fixes a lot of problems present
2193 in 2.0.0 and is generally a much better product.
2195 Relative to 2.1.1, a large number of minor problems with 2.1.1 have
2196 been fixed, and so if you use 2.1.1 you should try 2.1.2. Users of
2197 the last stable release, 2.0.0, might also want to try this release.
2199 The following bugs, and probably many more, have been fixed. These
2200 are listed at http://bugs.kde.org. Reporting a bug for valgrind in
2201 the http://bugs.kde.org is much more likely to get you a fix than
2202 mailing developers directly, so please continue to keep sending bugs
2205 76869 Crashes when running any tool under Fedora Core 2 test1
2206 This fixes the problem with returning from a signal handler
2207 when VDSOs are turned off in FC2.
2209 69508 java 1.4.2 client fails with erroneous "stack size too small".
2210 This fix makes more of the pthread stack attribute related
2211 functions work properly. Java still doesn't work though.
2213 71906 malloc alignment should be 8, not 4
2214 All memory returned by malloc/new etc is now at least
2217 81970 vg_alloc_ThreadState: no free slots available
2218 (closed because the workaround is simple: increase
2219 VG_N_THREADS, rebuild and try again.)
2221 78514 Conditional jump or move depends on uninitialized value(s)
2222 (a slight mishanding of FP code in memcheck)
2224 77952 pThread Support (crash) (due to initialisation-ordering probs)
2227 80942 Addrcheck wasn't doing overlap checking as it should.
2228 78048 return NULL on malloc/new etc failure, instead of asserting
2229 73655 operator new() override in user .so files often doesn't get picked up
2230 83060 Valgrind does not handle native kernel AIO
2231 69872 Create proper coredumps after fatal signals
2232 82026 failure with new glibc versions: __libc_* functions are not exported
2233 70344 UNIMPLEMENTED FUNCTION: tcdrain
2234 81297 Cancellation of pthread_cond_wait does not require mutex
2235 82872 Using debug info from additional packages (wishlist)
2236 83025 Support for ioctls FIGETBSZ and FIBMAP
2237 83340 Support for ioctl HDIO_GET_IDENTITY
2238 79714 Support for the semtimedop system call.
2239 77022 Support for ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO
2240 82098 hp2ps ansification (wishlist)
2241 83573 Valgrind SIGSEGV on execve
2242 82999 show which cmdline option was erroneous (wishlist)
2243 83040 make valgrind VPATH and distcheck-clean (wishlist)
2244 83998 Assertion `newfd > vgPlain_max_fd' failed (see below)
2245 82722 Unchecked mmap in as_pad leads to mysterious failures later
2246 78958 memcheck seg faults while running Mozilla
2247 85416 Arguments with colon (e.g. --logsocket) ignored
2250 Additionally there are the following changes, which are not
2251 connected to any bug report numbers, AFAICS:
2253 * Rearranged address space layout relative to 2.1.1, so that
2254 Valgrind/tools will run out of memory later than currently in many
2255 circumstances. This is good news esp. for Calltree. It should
2256 be possible for client programs to allocate over 800MB of
2257 memory when using memcheck now.
2259 * Improved checking when laying out memory. Should hopefully avoid
2260 the random segmentation faults that 2.1.1 sometimes caused.
2262 * Support for Fedora Core 2 and SuSE 9.1. Improvements to NPTL
2263 support to the extent that V now works properly on NPTL-only setups.
2265 * Renamed the following options:
2266 --logfile-fd --> --log-fd
2267 --logfile --> --log-file
2268 --logsocket --> --log-socket
2269 to be consistent with each other and other options (esp. --input-fd).
2271 * Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and
2272 improve the checking of other interface related ioctls.
2274 * Fix building with gcc-3.4.1.
2276 * Remove limit on number of semaphores supported.
2278 * Add support for syscalls: set_tid_address (258), acct (51).
2280 * Support instruction "repne movs" -- not official but seems to occur.
2282 * Implement an emulated soft limit for file descriptors in addition to
2283 the current reserved area, which effectively acts as a hard limit. The
2284 setrlimit system call now simply updates the emulated limits as best
2285 as possible - the hard limit is not allowed to move at all and just
2286 returns EPERM if you try and change it. This should stop reductions
2287 in the soft limit causing assertions when valgrind tries to allocate
2288 descriptors from the reserved area.
2289 (This actually came from bug #83998).
2291 * Major overhaul of Cachegrind implementation. First user-visible change
2292 is that cachegrind.out files are now typically 90% smaller than they
2293 used to be; code annotation times are correspondingly much smaller.
2294 Second user-visible change is that hit/miss counts for code that is
2295 unloaded at run-time is no longer dumped into a single "discard" pile,
2296 but accurately preserved.
2298 * Client requests for telling valgrind about memory pools.
2302 Developer (cvs head) release 2.1.1 (12 March 2004)
2303 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2304 2.1.1 contains some internal structural changes needed for V's
2305 long-term future. These don't affect end-users. Most notable
2306 user-visible changes are:
2308 * Greater isolation between Valgrind and the program being run, so
2309 the program is less likely to inadvertently kill Valgrind by
2312 * Massif: a new space profiling tool. Try it! It's cool, and it'll
2313 tell you in detail where and when your C/C++ code is allocating heap.
2314 Draws pretty .ps pictures of memory use against time. A potentially
2315 powerful tool for making sense of your program's space use.
2317 * Fixes for many bugs, including support for more SSE2/SSE3 instructions,
2318 various signal/syscall things, and various problems with debug
2321 * Support for glibc-2.3.3 based systems.
2323 We are now doing automatic overnight build-and-test runs on a variety
2324 of distros. As a result, we believe 2.1.1 builds and runs on:
2325 Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9.
2328 The following bugs, and probably many more, have been fixed. These
2329 are listed at http://bugs.kde.org. Reporting a bug for valgrind in
2330 the http://bugs.kde.org is much more likely to get you a fix than
2331 mailing developers directly, so please continue to keep sending bugs
2334 69616 glibc 2.3.2 w/NPTL is massively different than what valgrind expects
2335 69856 I don't know how to instrument MMXish stuff (Helgrind)
2336 73892 valgrind segfaults starting with Objective-C debug info
2337 (fix for S-type stabs)
2338 73145 Valgrind complains too much about close(<reserved fd>)
2339 73902 Shadow memory allocation seems to fail on RedHat 8.0
2340 68633 VG_N_SEMAPHORES too low (V itself was leaking semaphores)
2341 75099 impossible to trace multiprocess programs
2342 76839 the `impossible' happened: disInstr: INT but not 0x80 !
2343 76762 vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed.
2344 76747 cannot include valgrind.h in c++ program
2345 76223 parsing B(3,10) gave NULL type => impossible happens
2346 75604 shmdt handling problem
2347 76416 Problems with gcc 3.4 snap 20040225
2348 75614 using -gstabs when building your programs the `impossible' happened
2349 75787 Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET,
2350 75294 gcc 3.4 snapshot's libstdc++ have unsupported instructions.
2352 73326 vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed.
2353 72596 not recognizing __libc_malloc
2354 69489 Would like to attach ddd to running program
2355 72781 Cachegrind crashes with kde programs
2356 73055 Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes)
2357 73026 Descriptor leak check reports port numbers wrongly
2358 71705 README_MISSING_SYSCALL_OR_IOCTL out of date
2359 72643 Improve support for SSE/SSE2 instructions
2360 72484 valgrind leaves it's own signal mask in place when execing
2361 72650 Signal Handling always seems to restart system calls
2362 72006 The mmap system call turns all errors in ENOMEM
2363 71781 gdb attach is pretty useless
2364 71180 unhandled instruction bytes: 0xF 0xAE 0x85 0xE8
2365 69886 writes to zero page cause valgrind to assert on exit
2366 71791 crash when valgrinding gimp 1.3 (stabs reader problem)
2367 69783 unhandled syscall: 218
2368 69782 unhandled instruction bytes: 0x66 0xF 0x2B 0x80
2369 70385 valgrind fails if the soft file descriptor limit is less
2371 69529 "rep; nop" should do a yield
2372 70827 programs with lots of shared libraries report "mmap failed"
2373 for some of them when reading symbols
2374 71028 glibc's strnlen is optimised enough to confuse valgrind
2379 Unstable (cvs head) release 2.1.0 (15 December 2003)
2380 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2381 For whatever it's worth, 2.1.0 actually seems pretty darn stable to me
2382 (Julian). It looks eminently usable, and given that it fixes some
2383 significant bugs, may well be worth using on a day-to-day basis.
2384 2.1.0 is known to build and pass regression tests on: SuSE 9, SuSE
2387 2.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of
2388 handling of system calls and signals, and their interaction with
2389 threads. In general, the accuracy of the system call, thread and
2390 signal simulations is much improved. Specifically:
2392 - Blocking system calls behave exactly as they do when running
2393 natively (not on valgrind). That is, if a syscall blocks only the
2394 calling thread when running natively, than it behaves the same on
2395 valgrind. No more mysterious hangs because V doesn't know that some
2396 syscall or other, should block only the calling thread.
2398 - Interrupted syscalls should now give more faithful results.
2400 - Finally, signal contexts in signal handlers are supported. As a
2401 result, konqueror on SuSE 9 no longer segfaults when notified of
2402 file changes in directories it is watching.
2406 - Robert Walsh's file descriptor leakage checks. When enabled,
2407 Valgrind will print out a list of open file descriptors on
2408 exit. Along with each file descriptor, Valgrind prints out a stack
2409 backtrace of where the file was opened and any details relating to the
2410 file descriptor such as the file name or socket details.
2411 To use, give: --track-fds=yes
2413 - Implemented a few more SSE/SSE2 instructions.
2415 - Less crud on the stack when you do 'where' inside a GDB attach.
2417 - Fixed the following bugs:
2418 68360: Valgrind does not compile against 2.6.0-testX kernels
2419 68525: CVS head doesn't compile on C90 compilers
2420 68566: pkgconfig support (wishlist)
2421 68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr)
2422 69140: valgrind not able to explicitly specify a path to a binary.
2423 69432: helgrind asserts encountering a MutexErr when there are
2424 EraserErr suppressions
2426 - Increase the max size of the translation cache from 200k average bbs
2427 to 300k average bbs. Programs on the size of OOo (680m17) are
2428 thrashing the cache at the smaller size, creating large numbers of
2429 retranslations and wasting significant time as a result.
2433 Stable release 2.0.0 (5 Nov 2003)
2434 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2436 2.0.0 improves SSE/SSE2 support, fixes some minor bugs, and
2437 improves support for SuSE 9 and the Red Hat "Severn" beta.
2439 - Further improvements to SSE/SSE2 support. The entire test suite of
2440 the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1
2441 20030307Z '-g -O -xW' now works. I think this gives pretty good
2442 coverage of SSE/SSE2 floating point instructions, or at least the
2443 subset emitted by Icc.
2445 - Also added support for the following instructions:
2446 MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS
2447 PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS).
2449 - CFI support for GDB version 6. Needed to enable newer GDBs
2450 to figure out where they are when using --gdb-attach=yes.
2453 mc_translate.c:1091 (memcheck_instrument): Assertion
2454 `u_in->size == 4 || u_in->size == 16' failed.
2456 - Return an error rather than panicing when given a bad socketcall.
2458 - Fix checking of syscall rt_sigtimedwait().
2460 - Implement __NR_clock_gettime (syscall 265). Needed on Red Hat Severn.
2462 - Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n'
2463 bytes long, when it could be shorter, which could cause false
2466 - Support use of select() for very large numbers of file descriptors.
2468 - Don't fail silently if the executable is statically linked, or is
2469 setuid/setgid. Print an error message instead.
2471 - Support for old DWARF-1 format line number info.
2475 Snapshot 20031012 (12 October 2003)
2476 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2478 Three months worth of bug fixes, roughly. Most significant single
2479 change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
2481 20031012 builds on Red Hat Fedora ("Severn") but doesn't really work
2482 (curiosly, mozilla runs OK, but a modest "ls -l" bombs). I hope to
2483 get a working version out soon. It may or may not work ok on the
2484 forthcoming SuSE 9; I hear positive noises about it but haven't been
2485 able to verify this myself (not until I get hold of a copy of 9).
2487 A detailed list of changes, in no particular order:
2489 - Describe --gen-suppressions in the FAQ.
2491 - Syscall __NR_waitpid supported.
2493 - Minor MMX bug fix.
2495 - -v prints program's argv[] at startup.
2497 - More glibc-2.3 suppressions.
2499 - Suppressions for stack underrun bug(s) in the c++ support library
2500 distributed with Intel Icc 7.0.
2502 - Fix problems reading /proc/self/maps.
2504 - Fix a couple of messages that should have been suppressed by -q,
2507 - Make Addrcheck understand "Overlap" suppressions.
2509 - At startup, check if program is statically linked and bail out if so.
2511 - Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
2513 - Memcheck/addrcheck: minor speed optimisations
2515 - Handle syscall __NR_brk more correctly than before.
2517 - Fixed incorrect allocate/free mismatch errors when using
2518 operator new(unsigned, std::nothrow_t const&)
2519 operator new[](unsigned, std::nothrow_t const&)
2521 - Support POSIX pthread spinlocks.
2523 - Fixups for clean compilation with gcc-3.3.1.
2525 - Implemented more opcodes:
2537 - all "in" and "out" opcodes
2539 - A whole bunch of SSE/SSE2 instructions
2541 - Memcheck: don't bomb on SSE/SSE2 code.
2544 Snapshot 20030725 (25 July 2003)
2545 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2547 Fixes some minor problems in 20030716.
2549 - Fix bugs in overlap checking for strcpy/memcpy etc.
2551 - Do overlap checking with Addrcheck as well as Memcheck.
2554 Memcheck: the `impossible' happened:
2555 get_error_name: unexpected type
2557 - Install headers needed to compile new skins.
2559 - Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD
2560 passed to non-traced children.
2562 - Fix file descriptor leak in valgrind-listener.
2564 - Fix longstanding bug in which the allocation point of a
2565 block resized by realloc was not correctly set. This may
2566 have caused confusing error messages.
2569 Snapshot 20030716 (16 July 2003)
2570 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2572 20030716 is a snapshot of our current CVS head (development) branch.
2573 This is the branch which will become valgrind-2.0. It contains
2574 significant enhancements over the 1.9.X branch.
2576 Despite this being a snapshot of the CVS head, it is believed to be
2577 quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so
2578 -- and therefore suitable for widespread use. Please let us know asap
2579 if it causes problems for you.
2581 Two reasons for releasing a snapshot now are:
2583 - It's been a while since 1.9.6, and this snapshot fixes
2584 various problems that 1.9.6 has with threaded programs
2585 on glibc-2.3.X based systems.
2587 - So as to make available improvements in the 2.0 line.
2589 Major changes in 20030716, as compared to 1.9.6:
2591 - More fixes to threading support on glibc-2.3.1 and 2.3.2-based
2592 systems (SuSE 8.2, Red Hat 9). If you have had problems
2593 with inconsistent/illogical behaviour of errno, h_errno or the DNS
2594 resolver functions in threaded programs, 20030716 should improve
2595 matters. This snapshot seems stable enough to run OpenOffice.org
2596 1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big
2597 threaded app if ever I saw one.
2599 - Automatic generation of suppression records; you no longer
2600 need to write them by hand. Use --gen-suppressions=yes.
2602 - strcpy/memcpy/etc check their arguments for overlaps, when
2603 running with the Memcheck or Addrcheck skins.
2605 - malloc_usable_size() is now supported.
2607 - new client requests:
2608 - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS:
2609 useful with regression testing
2610 - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions
2611 on real CPU (use with caution!)
2613 - The GDB attach mechanism is more flexible. Allow the GDB to
2614 be run to be specified by --gdb-path=/path/to/gdb, and specify
2615 which file descriptor V will read its input from with
2616 --input-fd=<number>.
2618 - Cachegrind gives more accurate results (wasn't tracking instructions in
2619 malloc() and friends previously, is now).
2621 - Complete support for the MMX instruction set.
2623 - Partial support for the SSE and SSE2 instruction sets. Work for this
2624 is ongoing. About half the SSE/SSE2 instructions are done, so
2625 some SSE based programs may work. Currently you need to specify
2626 --skin=addrcheck. Basically not suitable for real use yet.
2628 - Significant speedups (10%-20%) for standard memory checking.
2630 - Fix assertion failure in pthread_once().
2633 valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select):
2634 Assertion `ms_end >= ms_now' failed.
2636 - Implement pthread_mutexattr_setpshared.
2638 - Understand Pentium 4 branch hints. Also implemented a couple more
2639 obscure x86 instructions.
2641 - Lots of other minor bug fixes.
2643 - We have a decent regression test system, for the first time.
2644 This doesn't help you directly, but it does make it a lot easier
2645 for us to track the quality of the system, especially across
2646 multiple linux distributions.
2648 You can run the regression tests with 'make regtest' after 'make
2649 install' completes. On SuSE 8.2 and Red Hat 9 I get this:
2651 == 84 tests, 0 stderr failures, 0 stdout failures ==
2653 On Red Hat 8, I get this:
2655 == 84 tests, 2 stderr failures, 1 stdout failure ==
2656 corecheck/tests/res_search (stdout)
2657 memcheck/tests/sigaltstack (stderr)
2659 sigaltstack is probably harmless. res_search doesn't work
2660 on R H 8 even running natively, so I'm not too worried.
2662 On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures:
2664 == 84 tests, 2 stderr failures, 1 stdout failure ==
2665 corecheck/tests/pth_atfork1 (stdout)
2666 corecheck/tests/pth_atfork1 (stderr)
2667 memcheck/tests/sigaltstack (stderr)
2669 You need to run on a PII system, at least, since some tests
2670 contain P6-specific instructions, and the test machine needs
2671 access to the internet so that corecheck/tests/res_search
2672 (a test that the DNS resolver works) can function.
2674 As ever, thanks for the vast amount of feedback :) and bug reports :(
2675 We may not answer all messages, but we do at least look at all of
2676 them, and tend to fix the most frequently reported bugs.
2680 Version 1.9.6 (7 May 2003 or thereabouts)
2681 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2683 Major changes in 1.9.6:
2685 - Improved threading support for glibc >= 2.3.2 (SuSE 8.2,
2686 RedHat 9, to name but two ...) It turned out that 1.9.5
2687 had problems with threading support on glibc >= 2.3.2,
2688 usually manifested by threaded programs deadlocking in system calls,
2689 or running unbelievably slowly. Hopefully these are fixed now. 1.9.6
2690 is the first valgrind which gives reasonable support for
2691 glibc-2.3.2. Also fixed a 2.3.2 problem with pthread_atfork().
2693 - Majorly expanded FAQ.txt. We've added workarounds for all
2694 common problems for which a workaround is known.
2696 Minor changes in 1.9.6:
2698 - Fix identification of the main thread's stack. Incorrect
2699 identification of it was causing some on-stack addresses to not get
2700 identified as such. This only affected the usefulness of some error
2701 messages; the correctness of the checks made is unchanged.
2703 - Support for kernels >= 2.5.68.
2705 - Dummy implementations of __libc_current_sigrtmin,
2706 __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully
2707 good enough to keep alive programs which previously died for lack of
2710 - Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request.
2712 - Fix bug in the DWARF2 debug line info loader, when instructions
2713 following each other have source lines far from each other
2714 (e.g. with inlined functions).
2716 - Debug info reading: read symbols from both "symtab" and "dynsym"
2717 sections, rather than merely from the one that comes last in the
2720 - New syscall support: prctl(), creat(), lookup_dcookie().
2722 - When checking calls to accept(), recvfrom(), getsocketopt(),
2723 don't complain if buffer values are NULL.
2725 - Try and avoid assertion failures in
2726 mash_LD_PRELOAD_and_LD_LIBRARY_PATH.
2728 - Minor bug fixes in cg_annotate.
2732 Version 1.9.5 (7 April 2003)
2733 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2735 It occurs to me that it would be helpful for valgrind users to record
2736 in the source distribution the changes in each release. So I now
2737 attempt to mend my errant ways :-) Changes in this and future releases
2738 will be documented in the NEWS file in the source distribution.
2740 Major changes in 1.9.5:
2742 - (Critical bug fix): Fix a bug in the FPU simulation. This was
2743 causing some floating point conditional tests not to work right.
2744 Several people reported this. If you had floating point code which
2745 didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5.
2747 - Partial support for Red Hat 9. RH9 uses the new Native Posix
2748 Threads Library (NPTL), instead of the older LinuxThreads.
2749 This potentially causes problems with V which will take some
2750 time to correct. In the meantime we have partially worked around
2751 this, and so 1.9.5 works on RH9. Threaded programs still work,
2752 but they may deadlock, because some system calls (accept, read,
2753 write, etc) which should be nonblocking, in fact do block. This
2754 is a known bug which we are looking into.
2756 If you can, your best bet (unfortunately) is to avoid using
2757 1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution.
2758 If your glibc is 2.3.1 or earlier, you're almost certainly OK.
2760 Minor changes in 1.9.5:
2762 - Added some #errors to valgrind.h to ensure people don't include
2763 it accidentally in their sources. This is a change from 1.0.X
2764 which was never properly documented. The right thing to include
2765 is now memcheck.h. Some people reported problems and strange
2766 behaviour when (incorrectly) including valgrind.h in code with
2767 1.9.1 -- 1.9.4. This is no longer possible.
2769 - Add some __extension__ bits and pieces so that gcc configured
2770 for valgrind-checking compiles even with -Werror. If you
2771 don't understand this, ignore it. Of interest to gcc developers
2774 - Removed a pointless check which caused problems interworking
2775 with Clearcase. V would complain about shared objects whose
2776 names did not end ".so", and refuse to run. This is now fixed.
2777 In fact it was fixed in 1.9.4 but not documented.
2779 - Fixed a bug causing an assertion failure of "waiters == 1"
2780 somewhere in vg_scheduler.c, when running large threaded apps,
2783 - Add support for the munlock system call (124).
2785 Some comments about future releases:
2787 1.9.5 is, we hope, the most stable Valgrind so far. It pretty much
2788 supersedes the 1.0.X branch. If you are a valgrind packager, please
2789 consider making 1.9.5 available to your users. You can regard the
2790 1.0.X branch as obsolete: 1.9.5 is stable and vastly superior. There
2791 are no plans at all for further releases of the 1.0.X branch.
2793 If you want a leading-edge valgrind, consider building the cvs head
2794 (from SourceForge), or getting a snapshot of it. Current cool stuff
2795 going in includes MMX support (done); SSE/SSE2 support (in progress),
2796 a significant (10-20%) performance improvement (done), and the usual
2797 large collection of minor changes. Hopefully we will be able to
2798 improve our NPTL support, but no promises.