blob: 1210106ca21a33a2bd72b4adbaeaded4f350f8da [file] [log] [blame]
jseward43230652003-12-14 00:14:54 +00001
njnf63170c2005-11-12 19:09:51 +00002Release 3.1.0 (?? November 2005)
3~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43.1.0 is a feature release with a number of significant improvements.
5In particular, AMD64 support is much improved, PPC32 support is good
6enough to be usable, and the handling of memory management and address
7space is much more robust.
8
9The details of these changes are as follows.
10
11- AMD64 support is much improved. The 64-bit vs. 32-bit issues in 3.0.0
12 and 3.0.1 have been resolved, and it should "just work" now in all
13 cases. On AMD64 machines both 64-bit and 32-bit versions of Valgrind
14 are built. The right version will be invoked automatically, even when
15 using --trace-children and mixing execution between 64-bit and 32-bit
16 executables. Also, many more instructions are supported.
17
18- PPC32 support is now sufficient to be usable. It should work with all
19 tools, but please let us know if you have problems with it.
20 [XXX: something about 405s? how's the Altivec support?]
21
22- The address space manager has been rewritten. As a result, Valgrind
23 should be much more robust with programs that use large amounts of
24 memory. There should be many fewer "memory exhausted" messages, and
25 debug symbols should be read correctly on large (eg. 300MB+)
26 executables. On 32-bit machines the full address space available
27 to user programs (usually 3GB or 4GB) should be usable and fully
28 utilised. On 64-bit machines up to 32GB of memory is available; when
29 using Memcheck that means your program can use up to about 14GB of
30 memory.
31
32 A side effect of this change is that Valgrind is no longer protected
33 against wild writes by the client. This feature was nice but relied
34 on the x86 segment registers and so wasn't portable.
35
36- Most users should not notice, but as part of the address space
37 manager change, the way Valgrind is built has been changed. Each tool
38 is now built as a statically linked stand-alone executable, rather
39 than as a shared object that is dynamically linked with the core. The
40 "valgrind" program invokes the appropriate tool depending on the
41 --tool option. This slightly increases the amount of disk space used
42 by Valgrind, but it greatly simplified many things and removed
43 Valgrind's dependence on glibc.
44
45Other user-visible changes:
46
47- The --weird-hacks option has been renamed --sim-hints.
48
49- The --time-stamp option no longer gives an absolute date and time.
50 It now prints the time elapsed since the program began.
51
52The following are some user-visible changes that occurred in earlier
53versions that may not have been announced, or were announced but not
54widely realised. So we're mentioning them now.
55
56- The --tool flag is optional once again; if you omit it, Memcheck
57 is run by default.
58
59- The --num-callers flag now has a default value of 12. It was
60 previously 4.
61
62- The --xml flag causes Valgrind's output to be produced in XML format.
63 This is designed to make it easy for other programs to consume
64 Valgrind's output. The format is described in the file
65 docs/internals/xml-format.txt.
66
njn1f503992005-11-13 16:41:15 +000067- The --gen-suppressions flag supports an "all" value that causes every
68 suppression to be printed without asking.
69
njnf63170c2005-11-12 19:09:51 +000070BUGS FIXED:
71
72XXX... insert bugs fixed here
73
74
sewardjcd62fe72005-08-29 13:24:51 +000075Release 3.0.1 (29 August 2005)
76~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
773.0.1 fixes a bunch of bugs reported in 3.0.0. There is no new
78functionality. Some of the fixed bugs are critical, so if you
sewardjfa233892005-08-30 12:35:36 +000079use/distribute 3.0.0, an upgrade to 3.0.1 is recommended. The fixed
sewardjcd62fe72005-08-29 13:24:51 +000080bugs are:
81
82(note: "n-i-bz" means "not in bugzilla" -- this bug does not have
83 a bugzilla entry).
84
85109313 (== 110505) x86 cmpxchg8b
86n-i-bz x86: track but ignore changes to %eflags.AC (alignment check)
87110102 dis_op2_E_G(amd64)
88110202 x86 sys_waitpid(#286)
89110203 clock_getres(,0)
90110208 execve fail wrong retval
91110274 SSE1 now mandatory for x86
92110388 amd64 0xDD 0xD1
93110464 amd64 0xDC 0x1D FCOMP
94110478 amd64 0xF 0xD PREFETCH
95n-i-bz XML <unique> printing wrong
96n-i-bz Dirk r4359 (amd64 syscalls from trunk)
97110591 amd64 and x86: rdtsc not implemented properly
98n-i-bz Nick r4384 (stub implementations of Addrcheck and Helgrind)
99110652 AMD64 valgrind crashes on cwtd instruction
100110653 AMD64 valgrind crashes on sarb $0x4,foo(%rip) instruction
101110656 PATH=/usr/bin::/bin valgrind foobar stats ./fooba
102110657 Small test fixes
103110671 vex x86->IR: unhandled instruction bytes: 0xF3 0xC3 (rep ret)
104n-i-bz Nick (Cachegrind should not assert when it encounters a client
105 request.)
106110685 amd64->IR: unhandled instruction bytes: 0xE1 0x56 (loope Jb)
107110830 configuring with --host fails to build 32 bit on 64 bit target
108110875 Assertion when execve fails
109n-i-bz Updates to Memcheck manual
110n-i-bz Fixed broken malloc_usable_size()
111110898 opteron instructions missing: btq btsq btrq bsfq
112110954 x86->IR: unhandled instruction bytes: 0xE2 0xF6 (loop Jb)
113n-i-bz Make suppressions work for "???" lines in stacktraces.
114111006 bogus warnings from linuxthreads
115111092 x86: dis_Grp2(Reg): unhandled case(x86)
116111231 sctp_getladdrs() and sctp_getpaddrs() returns uninitialized
117 memory
118111102 (comment #4) Fixed 64-bit unclean "silly arg" message
119n-i-bz vex x86->IR: unhandled instruction bytes: 0x14 0x0
120n-i-bz minor umount/fcntl wrapper fixes
121111090 Internal Error running Massif
122101204 noisy warning
123111513 Illegal opcode for SSE instruction (x86 movups)
124111555 VEX/Makefile: CC is set to gcc
sewardjfa233892005-08-30 12:35:36 +0000125n-i-bz Fix XML bugs in FAQ
sewardjcd62fe72005-08-29 13:24:51 +0000126
sewardjfa233892005-08-30 12:35:36 +0000127(3.0.1: 29 August 05,
128 vex/branches/VEX_3_0_BRANCH r1367,
129 valgrind/branches/VALGRIND_3_0_BRANCH r4574).
sewardj820c7722005-08-29 13:44:43 +0000130
131
sewardjcd62fe72005-08-29 13:24:51 +0000132
sewardjec39f332005-08-02 15:28:07 +0000133Release 3.0.0 (3 August 2005)
134~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sewardjf9929e62005-08-02 21:05:58 +00001353.0.0 is a major overhaul of Valgrind. The most significant user
136visible change is that Valgrind now supports architectures other than
137x86. The new architectures it supports are AMD64 and PPC32, and the
138infrastructure is present for other architectures to be added later.
njn4a9f6f42005-07-19 23:46:08 +0000139
sewardjf9929e62005-08-02 21:05:58 +0000140AMD64 support works well, but has some shortcomings:
njn4a9f6f42005-07-19 23:46:08 +0000141
njn7b1a6a42005-07-20 04:20:44 +0000142- It generally won't be as solid as the x86 version. For example,
143 support for more obscure instructions and system calls may be missing.
144 We will fix these as they arise.
njn4a9f6f42005-07-19 23:46:08 +0000145
sewardjc371bd02005-07-27 09:55:24 +0000146- Address space may be limited; see the point about
njn7b1a6a42005-07-20 04:20:44 +0000147 position-independent executables below.
njn4a9f6f42005-07-19 23:46:08 +0000148
njn7b1a6a42005-07-20 04:20:44 +0000149- If Valgrind is built on an AMD64 machine, it will only run 64-bit
150 executables. If you want to run 32-bit x86 executables under Valgrind
151 on an AMD64, you will need to build Valgrind on an x86 machine and
152 copy it to the AMD64 machine. And it probably won't work if you do
153 something tricky like exec'ing a 32-bit program from a 64-bit program
154 while using --trace-children=yes. We hope to improve this situation
155 in the future.
156
157The PPC32 support is very basic. It may not work reliably even for
sewardjc371bd02005-07-27 09:55:24 +0000158small programs, but it's a start. Many thanks to Paul Mackerras for
159his great work that enabled this support. We are working to make
160PPC32 usable as soon as possible.
njn4a9f6f42005-07-19 23:46:08 +0000161
162Other user-visible changes:
163
sewardjec39f332005-08-02 15:28:07 +0000164- Valgrind is no longer built by default as a position-independent
165 executable (PIE), as this caused too many problems.
njn4a9f6f42005-07-19 23:46:08 +0000166
167 Without PIE enabled, AMD64 programs will only be able to access 2GB of
168 address space. We will fix this eventually, but not for the moment.
169
170 Use --enable-pie at configure-time to turn this on.
171
172- Support for programs that use stack-switching has been improved. Use
173 the --max-stackframe flag for simple cases, and the
174 VALGRIND_STACK_REGISTER, VALGRIND_STACK_DEREGISTER and
175 VALGRIND_STACK_CHANGE client requests for trickier cases.
176
njn7b1a6a42005-07-20 04:20:44 +0000177- Support for programs that use self-modifying code has been improved,
178 in particular programs that put temporary code fragments on the stack.
179 This helps for C programs compiled with GCC that use nested functions,
njne7723322005-07-24 17:19:09 +0000180 and also Ada programs. This is controlled with the --smc-check
njn7b1a6a42005-07-20 04:20:44 +0000181 flag, although the default setting should work in most cases.
njn4a9f6f42005-07-19 23:46:08 +0000182
njn7b1a6a42005-07-20 04:20:44 +0000183- Output can now be printed in XML format. This should make it easier
sewardjc371bd02005-07-27 09:55:24 +0000184 for tools such as GUI front-ends and automated error-processing
185 schemes to use Valgrind output as input. The --xml flag controls this.
186 As part of this change, ELF directory information is read from executables,
187 so absolute source file paths are available if needed.
njn4a9f6f42005-07-19 23:46:08 +0000188
189- Programs that allocate many heap blocks may run faster, due to
190 improvements in certain data structures.
191
njn7b1a6a42005-07-20 04:20:44 +0000192- Addrcheck is currently not working. We hope to get it working again
193 soon. Helgrind is still not working, as was the case for the 2.4.0
194 release.
njn4a9f6f42005-07-19 23:46:08 +0000195
sewardjc371bd02005-07-27 09:55:24 +0000196- The JITter has been completely rewritten, and is now in a separate
197 library, called Vex. This enabled a lot of the user-visible changes,
198 such as new architecture support. The new JIT unfortunately translates
199 more slowly than the old one, so programs may take longer to start.
200 We believe the code quality is produces is about the same, so once
201 started, programs should run at about the same speed. Feedback about
202 this would be useful.
203
204 On the plus side, Vex and hence Memcheck tracks value flow properly
205 through floating point and vector registers, something the 2.X line
206 could not do. That means that Memcheck is much more likely to be
207 usably accurate on vectorised code.
208
sewardjec39f332005-08-02 15:28:07 +0000209- There is a subtle change to the way exiting of threaded programs
sewardjc371bd02005-07-27 09:55:24 +0000210 is handled. In 3.0, Valgrind's final diagnostic output (leak check,
211 etc) is not printed until the last thread exits. If the last thread
212 to exit was not the original thread which started the program, any
213 other process wait()-ing on this one to exit may conclude it has
214 finished before the diagnostic output is printed. This may not be
215 what you expect. 2.X had a different scheme which avoided this
216 problem, but caused deadlocks under obscure circumstances, so we
217 are trying something different for 3.0.
218
219- Small changes in control log file naming which make it easier to
sewardjec39f332005-08-02 15:28:07 +0000220 use valgrind for debugging MPI-based programs. The relevant
221 new flags are --log-file-exactly= and --log-file-qualifier=.
sewardjc371bd02005-07-27 09:55:24 +0000222
223- As part of adding AMD64 support, DWARF2 CFI-based stack unwinding
224 support was added. In principle this means Valgrind can produce
225 meaningful backtraces on x86 code compiled with -fomit-frame-pointer
tom81868f02005-07-27 10:33:08 +0000226 providing you also compile your code with -fasynchronous-unwind-tables.
sewardjc371bd02005-07-27 09:55:24 +0000227
sewardjec39f332005-08-02 15:28:07 +0000228- The documentation build system has been completely redone.
229 The documentation masters are now in XML format, and from that
230 HTML, PostScript and PDF documentation is generated. As a result
231 the manual is now available in book form. Note that the
232 documentation in the source tarballs is pre-built, so you don't need
233 any XML processing tools to build Valgrind from a tarball.
njn4a9f6f42005-07-19 23:46:08 +0000234
235Changes that are not user-visible:
236
sewardjc371bd02005-07-27 09:55:24 +0000237- The code has been massively overhauled in order to modularise it.
238 As a result we hope it is easier to navigate and understand.
njn4a9f6f42005-07-19 23:46:08 +0000239
240- Lots of code has been rewritten.
241
sewardjf9929e62005-08-02 21:05:58 +0000242BUGS FIXED:
njn4a9f6f42005-07-19 23:46:08 +0000243
sewardj79bd9b62005-08-03 16:40:10 +0000244110046 sz == 4 assertion failed
245109810 vex amd64->IR: unhandled instruction bytes: 0xA3 0x4C 0x70 0xD7
sewardjf9929e62005-08-02 21:05:58 +0000246109802 Add a plausible_stack_size command-line parameter ?
247109783 unhandled ioctl TIOCMGET (running hw detection tool discover)
248109780 unhandled ioctl BLKSSZGET (running fdisk -l /dev/hda)
249109718 vex x86->IR: unhandled instruction: ffreep
250109429 AMD64 unhandled syscall: 127 (sigpending)
251109401 false positive uninit in strchr from ld-linux.so.2
252109385 "stabs" parse failure
253109378 amd64: unhandled instruction REP NOP
254109376 amd64: unhandled instruction LOOP Jb
255109363 AMD64 unhandled instruction bytes
256109362 AMD64 unhandled syscall: 24 (sched_yield)
257109358 fork() won't work with valgrind-3.0 SVN
258109332 amd64 unhandled instruction: ADC Ev, Gv
259109314 Bogus memcheck report on amd64
260108883 Crash; vg_memory.c:905 (vgPlain_init_shadow_range):
261 Assertion `vgPlain_defined_init_shadow_page()' failed.
262108349 mincore syscall parameter checked incorrectly
263108059 build infrastructure: small update
264107524 epoll_ctl event parameter checked on EPOLL_CTL_DEL
265107123 Vex dies with unhandled instructions: 0xD9 0x31 0xF 0xAE
266106841 auxmap & openGL problems
267106713 SDL_Init causes valgrind to exit
268106352 setcontext and makecontext not handled correctly
269106293 addresses beyond initial client stack allocation
270 not checked in VALGRIND_DO_LEAK_CHECK
271106283 PIE client programs are loaded at address 0
272105831 Assertion `vgPlain_defined_init_shadow_page()' failed.
273105039 long run-times probably due to memory manager
274104797 valgrind needs to be aware of BLKGETSIZE64
275103594 unhandled instruction: FICOM
276103320 Valgrind 2.4.0 fails to compile with gcc 3.4.3 and -O0
277103168 potentially memory leak in coregrind/ume.c
278102039 bad permissions for mapped region at address 0xB7C73680
279101881 weird assertion problem
280101543 Support fadvise64 syscalls
28175247 x86_64/amd64 support (the biggest "bug" we have ever fixed)
njn4a9f6f42005-07-19 23:46:08 +0000282
sewardj9a919512005-08-03 17:01:51 +0000283(3.0RC1: 27 July 05, vex r1303, valgrind r4283).
sewardj1346e132005-08-03 20:42:06 +0000284(3.0.0: 3 August 05, vex r1313, valgrind r4316).
sewardjbfa2b992005-07-27 17:49:17 +0000285
286
287
njn8c927302005-03-12 16:45:01 +0000288Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
njn1aa5ae42005-03-26 16:04:27 +0000289~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2902.4.0 brings many significant changes and bug fixes. The most
291significant user-visible change is that we no longer supply our own
292pthread implementation. Instead, Valgrind is finally capable of
293running the native thread library, either LinuxThreads or NPTL.
njn8c927302005-03-12 16:45:01 +0000294
njn1aa5ae42005-03-26 16:04:27 +0000295This means our libpthread has gone, along with the bugs associated
296with it. Valgrind now supports the kernel's threading syscalls, and
297lets you use your standard system libpthread. As a result:
njn8c927302005-03-12 16:45:01 +0000298
njn1aa5ae42005-03-26 16:04:27 +0000299* There are many fewer system dependencies and strange library-related
300 bugs. There is a small performance improvement, and a large
301 stability improvement.
njn8c927302005-03-12 16:45:01 +0000302
njn1aa5ae42005-03-26 16:04:27 +0000303* On the downside, Valgrind can no longer report misuses of the POSIX
304 PThreads API. It also means that Helgrind currently does not work.
305 We hope to fix these problems in a future release.
njn8c927302005-03-12 16:45:01 +0000306
njn1aa5ae42005-03-26 16:04:27 +0000307Note that running the native thread libraries does not mean Valgrind
308is able to provide genuine concurrent execution on SMPs. We still
309impose the restriction that only one thread is running at any given
310time.
njn8c927302005-03-12 16:45:01 +0000311
njn1aa5ae42005-03-26 16:04:27 +0000312There are many other significant changes too:
njn8c927302005-03-12 16:45:01 +0000313
njn1aa5ae42005-03-26 16:04:27 +0000314* Memcheck is (once again) the default tool.
njn8c927302005-03-12 16:45:01 +0000315
njn1aa5ae42005-03-26 16:04:27 +0000316* The default stack backtrace is now 12 call frames, rather than 4.
njn8c927302005-03-12 16:45:01 +0000317
njn1aa5ae42005-03-26 16:04:27 +0000318* Suppressions can have up to 25 call frame matches, rather than 4.
njn8c927302005-03-12 16:45:01 +0000319
njn1aa5ae42005-03-26 16:04:27 +0000320* Memcheck and Addrcheck use less memory. Under some circumstances,
321 they no longer allocate shadow memory if there are large regions of
322 memory with the same A/V states - such as an mmaped file.
njn8c927302005-03-12 16:45:01 +0000323
njn1aa5ae42005-03-26 16:04:27 +0000324* The memory-leak detector in Memcheck and Addrcheck has been
325 improved. It now reports more types of memory leak, including
326 leaked cycles. When reporting leaked memory, it can distinguish
327 between directly leaked memory (memory with no references), and
328 indirectly leaked memory (memory only referred to by other leaked
329 memory).
njn8c927302005-03-12 16:45:01 +0000330
njn1aa5ae42005-03-26 16:04:27 +0000331* Memcheck's confusion over the effect of mprotect() has been fixed:
332 previously mprotect could erroneously mark undefined data as
333 defined.
njn8c927302005-03-12 16:45:01 +0000334
njn1aa5ae42005-03-26 16:04:27 +0000335* Signal handling is much improved and should be very close to what
336 you get when running natively.
337
338 One result of this is that Valgrind observes changes to sigcontexts
339 passed to signal handlers. Such modifications will take effect when
340 the signal returns. You will need to run with --single-step=yes to
341 make this useful.
njn8c927302005-03-12 16:45:01 +0000342
343* Valgrind is built in Position Independent Executable (PIE) format if
njn1aa5ae42005-03-26 16:04:27 +0000344 your toolchain supports it. This allows it to take advantage of all
njn8c927302005-03-12 16:45:01 +0000345 the available address space on systems with 4Gbyte user address
346 spaces.
347
348* Valgrind can now run itself (requires PIE support).
349
njn1aa5ae42005-03-26 16:04:27 +0000350* Syscall arguments are now checked for validity. Previously all
351 memory used by syscalls was checked, but now the actual values
352 passed are also checked.
njn8c927302005-03-12 16:45:01 +0000353
njn1aa5ae42005-03-26 16:04:27 +0000354* Syscall wrappers are more robust against bad addresses being passed
355 to syscalls: they will fail with EFAULT rather than killing Valgrind
356 with SIGSEGV.
njn8c927302005-03-12 16:45:01 +0000357
njn1aa5ae42005-03-26 16:04:27 +0000358* Because clone() is directly supported, some non-pthread uses of it
359 will work. Partial sharing (where some resources are shared, and
360 some are not) is not supported.
361
362* open() and readlink() on /proc/self/exe are supported.
363
364BUGS FIXED:
365
36688520 pipe+fork+dup2 kills the main program
36788604 Valgrind Aborts when using $VALGRIND_OPTS and user progra...
36888614 valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt...
36988703 Stabs parser fails to handle ";"
37088886 ioctl wrappers for TIOCMBIS and TIOCMBIC
37189032 valgrind pthread_cond_timedwait fails
37289106 the 'impossible' happened
37389139 Missing sched_setaffinity & sched_getaffinity
37489198 valgrind lacks support for SIOCSPGRP and SIOCGPGRP
37589263 Missing ioctl translations for scsi-generic and CD playing
37689440 tests/deadlock.c line endings
37789481 `impossible' happened: EXEC FAILED
37889663 valgrind 2.2.0 crash on Redhat 7.2
37989792 Report pthread_mutex_lock() deadlocks instead of returnin...
38090111 statvfs64 gives invalid error/warning
38190128 crash+memory fault with stabs generated by gnat for a run...
38290778 VALGRIND_CHECK_DEFINED() not as documented in memcheck.h
38390834 cachegrind crashes at end of program without reporting re...
38491028 valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio...
38591162 valgrind crash while debugging drivel 1.2.1
38691199 Unimplemented function
38791325 Signal routing does not propagate the siginfo structure
38891599 Assertion `cv == ((void *)0)'
38991604 rw_lookup clears orig and sends the NULL value to rw_new
39091821 Small problems building valgrind with $top_builddir ne $t...
39191844 signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec...
39292264 UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared
39392331 per-target flags necessitate AM_PROG_CC_C_O
39492420 valgrind doesn't compile with linux 2.6.8.1/9
39592513 Valgrind 2.2.0 generates some warning messages
39692528 vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed.
39793096 unhandled ioctl 0x4B3A and 0x5601
39893117 Tool and core interface versions do not match
39993128 Can't run valgrind --tool=memcheck because of unimplement...
40093174 Valgrind can crash if passed bad args to certain syscalls
40193309 Stack frame in new thread is badly aligned
40293328 Wrong types used with sys_sigprocmask()
40393763 /usr/include/asm/msr.h is missing
40493776 valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser...
40593810 fcntl() argument checking a bit too strict
40694378 Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed.
40794429 valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3
40894645 Impossible happened: PINSRW mem
40994953 valgrind: the `impossible' happened: SIGSEGV
41095667 Valgrind does not work with any KDE app
41196243 Assertion 'res==0' failed
41296252 stage2 loader of valgrind fails to allocate memory
41396520 All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ...
41496660 ioctl CDROMREADTOCENTRY causes bogus warnings
41596747 After looping in a segfault handler, the impossible happens
41696923 Zero sized arrays crash valgrind trace back with SIGFPE
41796948 valgrind stops with assertion failure regarding mmap2
41896966 valgrind fails when application opens more than 16 sockets
41997398 valgrind: vg_libpthread.c:2667 Assertion failed
42097407 valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `...
42197427 "Warning: invalid file descriptor -1 in syscall close()" ...
42297785 missing backtrace
42397792 build in obj dir fails - autoconf / makefile cleanup
42497880 pthread_mutex_lock fails from shared library (special ker...
42597975 program aborts without ang VG messages
42698129 Failed when open and close file 230000 times using stdio
42798175 Crashes when using valgrind-2.2.0 with a program using al...
42898288 Massif broken
42998303 UNIMPLEMENTED FUNCTION pthread_condattr_setpshared
43098630 failed--compilation missing warnings.pm, fails to make he...
43198756 Cannot valgrind signal-heavy kdrive X server
43298966 valgrinding the JVM fails with a sanity check assertion
43399035 Valgrind crashes while profiling
43499142 loops with message "Signal 11 being dropped from thread 0...
43599195 threaded apps crash on thread start (using QThread::start...
43699348 Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off...
43799568 False negative due to mishandling of mprotect
43899738 valgrind memcheck crashes on program that uses sigitimer
43999923 0-sized allocations are reported as leaks
44099949 program seg faults after exit()
441100036 "newSuperblock's request for 1048576 bytes failed"
442100116 valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ...
443100486 memcheck reports "valgrind: the `impossible' happened: V...
444100833 second call to "mremap" fails with EINVAL
445101156 (vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1...
446101173 Assertion `recDepth >= 0 && recDepth < 500' failed
447101291 creating threads in a forked process fails
448101313 valgrind causes different behavior when resizing a window...
449101423 segfault for c++ array of floats
450101562 valgrind massif dies on SIGINT even with signal handler r...
451
njn8c927302005-03-12 16:45:01 +0000452
jseward34ed74f2004-08-30 18:04:42 +0000453Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0
454~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jseward7d180d92004-08-30 18:15:37 +00004552.2.0 brings nine months worth of improvements and bug fixes. We
456believe it to be a worthy successor to 2.0.0. There are literally
457hundreds of bug fixes and minor improvements. There are also some
458fairly major user-visible changes:
459
460* A complete overhaul of handling of system calls and signals, and
461 their interaction with threads. In general, the accuracy of the
462 system call, thread and signal simulations is much improved:
463
464 - Blocking system calls behave exactly as they do when running
465 natively (not on valgrind). That is, if a syscall blocks only the
466 calling thread when running natively, than it behaves the same on
467 valgrind. No more mysterious hangs because V doesn't know that some
468 syscall or other, should block only the calling thread.
469
470 - Interrupted syscalls should now give more faithful results.
471
472 - Signal contexts in signal handlers are supported.
473
474* Improvements to NPTL support to the extent that V now works
475 properly on NPTL-only setups.
476
477* Greater isolation between Valgrind and the program being run, so
478 the program is less likely to inadvertently kill Valgrind by
479 doing wild writes.
480
481* Massif: a new space profiling tool. Try it! It's cool, and it'll
482 tell you in detail where and when your C/C++ code is allocating heap.
483 Draws pretty .ps pictures of memory use against time. A potentially
484 powerful tool for making sense of your program's space use.
485
486* File descriptor leakage checks. When enabled, Valgrind will print out
487 a list of open file descriptors on exit.
488
489* Improved SSE2/SSE3 support.
490
jseward2eb002b2004-08-31 00:14:02 +0000491* Time-stamped output; use --time-stamp=yes
492
jseward34ed74f2004-08-30 18:04:42 +0000493
494
495Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.1.2
496~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4972.2.0 is not much different from 2.1.2, released seven weeks ago.
498A number of bugs have been fixed, most notably #85658, which gave
499problems for quite a few people. There have been many internal
500cleanups, but those are not user visible.
501
502The following bugs have been fixed since 2.1.2:
503
50485658 Assert in coregrind/vg_libpthread.c:2326 (open64) !=
505 (void*)0 failed
506 This bug was reported multiple times, and so the following
507 duplicates of it are also fixed: 87620, 85796, 85935, 86065,
508 86919, 86988, 87917, 88156
509
51080716 Semaphore mapping bug caused by unmap (sem_destroy)
511 (Was fixed prior to 2.1.2)
512
51386987 semctl and shmctl syscalls family is not handled properly
514
51586696 valgrind 2.1.2 + RH AS2.1 + librt
516
51786730 valgrind locks up at end of run with assertion failure
518 in __pthread_unwind
519
52086641 memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1
521 (also fixes 74298, a duplicate of this)
522
52385947 MMX/SSE unhandled instruction 'sfence'
524
52584978 Wrong error "Conditional jump or move depends on
526 uninitialised value" resulting from "sbbl %reg, %reg"
527
52886254 ssort() fails when signed int return type from comparison is
529 too small to handle result of unsigned int subtraction
530
53187089 memalign( 4, xxx) makes valgrind assert
532
jseward2eb002b2004-08-31 00:14:02 +000053386407 Add support for low-level parallel port driver ioctls.
jseward34ed74f2004-08-30 18:04:42 +0000534
53570587 Add timestamps to Valgrind output? (wishlist)
536
53784937 vg_libpthread.c:2505 (se_remap): Assertion `res == 0'
538 (fixed prior to 2.1.2)
539
54086317 cannot load libSDL-1.2.so.0 using valgrind
541
54286989 memcpy from mac_replace_strmem.c complains about
543 uninitialized pointers passed when length to copy is zero
544
54585811 gnu pascal symbol causes segmentation fault; ok in 2.0.0
546
54779138 writing to sbrk()'d memory causes segfault
548
54977369 sched deadlock while signal received during pthread_join
550 and the joined thread exited
551
55288115 In signal handler for SIGFPE, siginfo->si_addr is wrong
553 under Valgrind
554
55578765 Massif crashes on app exit if FP exceptions are enabled
556
557Additionally there are the following changes, which are not
558connected to any bug report numbers, AFAICS:
559
560* Fix scary bug causing mis-identification of SSE stores vs
561 loads and so causing memcheck to sometimes give nonsense results
562 on SSE code.
563
564* Add support for the POSIX message queue system calls.
565
566* Fix to allow 32-bit Valgrind to run on AMD64 boxes. Note: this does
567 NOT allow Valgrind to work with 64-bit executables - only with 32-bit
568 executables on an AMD64 box.
569
570* At configure time, only check whether linux/mii.h can be processed
571 so that we don't generate ugly warnings by trying to compile it.
572
jseward2eb002b2004-08-31 00:14:02 +0000573* Add support for POSIX clocks and timers.
574
jseward34ed74f2004-08-30 18:04:42 +0000575
576
jseward9cd978c2004-07-17 13:38:12 +0000577Developer (cvs head) release 2.1.2 (18 July 2004)
jsewardbd0a6e42004-07-17 12:19:43 +0000578~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5792.1.2 contains four months worth of bug fixes and refinements.
jseward9cd978c2004-07-17 13:38:12 +0000580Although officially a developer release, we believe it to be stable
581enough for widespread day-to-day use. 2.1.2 is pretty good, so try it
582first, although there is a chance it won't work. If so then try 2.0.0
583and tell us what went wrong." 2.1.2 fixes a lot of problems present
584in 2.0.0 and is generally a much better product.
jsewardbd0a6e42004-07-17 12:19:43 +0000585
jseward9cd978c2004-07-17 13:38:12 +0000586Relative to 2.1.1, a large number of minor problems with 2.1.1 have
587been fixed, and so if you use 2.1.1 you should try 2.1.2. Users of
588the last stable release, 2.0.0, might also want to try this release.
jsewardbd0a6e42004-07-17 12:19:43 +0000589
590The following bugs, and probably many more, have been fixed. These
591are listed at http://bugs.kde.org. Reporting a bug for valgrind in
592the http://bugs.kde.org is much more likely to get you a fix than
593mailing developers directly, so please continue to keep sending bugs
594there.
595
59676869 Crashes when running any tool under Fedora Core 2 test1
597 This fixes the problem with returning from a signal handler
jseward0400d4d2004-07-17 23:26:46 +0000598 when VDSOs are turned off in FC2.
jsewardbd0a6e42004-07-17 12:19:43 +0000599
jseward0400d4d2004-07-17 23:26:46 +000060069508 java 1.4.2 client fails with erroneous "stack size too small".
601 This fix makes more of the pthread stack attribute related
602 functions work properly. Java still doesn't work though.
jsewardbd0a6e42004-07-17 12:19:43 +0000603
60471906 malloc alignment should be 8, not 4
605 All memory returned by malloc/new etc is now at least
606 8-byte aligned.
607
jsewarda6017a42004-07-17 23:44:35 +000060881970 vg_alloc_ThreadState: no free slots available
609 (closed because the workaround is simple: increase
610 VG_N_THREADS, rebuild and try again.)
611
jsewardbd0a6e42004-07-17 12:19:43 +000061278514 Conditional jump or move depends on uninitialized value(s)
613 (a slight mishanding of FP code in memcheck)
614
jsewarda6017a42004-07-17 23:44:35 +000061577952 pThread Support (crash) (due to initialisation-ordering probs)
616 (also 85118)
617
jsewardbd0a6e42004-07-17 12:19:43 +000061880942 Addrcheck wasn't doing overlap checking as it should.
61978048 return NULL on malloc/new etc failure, instead of asserting
62073655 operator new() override in user .so files often doesn't get picked up
62183060 Valgrind does not handle native kernel AIO
62269872 Create proper coredumps after fatal signals
62382026 failure with new glibc versions: __libc_* functions are not exported
62470344 UNIMPLEMENTED FUNCTION: tcdrain
62581297 Cancellation of pthread_cond_wait does not require mutex
62682872 Using debug info from additional packages (wishlist)
62783025 Support for ioctls FIGETBSZ and FIBMAP
62883340 Support for ioctl HDIO_GET_IDENTITY
62979714 Support for the semtimedop system call.
63077022 Support for ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO
63182098 hp2ps ansification (wishlist)
63283573 Valgrind SIGSEGV on execve
63382999 show which cmdline option was erroneous (wishlist)
63483040 make valgrind VPATH and distcheck-clean (wishlist)
jsewarda6017a42004-07-17 23:44:35 +000063583998 Assertion `newfd > vgPlain_max_fd' failed (see below)
63682722 Unchecked mmap in as_pad leads to mysterious failures later
63778958 memcheck seg faults while running Mozilla
jsewarda2c08002004-07-18 09:24:57 +000063885416 Arguments with colon (e.g. --logsocket) ignored
jsewardbd0a6e42004-07-17 12:19:43 +0000639
640
641Additionally there are the following changes, which are not
642connected to any bug report numbers, AFAICS:
643
644* Rearranged address space layout relative to 2.1.1, so that
645 Valgrind/tools will run out of memory later than currently in many
646 circumstances. This is good news esp. for Calltree. It should
647 be possible for client programs to allocate over 800MB of
648 memory when using memcheck now.
649
jseward9cd978c2004-07-17 13:38:12 +0000650* Improved checking when laying out memory. Should hopefully avoid
651 the random segmentation faults that 2.1.1 sometimes caused.
652
jsewardbd0a6e42004-07-17 12:19:43 +0000653* Support for Fedora Core 2 and SuSE 9.1. Improvements to NPTL
654 support to the extent that V now works properly on NPTL-only setups.
655
656* Renamed the following options:
657 --logfile-fd --> --log-fd
658 --logfile --> --log-file
659 --logsocket --> --log-socket
660 to be consistent with each other and other options (esp. --input-fd).
661
662* Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and
663 improve the checking of other interface related ioctls.
664
jsewardbd0a6e42004-07-17 12:19:43 +0000665* Fix building with gcc-3.4.1.
666
667* Remove limit on number of semaphores supported.
668
jsewardbd0a6e42004-07-17 12:19:43 +0000669* Add support for syscalls: set_tid_address (258), acct (51).
670
671* Support instruction "repne movs" -- not official but seems to occur.
672
673* Implement an emulated soft limit for file descriptors in addition to
674 the current reserved area, which effectively acts as a hard limit. The
675 setrlimit system call now simply updates the emulated limits as best
676 as possible - the hard limit is not allowed to move at all and just
677 returns EPERM if you try and change it. This should stop reductions
678 in the soft limit causing assertions when valgrind tries to allocate
679 descriptors from the reserved area.
jsewarda6017a42004-07-17 23:44:35 +0000680 (This actually came from bug #83998).
jsewardbd0a6e42004-07-17 12:19:43 +0000681
nethercote76e8fd92004-07-21 10:37:31 +0000682* Major overhaul of Cachegrind implementation. First user-visible change
nethercote5e63bfb2004-07-17 12:49:53 +0000683 is that cachegrind.out files are now typically 90% smaller than they
nethercote76e8fd92004-07-21 10:37:31 +0000684 used to be; code annotation times are correspondingly much smaller.
685 Second user-visible change is that hit/miss counts for code that is
686 unloaded at run-time is no longer dumped into a single "discard" pile,
687 but accurately preserved.
jsewardbd0a6e42004-07-17 12:19:43 +0000688
689* Client requests for telling valgrind about memory pools.
690
691
692
jseward9cd978c2004-07-17 13:38:12 +0000693Developer (cvs head) release 2.1.1 (12 March 2004)
694~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jsewardbd0a6e42004-07-17 12:19:43 +00006952.1.1 contains some internal structural changes needed for V's
jsewarde3e77042004-03-12 21:07:05 +0000696long-term future. These don't affect end-users. Most notable
697user-visible changes are:
698
699* Greater isolation between Valgrind and the program being run, so
700 the program is less likely to inadvertently kill Valgrind by
701 doing wild writes.
702
703* Massif: a new space profiling tool. Try it! It's cool, and it'll
704 tell you in detail where and when your C/C++ code is allocating heap.
705 Draws pretty .ps pictures of memory use against time. A potentially
706 powerful tool for making sense of your program's space use.
707
708* Fixes for many bugs, including support for more SSE2/SSE3 instructions,
709 various signal/syscall things, and various problems with debug
710 info readers.
711
712* Support for glibc-2.3.3 based systems.
713
714We are now doing automatic overnight build-and-test runs on a variety
715of distros. As a result, we believe 2.1.1 builds and runs on:
716Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9.
717
718
719The following bugs, and probably many more, have been fixed. These
720are listed at http://bugs.kde.org. Reporting a bug for valgrind in
721the http://bugs.kde.org is much more likely to get you a fix than
722mailing developers directly, so please continue to keep sending bugs
723there.
724
72569616 glibc 2.3.2 w/NPTL is massively different than what valgrind expects
72669856 I don't know how to instrument MMXish stuff (Helgrind)
72773892 valgrind segfaults starting with Objective-C debug info
728 (fix for S-type stabs)
72973145 Valgrind complains too much about close(<reserved fd>)
73073902 Shadow memory allocation seems to fail on RedHat 8.0
73168633 VG_N_SEMAPHORES too low (V itself was leaking semaphores)
73275099 impossible to trace multiprocess programs
73376839 the `impossible' happened: disInstr: INT but not 0x80 !
73476762 vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed.
73576747 cannot include valgrind.h in c++ program
73676223 parsing B(3,10) gave NULL type => impossible happens
73775604 shmdt handling problem
73876416 Problems with gcc 3.4 snap 20040225
73975614 using -gstabs when building your programs the `impossible' happened
74075787 Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET,
74175294 gcc 3.4 snapshot's libstdc++ have unsupported instructions.
742 (REP RET)
74373326 vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed.
74472596 not recognizing __libc_malloc
74569489 Would like to attach ddd to running program
74672781 Cachegrind crashes with kde programs
74773055 Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes)
74873026 Descriptor leak check reports port numbers wrongly
74971705 README_MISSING_SYSCALL_OR_IOCTL out of date
75072643 Improve support for SSE/SSE2 instructions
75172484 valgrind leaves it's own signal mask in place when execing
75272650 Signal Handling always seems to restart system calls
75372006 The mmap system call turns all errors in ENOMEM
75471781 gdb attach is pretty useless
75571180 unhandled instruction bytes: 0xF 0xAE 0x85 0xE8
75669886 writes to zero page cause valgrind to assert on exit
75771791 crash when valgrinding gimp 1.3 (stabs reader problem)
75869783 unhandled syscall: 218
75969782 unhandled instruction bytes: 0x66 0xF 0x2B 0x80
76070385 valgrind fails if the soft file descriptor limit is less
761 than about 828
76269529 "rep; nop" should do a yield
76370827 programs with lots of shared libraries report "mmap failed"
764 for some of them when reading symbols
76571028 glibc's strnlen is optimised enough to confuse valgrind
766
767
768
769
jseward43230652003-12-14 00:14:54 +0000770Unstable (cvs head) release 2.1.0 (15 December 2003)
771~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
772For whatever it's worth, 2.1.0 actually seems pretty darn stable to me
773(Julian). It looks eminently usable, and given that it fixes some
774significant bugs, may well be worth using on a day-to-day basis.
7752.1.0 is known to build and pass regression tests on: SuSE 9, SuSE
7768.2, RedHat 8.
777
7782.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of
779handling of system calls and signals, and their interaction with
780threads. In general, the accuracy of the system call, thread and
781signal simulations is much improved. Specifically:
782
783- Blocking system calls behave exactly as they do when running
784 natively (not on valgrind). That is, if a syscall blocks only the
785 calling thread when running natively, than it behaves the same on
786 valgrind. No more mysterious hangs because V doesn't know that some
787 syscall or other, should block only the calling thread.
788
789- Interrupted syscalls should now give more faithful results.
790
791- Finally, signal contexts in signal handlers are supported. As a
792 result, konqueror on SuSE 9 no longer segfaults when notified of
793 file changes in directories it is watching.
794
795Other changes:
796
797- Robert Walsh's file descriptor leakage checks. When enabled,
798 Valgrind will print out a list of open file descriptors on
799 exit. Along with each file descriptor, Valgrind prints out a stack
800 backtrace of where the file was opened and any details relating to the
801 file descriptor such as the file name or socket details.
802 To use, give: --track-fds=yes
803
804- Implemented a few more SSE/SSE2 instructions.
805
806- Less crud on the stack when you do 'where' inside a GDB attach.
807
808- Fixed the following bugs:
809 68360: Valgrind does not compile against 2.6.0-testX kernels
810 68525: CVS head doesn't compile on C90 compilers
811 68566: pkgconfig support (wishlist)
812 68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr)
813 69140: valgrind not able to explicitly specify a path to a binary.
814 69432: helgrind asserts encountering a MutexErr when there are
815 EraserErr suppressions
816
jseward0b12daf2003-12-14 14:35:28 +0000817- Increase the max size of the translation cache from 200k average bbs
818 to 300k average bbs. Programs on the size of OOo (680m17) are
819 thrashing the cache at the smaller size, creating large numbers of
820 retranslations and wasting significant time as a result.
821
jseward43230652003-12-14 00:14:54 +0000822
823
824Stable release 2.0.0 (5 Nov 2003)
825~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
826
8272.0.0 improves SSE/SSE2 support, fixes some minor bugs, and
828improves support for SuSE 9 and the Red Hat "Severn" beta.
829
830- Further improvements to SSE/SSE2 support. The entire test suite of
831 the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1
832 20030307Z '-g -O -xW' now works. I think this gives pretty good
833 coverage of SSE/SSE2 floating point instructions, or at least the
834 subset emitted by Icc.
835
836- Also added support for the following instructions:
837 MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS
838 PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS).
839
840- CFI support for GDB version 6. Needed to enable newer GDBs
841 to figure out where they are when using --gdb-attach=yes.
842
843- Fix this:
844 mc_translate.c:1091 (memcheck_instrument): Assertion
845 `u_in->size == 4 || u_in->size == 16' failed.
846
847- Return an error rather than panicing when given a bad socketcall.
848
849- Fix checking of syscall rt_sigtimedwait().
850
851- Implement __NR_clock_gettime (syscall 265). Needed on Red Hat Severn.
852
853- Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n'
854 bytes long, when it could be shorter, which could cause false
855 positives.
856
857- Support use of select() for very large numbers of file descriptors.
858
859- Don't fail silently if the executable is statically linked, or is
860 setuid/setgid. Print an error message instead.
861
862- Support for old DWARF-1 format line number info.
863
864
865
866Snapshot 20031012 (12 October 2003)
867~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
868
869Three months worth of bug fixes, roughly. Most significant single
870change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
871
87220031012 builds on Red Hat Fedora ("Severn") but doesn't really work
873(curiosly, mozilla runs OK, but a modest "ls -l" bombs). I hope to
874get a working version out soon. It may or may not work ok on the
875forthcoming SuSE 9; I hear positive noises about it but haven't been
876able to verify this myself (not until I get hold of a copy of 9).
877
878A detailed list of changes, in no particular order:
879
880- Describe --gen-suppressions in the FAQ.
881
882- Syscall __NR_waitpid supported.
883
884- Minor MMX bug fix.
885
886- -v prints program's argv[] at startup.
887
888- More glibc-2.3 suppressions.
889
890- Suppressions for stack underrun bug(s) in the c++ support library
891 distributed with Intel Icc 7.0.
892
893- Fix problems reading /proc/self/maps.
894
895- Fix a couple of messages that should have been suppressed by -q,
896 but weren't.
897
898- Make Addrcheck understand "Overlap" suppressions.
899
900- At startup, check if program is statically linked and bail out if so.
901
902- Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
903
904- Memcheck/addrcheck: minor speed optimisations
905
906- Handle syscall __NR_brk more correctly than before.
907
908- Fixed incorrect allocate/free mismatch errors when using
909 operator new(unsigned, std::nothrow_t const&)
910 operator new[](unsigned, std::nothrow_t const&)
911
912- Support POSIX pthread spinlocks.
913
914- Fixups for clean compilation with gcc-3.3.1.
daywalker5d945de2003-09-26 00:32:53 +0000915
916- Implemented more opcodes:
917 - push %es
918 - push %ds
919 - pop %es
920 - pop %ds
921 - movntq
922 - sfence
923 - pshufw
924 - pavgb
925 - ucomiss
926 - enter
daywalkerb18d2532003-09-27 20:15:01 +0000927 - mov imm32, %esp
928 - all "in" and "out" opcodes
daywalker79aad842003-09-30 22:58:12 +0000929 - inc/dec %esp
jseward43230652003-12-14 00:14:54 +0000930 - A whole bunch of SSE/SSE2 instructions
daywalker5d945de2003-09-26 00:32:53 +0000931
jseward43230652003-12-14 00:14:54 +0000932- Memcheck: don't bomb on SSE/SSE2 code.
daywalker5d945de2003-09-26 00:32:53 +0000933
sewardj90238792003-05-05 00:23:42 +0000934
sewardj945f39f2003-07-25 21:11:40 +0000935Snapshot 20030725 (25 July 2003)
936~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
937
938Fixes some minor problems in 20030716.
939
940- Fix bugs in overlap checking for strcpy/memcpy etc.
941
942- Do overlap checking with Addrcheck as well as Memcheck.
943
944- Fix this:
945 Memcheck: the `impossible' happened:
946 get_error_name: unexpected type
947
948- Install headers needed to compile new skins.
949
sewardje3dd2e02003-07-27 08:04:48 +0000950- Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD
sewardj945f39f2003-07-25 21:11:40 +0000951 passed to non-traced children.
952
sewardjb9eda952003-07-26 21:39:05 +0000953- Fix file descriptor leak in valgrind-listener.
954
sewardje3dd2e02003-07-27 08:04:48 +0000955- Fix longstanding bug in which the allocation point of a
956 block resized by realloc was not correctly set. This may
957 have caused confusing error messages.
sewardj945f39f2003-07-25 21:11:40 +0000958
959
sewardj626fd892003-07-16 20:10:26 +0000960Snapshot 20030716 (16 July 2003)
sewardj9d916ed2003-07-14 23:38:40 +0000961~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
962
sewardj626fd892003-07-16 20:10:26 +000096320030716 is a snapshot of our current CVS head (development) branch.
sewardj9d916ed2003-07-14 23:38:40 +0000964This is the branch which will become valgrind-2.0. It contains
965significant enhancements over the 1.9.X branch.
966
967Despite this being a snapshot of the CVS head, it is believed to be
968quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so
969-- and therefore suitable for widespread use. Please let us know asap
970if it causes problems for you.
971
972Two reasons for releasing a snapshot now are:
973
974- It's been a while since 1.9.6, and this snapshot fixes
975 various problems that 1.9.6 has with threaded programs
976 on glibc-2.3.X based systems.
977
978- So as to make available improvements in the 2.0 line.
979
sewardj626fd892003-07-16 20:10:26 +0000980Major changes in 20030716, as compared to 1.9.6:
sewardj9d916ed2003-07-14 23:38:40 +0000981
982- More fixes to threading support on glibc-2.3.1 and 2.3.2-based
983 systems (SuSE 8.2, Red Hat 9). If you have had problems
984 with inconsistent/illogical behaviour of errno, h_errno or the DNS
sewardj626fd892003-07-16 20:10:26 +0000985 resolver functions in threaded programs, 20030716 should improve
sewardj9d916ed2003-07-14 23:38:40 +0000986 matters. This snapshot seems stable enough to run OpenOffice.org
987 1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big
988 threaded app if ever I saw one.
989
990- Automatic generation of suppression records; you no longer
991 need to write them by hand. Use --gen-suppressions=yes.
992
sewardj21511802003-07-22 17:47:42 +0000993- strcpy/memcpy/etc check their arguments for overlaps, when
994 running with the Memcheck or Addrcheck skins.
995
996- malloc_usable_size() is now supported.
997
998- new client requests:
999 - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS:
1000 useful with regression testing
1001 - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions
1002 on real CPU (use with caution!)
1003
sewardj9d916ed2003-07-14 23:38:40 +00001004- The GDB attach mechanism is more flexible. Allow the GDB to
1005 be run to be specified by --gdb-path=/path/to/gdb, and specify
1006 which file descriptor V will read its input from with
1007 --input-fd=<number>.
1008
sewardj21511802003-07-22 17:47:42 +00001009- Cachegrind gives more accurate results (wasn't tracking instructions in
1010 malloc() and friends previously, is now).
1011
sewardj9d916ed2003-07-14 23:38:40 +00001012- Complete support for the MMX instruction set.
1013
1014- Partial support for the SSE and SSE2 instruction sets. Work for this
1015 is ongoing. About half the SSE/SSE2 instructions are done, so
1016 some SSE based programs may work. Currently you need to specify
1017 --skin=addrcheck. Basically not suitable for real use yet.
1018
1019- Significant speedups (10%-20%) for standard memory checking.
1020
1021- Fix assertion failure in pthread_once().
1022
1023- Fix this:
1024 valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select):
1025 Assertion `ms_end >= ms_now' failed.
1026
1027- Implement pthread_mutexattr_setpshared.
1028
1029- Understand Pentium 4 branch hints. Also implemented a couple more
1030 obscure x86 instructions.
1031
1032- Lots of other minor bug fixes.
1033
sewardj626fd892003-07-16 20:10:26 +00001034- We have a decent regression test system, for the first time.
1035 This doesn't help you directly, but it does make it a lot easier
1036 for us to track the quality of the system, especially across
1037 multiple linux distributions.
1038
1039 You can run the regression tests with 'make regtest' after 'make
1040 install' completes. On SuSE 8.2 and Red Hat 9 I get this:
1041
1042 == 84 tests, 0 stderr failures, 0 stdout failures ==
1043
1044 On Red Hat 8, I get this:
1045
1046 == 84 tests, 2 stderr failures, 1 stdout failure ==
1047 corecheck/tests/res_search (stdout)
1048 memcheck/tests/sigaltstack (stderr)
1049
1050 sigaltstack is probably harmless. res_search doesn't work
1051 on R H 8 even running natively, so I'm not too worried.
1052
1053 On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures:
1054
1055 == 84 tests, 2 stderr failures, 1 stdout failure ==
1056 corecheck/tests/pth_atfork1 (stdout)
1057 corecheck/tests/pth_atfork1 (stderr)
1058 memcheck/tests/sigaltstack (stderr)
1059
1060 You need to run on a PII system, at least, since some tests
1061 contain P6-specific instructions, and the test machine needs
1062 access to the internet so that corecheck/tests/res_search
1063 (a test that the DNS resolver works) can function.
1064
sewardj9d916ed2003-07-14 23:38:40 +00001065As ever, thanks for the vast amount of feedback :) and bug reports :(
1066We may not answer all messages, but we do at least look at all of
1067them, and tend to fix the most frequently reported bugs.
1068
1069
1070
sewardj37918822003-05-05 01:05:09 +00001071Version 1.9.6 (7 May 2003 or thereabouts)
1072~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1073
1074Major changes in 1.9.6:
1075
1076- Improved threading support for glibc >= 2.3.2 (SuSE 8.2,
1077 RedHat 9, to name but two ...) It turned out that 1.9.5
1078 had problems with threading support on glibc >= 2.3.2,
1079 usually manifested by threaded programs deadlocking in system calls,
1080 or running unbelievably slowly. Hopefully these are fixed now. 1.9.6
1081 is the first valgrind which gives reasonable support for
1082 glibc-2.3.2. Also fixed a 2.3.2 problem with pthread_atfork().
1083
1084- Majorly expanded FAQ.txt. We've added workarounds for all
1085 common problems for which a workaround is known.
1086
1087Minor changes in 1.9.6:
1088
1089- Fix identification of the main thread's stack. Incorrect
1090 identification of it was causing some on-stack addresses to not get
1091 identified as such. This only affected the usefulness of some error
1092 messages; the correctness of the checks made is unchanged.
1093
1094- Support for kernels >= 2.5.68.
1095
1096- Dummy implementations of __libc_current_sigrtmin,
1097 __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully
1098 good enough to keep alive programs which previously died for lack of
1099 them.
1100
1101- Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request.
1102
sewardj3d47b792003-05-05 22:15:35 +00001103- Fix bug in the DWARF2 debug line info loader, when instructions
1104 following each other have source lines far from each other
1105 (e.g. with inlined functions).
1106
sewardj37918822003-05-05 01:05:09 +00001107- Debug info reading: read symbols from both "symtab" and "dynsym"
1108 sections, rather than merely from the one that comes last in the
1109 file.
1110
1111- New syscall support: prctl(), creat(), lookup_dcookie().
1112
1113- When checking calls to accept(), recvfrom(), getsocketopt(),
1114 don't complain if buffer values are NULL.
1115
1116- Try and avoid assertion failures in
1117 mash_LD_PRELOAD_and_LD_LIBRARY_PATH.
1118
1119- Minor bug fixes in cg_annotate.
1120
1121
1122
sewardj90238792003-05-05 00:23:42 +00001123Version 1.9.5 (7 April 2003)
1124~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1125
1126It occurs to me that it would be helpful for valgrind users to record
1127in the source distribution the changes in each release. So I now
1128attempt to mend my errant ways :-) Changes in this and future releases
1129will be documented in the NEWS file in the source distribution.
1130
1131Major changes in 1.9.5:
1132
1133- (Critical bug fix): Fix a bug in the FPU simulation. This was
1134 causing some floating point conditional tests not to work right.
1135 Several people reported this. If you had floating point code which
1136 didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5.
1137
1138- Partial support for Red Hat 9. RH9 uses the new Native Posix
1139 Threads Library (NPTL), instead of the older LinuxThreads.
1140 This potentially causes problems with V which will take some
1141 time to correct. In the meantime we have partially worked around
1142 this, and so 1.9.5 works on RH9. Threaded programs still work,
1143 but they may deadlock, because some system calls (accept, read,
1144 write, etc) which should be nonblocking, in fact do block. This
1145 is a known bug which we are looking into.
1146
1147 If you can, your best bet (unfortunately) is to avoid using
1148 1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution.
1149 If your glibc is 2.3.1 or earlier, you're almost certainly OK.
1150
1151Minor changes in 1.9.5:
1152
1153- Added some #errors to valgrind.h to ensure people don't include
1154 it accidentally in their sources. This is a change from 1.0.X
1155 which was never properly documented. The right thing to include
1156 is now memcheck.h. Some people reported problems and strange
1157 behaviour when (incorrectly) including valgrind.h in code with
1158 1.9.1 -- 1.9.4. This is no longer possible.
1159
1160- Add some __extension__ bits and pieces so that gcc configured
1161 for valgrind-checking compiles even with -Werror. If you
1162 don't understand this, ignore it. Of interest to gcc developers
1163 only.
1164
1165- Removed a pointless check which caused problems interworking
1166 with Clearcase. V would complain about shared objects whose
1167 names did not end ".so", and refuse to run. This is now fixed.
1168 In fact it was fixed in 1.9.4 but not documented.
1169
1170- Fixed a bug causing an assertion failure of "waiters == 1"
1171 somewhere in vg_scheduler.c, when running large threaded apps,
1172 notably MySQL.
1173
1174- Add support for the munlock system call (124).
1175
1176Some comments about future releases:
1177
11781.9.5 is, we hope, the most stable Valgrind so far. It pretty much
1179supersedes the 1.0.X branch. If you are a valgrind packager, please
1180consider making 1.9.5 available to your users. You can regard the
11811.0.X branch as obsolete: 1.9.5 is stable and vastly superior. There
1182are no plans at all for further releases of the 1.0.X branch.
1183
1184If you want a leading-edge valgrind, consider building the cvs head
1185(from SourceForge), or getting a snapshot of it. Current cool stuff
1186going in includes MMX support (done); SSE/SSE2 support (in progress),
1187a significant (10-20%) performance improvement (done), and the usual
1188large collection of minor changes. Hopefully we will be able to
1189improve our NPTL support, but no promises.
1190