We are pleased to announce a new release of Valgrind, version 3.4.0,
available from http://www.valgrind.org.

Valgrind is an open-source suite of simulation based debugging and
profiling tools.  With the tools that come with Valgrind, you can
automatically detect many memory management and threading bugs, which
avoids hours of frustrating bug-hunting, and makes your code more
stable.  You can also perform detailed time and space profiling to
help speed up and slim down your programs.

3.4.0 is a feature release with many significant improvements and the
usual collection of bug fixes.  This release supports X86/Linux,
AMD64/Linux, PPC32/Linux and PPC64/Linux.  See the release notes below
for details.

Our thanks to all those who contribute to Valgrind's development.
This release represents a great deal of time, energy and effort on the
part of many people.

Happy (and productive) debugging and profiling,

-- The Valgrind Developers


Release 3.4.0 (2 January 2009)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.4.0 is a feature release with many significant improvements and the
usual collection of bug fixes.  This release supports X86/Linux,
AMD64/Linux, PPC32/Linux and PPC64/Linux.  Support for recent distros
(using gcc 4.4, glibc 2.8 and 2.9) has been added.

3.4.0 brings some significant tool improvements.  Memcheck can now
report the origin of uninitialised values, the thread checkers
Helgrind and Drd are much improved, and we have a new experimental
tool, exp-Ptrcheck, which is able to detect overruns of stack and
global arrays.  In detail:

* Memcheck is now able to track the origin of uninitialised values.
  When it reports an uninitialised value error, it will try to show
  the origin of the value, as either a heap or stack allocation.
  Origin tracking is expensive and so is not enabled by default.  To
  use it, specify --track-origins=yes.  Memcheck's speed will be
  essentially halved, and memory usage will be significantly
  increased.  Nevertheless it can drastically reduce the effort
  required to identify the root cause of uninitialised value errors,
  and so is often a programmer productivity win, despite running more
  slowly.

* A version (1.4.0) of the Valkyrie GUI, that works with Memcheck in
  3.4.0, will be released shortly.

* Helgrind's race detection algorithm has been completely redesigned
  and reimplemented, to address usability and scalability concerns:

  - The new algorithm has a lower false-error rate: it is much less
    likely to report races that do not really exist.

  - Helgrind will display full call stacks for both accesses involved
    in a race.  This makes it easier to identify the root causes of
    races.

  - Limitations on the size of program that can run have been removed.

  - Performance has been modestly improved, although that is very
    workload-dependent.

  - Direct support for Qt4 threading has been added.

  - pthread_barriers are now directly supported.

  - Helgrind works well on all supported Linux targets.

* The Drd thread debugging tool has seen major improvements:

  - Greatly improved performance and significantly reduced memory
    usage.

  - Support for several major threading libraries (Boost.Thread, Qt4,
    glib, OpenMP) has been added.

  - Support for atomic instructions, POSIX semaphores, barriers and
    reader-writer locks has been added.

  - Works now on PowerPC CPUs too.

  - Added support for printing thread stack usage at thread exit time.

  - Added support for debugging lock contention.

  - Added a manual for Drd.

* A new experimental tool, exp-Ptrcheck, has been added.  Ptrcheck
  checks for misuses of pointers.  In that sense it is a bit like
  Memcheck.  However, Ptrcheck can do things Memcheck can't: it can
  detect overruns of stack and global arrays, it can detect
  arbitrarily far out-of-bounds accesses to heap blocks, and it can
  detect accesses heap blocks that have been freed a very long time
  ago (millions of blocks in the past).

  Ptrcheck currently works only on x86-linux and amd64-linux.  To use
  it, use --tool=exp-ptrcheck.  A simple manual is provided, as part
  of the main Valgrind documentation.  As this is an experimental
  tool, we would be particularly interested in hearing about your
  experiences with it.

* exp-Omega, an experimental instantaneous leak-detecting tool, is no
  longer built by default, although the code remains in the repository
  and the tarball.  This is due to three factors: a perceived lack of
  users, a lack of maintenance, and concerns that it may not be
  possible to achieve reliable operation using the existing design.

* As usual, support for the latest Linux distros and toolchain
  components has been added.  It should work well on Fedora Core 10,
  OpenSUSE 11.1 and Ubuntu 8.10.  gcc-4.4 (in its current pre-release
  state) is supported, as is glibc-2.9.  The C++ demangler has been
  updated so as to work well with C++ compiled by even the most recent
  g++'s.

* You can now use frame-level wildcards in suppressions.  This was a
  frequently-requested enhancement.  A line "..." in a suppression now
  matches zero or more frames.  This makes it easier to write
  suppressions which are precise yet insensitive to changes in
  inlining behaviour.

* 3.4.0 adds support on x86/amd64 for the SSSE3 instruction set.

* Very basic support for IBM Power6 has been added (64-bit processes only).

* Valgrind is now cross-compilable.  For example, it is possible to
  cross compile Valgrind on an x86/amd64-linux host, so that it runs
  on a ppc32/64-linux target.

* You can set the main thread's stack size at startup using the
  new --main-stacksize= flag (subject of course to ulimit settings).
  This is useful for running apps that need a lot of stack space.

* The limitation that you can't use --trace-children=yes together
  with --db-attach=yes has been removed.

* The following bugs have been fixed.  Note that "n-i-bz" stands for
  "not in bugzilla" -- that is, a bug that was reported to us but
  never got a bugzilla entry.  We encourage you to file bugs in
  bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
  mailing the developers (or mailing lists) directly.

  n-i-bz  Make return types for some client requests 64-bit clean
  n-i-bz  glibc 2.9 support
  n-i-bz  ignore unsafe .valgrindrc's (CVE-2008-4865)
  n-i-bz  MPI_Init(0,0) is valid but libmpiwrap.c segfaults
  n-i-bz  Building in an env without gdb gives bogus gdb attach
  92456   Tracing the origin of uninitialised memory
  106497  Valgrind does not demangle some C++ template symbols
  162222  ==106497
  151612  Suppression with "..." (frame-level wildcards in .supp files)
  156404  Unable to start oocalc under memcheck on openSUSE 10.3 (64-bit)
  159285  unhandled syscall:25 (stime, on x86-linux)
  159452  unhandled ioctl 0x8B01 on "valgrind iwconfig"
  160954  ppc build of valgrind crashes with illegal instruction (isel)
  160956  mallinfo implementation, w/ patch
  162092  Valgrind fails to start gnome-system-monitor
  162819  malloc_free_fill test doesn't pass on glibc2.8 x86
  163794  assertion failure with "--track-origins=yes"
  163933  sigcontext.err and .trapno must be set together
  163955  remove constraint !(--db-attach=yes && --trace-children=yes)
  164476  Missing kernel module loading system calls
  164669  SVN regression: mmap() drops posix file locks
  166581  Callgrind output corruption when program forks
  167288  Patch file for missing system calls on Cell BE
  168943  unsupported scas instruction pentium
  171645  Unrecognised instruction (MOVSD, non-binutils encoding)
  172417  x86->IR: 0x82 ...
  172563  amd64->IR: 0xD9 0xF5  -  fprem1
  173099  .lds linker script generation error
  173177  [x86_64] syscalls: 125/126/179 (capget/capset/quotactl)
  173751  amd64->IR: 0x48 0xF 0x6F 0x45 (even more redundant prefixes)
  174532  == 173751
  174908  --log-file value not expanded correctly for core file
  175044  Add lookup_dcookie for amd64
  175150  x86->IR: 0xF2 0xF 0x11 0xC1 (movss non-binutils encoding)

Developer-visible changes:

* Valgrind's debug-info reading machinery has been majorly overhauled.
  It can now correctly establish the addresses for ELF data symbols,
  which is something that has never worked properly before now.

  Also, Valgrind can now read DWARF3 type and location information for
  stack and global variables.  This makes it possible to use the
  framework to build tools that rely on knowing the type and locations
  of stack and global variables, for example exp-Ptrcheck.

  Reading of such information is disabled by default, because most
  tools don't need it, and because it is expensive in space and time.
  However, you can force Valgrind to read it, using the
  --read-var-info=yes flag.  Memcheck, Helgrind and DRD are able to
  make use of such information, if present, to provide source-level
  descriptions of data addresses in the error messages they create.

(3.4.0.RC1:  24 Dec 2008, vex r1878, valgrind r8882).
(3.4.0:       3 Jan 2009, vex r1878, valgrind r8899).

------------------------------------------------------------------------------
_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to