non-linux regtest: update cmdline expecteds
[valgrind.git] / NEWS.older
blob6de0e84dacaa14f97a100a614c1bb2a9f242161c
1 Release 3.6.0 (21 October 2010)
2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 3.6.0 is a feature release with many significant improvements and the
4 usual collection of bug fixes.
6 This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux,
7 PPC64/Linux, X86/Darwin and AMD64/Darwin.  Support for recent distros
8 and toolchain components (glibc 2.12, gcc 4.5, OSX 10.6) has been added.
10                     -------------------------
12 Here are some highlights.  Details are shown further down:
14 * Support for ARM/Linux.
16 * Support for recent Linux distros: Ubuntu 10.10 and Fedora 14.
18 * Support for Mac OS X 10.6, both 32- and 64-bit executables.
20 * Support for the SSE4.2 instruction set.
22 * Enhancements to the Callgrind profiler, including the ability to
23   handle CPUs with three levels of cache.
25 * A new experimental heap profiler, DHAT.
27 * A huge number of bug fixes and small enhancements.
29                     -------------------------
31 Here are details of the above changes, together with descriptions of
32 many other changes, and a list of fixed bugs.
34 * ================== PLATFORM CHANGES =================
36 * Support for ARM/Linux.  Valgrind now runs on ARMv7 capable CPUs
37   running Linux.  It is known to work on Ubuntu 10.04, Ubuntu 10.10,
38   and Maemo 5, so you can run Valgrind on your Nokia N900 if you want.
40   This requires a CPU capable of running the ARMv7-A instruction set
41   (Cortex A5, A8 and A9).  Valgrind provides fairly complete coverage
42   of the user space instruction set, including ARM and Thumb integer
43   code, VFPv3, NEON and V6 media instructions.  The Memcheck,
44   Cachegrind and Massif tools work properly; other tools work to
45   varying degrees.
47 * Support for recent Linux distros (Ubuntu 10.10 and Fedora 14), along
48   with support for recent releases of the underlying toolchain
49   components, notably gcc-4.5 and glibc-2.12.
51 * Support for Mac OS X 10.6, both 32- and 64-bit executables.  64-bit
52   support also works much better on OS X 10.5, and is as solid as
53   32-bit support now.
55 * Support for the SSE4.2 instruction set.  SSE4.2 is supported in
56   64-bit mode.  In 32-bit mode, support is only available up to and
57   including SSSE3.  Some exceptions: SSE4.2 AES instructions are not
58   supported in 64-bit mode, and 32-bit mode does in fact support the
59   bare minimum SSE4 instructions to needed to run programs on Mac OS X
60   10.6 on 32-bit targets.
62 * Support for IBM POWER6 cpus has been improved.  The Power ISA up to
63   and including version 2.05 is supported.
65 * ==================== TOOL CHANGES ====================
67 * Cachegrind has a new processing script, cg_diff, which finds the
68   difference between two profiles.  It's very useful for evaluating
69   the performance effects of a change in a program.
70   
71   Related to this change, the meaning of cg_annotate's (rarely-used)
72   --threshold option has changed; this is unlikely to affect many
73   people, if you do use it please see the user manual for details.
75 * Callgrind now can do branch prediction simulation, similar to
76   Cachegrind.  In addition, it optionally can count the number of
77   executed global bus events.  Both can be used for a better
78   approximation of a "Cycle Estimation" as derived event (you need to
79   update the event formula in KCachegrind yourself).
81 * Cachegrind and Callgrind now refer to the LL (last-level) cache
82   rather than the L2 cache.  This is to accommodate machines with
83   three levels of caches -- if Cachegrind/Callgrind auto-detects the
84   cache configuration of such a machine it will run the simulation as
85   if the L2 cache isn't present.  This means the results are less
86   likely to match the true result for the machine, but
87   Cachegrind/Callgrind's results are already only approximate, and
88   should not be considered authoritative.  The results are still
89   useful for giving a general idea about a program's locality.
91 * Massif has a new option, --pages-as-heap, which is disabled by
92   default.  When enabled, instead of tracking allocations at the level
93   of heap blocks (as allocated with malloc/new/new[]), it instead
94   tracks memory allocations at the level of memory pages (as mapped by
95   mmap, brk, etc).  Each mapped page is treated as its own block.
96   Interpreting the page-level output is harder than the heap-level
97   output, but this option is useful if you want to account for every
98   byte of memory used by a program.
100 * DRD has two new command-line options: --free-is-write and
101   --trace-alloc.  The former allows to detect reading from already freed
102   memory, and the latter allows tracing of all memory allocations and
103   deallocations.
105 * DRD has several new annotations.  Custom barrier implementations can
106   now be annotated, as well as benign races on static variables.
108 * DRD's happens before / happens after annotations have been made more
109   powerful, so that they can now also be used to annotate e.g. a smart
110   pointer implementation.
112 * Helgrind's annotation set has also been drastically improved, so as
113   to provide to users a general set of annotations to describe locks,
114   semaphores, barriers and condition variables.  Annotations to
115   describe thread-safe reference counted heap objects have also been
116   added.
118 * Memcheck has a new command-line option, --show-possibly-lost, which
119   is enabled by default.  When disabled, the leak detector will not
120   show possibly-lost blocks.
122 * A new experimental heap profiler, DHAT (Dynamic Heap Analysis Tool),
123   has been added.  DHAT keeps track of allocated heap blocks, and also
124   inspects every memory reference to see which block (if any) is being
125   accessed.  This gives a lot of insight into block lifetimes,
126   utilisation, turnover, liveness, and the location of hot and cold
127   fields.  You can use DHAT to do hot-field profiling.
129 * ==================== OTHER CHANGES ====================
131 * Improved support for unfriendly self-modifying code: the extra
132   overhead incurred by --smc-check=all has been reduced by
133   approximately a factor of 5 as compared with 3.5.0.
135 * Ability to show directory names for source files in error messages.
136   This is combined with a flexible mechanism for specifying which
137   parts of the paths should be shown.  This is enabled by the new flag
138   --fullpath-after.
140 * A new flag, --require-text-symbol, which will stop the run if a
141   specified symbol is not found it a given shared object when it is
142   loaded into the process.  This makes advanced working with function
143   intercepting and wrapping safer and more reliable.
145 * Improved support for the Valkyrie GUI, version 2.0.0.  GUI output
146   and control of Valgrind is now available for the tools Memcheck and
147   Helgrind.  XML output from Valgrind is available for Memcheck,
148   Helgrind and exp-Ptrcheck.
150 * More reliable stack unwinding on amd64-linux, particularly in the
151   presence of function wrappers, and with gcc-4.5 compiled code.
153 * Modest scalability (performance improvements) for massive
154   long-running applications, particularly for those with huge amounts
155   of code.
157 * Support for analyzing programs running under Wine with has been
158   improved.  The header files <valgrind/valgrind.h>,
159   <valgrind/memcheck.h> and <valgrind/drd.h> can now be used in
160   Windows-programs compiled with MinGW or one of the Microsoft Visual
161   Studio compilers.
163 * A rare but serious error in the 64-bit x86 CPU simulation was fixed.
164   The 32-bit simulator was not affected.  This did not occur often,
165   but when it did would usually crash the program under test.
166   Bug 245925.
168 * A large number of bugs were fixed.  These are shown below.
170 * A number of bugs were investigated, and were candidates for fixing,
171   but are not fixed in 3.6.0, due to lack of developer time.  They may
172   get fixed in later releases.  They are:
174   194402  vex amd64->IR: 0x48 0xF 0xAE 0x4 0x24 0x49  (FXSAVE64)
175   212419  false positive "lock order violated" (A+B vs A) 
176   213685  Undefined value propagates past dependency breaking instruction
177   216837  Incorrect instrumentation of NSOperationQueue on Darwin 
178   237920  valgrind segfault on fork failure 
179   242137  support for code compiled by LLVM-2.8
180   242423  Another unknown Intel cache config value 
181   243232  Inconsistent Lock Orderings report with trylock 
182   243483  ppc: callgrind triggers VEX assertion failure 
183   243935  Helgrind: implementation of ANNOTATE_HAPPENS_BEFORE() is wrong
184   244677  Helgrind crash hg_main.c:616 (map_threads_lookup): Assertion
185           'thr' failed. 
186   246152  callgrind internal error after pthread_cancel on 32 Bit Linux 
187   249435  Analyzing wine programs with callgrind triggers a crash 
188   250038  ppc64: Altivec lvsr and lvsl instructions fail their regtest
189   250065  Handling large allocations 
190   250101  huge "free" memory usage due to m_mallocfree.c
191           "superblocks fragmentation"
192   251569  vex amd64->IR: 0xF 0x1 0xF9 0x8B 0x4C 0x24 (RDTSCP)
193   252091  Callgrind on ARM does not detect function returns correctly
194   252600  [PATCH] Allow lhs to be a pointer for shl/shr
195   254420  memory pool tracking broken
196   n-i-bz  support for adding symbols for JIT generated code
199 The following bugs have been fixed or resolved.  Note that "n-i-bz"
200 stands for "not in bugzilla" -- that is, a bug that was reported to us
201 but never got a bugzilla entry.  We encourage you to file bugs in
202 bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
203 mailing the developers (or mailing lists) directly -- bugs that are
204 not entered into bugzilla tend to get forgotten about or ignored.
206 To see details of a given bug, visit
207 https://bugs.kde.org/show_bug.cgi?id=XXXXXX
208 where XXXXXX is the bug number as listed below.
210 135264  dcbzl instruction missing
211 142688  == 250799
212 153699  Valgrind should report unaligned reads with movdqa
213 180217  == 212335
214 190429  Valgrind reports lost of errors in ld.so
215         with x86_64 2.9.90 glibc 
216 197266  valgrind appears to choke on the xmms instruction
217         "roundsd" on x86_64 
218 197988  Crash when demangling very large symbol names
219 202315  unhandled syscall: 332 (inotify_init1)
220 203256  Add page-level profiling to Massif
221 205093  dsymutil=yes needs quotes, locking (partial fix)
222 205241  Snow Leopard 10.6 support (partial fix)
223 206600  Leak checker fails to upgrade indirect blocks when their
224         parent becomes reachable 
225 210935  port valgrind.h (not valgrind) to win32 so apps run under
226         wine can make client requests
227 211410  vex amd64->IR: 0x15 0xFF 0xFF 0x0 0x0 0x89
228         within Linux ip-stack checksum functions 
229 212335  unhandled instruction bytes: 0xF3 0xF 0xBD 0xC0
230         (lzcnt %eax,%eax) 
231 213685  Undefined value propagates past dependency breaking instruction
232         (partial fix)
233 215914  Valgrind inserts bogus empty environment variable 
234 217863  == 197988
235 219538  adjtimex syscall wrapper wrong in readonly adjtime mode 
236 222545  shmat fails under valgind on some arm targets 
237 222560  ARM NEON support 
238 230407  == 202315
239 231076  == 202315
240 232509  Docs build fails with formatting inside <title></title> elements 
241 232793  == 202315
242 235642  [PATCH] syswrap-linux.c: support evdev EVIOCG* ioctls 
243 236546  vex x86->IR: 0x66 0xF 0x3A 0xA
244 237202  vex amd64->IR: 0xF3 0xF 0xB8 0xC0 0x49 0x3B 
245 237371  better support for VALGRIND_MALLOCLIKE_BLOCK 
246 237485  symlink (syscall 57) is not supported on Mac OS 
247 237723  sysno == 101 exp-ptrcheck: the 'impossible' happened:
248         unhandled syscall 
249 238208  is_just_below_ESP doesn't take into account red-zone 
250 238345  valgrind passes wrong $0 when executing a shell script 
251 238679  mq_timedreceive syscall doesn't flag the reception buffer
252         as "defined"
253 238696  fcntl command F_DUPFD_CLOEXEC not supported 
254 238713  unhandled instruction bytes: 0x66 0xF 0x29 0xC6 
255 238713  unhandled instruction bytes: 0x66 0xF 0x29 0xC6 
256 238745  3.5.0 Make fails on PPC Altivec opcodes, though configure
257         says "Altivec off"
258 239992  vex amd64->IR: 0x48 0xF 0xC4 0xC1 0x0 0x48 
259 240488  == 197988
260 240639  == 212335
261 241377  == 236546
262 241903  == 202315
263 241920  == 212335
264 242606  unhandled syscall: setegid (in Ptrcheck)
265 242814  Helgrind "Impossible has happened" during
266         QApplication::initInstance(); 
267 243064  Valgrind attempting to read debug information from iso 
268 243270  Make stack unwinding in Valgrind wrappers more reliable
269 243884  exp-ptrcheck: the 'impossible happened: unhandled syscall 
270         sysno = 277 (mq_open)
271 244009  exp-ptrcheck unknown syscalls in analyzing lighttpd
272 244493  ARM VFP d16-d31 registers support 
273 244670  add support for audit_session_self syscall on Mac OS 10.6
274 244921  The xml report of helgrind tool is not well format
275 244923  In the xml report file, the <preamble> not escape the 
276         xml char, eg '<','&','>'
277 245535  print full path names in plain text reports 
278 245925  x86-64 red zone handling problem 
279 246258  Valgrind not catching integer underruns + new [] s
280 246311  reg/reg cmpxchg doesn't work on amd64
281 246549  unhandled syscall unix:277 while testing 32-bit Darwin app 
282 246888  Improve Makefile.vex.am 
283 247510  [OS X 10.6] Memcheck reports unaddressable bytes passed 
284         to [f]chmod_extended
285 247526  IBM POWER6 (ISA 2.05) support is incomplete
286 247561  Some leak testcases fails due to reachable addresses in
287         caller save regs
288 247875  sizeofIRType to handle Ity_I128 
289 247894  [PATCH] unhandled syscall sys_readahead 
290 247980  Doesn't honor CFLAGS passed to configure 
291 248373  darwin10.supp is empty in the trunk 
292 248822  Linux FIBMAP ioctl has int parameter instead of long
293 248893  [PATCH] make readdwarf.c big endianess safe to enable
294         unwinding on big endian systems
295 249224  Syscall 336 not supported (SYS_proc_info) 
296 249359  == 245535
297 249775  Incorrect scheme for detecting NEON capabilities of host CPU
298 249943  jni JVM init fails when using valgrind
299 249991  Valgrind incorrectly declares AESKEYGENASSIST support
300         since VEX r2011
301 249996  linux/arm: unhandled syscall: 181 (__NR_pwrite64)
302 250799  frexp$fenv_access_off function generates SIGILL 
303 250998  vex x86->IR: unhandled instruction bytes: 0x66 0x66 0x66 0x2E 
304 251251  support pclmulqdq insn 
305 251362  valgrind: ARM: attach to debugger either fails or provokes
306         kernel oops 
307 251674  Unhandled syscall 294
308 251818  == 254550
310 254257  Add support for debugfiles found by build-id
311 254550  [PATCH] Implement DW_ATE_UTF (DWARF4)
312 254646  Wrapped functions cause stack misalignment on OS X
313         (and possibly Linux)
314 254556  ARM: valgrinding anything fails with SIGSEGV for 0xFFFF0FA0
316 (3.6.0: 21 October 2010, vex r2068, valgrind r11471).
320 Release 3.5.0 (19 August 2009)
321 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
322 3.5.0 is a feature release with many significant improvements and the
323 usual collection of bug fixes.  The main improvement is that Valgrind
324 now works on Mac OS X.
326 This release supports X86/Linux, AMD64/Linux, PPC32/Linux, PPC64/Linux
327 and X86/Darwin.  Support for recent distros and toolchain components
328 (glibc 2.10, gcc 4.5) has been added.
330                     -------------------------
332 Here is a short summary of the changes.  Details are shown further
333 down:
335 * Support for Mac OS X (10.5.x).
337 * Improvements and simplifications to Memcheck's leak checker.
339 * Clarification and simplifications in various aspects of Valgrind's
340   text output.
342 * XML output for Helgrind and Ptrcheck.
344 * Performance and stability improvements for Helgrind and DRD.
346 * Genuinely atomic support for x86/amd64/ppc atomic instructions.
348 * A new experimental tool, BBV, useful for computer architecture
349   research.
351 * Improved Wine support, including ability to read Windows PDB
352   debuginfo.
354                     -------------------------
356 Here are details of the above changes, followed by descriptions of
357 many other minor changes, and a list of fixed bugs.
360 * Valgrind now runs on Mac OS X.  (Note that Mac OS X is sometimes
361   called "Darwin" because that is the name of the OS core, which is the
362   level that Valgrind works at.)
364   Supported systems:
366   - It requires OS 10.5.x (Leopard).  Porting to 10.4.x is not planned
367     because it would require work and 10.4 is only becoming less common.
369   - 32-bit programs on x86 and AMD64 (a.k.a x86-64) machines are supported
370     fairly well.  For 10.5.x, 32-bit programs are the default even on
371     64-bit machines, so it handles most current programs.
372     
373   - 64-bit programs on x86 and AMD64 (a.k.a x86-64) machines are not
374     officially supported, but simple programs at least will probably work.
375     However, start-up is slow.
377   - PowerPC machines are not supported.
379   Things that don't work:
381   - The Ptrcheck tool.
383   - Objective-C garbage collection.
385   - --db-attach=yes.
387   - If you have Rogue Amoeba's "Instant Hijack" program installed,
388     Valgrind will fail with a SIGTRAP at start-up.  See
389     https://bugs.kde.org/show_bug.cgi?id=193917 for details and a
390     simple work-around.
392   Usage notes:
394   - You will likely find --dsymutil=yes a useful option, as error
395     messages may be imprecise without it.
397   - Mac OS X support is new and therefore will be less robust than the
398     Linux support.  Please report any bugs you find.
400   - Threaded programs may run more slowly than on Linux.
402   Many thanks to Greg Parker for developing this port over several years.
405 * Memcheck's leak checker has been improved.  
407   - The results for --leak-check=summary now match the summary results
408     for --leak-check=full.  Previously they could differ because
409     --leak-check=summary counted "indirectly lost" blocks and
410     "suppressed" blocks as "definitely lost".
412   - Blocks that are only reachable via at least one interior-pointer,
413     but are directly pointed to by a start-pointer, were previously
414     marked as "still reachable".  They are now correctly marked as
415     "possibly lost".
417   - The default value for the --leak-resolution option has been
418     changed from "low" to "high".  In general, this means that more
419     leak reports will be produced, but each leak report will describe
420     fewer leaked blocks.
422   - With --leak-check=full, "definitely lost" and "possibly lost"
423     leaks are now considered as proper errors, ie. they are counted
424     for the "ERROR SUMMARY" and affect the behaviour of
425     --error-exitcode.  These leaks are not counted as errors if
426     --leak-check=summary is specified, however.
428   - Documentation for the leak checker has been improved.
431 * Various aspects of Valgrind's text output have changed.
433   - Valgrind's start-up message has changed.  It is shorter but also
434     includes the command being run, which makes it easier to use
435     --trace-children=yes.  An example:
437   - Valgrind's shut-down messages have also changed.  This is most
438     noticeable with Memcheck, where the leak summary now occurs before
439     the error summary.  This change was necessary to allow leaks to be
440     counted as proper errors (see the description of the leak checker
441     changes above for more details).  This was also necessary to fix a
442     longstanding bug in which uses of suppressions against leaks were
443     not "counted", leading to difficulties in maintaining suppression
444     files (see https://bugs.kde.org/show_bug.cgi?id=186790).
446   - Behavior of -v has changed.  In previous versions, -v printed out
447     a mixture of marginally-user-useful information, and tool/core
448     statistics.  The statistics printing has now been moved to its own
449     flag, --stats=yes.  This means -v is less verbose and more likely
450     to convey useful end-user information.
452   - The format of some (non-XML) stack trace entries has changed a
453     little.  Previously there were six possible forms:
455       0x80483BF: really (a.c:20)
456       0x80483BF: really (in /foo/a.out)
457       0x80483BF: really
458       0x80483BF: (within /foo/a.out)
459       0x80483BF: ??? (a.c:20)
460       0x80483BF: ???
462     The third and fourth of these forms have been made more consistent
463     with the others.  The six possible forms are now:
464   
465       0x80483BF: really (a.c:20)
466       0x80483BF: really (in /foo/a.out)
467       0x80483BF: really (in ???)
468       0x80483BF: ??? (in /foo/a.out)
469       0x80483BF: ??? (a.c:20)
470       0x80483BF: ???
472     Stack traces produced when --xml=yes is specified are different
473     and unchanged.
476 * Helgrind and Ptrcheck now support XML output, so they can be used
477   from GUI tools.  Also, the XML output mechanism has been
478   overhauled.
480   - The XML format has been overhauled and generalised, so it is more
481     suitable for error reporting tools in general.  The Memcheck
482     specific aspects of it have been removed.  The new format, which
483     is an evolution of the old format, is described in
484     docs/internals/xml-output-protocol4.txt.
486   - Memcheck has been updated to use the new format.
488   - Helgrind and Ptrcheck are now able to emit output in this format.
490   - The XML output mechanism has been overhauled.  XML is now output
491     to its own file descriptor, which means that:
493     * Valgrind can output text and XML independently.
495     * The longstanding problem of XML output being corrupted by 
496       unexpected un-tagged text messages  is solved.
498     As before, the destination for text output is specified using
499     --log-file=, --log-fd= or --log-socket=.
501     As before, XML output for a tool is enabled using --xml=yes.
503     Because there's a new XML output channel, the XML output
504     destination is now specified by --xml-file=, --xml-fd= or
505     --xml-socket=.
507     Initial feedback has shown this causes some confusion.  To
508     clarify, the two envisaged usage scenarios are:
510     (1) Normal text output.  In this case, do not specify --xml=yes
511         nor any of --xml-file=, --xml-fd= or --xml-socket=.
513     (2) XML output.  In this case, specify --xml=yes, and one of
514         --xml-file=, --xml-fd= or --xml-socket= to select the XML
515         destination, one of --log-file=, --log-fd= or --log-socket=
516         to select the destination for any remaining text messages,
517         and, importantly, -q.
519         -q makes Valgrind completely silent on the text channel,
520         except in the case of critical failures, such as Valgrind
521         itself segfaulting, or failing to read debugging information.
522         Hence, in this scenario, it suffices to check whether or not
523         any output appeared on the text channel.  If yes, then it is
524         likely to be a critical error which should be brought to the
525         attention of the user.  If no (the text channel produced no
526         output) then it can be assumed that the run was successful.
528         This allows GUIs to make the critical distinction they need to
529         make (did the run fail or not?) without having to search or
530         filter the text output channel in any way.
532     It is also recommended to use --child-silent-after-fork=yes in
533     scenario (2).
536 * Improvements and changes in Helgrind:
538   - XML output, as described above
540   - Checks for consistent association between pthread condition
541     variables and their associated mutexes are now performed.
543   - pthread_spinlock functions are supported.
545   - Modest performance improvements.
547   - Initial (skeletal) support for describing the behaviour of
548     non-POSIX synchronisation objects through ThreadSanitizer
549     compatible ANNOTATE_* macros.
551   - More controllable tradeoffs between performance and the level of
552     detail of "previous" accesses in a race.  There are now three
553     settings:
555     * --history-level=full.  This is the default, and was also the
556       default in 3.4.x.  It shows both stacks involved in a race, but
557       requires a lot of memory and can be very slow in programs that
558       do many inter-thread synchronisation events.
560     * --history-level=none.  This only shows the later stack involved
561       in a race.  This can be much faster than --history-level=full,
562       but makes it much more difficult to find the other access
563       involved in the race.
565     The new intermediate setting is
567     * --history-level=approx
569       For the earlier (other) access, two stacks are presented.  The
570       earlier access is guaranteed to be somewhere in between the two
571       program points denoted by those stacks.  This is not as useful
572       as showing the exact stack for the previous access (as per
573       --history-level=full), but it is better than nothing, and it's
574       almost as fast as --history-level=none.
577 * New features and improvements in DRD:
579   - The error messages printed by DRD are now easier to interpret.
580     Instead of using two different numbers to identify each thread
581     (Valgrind thread ID and DRD thread ID), DRD does now identify
582     threads via a single number (the DRD thread ID).  Furthermore
583     "first observed at" information is now printed for all error
584     messages related to synchronization objects.
586   - Added support for named semaphores (sem_open() and sem_close()).
588   - Race conditions between pthread_barrier_wait() and
589     pthread_barrier_destroy() calls are now reported.
591   - Added support for custom allocators through the macros
592     VALGRIND_MALLOCLIKE_BLOCK() VALGRIND_FREELIKE_BLOCK() (defined in
593     in <valgrind/valgrind.h>). An alternative for these two macros is
594     the new client request VG_USERREQ__DRD_CLEAN_MEMORY (defined in
595     <valgrind/drd.h>).
597   - Added support for annotating non-POSIX synchronization objects
598     through several new ANNOTATE_*() macros.
600   - OpenMP: added support for the OpenMP runtime (libgomp) included
601     with gcc versions 4.3.0 and 4.4.0.
603   - Faster operation.
605   - Added two new command-line options (--first-race-only and
606     --segment-merging-interval).
609 * Genuinely atomic support for x86/amd64/ppc atomic instructions
611   Valgrind will now preserve (memory-access) atomicity of LOCK-
612   prefixed x86/amd64 instructions, and any others implying a global
613   bus lock.  Ditto for PowerPC l{w,d}arx/st{w,d}cx. instructions.
615   This means that Valgrinded processes will "play nicely" in
616   situations where communication with other processes, or the kernel,
617   is done through shared memory and coordinated with such atomic
618   instructions.  Prior to this change, such arrangements usually
619   resulted in hangs, races or other synchronisation failures, because
620   Valgrind did not honour atomicity of such instructions.
623 * A new experimental tool, BBV, has been added.  BBV generates basic
624   block vectors for use with the SimPoint analysis tool, which allows
625   a program's overall behaviour to be approximated by running only a
626   fraction of it.  This is useful for computer architecture
627   researchers.  You can run BBV by specifying --tool=exp-bbv (the
628   "exp-" prefix is short for "experimental").  BBV was written by
629   Vince Weaver.
632 * Modestly improved support for running Windows applications under
633   Wine.  In particular, initial support for reading Windows .PDB debug
634   information has been added.
637 * A new Memcheck client request VALGRIND_COUNT_LEAK_BLOCKS has been
638   added.  It is similar to VALGRIND_COUNT_LEAKS but counts blocks
639   instead of bytes.
642 * The Valgrind client requests VALGRIND_PRINTF and
643   VALGRIND_PRINTF_BACKTRACE have been changed slightly.  Previously,
644   the string was always printed immediately on its own line.  Now, the
645   string will be added to a buffer but not printed until a newline is
646   encountered, or other Valgrind output is printed (note that for
647   VALGRIND_PRINTF_BACKTRACE, the back-trace itself is considered
648   "other Valgrind output").  This allows you to use multiple
649   VALGRIND_PRINTF calls to build up a single output line, and also to
650   print multiple output lines with a single request (by embedding
651   multiple newlines in the string).
654 * The graphs drawn by Massif's ms_print program have changed slightly:
656   - The half-height chars '.' and ',' are no longer drawn, because
657     they are confusing.  The --y option can be used if the default
658     y-resolution is not high enough.
660   - Horizontal lines are now drawn after the top of a snapshot if
661     there is a gap until the next snapshot.  This makes it clear that
662     the memory usage has not dropped to zero between snapshots.
665 * Something that happened in 3.4.0, but wasn't clearly announced: the
666   option --read-var-info=yes can be used by some tools (Memcheck,
667   Helgrind and DRD).  When enabled, it causes Valgrind to read DWARF3
668   variable type and location information.  This makes those tools
669   start up more slowly and increases memory consumption, but
670   descriptions of data addresses in error messages become more
671   detailed.
674 * exp-Omega, an experimental instantaneous leak-detecting tool, was
675   disabled in 3.4.0 due to a lack of interest and maintenance,
676   although the source code was still in the distribution.  The source
677   code has now been removed from the distribution.  For anyone
678   interested, the removal occurred in SVN revision r10247.
681 * Some changes have been made to the build system.
683   - VEX/ is now integrated properly into the build system.  This means
684     that dependency tracking within VEX/ now works properly, "make
685     install" will work without requiring "make" before it, and
686     parallel builds (ie. 'make -j') now work (previously a
687     .NOTPARALLEL directive was used to serialize builds, ie. 'make -j'
688     was effectively ignored).
690   - The --with-vex configure option has been removed.  It was of
691     little use and removing it simplified the build system.
693   - The location of some install files has changed.  This should not
694     affect most users.  Those who might be affected:
696     * For people who use Valgrind with MPI programs, the installed
697       libmpiwrap.so library has moved from
698       $(INSTALL)/<platform>/libmpiwrap.so to
699       $(INSTALL)/libmpiwrap-<platform>.so.
701     * For people who distribute standalone Valgrind tools, the
702       installed libraries such as $(INSTALL)/<platform>/libcoregrind.a
703       have moved to $(INSTALL)/libcoregrind-<platform>.a.
705     These changes simplify the build system.
707   - Previously, all the distributed suppression (*.supp) files were
708     installed.  Now, only default.supp is installed.  This should not
709     affect users as the other installed suppression files were not
710     read; the fact that they were installed was a mistake.
713 * KNOWN LIMITATIONS:
715   - Memcheck is unusable with the Intel compiler suite version 11.1,
716     when it generates code for SSE2-and-above capable targets.  This
717     is because of icc's use of highly optimised inlined strlen
718     implementations.  It causes Memcheck to report huge numbers of
719     false errors even in simple programs.  Helgrind and DRD may also
720     have problems.
722     Versions 11.0 and earlier may be OK, but this has not been
723     properly tested.
726 The following bugs have been fixed or resolved.  Note that "n-i-bz"
727 stands for "not in bugzilla" -- that is, a bug that was reported to us
728 but never got a bugzilla entry.  We encourage you to file bugs in
729 bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
730 mailing the developers (or mailing lists) directly -- bugs that are
731 not entered into bugzilla tend to get forgotten about or ignored.
733 To see details of a given bug, visit
734 https://bugs.kde.org/show_bug.cgi?id=XXXXXX
735 where XXXXXX is the bug number as listed below.
737 84303   How about a LockCheck tool? 
738 91633   dereference of null ptr in vgPlain_st_basetype 
739 97452   Valgrind doesn't report any pthreads problems 
740 100628  leak-check gets assertion failure when using 
741         VALGRIND_MALLOCLIKE_BLOCK on malloc()ed memory 
742 108528  NPTL pthread cleanup handlers not called 
743 110126  Valgrind 2.4.1 configure.in tramples CFLAGS 
744 110128  mallinfo is not implemented... 
745 110770  VEX: Generated files not always updated when making valgrind
746 111102  Memcheck: problems with large (memory footprint) applications 
747 115673  Vex's decoder should never assert 
748 117564  False positive: Syscall param clone(child_tidptr) contains
749         uninitialised byte(s) 
750 119404  executing ssh from inside valgrind fails 
751 133679  Callgrind does not write path names to sources with dwarf debug
752         info
753 135847  configure.in problem with non gnu compilers (and possible fix) 
754 136154  threads.c:273 (vgCallgrind_post_signal): Assertion
755         '*(vgCallgrind_current_fn_stack.top) == 0' failed. 
756 136230  memcheck reports "possibly lost", should be "still reachable" 
757 137073  NULL arg to MALLOCLIKE_BLOCK causes crash 
758 137904  Valgrind reports a memory leak when using POSIX threads,
759         while it shouldn't 
760 139076  valgrind VT_GETSTATE error 
761 142228  complaint of elf_dynamic_do_rela in trivial usage 
762 145347  spurious warning with USBDEVFS_REAPURB 
763 148441  (wine) can't find memory leak in Wine, win32 binary 
764         executable file.
765 148742  Leak-check fails assert on exit 
766 149878  add (proper) check for calloc integer overflow 
767 150606  Call graph is broken when using callgrind control 
768 152393  leak errors produce an exit code of 0. I need some way to 
769         cause leak errors to result in a nonzero exit code. 
770 157154  documentation (leak-resolution doc speaks about num-callers
771         def=4) + what is a loss record
772 159501  incorrect handling of ALSA ioctls 
773 162020  Valgrinding an empty/zero-byte file crashes valgrind 
774 162482  ppc: Valgrind crashes while reading stabs information 
775 162718  x86: avoid segment selector 0 in sys_set_thread_area() 
776 163253  (wine) canonicaliseSymtab forgot some fields in DiSym 
777 163560  VEX/test_main.c is missing from valgrind-3.3.1 
778 164353  malloc_usable_size() doesn't return a usable size 
779 165468  Inconsistent formatting in memcheck manual -- please fix 
780 169505  main.c:286 (endOfInstr):
781         Assertion 'ii->cost_offset == *cost_offset' failed 
782 177206  Generate default.supp during compile instead of configure
783 177209  Configure valt_load_address based on arch+os 
784 177305  eventfd / syscall 323 patch lost
785 179731  Tests fail to build because of inlining of non-local asm labels
786 181394  helgrind: libhb_core.c:3762 (msm_write): Assertion 
787         'ordxx == POrd_EQ || ordxx == POrd_LT' failed. 
788 181594  Bogus warning for empty text segment 
789 181707  dwarf doesn't require enumerations to have name 
790 185038  exp-ptrcheck: "unhandled syscall: 285" (fallocate) on x86_64 
791 185050  exp-ptrcheck: sg_main.c:727 (add_block_to_GlobalTree):
792         Assertion '!already_present' failed.
793 185359  exp-ptrcheck: unhandled syscall getresuid()
794 185794  "WARNING: unhandled syscall: 285" (fallocate) on x86_64
795 185816  Valgrind is unable to handle debug info for files with split
796         debug info that are prelinked afterwards 
797 185980  [darwin] unhandled syscall: sem_open 
798 186238  bbToIR_AMD64: disInstr miscalculated next %rip
799 186507  exp-ptrcheck unhandled syscalls prctl, etc. 
800 186790  Suppression pattern used for leaks are not reported 
801 186796  Symbols with length>200 in suppression files are ignored 
802 187048  drd: mutex PTHREAD_PROCESS_SHARED attribute missinterpretation
803 187416  exp-ptrcheck: support for __NR_{setregid,setreuid,setresuid}
804 188038  helgrind: hg_main.c:926: mk_SHVAL_fail: the 'impossible' happened
805 188046  bashisms in the configure script
806 188127  amd64->IR: unhandled instruction bytes: 0xF0 0xF 0xB0 0xA
807 188161  memcheck: --track-origins=yes asserts "mc_machine.c:672
808         (get_otrack_shadow_offset_wrk): the 'impossible' happened."
809 188248  helgrind: pthread_cleanup_push, pthread_rwlock_unlock, 
810         assertion fail "!lock->heldBy" 
811 188427  Add support for epoll_create1 (with patch) 
812 188530  Support for SIOCGSTAMPNS
813 188560  Include valgrind.spec in the tarball
814 188572  Valgrind on Mac should suppress setenv() mem leak 
815 189054  Valgrind fails to build because of duplicate non-local asm labels 
816 189737  vex amd64->IR: unhandled instruction bytes: 0xAC
817 189762  epoll_create syscall not handled (--tool=exp-ptrcheck)
818 189763  drd assertion failure: s_threadinfo[tid].is_recording 
819 190219  unhandled syscall: 328 (x86-linux)
820 190391  dup of 181394; see above
821 190429  Valgrind reports lots of errors in ld.so with x86_64 2.9.90 glibc 
822 190820  No debug information on powerpc-linux
823 191095  PATCH: Improve usbdevfs ioctl handling 
824 191182  memcheck: VALGRIND_LEAK_CHECK quadratic when big nr of chunks
825         or big nr of errors
826 191189  --xml=yes should obey --gen-suppressions=all 
827 191192  syslog() needs a suppression on macosx 
828 191271  DARWIN: WARNING: unhandled syscall: 33554697 a.k.a.: 265 
829 191761  getrlimit on MacOSX 
830 191992  multiple --fn-skip only works sometimes; dependent on order 
831 192634  V. reports "aspacem sync_check_mapping_callback: 
832         segment mismatch" on Darwin
833 192954  __extension__ missing on 2 client requests 
834 194429  Crash at start-up with glibc-2.10.1 and linux-2.6.29 
835 194474  "INSTALL" file has different build instructions than "README"
836 194671  Unhandled syscall (sem_wait?) from mac valgrind 
837 195069  memcheck: reports leak (memory still reachable) for 
838         printf("%d', x) 
839 195169  drd: (vgDrd_barrier_post_wait):
840         Assertion 'r->sg[p->post_iteration]' failed. 
841 195268  valgrind --log-file doesn't accept ~/...
842 195838  VEX abort: LibVEX_N_SPILL_BYTES too small for CPUID boilerplate 
843 195860  WARNING: unhandled syscall: unix:223 
844 196528  need a error suppression for pthread_rwlock_init under os x? 
845 197227  Support aio_* syscalls on Darwin
846 197456  valgrind should reject --suppressions=(directory) 
847 197512  DWARF2 CFI reader: unhandled CFI instruction 0:10 
848 197591  unhandled syscall 27 (mincore) 
849 197793  Merge DCAS branch to the trunk == 85756, 142103
850 197794  Avoid duplicate filenames in Vex 
851 197898  make check fails on current SVN 
852 197901  make check fails also under exp-ptrcheck in current SVN 
853 197929  Make --leak-resolution=high the default 
854 197930  Reduce spacing between leak reports 
855 197933  Print command line of client at start-up, and shorten preamble 
856 197966  unhandled syscall 205 (x86-linux, --tool=exp-ptrcheck)
857 198395  add BBV to the distribution as an experimental tool 
858 198624  Missing syscalls on Darwin: 82, 167, 281, 347 
859 198649  callgrind_annotate doesn't cumulate counters 
860 199338  callgrind_annotate sorting/thresholds are broken for all but Ir 
861 199977  Valgrind complains about an unrecognized instruction in the
862         atomic_incs test program
863 200029  valgrind isn't able to read Fedora 12 debuginfo 
864 200760  darwin unhandled syscall: unix:284 
865 200827  DRD doesn't work on Mac OS X 
866 200990  VG_(read_millisecond_timer)() does not work correctly 
867 201016  Valgrind does not support pthread_kill() on Mac OS 
868 201169  Document --read-var-info
869 201323  Pre-3.5.0 performance sanity checking 
870 201384  Review user manual for the 3.5.0 release 
871 201585  mfpvr not implemented on ppc 
872 201708  tests failing because x86 direction flag is left set 
873 201757  Valgrind doesn't handle any recent sys_futex additions 
874 204377  64-bit valgrind can not start a shell script
875         (with #!/path/to/shell) if the shell is a 32-bit executable
876 n-i-bz  drd: fixed assertion failure triggered by mutex reinitialization.
877 n-i-bz  drd: fixed a bug that caused incorrect messages to be printed
878         about memory allocation events with memory access tracing enabled
879 n-i-bz  drd: fixed a memory leak triggered by vector clock deallocation
881 (3.5.0: 19 Aug 2009, vex r1913, valgrind r10846).
885 Release 3.4.1 (28 February 2009)
886 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
887 3.4.1 is a bug-fix release that fixes some regressions and assertion
888 failures in debug info reading in 3.4.0, most notably incorrect stack
889 traces on amd64-linux on older (glibc-2.3 based) systems. Various
890 other debug info problems are also fixed.  A number of bugs in the
891 exp-ptrcheck tool introduced in 3.4.0 have been fixed.
893 In view of the fact that 3.4.0 contains user-visible regressions
894 relative to 3.3.x, upgrading to 3.4.1 is recommended.  Packagers are
895 encouraged to ship 3.4.1 in preference to 3.4.0.
897 The fixed bugs are as follows.  Note that "n-i-bz" stands for "not in
898 bugzilla" -- that is, a bug that was reported to us but never got a
899 bugzilla entry.  We encourage you to file bugs in bugzilla
900 (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the
901 developers (or mailing lists) directly -- bugs that are not entered
902 into bugzilla tend to get forgotten about or ignored.
904 n-i-bz  Fix various bugs reading icc-11 generated debug info
905 n-i-bz  Fix various bugs reading gcc-4.4 generated debug info
906 n-i-bz  Preliminary support for glibc-2.10 / Fedora 11
907 n-i-bz  Cachegrind and Callgrind: handle non-power-of-two cache sizes,
908         so as to support (eg) 24k Atom D1 and Core2 with 3/6/12MB L2.
909 179618  exp-ptrcheck crashed / exit prematurely
910 179624  helgrind: false positive races with pthread_create and
911         recv/open/close/read
912 134207  pkg-config output contains @VG_PLATFORM@
913 176926  floating point exception at valgrind startup with PPC 440EPX
914 181594  Bogus warning for empty text segment
915 173751  amd64->IR: 0x48 0xF 0x6F 0x45 (even more redundant rex prefixes)
916 181707  Dwarf3 doesn't require enumerations to have name
917 185038  exp-ptrcheck: "unhandled syscall: 285" (fallocate) on x86_64
918 185050  exp-ptrcheck: sg_main.c:727 (add_block_to_GlobalTree):
919         Assertion '!already_present' failed.
920 185359  exp-ptrcheck unhandled syscall getresuid()
922 (3.4.1.RC1:  24 Feb 2008, vex r1884, valgrind r9253).
923 (3.4.1:      28 Feb 2008, vex r1884, valgrind r9293).
927 Release 3.4.0 (2 January 2009)
928 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
929 3.4.0 is a feature release with many significant improvements and the
930 usual collection of bug fixes.  This release supports X86/Linux,
931 AMD64/Linux, PPC32/Linux and PPC64/Linux.  Support for recent distros
932 (using gcc 4.4, glibc 2.8 and 2.9) has been added.
934 3.4.0 brings some significant tool improvements.  Memcheck can now
935 report the origin of uninitialised values, the thread checkers
936 Helgrind and DRD are much improved, and we have a new experimental
937 tool, exp-Ptrcheck, which is able to detect overruns of stack and
938 global arrays.  In detail:
940 * Memcheck is now able to track the origin of uninitialised values.
941   When it reports an uninitialised value error, it will try to show
942   the origin of the value, as either a heap or stack allocation.
943   Origin tracking is expensive and so is not enabled by default.  To
944   use it, specify --track-origins=yes.  Memcheck's speed will be
945   essentially halved, and memory usage will be significantly
946   increased.  Nevertheless it can drastically reduce the effort
947   required to identify the root cause of uninitialised value errors,
948   and so is often a programmer productivity win, despite running more
949   slowly.
951 * A version (1.4.0) of the Valkyrie GUI, that works with Memcheck in
952   3.4.0, will be released shortly.
954 * Helgrind's race detection algorithm has been completely redesigned
955   and reimplemented, to address usability and scalability concerns:
957   - The new algorithm has a lower false-error rate: it is much less
958     likely to report races that do not really exist.
960   - Helgrind will display full call stacks for both accesses involved
961     in a race.  This makes it easier to identify the root causes of
962     races.
964   - Limitations on the size of program that can run have been removed.
966   - Performance has been modestly improved, although that is very
967     workload-dependent.
969   - Direct support for Qt4 threading has been added.
971   - pthread_barriers are now directly supported.
973   - Helgrind works well on all supported Linux targets.
975 * The DRD thread debugging tool has seen major improvements:
977   - Greatly improved performance and significantly reduced memory
978     usage.
980   - Support for several major threading libraries (Boost.Thread, Qt4,
981     glib, OpenMP) has been added.
983   - Support for atomic instructions, POSIX semaphores, barriers and
984     reader-writer locks has been added.
986   - Works now on PowerPC CPUs too.
988   - Added support for printing thread stack usage at thread exit time.
990   - Added support for debugging lock contention.
992   - Added a manual for Drd.
994 * A new experimental tool, exp-Ptrcheck, has been added.  Ptrcheck
995   checks for misuses of pointers.  In that sense it is a bit like
996   Memcheck.  However, Ptrcheck can do things Memcheck can't: it can
997   detect overruns of stack and global arrays, it can detect
998   arbitrarily far out-of-bounds accesses to heap blocks, and it can
999   detect accesses heap blocks that have been freed a very long time
1000   ago (millions of blocks in the past).
1002   Ptrcheck currently works only on x86-linux and amd64-linux.  To use
1003   it, use --tool=exp-ptrcheck.  A simple manual is provided, as part
1004   of the main Valgrind documentation.  As this is an experimental
1005   tool, we would be particularly interested in hearing about your
1006   experiences with it.
1008 * exp-Omega, an experimental instantaneous leak-detecting tool, is no
1009   longer built by default, although the code remains in the repository
1010   and the tarball.  This is due to three factors: a perceived lack of
1011   users, a lack of maintenance, and concerns that it may not be
1012   possible to achieve reliable operation using the existing design.
1014 * As usual, support for the latest Linux distros and toolchain
1015   components has been added.  It should work well on Fedora Core 10,
1016   OpenSUSE 11.1 and Ubuntu 8.10.  gcc-4.4 (in its current pre-release
1017   state) is supported, as is glibc-2.9.  The C++ demangler has been
1018   updated so as to work well with C++ compiled by even the most recent
1019   g++'s.
1021 * You can now use frame-level wildcards in suppressions.  This was a
1022   frequently-requested enhancement.  A line "..." in a suppression now
1023   matches zero or more frames.  This makes it easier to write
1024   suppressions which are precise yet insensitive to changes in
1025   inlining behaviour.
1027 * 3.4.0 adds support on x86/amd64 for the SSSE3 instruction set.
1029 * Very basic support for IBM Power6 has been added (64-bit processes only).
1031 * Valgrind is now cross-compilable.  For example, it is possible to
1032   cross compile Valgrind on an x86/amd64-linux host, so that it runs
1033   on a ppc32/64-linux target.
1035 * You can set the main thread's stack size at startup using the
1036   new --main-stacksize= flag (subject of course to ulimit settings).
1037   This is useful for running apps that need a lot of stack space.
1039 * The limitation that you can't use --trace-children=yes together
1040   with --db-attach=yes has been removed.
1042 * The following bugs have been fixed.  Note that "n-i-bz" stands for
1043   "not in bugzilla" -- that is, a bug that was reported to us but
1044   never got a bugzilla entry.  We encourage you to file bugs in
1045   bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
1046   mailing the developers (or mailing lists) directly.
1048   n-i-bz  Make return types for some client requests 64-bit clean
1049   n-i-bz  glibc 2.9 support
1050   n-i-bz  ignore unsafe .valgrindrc's (CVE-2008-4865)
1051   n-i-bz  MPI_Init(0,0) is valid but libmpiwrap.c segfaults
1052   n-i-bz  Building in an env without gdb gives bogus gdb attach
1053   92456   Tracing the origin of uninitialised memory
1054   106497  Valgrind does not demangle some C++ template symbols
1055   162222  ==106497
1056   151612  Suppression with "..." (frame-level wildcards in .supp files)
1057   156404  Unable to start oocalc under memcheck on openSUSE 10.3 (64-bit)
1058   159285  unhandled syscall:25 (stime, on x86-linux)
1059   159452  unhandled ioctl 0x8B01 on "valgrind iwconfig"
1060   160954  ppc build of valgrind crashes with illegal instruction (isel)
1061   160956  mallinfo implementation, w/ patch
1062   162092  Valgrind fails to start gnome-system-monitor
1063   162819  malloc_free_fill test doesn't pass on glibc2.8 x86
1064   163794  assertion failure with "--track-origins=yes"
1065   163933  sigcontext.err and .trapno must be set together
1066   163955  remove constraint !(--db-attach=yes && --trace-children=yes)
1067   164476  Missing kernel module loading system calls
1068   164669  SVN regression: mmap() drops posix file locks
1069   166581  Callgrind output corruption when program forks
1070   167288  Patch file for missing system calls on Cell BE
1071   168943  unsupported scas instruction pentium
1072   171645  Unrecognised instruction (MOVSD, non-binutils encoding)
1073   172417  x86->IR: 0x82 ...
1074   172563  amd64->IR: 0xD9 0xF5  -  fprem1
1075   173099  .lds linker script generation error
1076   173177  [x86_64] syscalls: 125/126/179 (capget/capset/quotactl)
1077   173751  amd64->IR: 0x48 0xF 0x6F 0x45 (even more redundant prefixes)
1078   174532  == 173751
1079   174908  --log-file value not expanded correctly for core file
1080   175044  Add lookup_dcookie for amd64
1081   175150  x86->IR: 0xF2 0xF 0x11 0xC1 (movss non-binutils encoding)
1083 Developer-visible changes:
1085 * Valgrind's debug-info reading machinery has been majorly overhauled.
1086   It can now correctly establish the addresses for ELF data symbols,
1087   which is something that has never worked properly before now.
1089   Also, Valgrind can now read DWARF3 type and location information for
1090   stack and global variables.  This makes it possible to use the
1091   framework to build tools that rely on knowing the type and locations
1092   of stack and global variables, for example exp-Ptrcheck.
1094   Reading of such information is disabled by default, because most
1095   tools don't need it, and because it is expensive in space and time.
1096   However, you can force Valgrind to read it, using the
1097   --read-var-info=yes flag.  Memcheck, Helgrind and DRD are able to
1098   make use of such information, if present, to provide source-level
1099   descriptions of data addresses in the error messages they create.
1101 (3.4.0.RC1:  24 Dec 2008, vex r1878, valgrind r8882).
1102 (3.4.0:       3 Jan 2009, vex r1878, valgrind r8899).
1105 Release 3.3.1 (4 June 2008)
1106 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
1107 3.3.1 fixes a bunch of bugs in 3.3.0, adds support for glibc-2.8 based
1108 systems (openSUSE 11, Fedora Core 9), improves the existing glibc-2.7
1109 support, and adds support for the SSSE3 (Core 2) instruction set.
1111 3.3.1 will likely be the last release that supports some very old
1112 systems.  In particular, the next major release, 3.4.0, will drop
1113 support for the old LinuxThreads threading library, and for gcc
1114 versions prior to 3.0.
1116 The fixed bugs are as follows.  Note that "n-i-bz" stands for "not in
1117 bugzilla" -- that is, a bug that was reported to us but never got a
1118 bugzilla entry.  We encourage you to file bugs in bugzilla
1119 (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the
1120 developers (or mailing lists) directly -- bugs that are not entered
1121 into bugzilla tend to get forgotten about or ignored.
1123 n-i-bz  Massif segfaults at exit
1124 n-i-bz  Memcheck asserts on Altivec code
1125 n-i-bz  fix sizeof bug in Helgrind
1126 n-i-bz  check fd on sys_llseek
1127 n-i-bz  update syscall lists to kernel 2.6.23.1
1128 n-i-bz  support sys_sync_file_range
1129 n-i-bz  handle sys_sysinfo, sys_getresuid, sys_getresgid on ppc64-linux
1130 n-i-bz  intercept memcpy in 64-bit ld.so's
1131 n-i-bz  Fix wrappers for sys_{futimesat,utimensat}
1132 n-i-bz  Minor false-error avoidance fixes for Memcheck
1133 n-i-bz  libmpiwrap.c: add a wrapper for MPI_Waitany
1134 n-i-bz  helgrind support for glibc-2.8
1135 n-i-bz  partial fix for mc_leakcheck.c:698 assert:
1136         'lc_shadows[i]->data + lc_shadows[i] ...
1137 n-i-bz  Massif/Cachegrind output corruption when programs fork
1138 n-i-bz  register allocator fix: handle spill stores correctly
1139 n-i-bz  add support for PA6T PowerPC CPUs
1140 126389  vex x86->IR: 0xF 0xAE (FXRSTOR)
1141 158525  ==126389
1142 152818  vex x86->IR: 0xF3 0xAC (repz lodsb) 
1143 153196  vex x86->IR: 0xF2 0xA6 (repnz cmpsb) 
1144 155011  vex x86->IR: 0xCF (iret)
1145 155091  Warning [...] unhandled DW_OP_ opcode 0x23
1146 156960  ==155901
1147 155528  support Core2/SSSE3 insns on x86/amd64
1148 155929  ms_print fails on massif outputs containing long lines
1149 157665  valgrind fails on shmdt(0) after shmat to 0
1150 157748  support x86 PUSHFW/POPFW
1151 158212  helgrind: handle pthread_rwlock_try{rd,wr}lock.
1152 158425  sys_poll incorrectly emulated when RES==0
1153 158744  vex amd64->IR: 0xF0 0x41 0xF 0xC0 (xaddb)
1154 160907  Support for a couple of recent Linux syscalls
1155 161285  Patch -- support for eventfd() syscall
1156 161378  illegal opcode in debug libm (FUCOMPP)
1157 160136  ==161378
1158 161487  number of suppressions files is limited to 10
1159 162386  ms_print typo in milliseconds time unit for massif
1160 161036  exp-drd: client allocated memory was never freed
1161 162663  signalfd_wrapper fails on 64bit linux
1163 (3.3.1.RC1:  2 June 2008, vex r1854, valgrind r8169).
1164 (3.3.1:      4 June 2008, vex r1854, valgrind r8180).
1168 Release 3.3.0 (7 December 2007)
1169 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1170 3.3.0 is a feature release with many significant improvements and the
1171 usual collection of bug fixes.  This release supports X86/Linux,
1172 AMD64/Linux, PPC32/Linux and PPC64/Linux.  Support for recent distros
1173 (using gcc 4.3, glibc 2.6 and 2.7) has been added.
1175 The main excitement in 3.3.0 is new and improved tools.  Helgrind
1176 works again, Massif has been completely overhauled and much improved,
1177 Cachegrind now does branch-misprediction profiling, and a new category
1178 of experimental tools has been created, containing two new tools:
1179 Omega and DRD.  There are many other smaller improvements.  In detail:
1181 - Helgrind has been completely overhauled and works for the first time
1182   since Valgrind 2.2.0.  Supported functionality is: detection of
1183   misuses of the POSIX PThreads API, detection of potential deadlocks
1184   resulting from cyclic lock dependencies, and detection of data
1185   races.  Compared to the 2.2.0 Helgrind, the race detection algorithm
1186   has some significant improvements aimed at reducing the false error
1187   rate.  Handling of various kinds of corner cases has been improved.
1188   Efforts have been made to make the error messages easier to
1189   understand.  Extensive documentation is provided.
1191 - Massif has been completely overhauled.  Instead of measuring
1192   space-time usage -- which wasn't always useful and many people found
1193   confusing -- it now measures space usage at various points in the
1194   execution, including the point of peak memory allocation.  Its
1195   output format has also changed: instead of producing PostScript
1196   graphs and HTML text, it produces a single text output (via the new
1197   'ms_print' script) that contains both a graph and the old textual
1198   information, but in a more compact and readable form.  Finally, the
1199   new version should be more reliable than the old one, as it has been
1200   tested more thoroughly.
1202 - Cachegrind has been extended to do branch-misprediction profiling.
1203   Both conditional and indirect branches are profiled.  The default
1204   behaviour of Cachegrind is unchanged.  To use the new functionality,
1205   give the option --branch-sim=yes.
1207 - A new category of "experimental tools" has been created.  Such tools
1208   may not work as well as the standard tools, but are included because
1209   some people will find them useful, and because exposure to a wider
1210   user group provides tool authors with more end-user feedback.  These
1211   tools have a "exp-" prefix attached to their names to indicate their
1212   experimental nature.  Currently there are two experimental tools:
1214   * exp-Omega: an instantaneous leak detector.  See
1215     exp-omega/docs/omega_introduction.txt.
1217   * exp-DRD: a data race detector based on the happens-before
1218     relation.  See exp-drd/docs/README.txt.
1220 - Scalability improvements for very large programs, particularly those
1221   which have a million or more malloc'd blocks in use at once.  These
1222   improvements mostly affect Memcheck.  Memcheck is also up to 10%
1223   faster for all programs, with x86-linux seeing the largest
1224   improvement.
1226 - Works well on the latest Linux distros.  Has been tested on Fedora
1227   Core 8 (x86, amd64, ppc32, ppc64) and openSUSE 10.3.  glibc 2.6 and
1228   2.7 are supported.  gcc-4.3 (in its current pre-release state) is
1229   supported.  At the same time, 3.3.0 retains support for older
1230   distros.
1232 - The documentation has been modestly reorganised with the aim of
1233   making it easier to find information on common-usage scenarios.
1234   Some advanced material has been moved into a new chapter in the main
1235   manual, so as to unclutter the main flow, and other tidying up has
1236   been done.
1238 - There is experimental support for AIX 5.3, both 32-bit and 64-bit
1239   processes.  You need to be running a 64-bit kernel to use Valgrind
1240   on a 64-bit executable.
1242 - There have been some changes to command line options, which may
1243   affect you:
1245   * --log-file-exactly and 
1246     --log-file-qualifier options have been removed.
1248     To make up for this --log-file option has been made more powerful.
1249     It now accepts a %p format specifier, which is replaced with the
1250     process ID, and a %q{FOO} format specifier, which is replaced with
1251     the contents of the environment variable FOO.
1253   * --child-silent-after-fork=yes|no [no]
1255     Causes Valgrind to not show any debugging or logging output for
1256     the child process resulting from a fork() call.  This can make the
1257     output less confusing (although more misleading) when dealing with
1258     processes that create children.
1260   * --cachegrind-out-file, --callgrind-out-file and --massif-out-file
1262     These control the names of the output files produced by
1263     Cachegrind, Callgrind and Massif.  They accept the same %p and %q
1264     format specifiers that --log-file accepts.  --callgrind-out-file
1265     replaces Callgrind's old --base option.
1267   * Cachegrind's 'cg_annotate' script no longer uses the --<pid>
1268     option to specify the output file.  Instead, the first non-option
1269     argument is taken to be the name of the output file, and any
1270     subsequent non-option arguments are taken to be the names of
1271     source files to be annotated.
1273   * Cachegrind and Callgrind now use directory names where possible in
1274     their output files.  This means that the -I option to
1275     'cg_annotate' and 'callgrind_annotate' should not be needed in
1276     most cases.  It also means they can correctly handle the case
1277     where two source files in different directories have the same
1278     name.
1280 - Memcheck offers a new suppression kind: "Jump".  This is for
1281   suppressing jump-to-invalid-address errors.  Previously you had to
1282   use an "Addr1" suppression, which didn't make much sense.
1284 - Memcheck has new flags --malloc-fill=<hexnum> and
1285   --free-fill=<hexnum> which free malloc'd / free'd areas with the
1286   specified byte.  This can help shake out obscure memory corruption
1287   problems.  The definedness and addressability of these areas is
1288   unchanged -- only the contents are affected.
1290 - The behaviour of Memcheck's client requests VALGRIND_GET_VBITS and
1291   VALGRIND_SET_VBITS have changed slightly.  They no longer issue
1292   addressability errors -- if either array is partially unaddressable,
1293   they just return 3 (as before).  Also, SET_VBITS doesn't report
1294   definedness errors if any of the V bits are undefined.
1296 - The following Memcheck client requests have been removed:
1297     VALGRIND_MAKE_NOACCESS
1298     VALGRIND_MAKE_WRITABLE
1299     VALGRIND_MAKE_READABLE
1300     VALGRIND_CHECK_WRITABLE
1301     VALGRIND_CHECK_READABLE
1302     VALGRIND_CHECK_DEFINED
1303   They were deprecated in 3.2.0, when equivalent but better-named client
1304   requests were added.  See the 3.2.0 release notes for more details.
1306 - The behaviour of the tool Lackey has changed slightly.  First, the output
1307   from --trace-mem has been made more compact, to reduce the size of the
1308   traces.  Second, a new option --trace-superblocks has been added, which
1309   shows the addresses of superblocks (code blocks) as they are executed.
1311 - The following bugs have been fixed.  Note that "n-i-bz" stands for
1312   "not in bugzilla" -- that is, a bug that was reported to us but
1313   never got a bugzilla entry.  We encourage you to file bugs in
1314   bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
1315   mailing the developers (or mailing lists) directly.
1317   n-i-bz  x86_linux_REDIR_FOR_index() broken
1318   n-i-bz  guest-amd64/toIR.c:2512 (dis_op2_E_G): Assertion `0' failed.
1319   n-i-bz  Support x86 INT insn (INT (0xCD) 0x40 - 0x43)
1320   n-i-bz  Add sys_utimensat system call for Linux x86 platform
1321    79844  Helgrind complains about race condition which does not exist
1322    82871  Massif output function names too short
1323    89061  Massif: ms_main.c:485 (get_XCon): Assertion `xpt->max_chi...'
1324    92615  Write output from Massif at crash
1325    95483  massif feature request: include peak allocation in report
1326   112163  MASSIF crashed with signal 7 (SIGBUS) after running 2 days
1327   119404  problems running setuid executables (partial fix)
1328   121629  add instruction-counting mode for timing
1329   127371  java vm giving unhandled instruction bytes: 0x26 0x2E 0x64 0x65
1330   129937  ==150380
1331   129576  Massif loses track of memory, incorrect graphs
1332   132132  massif --format=html output does not do html entity escaping
1333   132950  Heap alloc/usage summary
1334   133962  unhandled instruction bytes: 0xF2 0x4C 0xF 0x10
1335   134990  use -fno-stack-protector if possible
1336   136382  ==134990
1337   137396  I would really like helgrind to work again...
1338   137714  x86/amd64->IR: 0x66 0xF 0xF7 0xC6 (maskmovq, maskmovdq)
1339   141631  Massif: percentages don't add up correctly
1340   142706  massif numbers don't seem to add up
1341   143062  massif crashes on app exit with signal 8 SIGFPE
1342   144453  (get_XCon): Assertion 'xpt->max_children != 0' failed.
1343   145559  valgrind aborts when malloc_stats is called
1344   145609  valgrind aborts all runs with 'repeated section!'
1345   145622  --db-attach broken again on x86-64
1346   145837  ==149519
1347   145887  PPC32: getitimer() system call is not supported
1348   146252  ==150678
1349   146456  (update_XCon): Assertion 'xpt->curr_space >= -space_delta'...
1350   146701  ==134990
1351   146781  Adding support for private futexes
1352   147325  valgrind internal error on syscall (SYS_io_destroy, 0)
1353   147498  amd64->IR: 0xF0 0xF 0xB0 0xF (lock cmpxchg %cl,(%rdi))
1354   147545  Memcheck: mc_main.c:817 (get_sec_vbits8): Assertion 'n' failed.
1355   147628  SALC opcode 0xd6 unimplemented
1356   147825  crash on amd64-linux with gcc 4.2 and glibc 2.6 (CFI)
1357   148174  Incorrect type of freed_list_volume causes assertion [...]
1358   148447  x86_64 : new NOP codes: 66 66 66 66 2e 0f 1f
1359   149182  PPC Trap instructions not implemented in valgrind
1360   149504  Assertion hit on alloc_xpt->curr_space >= -space_delta
1361   149519  ppc32: V aborts with SIGSEGV on execution of a signal handler
1362   149892  ==137714
1363   150044  SEGV during stack deregister
1364   150380  dwarf/gcc interoperation (dwarf3 read problems)
1365   150408  ==148447
1366   150678  guest-amd64/toIR.c:3741 (dis_Grp5): Assertion `sz == 4' failed
1367   151209  V unable to execute programs for users with UID > 2^16
1368   151938  help on --db-command= misleading
1369   152022  subw $0x28, %%sp causes assertion failure in memcheck
1370   152357  inb and outb not recognized in 64-bit mode
1371   152501  vex x86->IR: 0x27 0x66 0x89 0x45 (daa) 
1372   152818  vex x86->IR: 0xF3 0xAC 0xFC 0x9C (rep lodsb)
1374 Developer-visible changes:
1376 - The names of some functions and types within the Vex IR have
1377   changed.  Run 'svn log -r1689 VEX/pub/libvex_ir.h' for full details.
1378   Any existing standalone tools will have to be updated to reflect
1379   these changes.  The new names should be clearer.  The file
1380   VEX/pub/libvex_ir.h is also much better commented.
1382 - A number of new debugging command line options have been added.
1383   These are mostly of use for debugging the symbol table and line
1384   number readers:
1386   --trace-symtab-patt=<patt> limit debuginfo tracing to obj name <patt>
1387   --trace-cfi=no|yes        show call-frame-info details? [no]
1388   --debug-dump=syms         mimic /usr/bin/readelf --syms
1389   --debug-dump=line         mimic /usr/bin/readelf --debug-dump=line
1390   --debug-dump=frames       mimic /usr/bin/readelf --debug-dump=frames
1391   --sym-offsets=yes|no      show syms in form 'name+offset' ? [no]
1393 - Internally, the code base has been further factorised and
1394   abstractified, particularly with respect to support for non-Linux
1395   OSs.
1397 (3.3.0.RC1:  2 Dec 2007, vex r1803, valgrind r7268).
1398 (3.3.0.RC2:  5 Dec 2007, vex r1804, valgrind r7282).
1399 (3.3.0.RC3:  9 Dec 2007, vex r1804, valgrind r7288).
1400 (3.3.0:     10 Dec 2007, vex r1804, valgrind r7290).
1404 Release 3.2.3 (29 Jan 2007)
1405 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
1406 Unfortunately 3.2.2 introduced a regression which can cause an
1407 assertion failure ("vex: the `impossible' happened: eqIRConst") when
1408 running obscure pieces of SSE code.  3.2.3 fixes this and adds one
1409 more glibc-2.5 intercept.  In all other respects it is identical to
1410 3.2.2.  Please do not use (or package) 3.2.2; instead use 3.2.3.
1412 n-i-bz   vex: the `impossible' happened: eqIRConst
1413 n-i-bz   Add an intercept for glibc-2.5 __stpcpy_chk
1415 (3.2.3: 29 Jan 2007, vex r1732, valgrind r6560).
1418 Release 3.2.2 (22 Jan 2007)
1419 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
1420 3.2.2 fixes a bunch of bugs in 3.2.1, adds support for glibc-2.5 based
1421 systems (openSUSE 10.2, Fedora Core 6), improves support for icc-9.X
1422 compiled code, and brings modest performance improvements in some
1423 areas, including amd64 floating point, powerpc support, and startup
1424 responsiveness on all targets.
1426 The fixed bugs are as follows.  Note that "n-i-bz" stands for "not in
1427 bugzilla" -- that is, a bug that was reported to us but never got a
1428 bugzilla entry.  We encourage you to file bugs in bugzilla
1429 (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the
1430 developers (or mailing lists) directly.
1432 129390   ppc?->IR: some kind of VMX prefetch (dstt)
1433 129968   amd64->IR: 0xF 0xAE 0x0 (fxsave)
1434 134319   ==129968
1435 133054   'make install' fails with syntax errors
1436 118903   ==133054
1437 132998   startup fails in when running on UML
1438 134207   pkg-config output contains @VG_PLATFORM@
1439 134727   valgrind exits with "Value too large for defined data type"
1440 n-i-bz   ppc32/64: support mcrfs
1441 n-i-bz   Cachegrind/Callgrind: Update cache parameter detection
1442 135012   x86->IR: 0xD7 0x8A 0xE0 0xD0 (xlat)
1443 125959   ==135012
1444 126147   x86->IR: 0xF2 0xA5 0xF 0x77 (repne movsw)
1445 136650   amd64->IR: 0xC2 0x8 0x0
1446 135421   x86->IR: unhandled Grp5(R) case 6
1447 n-i-bz   Improved documentation of the IR intermediate representation
1448 n-i-bz   jcxz (x86) (users list, 8 Nov)
1449 n-i-bz   ExeContext hashing fix
1450 n-i-bz   fix CFI reading failures ("Dwarf CFI 0:24 0:32 0:48 0:7")
1451 n-i-bz   fix Cachegrind/Callgrind simulation bug
1452 n-i-bz   libmpiwrap.c: fix handling of MPI_LONG_DOUBLE
1453 n-i-bz   make User errors suppressible
1454 136844   corrupted malloc line when using --gen-suppressions=yes
1455 138507   ==136844
1456 n-i-bz   Speed up the JIT's register allocator
1457 n-i-bz   Fix confusing leak-checker flag hints
1458 n-i-bz   Support recent autoswamp versions
1459 n-i-bz   ppc32/64 dispatcher speedups
1460 n-i-bz   ppc64 front end rld/rlw improvements
1461 n-i-bz   ppc64 back end imm64 improvements
1462 136300   support 64K pages on ppc64-linux
1463 139124   == 136300
1464 n-i-bz   fix ppc insn set tests for gcc >= 4.1
1465 137493   x86->IR: recent binutils no-ops
1466 137714   x86->IR: 0x66 0xF 0xF7 0xC6 (maskmovdqu)
1467 138424   "failed in UME with error 22" (produce a better error msg)
1468 138856   ==138424
1469 138627   Enhancement support for prctl ioctls
1470 138896   Add support for usb ioctls
1471 136059   ==138896
1472 139050   ppc32->IR: mfspr 268/269 instructions not handled
1473 n-i-bz   ppc32->IR: lvxl/stvxl
1474 n-i-bz   glibc-2.5 support
1475 n-i-bz   memcheck: provide replacement for mempcpy
1476 n-i-bz   memcheck: replace bcmp in ld.so
1477 n-i-bz   Use 'ifndef' in VEX's Makefile correctly
1478 n-i-bz   Suppressions for MVL 4.0.1 on ppc32-linux
1479 n-i-bz   libmpiwrap.c: Fixes for MPICH
1480 n-i-bz   More robust handling of hinted client mmaps
1481 139776   Invalid read in unaligned memcpy with Intel compiler v9
1482 n-i-bz   Generate valid XML even for very long fn names
1483 n-i-bz   Don't prompt about suppressions for unshown reachable leaks
1484 139910   amd64 rcl is not supported
1485 n-i-bz   DWARF CFI reader: handle DW_CFA_undefined
1486 n-i-bz   DWARF CFI reader: handle icc9 generated CFI info better
1487 n-i-bz   fix false uninit-value errs in icc9 generated FP code
1488 n-i-bz   reduce extraneous frames in libmpiwrap.c
1489 n-i-bz   support pselect6 on amd64-linux
1491 (3.2.2: 22 Jan 2007, vex r1729, valgrind r6545).
1494 Release 3.2.1 (16 Sept 2006)
1495 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1496 3.2.1 adds x86/amd64 support for all SSE3 instructions except monitor
1497 and mwait, further reduces memcheck's false error rate on all
1498 platforms, adds support for recent binutils (in OpenSUSE 10.2 and
1499 Fedora Rawhide) and fixes a bunch of bugs in 3.2.0.  Some of the fixed
1500 bugs were causing large programs to segfault with --tool=callgrind and
1501 --tool=cachegrind, so an upgrade is recommended.
1503 In view of the fact that any 3.3.0 release is unlikely to happen until
1504 well into 1Q07, we intend to keep the 3.2.X line alive for a while
1505 yet, and so we tentatively plan a 3.2.2 release sometime in December
1508 The fixed bugs are as follows.  Note that "n-i-bz" stands for "not in
1509 bugzilla" -- that is, a bug that was reported to us but never got a
1510 bugzilla entry.
1512 n-i-bz   Expanding brk() into last available page asserts
1513 n-i-bz   ppc64-linux stack RZ fast-case snafu
1514 n-i-bz   'c' in --gen-supps=yes doesn't work
1515 n-i-bz   VG_N_SEGMENTS too low (users, 28 June)
1516 n-i-bz   VG_N_SEGNAMES too low (Stu Robinson)
1517 106852   x86->IR: fisttp (SSE3)
1518 117172   FUTEX_WAKE does not use uaddr2
1519 124039   Lacks support for VKI_[GP]IO_UNIMAP*
1520 127521   amd64->IR: 0xF0 0x48 0xF 0xC7 (cmpxchg8b)
1521 128917   amd64->IR: 0x66 0xF 0xF6 0xC4 (psadbw,SSE2)
1522 129246   JJ: ppc32/ppc64 syscalls, w/ patch
1523 129358   x86->IR: fisttpl (SSE3)
1524 129866   cachegrind/callgrind causes executable to die
1525 130020   Can't stat .so/.exe error while reading symbols
1526 130388   Valgrind aborts when process calls malloc_trim()
1527 130638   PATCH: ppc32 missing system calls
1528 130785   amd64->IR: unhandled instruction "pushfq"
1529 131481:  (HINT_NOP) vex x86->IR: 0xF 0x1F 0x0 0xF
1530 131298   ==131481
1531 132146   Programs with long sequences of bswap[l,q]s
1532 132918   vex amd64->IR: 0xD9 0xF8 (fprem)
1533 132813   Assertion at priv/guest-x86/toIR.c:652 fails
1534 133051   'cfsi->len > 0 && cfsi->len < 2000000' failed
1535 132722   valgrind header files are not standard C
1536 n-i-bz   Livelocks entire machine (users list, Timothy Terriberry)
1537 n-i-bz   Alex Bennee mmap problem (9 Aug)
1538 n-i-bz   BartV: Don't print more lines of a stack-trace than were obtained.
1539 n-i-bz   ppc32 SuSE 10.1 redir
1540 n-i-bz   amd64 padding suppressions
1541 n-i-bz   amd64 insn printing fix.
1542 n-i-bz   ppc cmp reg,reg fix
1543 n-i-bz   x86/amd64 iropt e/rflag reduction rules
1544 n-i-bz   SuSE 10.1 (ppc32) minor fixes
1545 133678   amd64->IR: 0x48 0xF 0xC5 0xC0 (pextrw?)
1546 133694   aspacem assertion: aspacem_minAddr <= holeStart
1547 n-i-bz   callgrind: fix warning about malformed creator line 
1548 n-i-bz   callgrind: fix annotate script for data produced with 
1549          --dump-instr=yes
1550 n-i-bz   callgrind: fix failed assertion when toggling 
1551          instrumentation mode
1552 n-i-bz   callgrind: fix annotate script fix warnings with
1553          --collect-jumps=yes
1554 n-i-bz   docs path hardwired (Dennis Lubert)
1556 The following bugs were not fixed, due primarily to lack of developer
1557 time, and also because bug reporters did not answer requests for
1558 feedback in time for the release:
1560 129390   ppc?->IR: some kind of VMX prefetch (dstt)
1561 129968   amd64->IR: 0xF 0xAE 0x0 (fxsave)
1562 133054   'make install' fails with syntax errors
1563 n-i-bz   Signal race condition (users list, 13 June, Johannes Berg)
1564 n-i-bz   Unrecognised instruction at address 0x70198EC2 (users list,
1565          19 July, Bennee)
1566 132998   startup fails in when running on UML
1568 The following bug was tentatively fixed on the mainline but the fix
1569 was considered too risky to push into 3.2.X:
1571 133154   crash when using client requests to register/deregister stack
1573 (3.2.1: 16 Sept 2006, vex r1658, valgrind r6070).
1576 Release 3.2.0 (7 June 2006)
1577 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
1578 3.2.0 is a feature release with many significant improvements and the
1579 usual collection of bug fixes.  This release supports X86/Linux,
1580 AMD64/Linux, PPC32/Linux and PPC64/Linux.
1582 Performance, especially of Memcheck, is improved, Addrcheck has been
1583 removed, Callgrind has been added, PPC64/Linux support has been added,
1584 Lackey has been improved, and MPI support has been added.  In detail:
1586 - Memcheck has improved speed and reduced memory use.  Run times are
1587   typically reduced by 15-30%, averaging about 24% for SPEC CPU2000.
1588   The other tools have smaller but noticeable speed improvements.  We
1589   are interested to hear what improvements users get.
1591   Memcheck uses less memory due to the introduction of a compressed
1592   representation for shadow memory.  The space overhead has been
1593   reduced by a factor of up to four, depending on program behaviour.
1594   This means you should be able to run programs that use more memory
1595   than before without hitting problems.
1597 - Addrcheck has been removed.  It has not worked since version 2.4.0,
1598   and the speed and memory improvements to Memcheck make it redundant.
1599   If you liked using Addrcheck because it didn't give undefined value
1600   errors, you can use the new Memcheck option --undef-value-errors=no
1601   to get the same behaviour.
1603 - The number of undefined-value errors incorrectly reported by
1604   Memcheck has been reduced (such false reports were already very
1605   rare).  In particular, efforts have been made to ensure Memcheck
1606   works really well with gcc 4.0/4.1-generated code on X86/Linux and
1607   AMD64/Linux.
1609 - Josef Weidendorfer's popular Callgrind tool has been added.  Folding
1610   it in was a logical step given its popularity and usefulness, and
1611   makes it easier for us to ensure it works "out of the box" on all
1612   supported targets.  The associated KDE KCachegrind GUI remains a
1613   separate project.
1615 - A new release of the Valkyrie GUI for Memcheck, version 1.2.0,
1616   accompanies this release.  Improvements over previous releases
1617   include improved robustness, many refinements to the user interface,
1618   and use of a standard autoconf/automake build system.  You can get
1619   it from http://www.valgrind.org/downloads/guis.html.
1621 - Valgrind now works on PPC64/Linux.  As with the AMD64/Linux port,
1622   this supports programs using to 32G of address space.  On 64-bit
1623   capable PPC64/Linux setups, you get a dual architecture build so
1624   that both 32-bit and 64-bit executables can be run.  Linux on POWER5
1625   is supported, and POWER4 is also believed to work.  Both 32-bit and
1626   64-bit DWARF2 is supported.  This port is known to work well with
1627   both gcc-compiled and xlc/xlf-compiled code.
1629 - Floating point accuracy has been improved for PPC32/Linux.
1630   Specifically, the floating point rounding mode is observed on all FP
1631   arithmetic operations, and multiply-accumulate instructions are
1632   preserved by the compilation pipeline.  This means you should get FP
1633   results which are bit-for-bit identical to a native run.  These
1634   improvements are also present in the PPC64/Linux port.
1636 - Lackey, the example tool, has been improved:
1638   * It has a new option --detailed-counts (off by default) which
1639     causes it to print out a count of loads, stores and ALU operations
1640     done, and their sizes.
1642   * It has a new option --trace-mem (off by default) which causes it
1643     to print out a trace of all memory accesses performed by a
1644     program.  It's a good starting point for building Valgrind tools
1645     that need to track memory accesses.  Read the comments at the top
1646     of the file lackey/lk_main.c for details.
1648   * The original instrumentation (counting numbers of instructions,
1649     jumps, etc) is now controlled by a new option --basic-counts.  It
1650     is on by default.
1652 - MPI support: partial support for debugging distributed applications
1653   using the MPI library specification has been added.  Valgrind is
1654   aware of the memory state changes caused by a subset of the MPI
1655   functions, and will carefully check data passed to the (P)MPI_
1656   interface.
1658 - A new flag, --error-exitcode=, has been added.  This allows changing
1659   the exit code in runs where Valgrind reported errors, which is
1660   useful when using Valgrind as part of an automated test suite.
1662 - Various segfaults when reading old-style "stabs" debug information
1663   have been fixed.
1665 - A simple performance evaluation suite has been added.  See
1666   perf/README and README_DEVELOPERS for details.  There are
1667   various bells and whistles.
1669 - New configuration flags:
1670     --enable-only32bit
1671     --enable-only64bit
1672   By default, on 64 bit platforms (ppc64-linux, amd64-linux) the build
1673   system will attempt to build a Valgrind which supports both 32-bit
1674   and 64-bit executables.  This may not be what you want, and you can
1675   override the default behaviour using these flags.
1677 Please note that Helgrind is still not working.  We have made an
1678 important step towards making it work again, however, with the
1679 addition of function wrapping (see below).
1681 Other user-visible changes:
1683 - Valgrind now has the ability to intercept and wrap arbitrary
1684   functions.  This is a preliminary step towards making Helgrind work
1685   again, and was required for MPI support.
1687 - There are some changes to Memcheck's client requests.  Some of them
1688   have changed names:
1690     MAKE_NOACCESS  --> MAKE_MEM_NOACCESS
1691     MAKE_WRITABLE  --> MAKE_MEM_UNDEFINED
1692     MAKE_READABLE  --> MAKE_MEM_DEFINED
1694     CHECK_WRITABLE --> CHECK_MEM_IS_ADDRESSABLE
1695     CHECK_READABLE --> CHECK_MEM_IS_DEFINED
1696     CHECK_DEFINED  --> CHECK_VALUE_IS_DEFINED
1698   The reason for the change is that the old names are subtly
1699   misleading.  The old names will still work, but they are deprecated
1700   and may be removed in a future release.
1702   We also added a new client request:
1703   
1704     MAKE_MEM_DEFINED_IF_ADDRESSABLE(a, len)
1705     
1706   which is like MAKE_MEM_DEFINED but only affects a byte if the byte is
1707   already addressable.
1709 - The way client requests are encoded in the instruction stream has
1710   changed.  Unfortunately, this means 3.2.0 will not honour client
1711   requests compiled into binaries using headers from earlier versions
1712   of Valgrind.  We will try to keep the client request encodings more 
1713   stable in future.
1715 BUGS FIXED:
1717 108258   NPTL pthread cleanup handlers not called 
1718 117290   valgrind is sigKILL'd on startup
1719 117295   == 117290
1720 118703   m_signals.c:1427 Assertion 'tst->status == VgTs_WaitSys'
1721 118466   add %reg, %reg generates incorrect validity for bit 0
1722 123210   New: strlen from ld-linux on amd64
1723 123244   DWARF2 CFI reader: unhandled CFI instruction 0:18
1724 123248   syscalls in glibc-2.4: openat, fstatat, symlinkat
1725 123258   socketcall.recvmsg(msg.msg_iov[i] points to uninit
1726 123535   mremap(new_addr) requires MREMAP_FIXED in 4th arg
1727 123836   small typo in the doc
1728 124029   ppc compile failed: `vor' gcc 3.3.5
1729 124222   Segfault: @@don't know what type ':' is
1730 124475   ppc32: crash (syscall?) timer_settime()
1731 124499   amd64->IR: 0xF 0xE 0x48 0x85 (femms)
1732 124528   FATAL: aspacem assertion failed: segment_is_sane
1733 124697   vex x86->IR: 0xF 0x70 0xC9 0x0 (pshufw)
1734 124892   vex x86->IR: 0xF3 0xAE (REPx SCASB)
1735 126216   == 124892
1736 124808   ppc32: sys_sched_getaffinity() not handled
1737 n-i-bz   Very long stabs strings crash m_debuginfo
1738 n-i-bz   amd64->IR: 0x66 0xF 0xF5 (pmaddwd)
1739 125492   ppc32: support a bunch more syscalls
1740 121617   ppc32/64: coredumping gives assertion failure
1741 121814   Coregrind return error as exitcode patch
1742 126517   == 121814
1743 125607   amd64->IR: 0x66 0xF 0xA3 0x2 (btw etc)
1744 125651   amd64->IR: 0xF8 0x49 0xFF 0xE3 (clc?)
1745 126253   x86 movx is wrong
1746 126451   3.2 SVN doesn't work on ppc32 CPU's without FPU
1747 126217   increase # threads
1748 126243   vex x86->IR: popw mem
1749 126583   amd64->IR: 0x48 0xF 0xA4 0xC2 (shld $1,%rax,%rdx)
1750 126668   amd64->IR: 0x1C 0xFF (sbb $0xff,%al)
1751 126696   support for CDROMREADRAW ioctl and CDROMREADTOCENTRY fix
1752 126722   assertion: segment_is_sane at m_aspacemgr/aspacemgr.c:1624
1753 126938   bad checking for syscalls linkat, renameat, symlinkat
1755 (3.2.0RC1: 27 May  2006, vex r1626, valgrind r5947).
1756 (3.2.0:     7 June 2006, vex r1628, valgrind r5957).
1759 Release 3.1.1 (15 March 2006)
1760 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1761 3.1.1 fixes a bunch of bugs reported in 3.1.0.  There is no new
1762 functionality.  The fixed bugs are:
1764 (note: "n-i-bz" means "not in bugzilla" -- this bug does not have
1765  a bugzilla entry).
1767 n-i-bz   ppc32: fsub 3,3,3 in dispatcher doesn't clear NaNs
1768 n-i-bz   ppc32: __NR_{set,get}priority
1769 117332   x86: missing line info with icc 8.1
1770 117366   amd64: 0xDD 0x7C fnstsw
1771 118274   == 117366
1772 117367   amd64: 0xD9 0xF4 fxtract
1773 117369   amd64: __NR_getpriority (140)
1774 117419   ppc32: lfsu f5, -4(r11)
1775 117419   ppc32: fsqrt
1776 117936   more stabs problems (segfaults while reading debug info)
1777 119914   == 117936
1778 120345   == 117936
1779 118239   amd64: 0xF 0xAE 0x3F (clflush)
1780 118939   vm86old system call
1781 n-i-bz   memcheck/tests/mempool reads freed memory
1782 n-i-bz   AshleyP's custom-allocator assertion
1783 n-i-bz   Dirk strict-aliasing stuff
1784 n-i-bz   More space for debugger cmd line (Dan Thaler)
1785 n-i-bz   Clarified leak checker output message
1786 n-i-bz   AshleyP's --gen-suppressions output fix
1787 n-i-bz   cg_annotate's --sort option broken
1788 n-i-bz   OSet 64-bit fastcmp bug
1789 n-i-bz   VG_(getgroups) fix (Shinichi Noda)
1790 n-i-bz   ppc32: allocate from callee-saved FP/VMX regs
1791 n-i-bz   misaligned path word-size bug in mc_main.c
1792 119297   Incorrect error message for sse code
1793 120410   x86: prefetchw (0xF 0xD 0x48 0x4)
1794 120728   TIOCSERGETLSR, TIOCGICOUNT, HDIO_GET_DMA ioctls
1795 120658   Build fixes for gcc 2.96
1796 120734   x86: Support for changing EIP in signal handler
1797 n-i-bz   memcheck/tests/zeropage de-looping fix
1798 n-i-bz   x86: fxtract doesn't work reliably
1799 121662   x86: lock xadd (0xF0 0xF 0xC0 0x2)
1800 121893   calloc does not always return zeroed memory
1801 121901   no support for syscall tkill
1802 n-i-bz   Suppression update for Debian unstable
1803 122067   amd64: fcmovnu (0xDB 0xD9)
1804 n-i-bz   ppc32: broken signal handling in cpu feature detection
1805 n-i-bz   ppc32: rounding mode problems (improved, partial fix only)
1806 119482   ppc32: mtfsb1
1807 n-i-bz   ppc32: mtocrf/mfocrf
1809 (3.1.1:  15 March 2006, vex r1597, valgrind r5771).
1812 Release 3.1.0 (25 November 2005)
1813 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1814 3.1.0 is a feature release with a number of significant improvements:
1815 AMD64 support is much improved, PPC32 support is good enough to be
1816 usable, and the handling of memory management and address space is
1817 much more robust.  In detail:
1819 - AMD64 support is much improved.  The 64-bit vs. 32-bit issues in
1820   3.0.X have been resolved, and it should "just work" now in all
1821   cases.  On AMD64 machines both 64-bit and 32-bit versions of
1822   Valgrind are built.  The right version will be invoked
1823   automatically, even when using --trace-children and mixing execution
1824   between 64-bit and 32-bit executables.  Also, many more instructions
1825   are supported.
1827 - PPC32 support is now good enough to be usable.  It should work with
1828   all tools, but please let us know if you have problems.  Three
1829   classes of CPUs are supported: integer only (no FP, no Altivec),
1830   which covers embedded PPC uses, integer and FP but no Altivec
1831   (G3-ish), and CPUs capable of Altivec too (G4, G5).
1833 - Valgrind's address space management has been overhauled.  As a
1834   result, Valgrind should be much more robust with programs that use
1835   large amounts of memory.  There should be many fewer "memory
1836   exhausted" messages, and debug symbols should be read correctly on
1837   large (eg. 300MB+) executables.  On 32-bit machines the full address
1838   space available to user programs (usually 3GB or 4GB) can be fully
1839   utilised.  On 64-bit machines up to 32GB of space is usable; when
1840   using Memcheck that means your program can use up to about 14GB.
1842   A side effect of this change is that Valgrind is no longer protected
1843   against wild writes by the client.  This feature was nice but relied
1844   on the x86 segment registers and so wasn't portable.
1846 - Most users should not notice, but as part of the address space
1847   manager change, the way Valgrind is built has been changed.  Each
1848   tool is now built as a statically linked stand-alone executable,
1849   rather than as a shared object that is dynamically linked with the
1850   core.  The "valgrind" program invokes the appropriate tool depending
1851   on the --tool option.  This slightly increases the amount of disk
1852   space used by Valgrind, but it greatly simplified many things and
1853   removed Valgrind's dependence on glibc.
1855 Please note that Addrcheck and Helgrind are still not working.  Work
1856 is underway to reinstate them (or equivalents).  We apologise for the
1857 inconvenience.
1859 Other user-visible changes:
1861 - The --weird-hacks option has been renamed --sim-hints.
1863 - The --time-stamp option no longer gives an absolute date and time.
1864   It now prints the time elapsed since the program began.
1866 - It should build with gcc-2.96.
1868 - Valgrind can now run itself (see README_DEVELOPERS for how).
1869   This is not much use to you, but it means the developers can now
1870   profile Valgrind using Cachegrind.  As a result a couple of
1871   performance bad cases have been fixed.
1873 - The XML output format has changed slightly.  See
1874   docs/internals/xml-output.txt.
1876 - Core dumping has been reinstated (it was disabled in 3.0.0 and 3.0.1).
1877   If your program crashes while running under Valgrind, a core file with
1878   the name "vgcore.<pid>" will be created (if your settings allow core
1879   file creation).  Note that the floating point information is not all
1880   there.  If Valgrind itself crashes, the OS will create a normal core
1881   file.
1883 The following are some user-visible changes that occurred in earlier
1884 versions that may not have been announced, or were announced but not
1885 widely noticed.  So we're mentioning them now.
1887 - The --tool flag is optional once again;  if you omit it, Memcheck
1888   is run by default.
1890 - The --num-callers flag now has a default value of 12.  It was
1891   previously 4.
1893 - The --xml=yes flag causes Valgrind's output to be produced in XML
1894   format.  This is designed to make it easy for other programs to
1895   consume Valgrind's output.  The format is described in the file
1896   docs/internals/xml-format.txt.
1898 - The --gen-suppressions flag supports an "all" value that causes every
1899   suppression to be printed without asking.
1901 - The --log-file option no longer puts "pid" in the filename, eg. the
1902   old name "foo.pid12345" is now "foo.12345".
1904 - There are several graphical front-ends for Valgrind, such as Valkyrie,
1905   Alleyoop and Valgui.  See http://www.valgrind.org/downloads/guis.html
1906   for a list.
1908 BUGS FIXED:
1910 109861  amd64 hangs at startup
1911 110301  ditto
1912 111554  valgrind crashes with Cannot allocate memory
1913 111809  Memcheck tool doesn't start java
1914 111901  cross-platform run of cachegrind fails on opteron
1915 113468  (vgPlain_mprotect_range): Assertion 'r != -1' failed.
1916  92071  Reading debugging info uses too much memory
1917 109744  memcheck loses track of mmap from direct ld-linux.so.2
1918 110183  tail of page with _end
1919  82301  FV memory layout too rigid
1920  98278  Infinite recursion possible when allocating memory
1921 108994  Valgrind runs out of memory due to 133x overhead
1922 115643  valgrind cannot allocate memory
1923 105974  vg_hashtable.c static hash table
1924 109323  ppc32: dispatch.S uses Altivec insn, which doesn't work on POWER. 
1925 109345  ptrace_setregs not yet implemented for ppc
1926 110831  Would like to be able to run against both 32 and 64 bit 
1927         binaries on AMD64
1928 110829  == 110831
1929 111781  compile of valgrind-3.0.0 fails on my linux (gcc 2.X prob)
1930 112670  Cachegrind: cg_main.c:486 (handleOneStatement ...
1931 112941  vex x86: 0xD9 0xF4 (fxtract)
1932 110201  == 112941
1933 113015  vex amd64->IR: 0xE3 0x14 0x48 0x83 (jrcxz)
1934 113126  Crash with binaries built with -gstabs+/-ggdb
1935 104065  == 113126
1936 115741  == 113126
1937 113403  Partial SSE3 support on x86
1938 113541  vex: Grp5(x86) (alt encoding inc/dec) case 1
1939 113642  valgrind crashes when trying to read debug information
1940 113810  vex x86->IR: 66 0F F6 (66 + PSADBW == SSE PSADBW)
1941 113796  read() and write() do not work if buffer is in shared memory
1942 113851  vex x86->IR: (pmaddwd): 0x66 0xF 0xF5 0xC7
1943 114366  vex amd64 cannnot handle __asm__( "fninit" )
1944 114412  vex amd64->IR: 0xF 0xAD 0xC2 0xD3 (128-bit shift, shrdq?)
1945 114455  vex amd64->IR: 0xF 0xAC 0xD0 0x1 (also shrdq)
1946 115590: amd64->IR: 0x67 0xE3 0x9 0xEB (address size override)
1947 115953  valgrind svn r5042 does not build with parallel make (-j3)
1948 116057  maximum instruction size - VG_MAX_INSTR_SZB too small?
1949 116483  shmat failes with invalid argument
1950 102202  valgrind crashes when realloc'ing until out of memory
1951 109487  == 102202
1952 110536  == 102202
1953 112687  == 102202
1954 111724  vex amd64->IR: 0x41 0xF 0xAB (more BT{,S,R,C} fun n games)
1955 111748  vex amd64->IR: 0xDD 0xE2 (fucom)
1956 111785  make fails if CC contains spaces
1957 111829  vex x86->IR: sbb AL, Ib
1958 111851  vex x86->IR: 0x9F 0x89 (lahf/sahf)
1959 112031  iopl on AMD64 and README_MISSING_SYSCALL_OR_IOCTL update
1960 112152  code generation for Xin_MFence on x86 with SSE0 subarch
1961 112167  == 112152
1962 112789  == 112152
1963 112199  naked ar tool is used in vex makefile
1964 112501  vex x86->IR: movq (0xF 0x7F 0xC1 0xF) (mmx MOVQ)
1965 113583  == 112501
1966 112538  memalign crash
1967 113190  Broken links in docs/html/
1968 113230  Valgrind sys_pipe on x86-64 wrongly thinks file descriptors
1969         should be 64bit
1970 113996  vex amd64->IR: fucomp (0xDD 0xE9)
1971 114196  vex x86->IR: out %eax,(%dx) (0xEF 0xC9 0xC3 0x90)
1972 114289  Memcheck fails to intercept malloc when used in an uclibc environment
1973 114756  mbind syscall support
1974 114757  Valgrind dies with assertion: Assertion 'noLargerThan > 0' failed
1975 114563  stack tracking module not informed when valgrind switches threads
1976 114564  clone() and stacks
1977 114565  == 114564
1978 115496  glibc crashes trying to use sysinfo page
1979 116200  enable fsetxattr, fgetxattr, and fremovexattr for amd64
1981 (3.1.0RC1: 20 November 2005, vex r1466, valgrind r5224).
1982 (3.1.0:    26 November 2005, vex r1471, valgrind r5235).
1985 Release 3.0.1 (29 August 2005)
1986 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1987 3.0.1 fixes a bunch of bugs reported in 3.0.0.  There is no new
1988 functionality.  Some of the fixed bugs are critical, so if you
1989 use/distribute 3.0.0, an upgrade to 3.0.1 is recommended.  The fixed
1990 bugs are:
1992 (note: "n-i-bz" means "not in bugzilla" -- this bug does not have
1993  a bugzilla entry).
1995 109313  (== 110505) x86 cmpxchg8b
1996 n-i-bz  x86: track but ignore changes to %eflags.AC (alignment check)
1997 110102  dis_op2_E_G(amd64)
1998 110202  x86 sys_waitpid(#286)
1999 110203  clock_getres(,0)
2000 110208  execve fail wrong retval
2001 110274  SSE1 now mandatory for x86
2002 110388  amd64 0xDD 0xD1
2003 110464  amd64 0xDC 0x1D FCOMP
2004 110478  amd64 0xF 0xD PREFETCH
2005 n-i-bz  XML <unique> printing wrong
2006 n-i-bz  Dirk r4359 (amd64 syscalls from trunk)
2007 110591  amd64 and x86: rdtsc not implemented properly
2008 n-i-bz  Nick r4384 (stub implementations of Addrcheck and Helgrind)
2009 110652  AMD64 valgrind crashes on cwtd instruction
2010 110653  AMD64 valgrind crashes on sarb $0x4,foo(%rip) instruction
2011 110656  PATH=/usr/bin::/bin valgrind foobar stats ./fooba
2012 110657  Small test fixes
2013 110671  vex x86->IR: unhandled instruction bytes: 0xF3 0xC3 (rep ret)
2014 n-i-bz  Nick (Cachegrind should not assert when it encounters a client
2015         request.)
2016 110685  amd64->IR: unhandled instruction bytes: 0xE1 0x56 (loope Jb)
2017 110830  configuring with --host fails to build 32 bit on 64 bit target
2018 110875  Assertion when execve fails
2019 n-i-bz  Updates to Memcheck manual
2020 n-i-bz  Fixed broken malloc_usable_size()
2021 110898  opteron instructions missing: btq btsq btrq bsfq
2022 110954  x86->IR: unhandled instruction bytes: 0xE2 0xF6 (loop Jb)
2023 n-i-bz  Make suppressions work for "???" lines in stacktraces.
2024 111006  bogus warnings from linuxthreads
2025 111092  x86: dis_Grp2(Reg): unhandled case(x86) 
2026 111231  sctp_getladdrs() and sctp_getpaddrs() returns uninitialized
2027         memory
2028 111102  (comment #4)   Fixed 64-bit unclean "silly arg" message
2029 n-i-bz  vex x86->IR: unhandled instruction bytes: 0x14 0x0
2030 n-i-bz  minor umount/fcntl wrapper fixes
2031 111090  Internal Error running Massif
2032 101204  noisy warning
2033 111513  Illegal opcode for SSE instruction (x86 movups)
2034 111555  VEX/Makefile: CC is set to gcc
2035 n-i-bz  Fix XML bugs in FAQ
2037 (3.0.1: 29 August 05,
2038         vex/branches/VEX_3_0_BRANCH r1367,
2039         valgrind/branches/VALGRIND_3_0_BRANCH r4574).
2043 Release 3.0.0 (3 August 2005)
2044 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2045 3.0.0 is a major overhaul of Valgrind.  The most significant user
2046 visible change is that Valgrind now supports architectures other than
2047 x86.  The new architectures it supports are AMD64 and PPC32, and the
2048 infrastructure is present for other architectures to be added later.
2050 AMD64 support works well, but has some shortcomings:
2052 - It generally won't be as solid as the x86 version.  For example,
2053   support for more obscure instructions and system calls may be missing.
2054   We will fix these as they arise.
2056 - Address space may be limited; see the point about
2057   position-independent executables below.
2059 - If Valgrind is built on an AMD64 machine, it will only run 64-bit
2060   executables.  If you want to run 32-bit x86 executables under Valgrind
2061   on an AMD64, you will need to build Valgrind on an x86 machine and
2062   copy it to the AMD64 machine.  And it probably won't work if you do
2063   something tricky like exec'ing a 32-bit program from a 64-bit program
2064   while using --trace-children=yes.  We hope to improve this situation
2065   in the future.
2067 The PPC32 support is very basic.  It may not work reliably even for
2068 small programs, but it's a start.  Many thanks to Paul Mackerras for
2069 his great work that enabled this support.  We are working to make
2070 PPC32 usable as soon as possible.
2072 Other user-visible changes:
2074 - Valgrind is no longer built by default as a position-independent
2075   executable (PIE), as this caused too many problems.
2077   Without PIE enabled, AMD64 programs will only be able to access 2GB of
2078   address space.  We will fix this eventually, but not for the moment.
2079   
2080   Use --enable-pie at configure-time to turn this on.
2082 - Support for programs that use stack-switching has been improved.  Use
2083   the --max-stackframe flag for simple cases, and the
2084   VALGRIND_STACK_REGISTER, VALGRIND_STACK_DEREGISTER and
2085   VALGRIND_STACK_CHANGE client requests for trickier cases.
2087 - Support for programs that use self-modifying code has been improved,
2088   in particular programs that put temporary code fragments on the stack.
2089   This helps for C programs compiled with GCC that use nested functions,
2090   and also Ada programs.  This is controlled with the --smc-check
2091   flag, although the default setting should work in most cases.
2093 - Output can now be printed in XML format.  This should make it easier
2094   for tools such as GUI front-ends and automated error-processing
2095   schemes to use Valgrind output as input.  The --xml flag controls this.
2096   As part of this change, ELF directory information is read from executables,
2097   so absolute source file paths are available if needed.
2099 - Programs that allocate many heap blocks may run faster, due to
2100   improvements in certain data structures.
2102 - Addrcheck is currently not working.  We hope to get it working again
2103   soon.  Helgrind is still not working, as was the case for the 2.4.0
2104   release.
2106 - The JITter has been completely rewritten, and is now in a separate
2107   library, called Vex.  This enabled a lot of the user-visible changes,
2108   such as new architecture support.  The new JIT unfortunately translates
2109   more slowly than the old one, so programs may take longer to start.
2110   We believe the code quality is produces is about the same, so once
2111   started, programs should run at about the same speed.  Feedback about
2112   this would be useful.
2114   On the plus side, Vex and hence Memcheck tracks value flow properly
2115   through floating point and vector registers, something the 2.X line
2116   could not do.  That means that Memcheck is much more likely to be
2117   usably accurate on vectorised code.
2119 - There is a subtle change to the way exiting of threaded programs
2120   is handled.  In 3.0, Valgrind's final diagnostic output (leak check,
2121   etc) is not printed until the last thread exits.  If the last thread
2122   to exit was not the original thread which started the program, any
2123   other process wait()-ing on this one to exit may conclude it has
2124   finished before the diagnostic output is printed.  This may not be
2125   what you expect.  2.X had a different scheme which avoided this
2126   problem, but caused deadlocks under obscure circumstances, so we
2127   are trying something different for 3.0.
2129 - Small changes in control log file naming which make it easier to
2130   use valgrind for debugging MPI-based programs.  The relevant
2131   new flags are --log-file-exactly= and --log-file-qualifier=.
2133 - As part of adding AMD64 support, DWARF2 CFI-based stack unwinding
2134   support was added.  In principle this means Valgrind can produce
2135   meaningful backtraces on x86 code compiled with -fomit-frame-pointer
2136   providing you also compile your code with -fasynchronous-unwind-tables.
2138 - The documentation build system has been completely redone.
2139   The documentation masters are now in XML format, and from that
2140   HTML, PostScript and PDF documentation is generated.  As a result
2141   the manual is now available in book form.  Note that the
2142   documentation in the source tarballs is pre-built, so you don't need
2143   any XML processing tools to build Valgrind from a tarball.
2145 Changes that are not user-visible:
2147 - The code has been massively overhauled in order to modularise it.
2148   As a result we hope it is easier to navigate and understand.
2150 - Lots of code has been rewritten.
2152 BUGS FIXED:
2154 110046  sz == 4 assertion failed 
2155 109810  vex amd64->IR: unhandled instruction bytes: 0xA3 0x4C 0x70 0xD7
2156 109802  Add a plausible_stack_size command-line parameter ?
2157 109783  unhandled ioctl TIOCMGET (running hw detection tool discover) 
2158 109780  unhandled ioctl BLKSSZGET (running fdisk -l /dev/hda)
2159 109718  vex x86->IR: unhandled instruction: ffreep 
2160 109429  AMD64 unhandled syscall: 127 (sigpending)
2161 109401  false positive uninit in strchr from ld-linux.so.2
2162 109385  "stabs" parse failure 
2163 109378  amd64: unhandled instruction REP NOP
2164 109376  amd64: unhandled instruction LOOP Jb 
2165 109363  AMD64 unhandled instruction bytes 
2166 109362  AMD64 unhandled syscall: 24 (sched_yield)
2167 109358  fork() won't work with valgrind-3.0 SVN
2168 109332  amd64 unhandled instruction: ADC Ev, Gv
2169 109314  Bogus memcheck report on amd64
2170 108883  Crash; vg_memory.c:905 (vgPlain_init_shadow_range):
2171         Assertion `vgPlain_defined_init_shadow_page()' failed.
2172 108349  mincore syscall parameter checked incorrectly 
2173 108059  build infrastructure: small update
2174 107524  epoll_ctl event parameter checked on EPOLL_CTL_DEL
2175 107123  Vex dies with unhandled instructions: 0xD9 0x31 0xF 0xAE
2176 106841  auxmap & openGL problems
2177 106713  SDL_Init causes valgrind to exit
2178 106352  setcontext and makecontext not handled correctly 
2179 106293  addresses beyond initial client stack allocation 
2180         not checked in VALGRIND_DO_LEAK_CHECK
2181 106283  PIE client programs are loaded at address 0
2182 105831  Assertion `vgPlain_defined_init_shadow_page()' failed.
2183 105039  long run-times probably due to memory manager 
2184 104797  valgrind needs to be aware of BLKGETSIZE64
2185 103594  unhandled instruction: FICOM
2186 103320  Valgrind 2.4.0 fails to compile with gcc 3.4.3 and -O0
2187 103168  potentially memory leak in coregrind/ume.c 
2188 102039  bad permissions for mapped region at address 0xB7C73680
2189 101881  weird assertion problem
2190 101543  Support fadvise64 syscalls
2191 75247   x86_64/amd64 support (the biggest "bug" we have ever fixed)
2193 (3.0RC1: 27 July   05, vex r1303, valgrind r4283).
2194 (3.0.0:   3 August 05, vex r1313, valgrind r4316).
2198 Stable release 2.4.1 (1 August 2005)
2199 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2200 (The notes for this release have been lost.  Sorry!  It would have
2201 contained various bug fixes but no new features.)
2205 Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
2206 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2207 2.4.0 brings many significant changes and bug fixes.  The most
2208 significant user-visible change is that we no longer supply our own
2209 pthread implementation.  Instead, Valgrind is finally capable of
2210 running the native thread library, either LinuxThreads or NPTL.
2212 This means our libpthread has gone, along with the bugs associated
2213 with it.  Valgrind now supports the kernel's threading syscalls, and
2214 lets you use your standard system libpthread.  As a result:
2216 * There are many fewer system dependencies and strange library-related
2217   bugs.  There is a small performance improvement, and a large
2218   stability improvement.
2220 * On the downside, Valgrind can no longer report misuses of the POSIX
2221   PThreads API.  It also means that Helgrind currently does not work.
2222   We hope to fix these problems in a future release.
2224 Note that running the native thread libraries does not mean Valgrind
2225 is able to provide genuine concurrent execution on SMPs.  We still
2226 impose the restriction that only one thread is running at any given
2227 time.
2229 There are many other significant changes too:
2231 * Memcheck is (once again) the default tool.
2233 * The default stack backtrace is now 12 call frames, rather than 4.
2235 * Suppressions can have up to 25 call frame matches, rather than 4.
2237 * Memcheck and Addrcheck use less memory.  Under some circumstances,
2238   they no longer allocate shadow memory if there are large regions of
2239   memory with the same A/V states - such as an mmaped file.
2241 * The memory-leak detector in Memcheck and Addrcheck has been
2242   improved.  It now reports more types of memory leak, including
2243   leaked cycles.  When reporting leaked memory, it can distinguish
2244   between directly leaked memory (memory with no references), and
2245   indirectly leaked memory (memory only referred to by other leaked
2246   memory).
2248 * Memcheck's confusion over the effect of mprotect() has been fixed:
2249   previously mprotect could erroneously mark undefined data as
2250   defined.
2252 * Signal handling is much improved and should be very close to what
2253   you get when running natively.  
2255   One result of this is that Valgrind observes changes to sigcontexts
2256   passed to signal handlers.  Such modifications will take effect when
2257   the signal returns.  You will need to run with --single-step=yes to
2258   make this useful.
2260 * Valgrind is built in Position Independent Executable (PIE) format if
2261   your toolchain supports it.  This allows it to take advantage of all
2262   the available address space on systems with 4Gbyte user address
2263   spaces.
2265 * Valgrind can now run itself (requires PIE support).
2267 * Syscall arguments are now checked for validity.  Previously all
2268   memory used by syscalls was checked, but now the actual values
2269   passed are also checked.
2271 * Syscall wrappers are more robust against bad addresses being passed
2272   to syscalls: they will fail with EFAULT rather than killing Valgrind
2273   with SIGSEGV.
2275 * Because clone() is directly supported, some non-pthread uses of it
2276   will work.  Partial sharing (where some resources are shared, and
2277   some are not) is not supported.
2279 * open() and readlink() on /proc/self/exe are supported.
2281 BUGS FIXED:
2283 88520   pipe+fork+dup2 kills the main program
2284 88604   Valgrind Aborts when using $VALGRIND_OPTS and user progra...
2285 88614   valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt...
2286 88703   Stabs parser fails to handle ";"
2287 88886   ioctl wrappers for TIOCMBIS and TIOCMBIC
2288 89032   valgrind pthread_cond_timedwait fails
2289 89106   the 'impossible' happened
2290 89139   Missing sched_setaffinity & sched_getaffinity
2291 89198   valgrind lacks support for SIOCSPGRP and SIOCGPGRP
2292 89263   Missing ioctl translations for scsi-generic and CD playing
2293 89440   tests/deadlock.c line endings
2294 89481   `impossible' happened: EXEC FAILED
2295 89663   valgrind 2.2.0 crash on Redhat 7.2
2296 89792   Report pthread_mutex_lock() deadlocks instead of returnin...
2297 90111   statvfs64 gives invalid error/warning
2298 90128   crash+memory fault with stabs generated by gnat for a run...
2299 90778   VALGRIND_CHECK_DEFINED() not as documented in memcheck.h
2300 90834   cachegrind crashes at end of program without reporting re...
2301 91028   valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio...
2302 91162   valgrind crash while debugging drivel 1.2.1
2303 91199   Unimplemented function
2304 91325   Signal routing does not propagate the siginfo structure
2305 91599   Assertion `cv == ((void *)0)'
2306 91604   rw_lookup clears orig and sends the NULL value to rw_new
2307 91821   Small problems building valgrind with $top_builddir ne $t...
2308 91844   signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec...
2309 92264   UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared
2310 92331   per-target flags necessitate AM_PROG_CC_C_O
2311 92420   valgrind doesn't compile with linux 2.6.8.1/9
2312 92513   Valgrind 2.2.0 generates some warning messages
2313 92528   vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed.
2314 93096   unhandled ioctl 0x4B3A and 0x5601
2315 93117   Tool and core interface versions do not match
2316 93128   Can't run valgrind --tool=memcheck because of unimplement...
2317 93174   Valgrind can crash if passed bad args to certain syscalls
2318 93309   Stack frame in new thread is badly aligned
2319 93328   Wrong types used with sys_sigprocmask()
2320 93763   /usr/include/asm/msr.h is missing
2321 93776   valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser...
2322 93810   fcntl() argument checking a bit too strict
2323 94378   Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed.
2324 94429   valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3
2325 94645   Impossible happened: PINSRW mem
2326 94953   valgrind: the `impossible' happened: SIGSEGV
2327 95667   Valgrind does not work with any KDE app
2328 96243   Assertion 'res==0' failed
2329 96252   stage2 loader of valgrind fails to allocate memory
2330 96520   All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ...
2331 96660   ioctl CDROMREADTOCENTRY causes bogus warnings
2332 96747   After looping in a segfault handler, the impossible happens
2333 96923   Zero sized arrays crash valgrind trace back with SIGFPE
2334 96948   valgrind stops with assertion failure regarding mmap2
2335 96966   valgrind fails when application opens more than 16 sockets
2336 97398   valgrind: vg_libpthread.c:2667 Assertion failed
2337 97407   valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `...
2338 97427   "Warning: invalid file descriptor -1 in syscall close()" ...
2339 97785   missing backtrace
2340 97792   build in obj dir fails - autoconf / makefile cleanup
2341 97880   pthread_mutex_lock fails from shared library (special ker...
2342 97975   program aborts without ang VG messages
2343 98129   Failed when open and close file 230000 times using stdio
2344 98175   Crashes when using valgrind-2.2.0 with a program using al...
2345 98288   Massif broken
2346 98303   UNIMPLEMENTED FUNCTION pthread_condattr_setpshared
2347 98630   failed--compilation missing warnings.pm, fails to make he...
2348 98756   Cannot valgrind signal-heavy kdrive X server
2349 98966   valgrinding the JVM fails with a sanity check assertion
2350 99035   Valgrind crashes while profiling
2351 99142   loops with message "Signal 11 being dropped from thread 0...
2352 99195   threaded apps crash on thread start (using QThread::start...
2353 99348   Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off...
2354 99568   False negative due to mishandling of mprotect
2355 99738   valgrind memcheck crashes on program that uses sigitimer
2356 99923   0-sized allocations are reported as leaks
2357 99949   program seg faults after exit()
2358 100036  "newSuperblock's request for 1048576 bytes failed"
2359 100116  valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ...
2360 100486  memcheck reports "valgrind: the `impossible' happened: V...
2361 100833  second call to "mremap" fails with EINVAL
2362 101156  (vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1...
2363 101173  Assertion `recDepth >= 0 && recDepth < 500' failed
2364 101291  creating threads in a forked process fails
2365 101313  valgrind causes different behavior when resizing a window...
2366 101423  segfault for c++ array of floats
2367 101562  valgrind massif dies on SIGINT even with signal handler r...
2370 Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0
2371 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2372 2.2.0 brings nine months worth of improvements and bug fixes.  We
2373 believe it to be a worthy successor to 2.0.0.  There are literally
2374 hundreds of bug fixes and minor improvements.  There are also some
2375 fairly major user-visible changes:
2377 * A complete overhaul of handling of system calls and signals, and 
2378   their interaction with threads.  In general, the accuracy of the 
2379   system call, thread and signal simulations is much improved:
2381   - Blocking system calls behave exactly as they do when running
2382     natively (not on valgrind).  That is, if a syscall blocks only the
2383     calling thread when running natively, than it behaves the same on
2384     valgrind.  No more mysterious hangs because V doesn't know that some
2385     syscall or other, should block only the calling thread.
2387   - Interrupted syscalls should now give more faithful results.
2389   - Signal contexts in signal handlers are supported.
2391 * Improvements to NPTL support to the extent that V now works 
2392   properly on NPTL-only setups.
2394 * Greater isolation between Valgrind and the program being run, so
2395   the program is less likely to inadvertently kill Valgrind by
2396   doing wild writes.
2398 * Massif: a new space profiling tool.  Try it!  It's cool, and it'll
2399   tell you in detail where and when your C/C++ code is allocating heap.
2400   Draws pretty .ps pictures of memory use against time.  A potentially
2401   powerful tool for making sense of your program's space use.
2403 * File descriptor leakage checks.  When enabled, Valgrind will print out
2404   a list of open file descriptors on exit.
2406 * Improved SSE2/SSE3 support.
2408 * Time-stamped output; use --time-stamp=yes
2412 Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.1.2
2413 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2414 2.2.0 is not much different from 2.1.2, released seven weeks ago.
2415 A number of bugs have been fixed, most notably #85658, which gave
2416 problems for quite a few people.  There have been many internal
2417 cleanups, but those are not user visible.
2419 The following bugs have been fixed since 2.1.2:
2421 85658   Assert in coregrind/vg_libpthread.c:2326 (open64) !=
2422         (void*)0 failed
2423         This bug was reported multiple times, and so the following
2424         duplicates of it are also fixed: 87620, 85796, 85935, 86065, 
2425         86919, 86988, 87917, 88156
2427 80716   Semaphore mapping bug caused by unmap (sem_destroy)
2428         (Was fixed prior to 2.1.2)
2430 86987   semctl and shmctl syscalls family is not handled properly
2432 86696   valgrind 2.1.2 + RH AS2.1 + librt
2434 86730   valgrind locks up at end of run with assertion failure 
2435         in __pthread_unwind
2437 86641   memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1
2438         (also fixes 74298, a duplicate of this)
2440 85947   MMX/SSE unhandled instruction 'sfence'
2442 84978   Wrong error "Conditional jump or move depends on
2443         uninitialised value" resulting from "sbbl %reg, %reg"
2445 86254   ssort() fails when signed int return type from comparison is 
2446         too small to handle result of unsigned int subtraction
2448 87089   memalign( 4, xxx) makes valgrind assert
2450 86407   Add support for low-level parallel port driver ioctls.
2452 70587   Add timestamps to Valgrind output? (wishlist)
2454 84937   vg_libpthread.c:2505 (se_remap): Assertion `res == 0'
2455         (fixed prior to 2.1.2)
2457 86317   cannot load libSDL-1.2.so.0 using valgrind
2459 86989   memcpy from mac_replace_strmem.c complains about
2460         uninitialized pointers passed when length to copy is zero
2462 85811   gnu pascal symbol causes segmentation fault; ok in 2.0.0
2464 79138   writing to sbrk()'d memory causes segfault
2466 77369   sched deadlock while signal received during pthread_join
2467         and the joined thread exited
2469 88115   In signal handler for SIGFPE,  siginfo->si_addr is wrong 
2470         under Valgrind
2472 78765   Massif crashes on app exit if FP exceptions are enabled
2474 Additionally there are the following changes, which are not 
2475 connected to any bug report numbers, AFAICS:
2477 * Fix scary bug causing mis-identification of SSE stores vs
2478   loads and so causing memcheck to sometimes give nonsense results
2479   on SSE code.
2481 * Add support for the POSIX message queue system calls.
2483 * Fix to allow 32-bit Valgrind to run on AMD64 boxes.  Note: this does
2484   NOT allow Valgrind to work with 64-bit executables - only with 32-bit
2485   executables on an AMD64 box.
2487 * At configure time, only check whether linux/mii.h can be processed 
2488   so that we don't generate ugly warnings by trying to compile it.
2490 * Add support for POSIX clocks and timers.
2494 Developer (cvs head) release 2.1.2 (18 July 2004)
2495 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2496 2.1.2 contains four months worth of bug fixes and refinements.
2497 Although officially a developer release, we believe it to be stable
2498 enough for widespread day-to-day use.  2.1.2 is pretty good, so try it
2499 first, although there is a chance it won't work.  If so then try 2.0.0
2500 and tell us what went wrong."  2.1.2 fixes a lot of problems present
2501 in 2.0.0 and is generally a much better product.
2503 Relative to 2.1.1, a large number of minor problems with 2.1.1 have
2504 been fixed, and so if you use 2.1.1 you should try 2.1.2.  Users of
2505 the last stable release, 2.0.0, might also want to try this release.
2507 The following bugs, and probably many more, have been fixed.  These
2508 are listed at http://bugs.kde.org.  Reporting a bug for valgrind in
2509 the http://bugs.kde.org is much more likely to get you a fix than
2510 mailing developers directly, so please continue to keep sending bugs
2511 there.
2513 76869   Crashes when running any tool under Fedora Core 2 test1
2514         This fixes the problem with returning from a signal handler 
2515         when VDSOs are turned off in FC2.
2517 69508   java 1.4.2 client fails with erroneous "stack size too small".
2518         This fix makes more of the pthread stack attribute related 
2519         functions work properly.  Java still doesn't work though.
2521 71906   malloc alignment should be 8, not 4
2522         All memory returned by malloc/new etc is now at least
2523         8-byte aligned.
2525 81970   vg_alloc_ThreadState: no free slots available
2526         (closed because the workaround is simple: increase
2527          VG_N_THREADS, rebuild and try again.)
2529 78514   Conditional jump or move depends on uninitialized value(s)
2530         (a slight mishanding of FP code in memcheck)
2532 77952   pThread Support (crash) (due to initialisation-ordering probs)
2533         (also 85118)
2535 80942   Addrcheck wasn't doing overlap checking as it should.
2536 78048   return NULL on malloc/new etc failure, instead of asserting
2537 73655   operator new() override in user .so files often doesn't get picked up
2538 83060   Valgrind does not handle native kernel AIO
2539 69872   Create proper coredumps after fatal signals
2540 82026   failure with new glibc versions: __libc_* functions are not exported
2541 70344   UNIMPLEMENTED FUNCTION: tcdrain 
2542 81297   Cancellation of pthread_cond_wait does not require mutex
2543 82872   Using debug info from additional packages (wishlist)
2544 83025   Support for ioctls FIGETBSZ and FIBMAP
2545 83340   Support for ioctl HDIO_GET_IDENTITY
2546 79714   Support for the semtimedop system call.
2547 77022   Support for ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO
2548 82098   hp2ps ansification (wishlist)
2549 83573   Valgrind SIGSEGV on execve
2550 82999   show which cmdline option was erroneous (wishlist)
2551 83040   make valgrind VPATH and distcheck-clean (wishlist)
2552 83998   Assertion `newfd > vgPlain_max_fd' failed (see below)
2553 82722   Unchecked mmap in as_pad leads to mysterious failures later
2554 78958   memcheck seg faults while running Mozilla 
2555 85416   Arguments with colon (e.g. --logsocket) ignored
2558 Additionally there are the following changes, which are not 
2559 connected to any bug report numbers, AFAICS:
2561 * Rearranged address space layout relative to 2.1.1, so that
2562   Valgrind/tools will run out of memory later than currently in many
2563   circumstances.  This is good news esp. for Calltree.  It should
2564   be possible for client programs to allocate over 800MB of
2565   memory when using memcheck now.
2567 * Improved checking when laying out memory.  Should hopefully avoid
2568   the random segmentation faults that 2.1.1 sometimes caused.
2570 * Support for Fedora Core 2 and SuSE 9.1.  Improvements to NPTL
2571   support to the extent that V now works properly on NPTL-only setups.
2573 * Renamed the following options:
2574   --logfile-fd  -->  --log-fd
2575   --logfile     -->  --log-file
2576   --logsocket   -->  --log-socket
2577   to be consistent with each other and other options (esp. --input-fd).
2579 * Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and
2580   improve the checking of other interface related ioctls.
2582 * Fix building with gcc-3.4.1.
2584 * Remove limit on number of semaphores supported.
2586 * Add support for syscalls: set_tid_address (258), acct (51).
2588 * Support instruction "repne movs" -- not official but seems to occur.
2590 * Implement an emulated soft limit for file descriptors in addition to
2591   the current reserved area, which effectively acts as a hard limit. The
2592   setrlimit system call now simply updates the emulated limits as best
2593   as possible - the hard limit is not allowed to move at all and just
2594   returns EPERM if you try and change it.  This should stop reductions
2595   in the soft limit causing assertions when valgrind tries to allocate
2596   descriptors from the reserved area.
2597   (This actually came from bug #83998).
2599 * Major overhaul of Cachegrind implementation.  First user-visible change
2600   is that cachegrind.out files are now typically 90% smaller than they
2601   used to be;  code annotation times are correspondingly much smaller.
2602   Second user-visible change is that hit/miss counts for code that is
2603   unloaded at run-time is no longer dumped into a single "discard" pile,
2604   but accurately preserved.
2606 * Client requests for telling valgrind about memory pools.
2610 Developer (cvs head) release 2.1.1 (12 March 2004)
2611 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2612 2.1.1 contains some internal structural changes needed for V's
2613 long-term future.  These don't affect end-users.  Most notable
2614 user-visible changes are:
2616 * Greater isolation between Valgrind and the program being run, so
2617   the program is less likely to inadvertently kill Valgrind by
2618   doing wild writes.
2620 * Massif: a new space profiling tool.  Try it!  It's cool, and it'll
2621   tell you in detail where and when your C/C++ code is allocating heap.
2622   Draws pretty .ps pictures of memory use against time.  A potentially
2623   powerful tool for making sense of your program's space use.
2625 * Fixes for many bugs, including support for more SSE2/SSE3 instructions,
2626   various signal/syscall things, and various problems with debug
2627   info readers.
2629 * Support for glibc-2.3.3 based systems.
2631 We are now doing automatic overnight build-and-test runs on a variety
2632 of distros.  As a result, we believe 2.1.1 builds and runs on:
2633 Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9.
2636 The following bugs, and probably many more, have been fixed.  These
2637 are listed at http://bugs.kde.org.  Reporting a bug for valgrind in
2638 the http://bugs.kde.org is much more likely to get you a fix than
2639 mailing developers directly, so please continue to keep sending bugs
2640 there.
2642 69616   glibc 2.3.2 w/NPTL is massively different than what valgrind expects 
2643 69856   I don't know how to instrument MMXish stuff (Helgrind)
2644 73892   valgrind segfaults starting with Objective-C debug info 
2645         (fix for S-type stabs)
2646 73145   Valgrind complains too much about close(<reserved fd>) 
2647 73902   Shadow memory allocation seems to fail on RedHat 8.0 
2648 68633   VG_N_SEMAPHORES too low (V itself was leaking semaphores)
2649 75099   impossible to trace multiprocess programs 
2650 76839   the `impossible' happened: disInstr: INT but not 0x80 ! 
2651 76762   vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed. 
2652 76747   cannot include valgrind.h in c++ program 
2653 76223   parsing B(3,10) gave NULL type => impossible happens 
2654 75604   shmdt handling problem 
2655 76416   Problems with gcc 3.4 snap 20040225 
2656 75614   using -gstabs when building your programs the `impossible' happened
2657 75787   Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET,
2658 75294   gcc 3.4 snapshot's libstdc++ have unsupported instructions. 
2659         (REP RET)
2660 73326   vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed. 
2661 72596   not recognizing __libc_malloc 
2662 69489   Would like to attach ddd to running program 
2663 72781   Cachegrind crashes with kde programs 
2664 73055   Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes)
2665 73026   Descriptor leak check reports port numbers wrongly 
2666 71705   README_MISSING_SYSCALL_OR_IOCTL out of date 
2667 72643   Improve support for SSE/SSE2 instructions 
2668 72484   valgrind leaves it's own signal mask in place when execing 
2669 72650   Signal Handling always seems to restart system calls 
2670 72006   The mmap system call turns all errors in ENOMEM 
2671 71781   gdb attach is pretty useless 
2672 71180   unhandled instruction bytes: 0xF 0xAE 0x85 0xE8 
2673 69886   writes to zero page cause valgrind to assert on exit 
2674 71791   crash when valgrinding gimp 1.3 (stabs reader problem)
2675 69783   unhandled syscall: 218 
2676 69782   unhandled instruction bytes: 0x66 0xF 0x2B 0x80 
2677 70385   valgrind fails if the soft file descriptor limit is less 
2678         than about 828
2679 69529   "rep; nop" should do a yield 
2680 70827   programs with lots of shared libraries report "mmap failed" 
2681         for some of them when reading symbols 
2682 71028   glibc's strnlen is optimised enough to confuse valgrind 
2687 Unstable (cvs head) release 2.1.0 (15 December 2003)
2688 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2689 For whatever it's worth, 2.1.0 actually seems pretty darn stable to me
2690 (Julian).  It looks eminently usable, and given that it fixes some
2691 significant bugs, may well be worth using on a day-to-day basis.
2692 2.1.0 is known to build and pass regression tests on: SuSE 9, SuSE
2693 8.2, RedHat 8.
2695 2.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of
2696 handling of system calls and signals, and their interaction with
2697 threads.  In general, the accuracy of the system call, thread and
2698 signal simulations is much improved.  Specifically:
2700 - Blocking system calls behave exactly as they do when running
2701   natively (not on valgrind).  That is, if a syscall blocks only the
2702   calling thread when running natively, than it behaves the same on
2703   valgrind.  No more mysterious hangs because V doesn't know that some
2704   syscall or other, should block only the calling thread.
2706 - Interrupted syscalls should now give more faithful results.
2708 - Finally, signal contexts in signal handlers are supported.  As a
2709   result, konqueror on SuSE 9 no longer segfaults when notified of
2710   file changes in directories it is watching.
2712 Other changes:
2714 - Robert Walsh's file descriptor leakage checks.  When enabled,
2715   Valgrind will print out a list of open file descriptors on
2716   exit.  Along with each file descriptor, Valgrind prints out a stack
2717   backtrace of where the file was opened and any details relating to the
2718   file descriptor such as the file name or socket details.
2719   To use, give: --track-fds=yes
2721 - Implemented a few more SSE/SSE2 instructions.
2723 - Less crud on the stack when you do 'where' inside a GDB attach.
2725 - Fixed the following bugs:
2726   68360: Valgrind does not compile against 2.6.0-testX kernels
2727   68525: CVS head doesn't compile on C90 compilers
2728   68566: pkgconfig support (wishlist)
2729   68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr)
2730   69140: valgrind not able to explicitly specify a path to a binary. 
2731   69432: helgrind asserts encountering a MutexErr when there are 
2732          EraserErr suppressions
2734 - Increase the max size of the translation cache from 200k average bbs
2735   to 300k average bbs.  Programs on the size of OOo (680m17) are
2736   thrashing the cache at the smaller size, creating large numbers of
2737   retranslations and wasting significant time as a result.
2741 Stable release 2.0.0 (5 Nov 2003)
2742 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2744 2.0.0 improves SSE/SSE2 support, fixes some minor bugs, and
2745 improves support for SuSE 9 and the Red Hat "Severn" beta.
2747 - Further improvements to SSE/SSE2 support.  The entire test suite of
2748   the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1
2749   20030307Z '-g -O -xW' now works.  I think this gives pretty good
2750   coverage of SSE/SSE2 floating point instructions, or at least the
2751   subset emitted by Icc.
2753 - Also added support for the following instructions:
2754     MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS
2755     PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS).
2757 - CFI support for GDB version 6.  Needed to enable newer GDBs
2758   to figure out where they are when using --gdb-attach=yes.
2760 - Fix this:
2761       mc_translate.c:1091 (memcheck_instrument): Assertion
2762       `u_in->size == 4 || u_in->size == 16' failed.
2764 - Return an error rather than panicing when given a bad socketcall.
2766 - Fix checking of syscall rt_sigtimedwait().
2768 - Implement __NR_clock_gettime (syscall 265).  Needed on Red Hat Severn.
2770 - Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n'
2771   bytes long, when it could be shorter, which could cause false
2772   positives.
2774 - Support use of select() for very large numbers of file descriptors.
2776 - Don't fail silently if the executable is statically linked, or is
2777   setuid/setgid. Print an error message instead.
2779 - Support for old DWARF-1 format line number info.
2783 Snapshot 20031012 (12 October 2003)
2784 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2786 Three months worth of bug fixes, roughly.  Most significant single
2787 change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
2789 20031012 builds on Red Hat Fedora ("Severn") but doesn't really work
2790 (curiously, mozilla runs OK, but a modest "ls -l" bombs).  I hope to
2791 get a working version out soon.  It may or may not work ok on the
2792 forthcoming SuSE 9; I hear positive noises about it but haven't been
2793 able to verify this myself (not until I get hold of a copy of 9).
2795 A detailed list of changes, in no particular order:
2797 - Describe --gen-suppressions in the FAQ.
2799 - Syscall __NR_waitpid supported.
2801 - Minor MMX bug fix.
2803 - -v prints program's argv[] at startup.
2805 - More glibc-2.3 suppressions.
2807 - Suppressions for stack underrun bug(s) in the c++ support library
2808   distributed with Intel Icc 7.0.
2810 - Fix problems reading /proc/self/maps.
2812 - Fix a couple of messages that should have been suppressed by -q, 
2813   but weren't.
2815 - Make Addrcheck understand "Overlap" suppressions.
2817 - At startup, check if program is statically linked and bail out if so.
2819 - Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
2821 - Memcheck/addrcheck: minor speed optimisations
2823 - Handle syscall __NR_brk more correctly than before.
2825 - Fixed incorrect allocate/free mismatch errors when using
2826   operator new(unsigned, std::nothrow_t const&)
2827   operator new[](unsigned, std::nothrow_t const&)
2829 - Support POSIX pthread spinlocks.
2831 - Fixups for clean compilation with gcc-3.3.1.
2833 - Implemented more opcodes: 
2834     - push %es
2835     - push %ds
2836     - pop %es
2837     - pop %ds
2838     - movntq
2839     - sfence
2840     - pshufw
2841     - pavgb
2842     - ucomiss
2843     - enter
2844     - mov imm32, %esp
2845     - all "in" and "out" opcodes
2846     - inc/dec %esp
2847     - A whole bunch of SSE/SSE2 instructions
2849 - Memcheck: don't bomb on SSE/SSE2 code.
2852 Snapshot 20030725 (25 July 2003)
2853 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2855 Fixes some minor problems in 20030716.
2857 - Fix bugs in overlap checking for strcpy/memcpy etc.
2859 - Do overlap checking with Addrcheck as well as Memcheck.
2861 - Fix this:
2862       Memcheck: the `impossible' happened:
2863       get_error_name: unexpected type
2865 - Install headers needed to compile new skins.
2867 - Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD
2868   passed to non-traced children.
2870 - Fix file descriptor leak in valgrind-listener.
2872 - Fix longstanding bug in which the allocation point of a 
2873   block resized by realloc was not correctly set.  This may
2874   have caused confusing error messages.
2877 Snapshot 20030716 (16 July 2003)
2878 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2880 20030716 is a snapshot of our current CVS head (development) branch.
2881 This is the branch which will become valgrind-2.0.  It contains
2882 significant enhancements over the 1.9.X branch.
2884 Despite this being a snapshot of the CVS head, it is believed to be
2885 quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so
2886 -- and therefore suitable for widespread use.  Please let us know asap
2887 if it causes problems for you.
2889 Two reasons for releasing a snapshot now are:
2891 - It's been a while since 1.9.6, and this snapshot fixes
2892   various problems that 1.9.6 has with threaded programs 
2893   on glibc-2.3.X based systems.
2895 - So as to make available improvements in the 2.0 line.
2897 Major changes in 20030716, as compared to 1.9.6:
2899 - More fixes to threading support on glibc-2.3.1 and 2.3.2-based
2900   systems (SuSE 8.2, Red Hat 9).  If you have had problems
2901   with inconsistent/illogical behaviour of errno, h_errno or the DNS
2902   resolver functions in threaded programs, 20030716 should improve
2903   matters.  This snapshot seems stable enough to run OpenOffice.org
2904   1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big
2905   threaded app if ever I saw one.
2907 - Automatic generation of suppression records; you no longer
2908   need to write them by hand.  Use --gen-suppressions=yes.
2910 - strcpy/memcpy/etc check their arguments for overlaps, when
2911   running with the Memcheck or Addrcheck skins.
2913 - malloc_usable_size() is now supported.
2915 - new client requests:
2916     - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS: 
2917       useful with regression testing
2918     - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions 
2919       on real CPU (use with caution!)
2921 - The GDB attach mechanism is more flexible.  Allow the GDB to
2922   be run to be specified by --gdb-path=/path/to/gdb, and specify
2923   which file descriptor V will read its input from with
2924   --input-fd=<number>.
2926 - Cachegrind gives more accurate results (wasn't tracking instructions in
2927   malloc() and friends previously, is now).
2929 - Complete support for the MMX instruction set.
2931 - Partial support for the SSE and SSE2 instruction sets.  Work for this
2932   is ongoing.  About half the SSE/SSE2 instructions are done, so
2933   some SSE based programs may work.  Currently you need to specify
2934   --skin=addrcheck.  Basically not suitable for real use yet.
2936 - Significant speedups (10%-20%) for standard memory checking.
2938 - Fix assertion failure in pthread_once().
2940 - Fix this:
2941     valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select): 
2942               Assertion `ms_end >= ms_now' failed.
2944 - Implement pthread_mutexattr_setpshared.
2946 - Understand Pentium 4 branch hints.  Also implemented a couple more
2947   obscure x86 instructions.
2949 - Lots of other minor bug fixes.
2951 - We have a decent regression test system, for the first time.
2952   This doesn't help you directly, but it does make it a lot easier
2953   for us to track the quality of the system, especially across
2954   multiple linux distributions.  
2956   You can run the regression tests with 'make regtest' after 'make
2957   install' completes.  On SuSE 8.2 and Red Hat 9 I get this:
2959      == 84 tests, 0 stderr failures, 0 stdout failures ==
2961   On Red Hat 8, I get this:
2963      == 84 tests, 2 stderr failures, 1 stdout failure ==
2964      corecheck/tests/res_search               (stdout)
2965      memcheck/tests/sigaltstack               (stderr)
2967   sigaltstack is probably harmless.  res_search doesn't work
2968   on R H 8 even running natively, so I'm not too worried.   
2970   On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures:
2972      == 84 tests, 2 stderr failures, 1 stdout failure ==
2973      corecheck/tests/pth_atfork1              (stdout)
2974      corecheck/tests/pth_atfork1              (stderr)
2975      memcheck/tests/sigaltstack               (stderr)
2977   You need to run on a PII system, at least, since some tests
2978   contain P6-specific instructions, and the test machine needs
2979   access to the internet so that corecheck/tests/res_search
2980   (a test that the DNS resolver works) can function.
2982 As ever, thanks for the vast amount of feedback :) and bug reports :(
2983 We may not answer all messages, but we do at least look at all of
2984 them, and tend to fix the most frequently reported bugs.
2988 Version 1.9.6 (7 May 2003 or thereabouts)
2989 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2991 Major changes in 1.9.6:
2993 - Improved threading support for glibc >= 2.3.2 (SuSE 8.2,
2994   RedHat 9, to name but two ...)  It turned out that 1.9.5
2995   had problems with threading support on glibc >= 2.3.2,
2996   usually manifested by threaded programs deadlocking in system calls,
2997   or running unbelievably slowly.  Hopefully these are fixed now.  1.9.6
2998   is the first valgrind which gives reasonable support for
2999   glibc-2.3.2.  Also fixed a 2.3.2 problem with pthread_atfork().
3001 - Majorly expanded FAQ.txt.  We've added workarounds for all
3002   common problems for which a workaround is known.
3004 Minor changes in 1.9.6:
3006 - Fix identification of the main thread's stack.  Incorrect
3007   identification of it was causing some on-stack addresses to not get
3008   identified as such.  This only affected the usefulness of some error
3009   messages; the correctness of the checks made is unchanged.
3011 - Support for kernels >= 2.5.68.
3013 - Dummy implementations of __libc_current_sigrtmin, 
3014   __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully
3015   good enough to keep alive programs which previously died for lack of
3016   them.
3018 - Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request.
3020 - Fix bug in the DWARF2 debug line info loader, when instructions 
3021   following each other have source lines far from each other 
3022   (e.g. with inlined functions).
3024 - Debug info reading: read symbols from both "symtab" and "dynsym"
3025   sections, rather than merely from the one that comes last in the
3026   file.
3028 - New syscall support: prctl(), creat(), lookup_dcookie().
3030 - When checking calls to accept(), recvfrom(), getsocketopt(),
3031   don't complain if buffer values are NULL.
3033 - Try and avoid assertion failures in
3034   mash_LD_PRELOAD_and_LD_LIBRARY_PATH.
3036 - Minor bug fixes in cg_annotate.
3040 Version 1.9.5 (7 April 2003)
3041 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3043 It occurs to me that it would be helpful for valgrind users to record
3044 in the source distribution the changes in each release.  So I now
3045 attempt to mend my errant ways :-)  Changes in this and future releases
3046 will be documented in the NEWS file in the source distribution.
3048 Major changes in 1.9.5:
3050 - (Critical bug fix): Fix a bug in the FPU simulation.  This was
3051   causing some floating point conditional tests not to work right.
3052   Several people reported this.  If you had floating point code which
3053   didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5.
3055 - Partial support for Red Hat 9.  RH9 uses the new Native Posix 
3056   Threads Library (NPTL), instead of the older LinuxThreads.  
3057   This potentially causes problems with V which will take some
3058   time to correct.  In the meantime we have partially worked around
3059   this, and so 1.9.5 works on RH9.  Threaded programs still work,
3060   but they may deadlock, because some system calls (accept, read,
3061   write, etc) which should be nonblocking, in fact do block.  This
3062   is a known bug which we are looking into.
3064   If you can, your best bet (unfortunately) is to avoid using 
3065   1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution.
3066   If your glibc is 2.3.1 or earlier, you're almost certainly OK.
3068 Minor changes in 1.9.5:
3070 - Added some #errors to valgrind.h to ensure people don't include
3071   it accidentally in their sources.  This is a change from 1.0.X
3072   which was never properly documented.  The right thing to include
3073   is now memcheck.h.  Some people reported problems and strange
3074   behaviour when (incorrectly) including valgrind.h in code with 
3075   1.9.1 -- 1.9.4.  This is no longer possible.
3077 - Add some __extension__ bits and pieces so that gcc configured
3078   for valgrind-checking compiles even with -Werror.  If you
3079   don't understand this, ignore it.  Of interest to gcc developers
3080   only.
3082 - Removed a pointless check which caused problems interworking 
3083   with Clearcase.  V would complain about shared objects whose
3084   names did not end ".so", and refuse to run.  This is now fixed.
3085   In fact it was fixed in 1.9.4 but not documented.
3087 - Fixed a bug causing an assertion failure of "waiters == 1"
3088   somewhere in vg_scheduler.c, when running large threaded apps,
3089   notably MySQL.
3091 - Add support for the munlock system call (124).
3093 Some comments about future releases:
3095 1.9.5 is, we hope, the most stable Valgrind so far.  It pretty much
3096 supersedes the 1.0.X branch.  If you are a valgrind packager, please
3097 consider making 1.9.5 available to your users.  You can regard the
3098 1.0.X branch as obsolete: 1.9.5 is stable and vastly superior.  There
3099 are no plans at all for further releases of the 1.0.X branch.
3101 If you want a leading-edge valgrind, consider building the cvs head
3102 (from SourceForge), or getting a snapshot of it.  Current cool stuff
3103 going in includes MMX support (done); SSE/SSE2 support (in progress),
3104 a significant (10-20%) performance improvement (done), and the usual
3105 large collection of minor changes.  Hopefully we will be able to
3106 improve our NPTL support, but no promises.