LWN.net Logo

Valgrind 2.4.0 is available

From:  Julian Seward <jseward-AT-acm.org>
To:  valgrind-developers-AT-lists.sourceforge.net
Subject:  Valgrind-2.4.0 is available
Date:  Thu, 24 Mar 2005 04:39:38 +0000
Cc:  valgrind-users-AT-lists.sourceforge.net, valgrind-announce-AT-lists.sourceforge.net, lwn-AT-lwn.net


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

Valgrind is an award-winning open-source tool suite for debugging and
profiling x86-Linux programs.  With the tools that come with Valgrind,
you can automatically detect many memory management and threading
bugs, avoiding hours of frustrating bug-hunting, and make your code
more stable.  You can also perform detailed time and space profiling
to help speed up and slim down your programs.

2.4.0 brings six months worth of improvements and bug fixes.  We
believe it to be a worthy successor to the previous stable release,
2.2.0.  There are dozens of bug fixes and minor improvements.  There
are also some major user-visible changes.  A full list is shown below.

2.4.X will be the last x86-only Valgrind.  Future releases (3.0 and
above) will be built on a new dynamic-translation framework capable of
supporting a range of processor architectures.  Our first port away
from x86 will be Valgrind for AMD64-Linux.

Finally, Valgrind has a new home: http://www.valgrind.org.  A big
thank-you to the KDE folks who have generously provided hosting,
repository and bugzilla support over the past three years.

Happy (and productive) debugging and profiling,

-- The Valgrind developers



Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2.4.0 brings many significant changes and bug fixes.  The most
significant user-visible change is that we no longer supply our own
pthread implementation.  Instead, Valgrind is finally capable of
running the native thread library, either LinuxThreads or NPTL.

This means our libpthread has gone, along with the bugs associated
with it.  Valgrind now supports the kernel's threading syscalls, and
lets you use your standard system libpthread.  As a result:

* There are many fewer system dependencies and strange library-related
  bugs.  There is a small performance improvement, and a large
  stability improvement.

* On the downside, Valgrind can no longer report misuses of the POSIX
  PThreads API.  It also means that Helgrind currently does not work.
  We hope to fix these problems in a future release.

Note that running the native thread libraries does not mean Valgrind
is able to provide genuine concurrent execution on SMPs.  We still
impose the restriction that only one thread is running at any given
time.

There are many other significant changes too:

* Memcheck is (once again) the default tool.

* The default stack backtrace is now 12 call frames, rather than 4.

* Suppressions can have up to 25 call frame matches, rather than 4.

* Memcheck and Addrcheck use less memory.  Under some circumstances,
  they no longer allocate shadow memory if there are large regions of
  memory with the same A/V states - such as an mmaped file.

* The memory-leak detector in Memcheck and Addrcheck has been
  improved.  It now reports more types of memory leak, including
  leaked cycles.  When reporting leaked memory, it can distinguish
  between directly leaked memory (memory with no references), and
  indirectly leaked memory (memory only referred to by other leaked
  memory).

* Memcheck's confusion over the effect of mprotect() has been fixed:
  previously mprotect could erroneously mark undefined data as
  defined.

* Signal handling is much improved and should be very close to what
  you get when running natively.  

  One result of this is that Valgrind observes changes to sigcontexts
  passed to signal handlers.  Such modifications will take effect when
  the signal returns.  You will need to run with --single-step=yes to
  make this useful.

* Valgrind is built in Position Independent Executable (PIE) format if
  your toolchain supports it.  This allows it to take advantage of all
  the available address space on systems with 4Gbyte user address
  spaces.

* Valgrind can now run itself (requires PIE support).

* Syscall arguments are now checked for validity.  Previously all
  memory used by syscalls was checked, but now the actual values
  passed are also checked.

* Syscall wrappers are more robust against bad addresses being passed
  to syscalls: they will fail with EFAULT rather than killing Valgrind
  with SIGSEGV.

* Because clone() is directly supported, some non-pthread uses of it
  will work.  Partial sharing (where some resources are shared, and
  some are not) is not supported.

* open() and readlink() on /proc/self/exe are supported.

BUGS FIXED:

88520   pipe+fork+dup2 kills the main program
88604 	Valgrind Aborts when using $VALGRIND_OPTS and user progra...
88614 	valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt...
88703 	Stabs parser fails to handle ";"
88886 	ioctl wrappers for TIOCMBIS and TIOCMBIC
89032 	valgrind pthread_cond_timedwait fails
89106 	the 'impossible' happened
89139 	Missing sched_setaffinity & sched_getaffinity
89198 	valgrind lacks support for SIOCSPGRP and SIOCGPGRP
89263 	Missing ioctl translations for scsi-generic and CD playing
89440 	tests/deadlock.c line endings
89481 	`impossible' happened: EXEC FAILED
89663 	valgrind 2.2.0 crash on Redhat 7.2
89792 	Report pthread_mutex_lock() deadlocks instead of returnin...
90111 	statvfs64 gives invalid error/warning
90128 	crash+memory fault with stabs generated by gnat for a run...
90778 	VALGRIND_CHECK_DEFINED() not as documented in memcheck.h
90834 	cachegrind crashes at end of program without reporting re...
91028 	valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio...
91162 	valgrind crash while debugging drivel 1.2.1
91199 	Unimplemented function
91325 	Signal routing does not propagate the siginfo structure
91599 	Assertion `cv == ((void *)0)'
91604 	rw_lookup clears orig and sends the NULL value to rw_new
91821 	Small problems building valgrind with $top_builddir ne $t...
91844 	signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec...
92264 	UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared
92331 	per-target flags necessitate AM_PROG_CC_C_O
92420 	valgrind doesn't compile with linux 2.6.8.1/9
92513 	Valgrind 2.2.0 generates some warning messages
92528 	vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed.
93096 	unhandled ioctl 0x4B3A and 0x5601
93117 	Tool and core interface versions do not match
93128 	Can't run valgrind --tool=memcheck because of unimplement...
93174 	Valgrind can crash if passed bad args to certain syscalls
93309 	Stack frame in new thread is badly aligned
93328 	Wrong types used with sys_sigprocmask()
93763 	/usr/include/asm/msr.h is missing
93776 	valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser...
93810 	fcntl() argument checking a bit too strict
94378 	Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed.
94429 	valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3
94645 	Impossible happened: PINSRW mem
94953 	valgrind: the `impossible' happened: SIGSEGV
95667 	Valgrind does not work with any KDE app
96243 	Assertion 'res==0' failed
96252 	stage2 loader of valgrind fails to allocate memory
96520 	All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ...
96660 	ioctl CDROMREADTOCENTRY causes bogus warnings
96747 	After looping in a segfault handler, the impossible happens
96923 	Zero sized arrays crash valgrind trace back with SIGFPE
96948 	valgrind stops with assertion failure regarding mmap2
96966 	valgrind fails when application opens more than 16 sockets
97398 	valgrind: vg_libpthread.c:2667 Assertion failed
97407 	valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `...
97427 	"Warning: invalid file descriptor -1 in syscall close()" ...
97785 	missing backtrace
97792 	build in obj dir fails - autoconf / makefile cleanup
97880 	pthread_mutex_lock fails from shared library (special ker...
97975 	program aborts without ang VG messages
98129 	Failed when open and close file 230000 times using stdio
98175 	Crashes when using valgrind-2.2.0 with a program using al...
98288 	Massif broken
98303 	UNIMPLEMENTED FUNCTION pthread_condattr_setpshared
98630 	failed--compilation missing warnings.pm, fails to make he...
98756 	Cannot valgrind signal-heavy kdrive X server
98966 	valgrinding the JVM fails with a sanity check assertion
99035 	Valgrind crashes while profiling
99142 	loops with message "Signal 11 being dropped from thread 0...
99195 	threaded apps crash on thread start (using QThread::start...
99348 	Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off...
99568 	False negative due to mishandling of mprotect
99738 	valgrind memcheck crashes on program that uses sigitimer
99923 	0-sized allocations are reported as leaks
99949 	program seg faults after exit()
100036 	"newSuperblock's request for 1048576 bytes failed"
100116 	valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ...
100486 	memcheck reports "valgrind: the `impossible' happened: V...
100833 	second call to "mremap" fails with EINVAL
101156 	(vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1...
101173 	Assertion `recDepth >= 0 && recDepth < 500' failed
101291 	creating threads in a forked process fails
101313 	valgrind causes different behavior when resizing a window...
101423 	segfault for c++ array of floats
101562 	valgrind massif dies on SIGINT even with signal handler r...


(Log in to post comments)

Copyright © 2005, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds