Sync NEWS with CVS version.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3444 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/NEWS b/NEWS
index c9cb8f7..a8bb36e 100644
--- a/NEWS
+++ b/NEWS
@@ -1,71 +1,168 @@
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.
-2.4.0 represents another architectural change for Valgrind. The most
-significant user-visible change is that we no longer emulate
-libpthread; this has both pluses and minuses.
+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:
-* Memcheck is now the default tool
+* There are many fewer system dependencies and strange library-related
+ bugs. There is a small performance improvement, and a large
+ stability improvement.
-* The default stack backtrace is now 12 call frames
+* 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.
-* Suppressions can have up to 25 call frame matches, rather than
- just 4
+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.
-* libpthread has gone along with all the bugs associated with it.
- Instead, Valgrind now emulates the kernel's threading syscalls
- (clone, etc), and lets you use your standard system libpthread.
- This means:
+There are many other significant changes too:
- - There should be many fewer system dependencies and strange
- library-related bugs. There is a small performance improvement,
- and a large stability improvement.
+* Memcheck is (once again) the default tool.
- - On the downside, this means that Valgrind can no longer report
- on problems with how your program uses threads. It also means
- that Helgrind is currently non-functional. We're hoping to
- fix these for a (near) future release.
+* The default stack backtrace is now 12 call frames, rather than 4.
-* Addrcheck and memcheck use a lot less memory for many programs.
- These tools no longer need to allocate shadow memory if there are
- large regions of memory with the same A/V states - such as an
- mmaped file.
+* Suppressions can have up to 25 call frame matches, rather than 4.
-* Addrcheck and memcheck's leak-detector has been improved. It now
- reports many 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 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.
-* Memcheck's confusion over the effect of mprotect() has been fixed;
- previously mprotect could erroneously make undefined data defined.
+* 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).
-* State passed to signal handlers may be modified so that it will take
- effect when the signal returns. You will need run with --single-step=yes
- to make this useful.
+* Memcheck's confusion over the effect of mprotect() has been fixed:
+ previously mprotect could erroneously mark undefined data as
+ defined.
-* In general, signal handling should now be indistinguishable from
- running natively.
+* 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
- the toolchain supports it. This allows it to take advantage of all
+ 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 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 now more robust against bad addresses being
- passed to syscalls; they will fail with EFAULT rather than killing
- Valgrind with SIGSEGV.
+* 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, many non-pthread uses of
- it will work. Partial sharing (where some resources are shared,
- and some are not) is not supported.
+* 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...
+
Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~