From: Julian S. <js...@ac...> - 2005-03-24 04:39:53
|
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... |