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