]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/valgrind/src/valgrind-3.6.0-svn/NEWS
8726e21f4ee7b50575fc10ce9c11303106a257a9
[l4.git] / l4 / pkg / valgrind / src / valgrind-3.6.0-svn / NEWS
1
2 Release 3.6.0 (???)
3 ~~~~~~~~~~~~~~~~~~~
4 Improvements:
5 - XXX: ARM support
6
7 - --smc-check=all is much faster
8
9
10
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.
16
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.
20
21                     -------------------------
22
23 Here is a short summary of the changes.  Details are shown further
24 down:
25
26 * Support for Mac OS X (10.5.x).
27
28 * Improvements and simplifications to Memcheck's leak checker.
29
30 * Clarification and simplifications in various aspects of Valgrind's
31   text output.
32
33 * XML output for Helgrind and Ptrcheck.
34
35 * Performance and stability improvements for Helgrind and DRD.
36
37 * Genuinely atomic support for x86/amd64/ppc atomic instructions.
38
39 * A new experimental tool, BBV, useful for computer architecture
40   research.
41
42 * Improved Wine support, including ability to read Windows PDB
43   debuginfo.
44
45                     -------------------------
46
47 Here are details of the above changes, followed by descriptions of
48 many other minor changes, and a list of fixed bugs.
49
50
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.)
54
55   Supported systems:
56
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.
59
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.
63     
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.
67
68   - PowerPC machines are not supported.
69
70   Things that don't work:
71
72   - The Ptrcheck tool.
73
74   - Objective-C garbage collection.
75
76   - --db-attach=yes.
77
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
81     simple work-around.
82
83   Usage notes:
84
85   - You will likely find --dsymutil=yes a useful option, as error
86     messages may be imprecise without it.
87
88   - Mac OS X support is new and therefore will be less robust than the
89     Linux support.  Please report any bugs you find.
90
91   - Threaded programs may run more slowly than on Linux.
92
93   Many thanks to Greg Parker for developing this port over several years.
94
95
96 * Memcheck's leak checker has been improved.  
97
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".
102
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
106     "possibly lost".
107
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
111     fewer leaked blocks.
112
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.
118
119   - Documentation for the leak checker has been improved.
120
121
122 * Various aspects of Valgrind's text output have changed.
123
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:
127
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).
136
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.
142
143   - The format of some (non-XML) stack trace entries has changed a
144     little.  Previously there were six possible forms:
145
146       0x80483BF: really (a.c:20)
147       0x80483BF: really (in /foo/a.out)
148       0x80483BF: really
149       0x80483BF: (within /foo/a.out)
150       0x80483BF: ??? (a.c:20)
151       0x80483BF: ???
152
153     The third and fourth of these forms have been made more consistent
154     with the others.  The six possible forms are now:
155   
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)
161       0x80483BF: ???
162
163     Stack traces produced when --xml=yes is specified are different
164     and unchanged.
165
166
167 * Helgrind and Ptrcheck now support XML output, so they can be used
168   from GUI tools.  Also, the XML output mechanism has been
169   overhauled.
170
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.
176
177   - Memcheck has been updated to use the new format.
178
179   - Helgrind and Ptrcheck are now able to emit output in this format.
180
181   - The XML output mechanism has been overhauled.  XML is now output
182     to its own file descriptor, which means that:
183
184     * Valgrind can output text and XML independently.
185
186     * The longstanding problem of XML output being corrupted by 
187       unexpected un-tagged text messages  is solved.
188
189     As before, the destination for text output is specified using
190     --log-file=, --log-fd= or --log-socket=.
191
192     As before, XML output for a tool is enabled using --xml=yes.
193
194     Because there's a new XML output channel, the XML output
195     destination is now specified by --xml-file=, --xml-fd= or
196     --xml-socket=.
197
198     Initial feedback has shown this causes some confusion.  To
199     clarify, the two envisaged usage scenarios are:
200
201     (1) Normal text output.  In this case, do not specify --xml=yes
202         nor any of --xml-file=, --xml-fd= or --xml-socket=.
203
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.
209
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.
218
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.
222
223     It is also recommended to use --child-silent-after-fork=yes in
224     scenario (2).
225
226
227 * Improvements and changes in Helgrind:
228
229   - XML output, as described above
230
231   - Checks for consistent association between pthread condition
232     variables and their associated mutexes are now performed.
233
234   - pthread_spinlock functions are supported.
235
236   - Modest performance improvements.
237
238   - Initial (skeletal) support for describing the behaviour of
239     non-POSIX synchronisation objects through ThreadSanitizer
240     compatible ANNOTATE_* macros.
241
242   - More controllable tradeoffs between performance and the level of
243     detail of "previous" accesses in a race.  There are now three
244     settings:
245
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.
250
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.
255
256     The new intermediate setting is
257
258     * --history-level=approx
259
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.
266
267
268 * New features and improvements in DRD:
269
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.
276
277   - Added support for named semaphores (sem_open() and sem_close()).
278
279   - Race conditions between pthread_barrier_wait() and
280     pthread_barrier_destroy() calls are now reported.
281
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
286     <valgrind/drd.h>).
287
288   - Added support for annotating non-POSIX synchronization objects
289     through several new ANNOTATE_*() macros.
290
291   - OpenMP: added support for the OpenMP runtime (libgomp) included
292     with gcc versions 4.3.0 and 4.4.0.
293
294   - Faster operation.
295
296   - Added two new command-line options (--first-race-only and
297     --segment-merging-interval).
298
299
300 * Genuinely atomic support for x86/amd64/ppc atomic instructions
301
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.
305
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.
312
313
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
320   Vince Weaver.
321
322
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.
326
327
328 * A new Memcheck client request VALGRIND_COUNT_LEAK_BLOCKS has been
329   added.  It is similar to VALGRIND_COUNT_LEAKS but counts blocks
330   instead of bytes.
331
332
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).
343
344
345 * The graphs drawn by Massif's ms_print program have changed slightly:
346
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.
350
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.
354
355
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
362   detailed.
363
364
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.
370
371
372 * Some changes have been made to the build system.
373
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).
380
381   - The --with-vex configure option has been removed.  It was of
382     little use and removing it simplified the build system.
383
384   - The location of some install files has changed.  This should not
385     affect most users.  Those who might be affected:
386
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.
391
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.
395
396     These changes simplify the build system.
397
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.
402
403
404 * KNOWN LIMITATIONS:
405
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
411     have problems.
412
413     Versions 11.0 and earlier may be OK, but this has not been
414     properly tested.
415
416
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.
423
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.
427
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
443         info
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,
450         while it shouldn't 
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 
455         executable file.
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
516         or big nr of errors
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 
529         printf("%d', x) 
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
571
572 (3.5.0: 19 Aug 2009, vex r1913, valgrind r10846).
573
574
575
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.
583
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.
587
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.
594
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
602         recv/open/close/read
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()
612
613 (3.4.1.RC1:  24 Feb 2008, vex r1884, valgrind r9253).
614 (3.4.1:      28 Feb 2008, vex r1884, valgrind r9293).
615
616
617
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.
624
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:
630
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
640   slowly.
641
642 * A version (1.4.0) of the Valkyrie GUI, that works with Memcheck in
643   3.4.0, will be released shortly.
644
645 * Helgrind's race detection algorithm has been completely redesigned
646   and reimplemented, to address usability and scalability concerns:
647
648   - The new algorithm has a lower false-error rate: it is much less
649     likely to report races that do not really exist.
650
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
653     races.
654
655   - Limitations on the size of program that can run have been removed.
656
657   - Performance has been modestly improved, although that is very
658     workload-dependent.
659
660   - Direct support for Qt4 threading has been added.
661
662   - pthread_barriers are now directly supported.
663
664   - Helgrind works well on all supported Linux targets.
665
666 * The DRD thread debugging tool has seen major improvements:
667
668   - Greatly improved performance and significantly reduced memory
669     usage.
670
671   - Support for several major threading libraries (Boost.Thread, Qt4,
672     glib, OpenMP) has been added.
673
674   - Support for atomic instructions, POSIX semaphores, barriers and
675     reader-writer locks has been added.
676
677   - Works now on PowerPC CPUs too.
678
679   - Added support for printing thread stack usage at thread exit time.
680
681   - Added support for debugging lock contention.
682
683   - Added a manual for Drd.
684
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).
692
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
697   experiences with it.
698
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.
704
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
710   g++'s.
711
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
716   inlining behaviour.
717
718 * 3.4.0 adds support on x86/amd64 for the SSSE3 instruction set.
719
720 * Very basic support for IBM Power6 has been added (64-bit processes only).
721
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.
725
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.
729
730 * The limitation that you can't use --trace-children=yes together
731   with --db-attach=yes has been removed.
732
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.
738
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
746   162222  ==106497
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)
769   174532  == 173751
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)
773
774 Developer-visible changes:
775
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.
779
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.
784
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.
791
792 (3.4.0.RC1:  24 Dec 2008, vex r1878, valgrind r8882).
793 (3.4.0:       3 Jan 2009, vex r1878, valgrind r8899).
794
795
796
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.
802
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.
807
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.
814
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)
833 158525  ==126389
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
838 156960  ==155901
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)
849 160136  ==161378
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
854
855 (3.3.1.RC1:  2 June 2008, vex r1854, valgrind r8169).
856 (3.3.1:      4 June 2008, vex r1854, valgrind r8180).
857
858
859
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.
866
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:
872
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.
882
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.
893
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.
898
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:
905
906   * exp-Omega: an instantaneous leak detector.  See
907     exp-omega/docs/omega_introduction.txt.
908
909   * exp-DRD: a data race detector based on the happens-before
910     relation.  See exp-drd/docs/README.txt.
911
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
916   improvement.
917
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
922   distros.
923
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
928   been done.
929
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.
933
934 - There have been some changes to command line options, which may
935   affect you:
936
937   * --log-file-exactly and 
938     --log-file-qualifier options have been removed.
939
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.
944
945   * --child-silent-after-fork=yes|no [no]
946
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.
951
952   * --cachegrind-out-file, --callgrind-out-file and --massif-out-file
953
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.
958
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.
964
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
970     name.
971
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.
975
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.
981
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.
987
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.
997
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.
1002
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.
1008
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
1022   129937  ==150380
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
1028   136382  ==134990
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
1038   145837  ==149519
1039   145887  PPC32: getitimer() system call is not supported
1040   146252  ==150678
1041   146456  (update_XCon): Assertion 'xpt->curr_space >= -space_delta'...
1042   146701  ==134990
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
1054   149892  ==137714
1055   150044  SEGV during stack deregister
1056   150380  dwarf/gcc interoperation (dwarf3 read problems)
1057   150408  ==148447
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)
1065
1066 Developer-visible changes:
1067
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.
1073
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
1076   number readers:
1077
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]
1084
1085 - Internally, the code base has been further factorised and
1086   abstractified, particularly with respect to support for non-Linux
1087   OSs.
1088
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).
1093
1094
1095
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.
1103
1104 n-i-bz   vex: the `impossible' happened: eqIRConst
1105 n-i-bz   Add an intercept for glibc-2.5 __stpcpy_chk
1106
1107 (3.2.3: 29 Jan 2007, vex r1732, valgrind r6560).
1108
1109
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.
1117
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.
1123
1124 129390   ppc?->IR: some kind of VMX prefetch (dstt)
1125 129968   amd64->IR: 0xF 0xAE 0x0 (fxsave)
1126 134319   ==129968
1127 133054   'make install' fails with syntax errors
1128 118903   ==133054
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)
1135 125959   ==135012
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
1147 138507   ==136844
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
1155 139124   == 136300
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)
1160 138856   ==138424
1161 138627   Enhancement support for prctl ioctls
1162 138896   Add support for usb ioctls
1163 136059   ==138896
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
1182
1183 (3.2.2: 22 Jan 2007, vex r1729, valgrind r6545).
1184
1185
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.
1194
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
1198 06.
1199
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
1202 bugzilla entry.
1203
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
1222 131298   ==131481
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 
1241          --dump-instr=yes
1242 n-i-bz   callgrind: fix failed assertion when toggling 
1243          instrumentation mode
1244 n-i-bz   callgrind: fix annotate script fix warnings with
1245          --collect-jumps=yes
1246 n-i-bz   docs path hardwired (Dennis Lubert)
1247
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:
1251
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,
1257          19 July, Bennee)
1258 132998   startup fails in when running on UML
1259
1260 The following bug was tentatively fixed on the mainline but the fix
1261 was considered too risky to push into 3.2.X:
1262
1263 133154   crash when using client requests to register/deregister stack
1264
1265 (3.2.1: 16 Sept 2006, vex r1658, valgrind r6070).
1266
1267
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.
1273
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:
1277
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.
1282
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.
1288
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.
1294
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
1299   AMD64/Linux.
1300
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
1305   separate project.
1306
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.
1312
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.
1320
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.
1327
1328 - Lackey, the example tool, has been improved:
1329
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.
1333
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.
1339
1340   * The original instrumentation (counting numbers of instructions,
1341     jumps, etc) is now controlled by a new option --basic-counts.  It
1342     is on by default.
1343
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_
1348   interface.
1349
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.
1353
1354 - Various segfaults when reading old-style "stabs" debug information
1355   have been fixed.
1356
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.
1360
1361 - New configuration flags:
1362     --enable-only32bit
1363     --enable-only64bit
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.
1368
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).
1372
1373 Other user-visible changes:
1374
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.
1378
1379 - There are some changes to Memcheck's client requests.  Some of them
1380   have changed names:
1381
1382     MAKE_NOACCESS  --> MAKE_MEM_NOACCESS
1383     MAKE_WRITABLE  --> MAKE_MEM_UNDEFINED
1384     MAKE_READABLE  --> MAKE_MEM_DEFINED
1385
1386     CHECK_WRITABLE --> CHECK_MEM_IS_ADDRESSABLE
1387     CHECK_READABLE --> CHECK_MEM_IS_DEFINED
1388     CHECK_DEFINED  --> CHECK_VALUE_IS_DEFINED
1389
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.
1393
1394   We also added a new client request:
1395   
1396     MAKE_MEM_DEFINED_IF_ADDRESSABLE(a, len)
1397     
1398   which is like MAKE_MEM_DEFINED but only affects a byte if the byte is
1399   already addressable.
1400
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 
1405   stable in future.
1406
1407 BUGS FIXED:
1408
1409 108258   NPTL pthread cleanup handlers not called 
1410 117290   valgrind is sigKILL'd on startup
1411 117295   == 117290
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)
1427 126216   == 124892
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
1434 126517   == 121814
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
1446
1447 (3.2.0RC1: 27 May  2006, vex r1626, valgrind r5947).
1448 (3.2.0:     7 June 2006, vex r1628, valgrind r5957).
1449
1450
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:
1455
1456 (note: "n-i-bz" means "not in bugzilla" -- this bug does not have
1457  a bugzilla entry).
1458
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
1463 118274   == 117366
1464 117367   amd64: 0xD9 0xF4 fxtract
1465 117369   amd64: __NR_getpriority (140)
1466 117419   ppc32: lfsu f5, -4(r11)
1467 117419   ppc32: fsqrt
1468 117936   more stabs problems (segfaults while reading debug info)
1469 119914   == 117936
1470 120345   == 117936
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
1500
1501 (3.1.1:  15 March 2006, vex r1597, valgrind r5771).
1502
1503
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:
1510
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
1517   are supported.
1518
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).
1524
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.
1533
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.
1537
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.
1546
1547 Please note that Addrcheck and Helgrind are still not working.  Work
1548 is underway to reinstate them (or equivalents).  We apologise for the
1549 inconvenience.
1550
1551 Other user-visible changes:
1552
1553 - The --weird-hacks option has been renamed --sim-hints.
1554
1555 - The --time-stamp option no longer gives an absolute date and time.
1556   It now prints the time elapsed since the program began.
1557
1558 - It should build with gcc-2.96.
1559
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.
1564
1565 - The XML output format has changed slightly.  See
1566   docs/internals/xml-output.txt.
1567
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
1573   file.
1574
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.
1578
1579 - The --tool flag is optional once again;  if you omit it, Memcheck
1580   is run by default.
1581
1582 - The --num-callers flag now has a default value of 12.  It was
1583   previously 4.
1584
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.
1589
1590 - The --gen-suppressions flag supports an "all" value that causes every
1591   suppression to be printed without asking.
1592
1593 - The --log-file option no longer puts "pid" in the filename, eg. the
1594   old name "foo.pid12345" is now "foo.12345".
1595
1596 - There are several graphical front-ends for Valgrind, such as Valkyrie,
1597   Alleyoop and Valgui.  See http://www.valgrind.org/downloads/guis.html
1598   for a list.
1599
1600 BUGS FIXED:
1601
1602 109861  amd64 hangs at startup
1603 110301  ditto
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 
1619         binaries on AMD64
1620 110829  == 110831
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)
1624 110201  == 112941
1625 113015  vex amd64->IR: 0xE3 0x14 0x48 0x83 (jrcxz)
1626 113126  Crash with binaries built with -gstabs+/-ggdb
1627 104065  == 113126
1628 115741  == 113126
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
1643 109487  == 102202
1644 110536  == 102202
1645 112687  == 102202
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
1653 112167  == 112152
1654 112789  == 112152
1655 112199  naked ar tool is used in vex makefile
1656 112501  vex x86->IR: movq (0xF 0x7F 0xC1 0xF) (mmx MOVQ)
1657 113583  == 112501
1658 112538  memalign crash
1659 113190  Broken links in docs/html/
1660 113230  Valgrind sys_pipe on x86-64 wrongly thinks file descriptors
1661         should be 64bit
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
1669 114565  == 114564
1670 115496  glibc crashes trying to use sysinfo page
1671 116200  enable fsetxattr, fgetxattr, and fremovexattr for amd64
1672
1673 (3.1.0RC1: 20 November 2005, vex r1466, valgrind r5224).
1674 (3.1.0:    26 November 2005, vex r1471, valgrind r5235).
1675
1676
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
1682 bugs are:
1683
1684 (note: "n-i-bz" means "not in bugzilla" -- this bug does not have
1685  a bugzilla entry).
1686
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
1707         request.)
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
1719         memory
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
1728
1729 (3.0.1: 29 August 05,
1730         vex/branches/VEX_3_0_BRANCH r1367,
1731         valgrind/branches/VALGRIND_3_0_BRANCH r4574).
1732
1733
1734
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.
1741
1742 AMD64 support works well, but has some shortcomings:
1743
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.
1747
1748 - Address space may be limited; see the point about
1749   position-independent executables below.
1750
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
1757   in the future.
1758
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.
1763
1764 Other user-visible changes:
1765
1766 - Valgrind is no longer built by default as a position-independent
1767   executable (PIE), as this caused too many problems.
1768
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.
1771   
1772   Use --enable-pie at configure-time to turn this on.
1773
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.
1778
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.
1784
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.
1790
1791 - Programs that allocate many heap blocks may run faster, due to
1792   improvements in certain data structures.
1793
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
1796   release.
1797
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.
1805
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.
1810
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.
1820
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=.
1824
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.
1829
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.
1836
1837 Changes that are not user-visible:
1838
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.
1841
1842 - Lots of code has been rewritten.
1843
1844 BUGS FIXED:
1845
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)
1884
1885 (3.0RC1: 27 July   05, vex r1303, valgrind r4283).
1886 (3.0.0:   3 August 05, vex r1313, valgrind r4316).
1887
1888
1889
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.)
1894
1895
1896
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.
1903
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:
1907
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.
1911
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.
1915
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
1919 time.
1920
1921 There are many other significant changes too:
1922
1923 * Memcheck is (once again) the default tool.
1924
1925 * The default stack backtrace is now 12 call frames, rather than 4.
1926
1927 * Suppressions can have up to 25 call frame matches, rather than 4.
1928
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.
1932
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
1938   memory).
1939
1940 * Memcheck's confusion over the effect of mprotect() has been fixed:
1941   previously mprotect could erroneously mark undefined data as
1942   defined.
1943
1944 * Signal handling is much improved and should be very close to what
1945   you get when running natively.  
1946
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
1950   make this useful.
1951
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
1955   spaces.
1956
1957 * Valgrind can now run itself (requires PIE support).
1958
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.
1962
1963 * Syscall wrappers are more robust against bad addresses being passed
1964   to syscalls: they will fail with EFAULT rather than killing Valgrind
1965   with SIGSEGV.
1966
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.
1970
1971 * open() and readlink() on /proc/self/exe are supported.
1972
1973 BUGS FIXED:
1974
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...
2037 98288   Massif broken
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...
2060
2061
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:
2068
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:
2072
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.
2078
2079   - Interrupted syscalls should now give more faithful results.
2080
2081   - Signal contexts in signal handlers are supported.
2082
2083 * Improvements to NPTL support to the extent that V now works 
2084   properly on NPTL-only setups.
2085
2086 * Greater isolation between Valgrind and the program being run, so
2087   the program is less likely to inadvertently kill Valgrind by
2088   doing wild writes.
2089
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.
2094
2095 * File descriptor leakage checks.  When enabled, Valgrind will print out
2096   a list of open file descriptors on exit.
2097
2098 * Improved SSE2/SSE3 support.
2099
2100 * Time-stamped output; use --time-stamp=yes
2101
2102
2103
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.
2110
2111 The following bugs have been fixed since 2.1.2:
2112
2113 85658   Assert in coregrind/vg_libpthread.c:2326 (open64) !=
2114         (void*)0 failed
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
2118
2119 80716   Semaphore mapping bug caused by unmap (sem_destroy)
2120         (Was fixed prior to 2.1.2)
2121
2122 86987   semctl and shmctl syscalls family is not handled properly
2123
2124 86696   valgrind 2.1.2 + RH AS2.1 + librt
2125
2126 86730   valgrind locks up at end of run with assertion failure 
2127         in __pthread_unwind
2128
2129 86641   memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1
2130         (also fixes 74298, a duplicate of this)
2131
2132 85947   MMX/SSE unhandled instruction 'sfence'
2133
2134 84978   Wrong error "Conditional jump or move depends on
2135         uninitialised value" resulting from "sbbl %reg, %reg"
2136
2137 86254   ssort() fails when signed int return type from comparison is 
2138         too small to handle result of unsigned int subtraction
2139
2140 87089   memalign( 4, xxx) makes valgrind assert
2141
2142 86407   Add support for low-level parallel port driver ioctls.
2143
2144 70587   Add timestamps to Valgrind output? (wishlist)
2145
2146 84937   vg_libpthread.c:2505 (se_remap): Assertion `res == 0'
2147         (fixed prior to 2.1.2)
2148
2149 86317   cannot load libSDL-1.2.so.0 using valgrind
2150
2151 86989   memcpy from mac_replace_strmem.c complains about
2152         uninitialized pointers passed when length to copy is zero
2153
2154 85811   gnu pascal symbol causes segmentation fault; ok in 2.0.0
2155
2156 79138   writing to sbrk()'d memory causes segfault
2157
2158 77369   sched deadlock while signal received during pthread_join
2159         and the joined thread exited
2160
2161 88115   In signal handler for SIGFPE,  siginfo->si_addr is wrong 
2162         under Valgrind
2163
2164 78765   Massif crashes on app exit if FP exceptions are enabled
2165
2166 Additionally there are the following changes, which are not 
2167 connected to any bug report numbers, AFAICS:
2168
2169 * Fix scary bug causing mis-identification of SSE stores vs
2170   loads and so causing memcheck to sometimes give nonsense results
2171   on SSE code.
2172
2173 * Add support for the POSIX message queue system calls.
2174
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.
2178
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.
2181
2182 * Add support for POSIX clocks and timers.
2183
2184
2185
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.
2194
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.
2198
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
2203 there.
2204
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.
2208
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.
2212
2213 71906   malloc alignment should be 8, not 4
2214         All memory returned by malloc/new etc is now at least
2215         8-byte aligned.
2216
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.)
2220
2221 78514   Conditional jump or move depends on uninitialized value(s)
2222         (a slight mishanding of FP code in memcheck)
2223
2224 77952   pThread Support (crash) (due to initialisation-ordering probs)
2225         (also 85118)
2226
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
2248
2249
2250 Additionally there are the following changes, which are not 
2251 connected to any bug report numbers, AFAICS:
2252
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.
2258
2259 * Improved checking when laying out memory.  Should hopefully avoid
2260   the random segmentation faults that 2.1.1 sometimes caused.
2261
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.
2264
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).
2270
2271 * Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and
2272   improve the checking of other interface related ioctls.
2273
2274 * Fix building with gcc-3.4.1.
2275
2276 * Remove limit on number of semaphores supported.
2277
2278 * Add support for syscalls: set_tid_address (258), acct (51).
2279
2280 * Support instruction "repne movs" -- not official but seems to occur.
2281
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).
2290
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.
2297
2298 * Client requests for telling valgrind about memory pools.
2299
2300
2301
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:
2307
2308 * Greater isolation between Valgrind and the program being run, so
2309   the program is less likely to inadvertently kill Valgrind by
2310   doing wild writes.
2311
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.
2316
2317 * Fixes for many bugs, including support for more SSE2/SSE3 instructions,
2318   various signal/syscall things, and various problems with debug
2319   info readers.
2320
2321 * Support for glibc-2.3.3 based systems.
2322
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.
2326
2327
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
2332 there.
2333
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. 
2351         (REP RET)
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 
2370         than about 828
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 
2375
2376
2377
2378
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
2385 8.2, RedHat 8.
2386
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:
2391
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.
2397
2398 - Interrupted syscalls should now give more faithful results.
2399
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.
2403
2404 Other changes:
2405
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
2412
2413 - Implemented a few more SSE/SSE2 instructions.
2414
2415 - Less crud on the stack when you do 'where' inside a GDB attach.
2416
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
2425
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.
2430
2431
2432
2433 Stable release 2.0.0 (5 Nov 2003)
2434 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2435
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.
2438
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.
2444
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).
2448
2449 - CFI support for GDB version 6.  Needed to enable newer GDBs
2450   to figure out where they are when using --gdb-attach=yes.
2451
2452 - Fix this:
2453       mc_translate.c:1091 (memcheck_instrument): Assertion
2454       `u_in->size == 4 || u_in->size == 16' failed.
2455
2456 - Return an error rather than panicing when given a bad socketcall.
2457
2458 - Fix checking of syscall rt_sigtimedwait().
2459
2460 - Implement __NR_clock_gettime (syscall 265).  Needed on Red Hat Severn.
2461
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
2464   positives.
2465
2466 - Support use of select() for very large numbers of file descriptors.
2467
2468 - Don't fail silently if the executable is statically linked, or is
2469   setuid/setgid. Print an error message instead.
2470
2471 - Support for old DWARF-1 format line number info.
2472
2473
2474
2475 Snapshot 20031012 (12 October 2003)
2476 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2477
2478 Three months worth of bug fixes, roughly.  Most significant single
2479 change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
2480
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).
2486
2487 A detailed list of changes, in no particular order:
2488
2489 - Describe --gen-suppressions in the FAQ.
2490
2491 - Syscall __NR_waitpid supported.
2492
2493 - Minor MMX bug fix.
2494
2495 - -v prints program's argv[] at startup.
2496
2497 - More glibc-2.3 suppressions.
2498
2499 - Suppressions for stack underrun bug(s) in the c++ support library
2500   distributed with Intel Icc 7.0.
2501
2502 - Fix problems reading /proc/self/maps.
2503
2504 - Fix a couple of messages that should have been suppressed by -q, 
2505   but weren't.
2506
2507 - Make Addrcheck understand "Overlap" suppressions.
2508
2509 - At startup, check if program is statically linked and bail out if so.
2510
2511 - Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
2512
2513 - Memcheck/addrcheck: minor speed optimisations
2514
2515 - Handle syscall __NR_brk more correctly than before.
2516
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&)
2520
2521 - Support POSIX pthread spinlocks.
2522
2523 - Fixups for clean compilation with gcc-3.3.1.
2524
2525 - Implemented more opcodes: 
2526     - push %es
2527     - push %ds
2528     - pop %es
2529     - pop %ds
2530     - movntq
2531     - sfence
2532     - pshufw
2533     - pavgb
2534     - ucomiss
2535     - enter
2536     - mov imm32, %esp
2537     - all "in" and "out" opcodes
2538     - inc/dec %esp
2539     - A whole bunch of SSE/SSE2 instructions
2540
2541 - Memcheck: don't bomb on SSE/SSE2 code.
2542
2543
2544 Snapshot 20030725 (25 July 2003)
2545 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2546
2547 Fixes some minor problems in 20030716.
2548
2549 - Fix bugs in overlap checking for strcpy/memcpy etc.
2550
2551 - Do overlap checking with Addrcheck as well as Memcheck.
2552
2553 - Fix this:
2554       Memcheck: the `impossible' happened:
2555       get_error_name: unexpected type
2556
2557 - Install headers needed to compile new skins.
2558
2559 - Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD
2560   passed to non-traced children.
2561
2562 - Fix file descriptor leak in valgrind-listener.
2563
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.
2567
2568
2569 Snapshot 20030716 (16 July 2003)
2570 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2571
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.
2575
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.
2580
2581 Two reasons for releasing a snapshot now are:
2582
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.
2586
2587 - So as to make available improvements in the 2.0 line.
2588
2589 Major changes in 20030716, as compared to 1.9.6:
2590
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.
2598
2599 - Automatic generation of suppression records; you no longer
2600   need to write them by hand.  Use --gen-suppressions=yes.
2601
2602 - strcpy/memcpy/etc check their arguments for overlaps, when
2603   running with the Memcheck or Addrcheck skins.
2604
2605 - malloc_usable_size() is now supported.
2606
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!)
2612
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>.
2617
2618 - Cachegrind gives more accurate results (wasn't tracking instructions in
2619   malloc() and friends previously, is now).
2620
2621 - Complete support for the MMX instruction set.
2622
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.
2627
2628 - Significant speedups (10%-20%) for standard memory checking.
2629
2630 - Fix assertion failure in pthread_once().
2631
2632 - Fix this:
2633     valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select): 
2634               Assertion `ms_end >= ms_now' failed.
2635
2636 - Implement pthread_mutexattr_setpshared.
2637
2638 - Understand Pentium 4 branch hints.  Also implemented a couple more
2639   obscure x86 instructions.
2640
2641 - Lots of other minor bug fixes.
2642
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.  
2647
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:
2650  
2651      == 84 tests, 0 stderr failures, 0 stdout failures ==
2652
2653   On Red Hat 8, I get this:
2654
2655      == 84 tests, 2 stderr failures, 1 stdout failure ==
2656      corecheck/tests/res_search               (stdout)
2657      memcheck/tests/sigaltstack               (stderr)
2658
2659   sigaltstack is probably harmless.  res_search doesn't work
2660   on R H 8 even running natively, so I'm not too worried.   
2661
2662   On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures:
2663
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)
2668
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.
2673
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.
2677
2678
2679
2680 Version 1.9.6 (7 May 2003 or thereabouts)
2681 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2682
2683 Major changes in 1.9.6:
2684
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().
2692
2693 - Majorly expanded FAQ.txt.  We've added workarounds for all
2694   common problems for which a workaround is known.
2695
2696 Minor changes in 1.9.6:
2697
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.
2702
2703 - Support for kernels >= 2.5.68.
2704
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
2708   them.
2709
2710 - Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request.
2711
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).
2715
2716 - Debug info reading: read symbols from both "symtab" and "dynsym"
2717   sections, rather than merely from the one that comes last in the
2718   file.
2719
2720 - New syscall support: prctl(), creat(), lookup_dcookie().
2721
2722 - When checking calls to accept(), recvfrom(), getsocketopt(),
2723   don't complain if buffer values are NULL.
2724
2725 - Try and avoid assertion failures in
2726   mash_LD_PRELOAD_and_LD_LIBRARY_PATH.
2727
2728 - Minor bug fixes in cg_annotate.
2729
2730
2731
2732 Version 1.9.5 (7 April 2003)
2733 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2734
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.
2739
2740 Major changes in 1.9.5:
2741
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.
2746
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.
2755
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.
2759
2760 Minor changes in 1.9.5:
2761
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.
2768
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
2772   only.
2773
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.
2778
2779 - Fixed a bug causing an assertion failure of "waiters == 1"
2780   somewhere in vg_scheduler.c, when running large threaded apps,
2781   notably MySQL.
2782
2783 - Add support for the munlock system call (124).
2784
2785 Some comments about future releases:
2786
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.
2792
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.
2799