blob: a87f7c3b410bd2c59ac8e3c67b9c7a3a5a7f095f [file] [log] [blame]
jseward43230652003-12-14 00:14:54 +00001
sewardj4bbe9d72005-11-16 18:39:25 +00002Release 3.1.0 (25 November 2005)
njnf63170c2005-11-12 19:09:51 +00003~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sewardj4bbe9d72005-11-16 18:39:25 +000043.1.0 is a feature release with a number of significant improvements:
5AMD64 support is much improved, PPC32 support is good enough to be
6usable, and the handling of memory management and address space is
7much more robust. In detail:
njnf63170c2005-11-12 19:09:51 +00008
sewardj4bbe9d72005-11-16 18:39:25 +00009- AMD64 support is much improved. The 64-bit vs. 32-bit issues in
10 3.0.X have been resolved, and it should "just work" now in all
11 cases. On AMD64 machines both 64-bit and 32-bit versions of
12 Valgrind are built. The right version will be invoked
13 automatically, even when using --trace-children and mixing execution
14 between 64-bit and 32-bit executables. Also, many more instructions
15 are supported.
njnf63170c2005-11-12 19:09:51 +000016
sewardj4bbe9d72005-11-16 18:39:25 +000017- PPC32 support is now good enough to be usable. It should work with
18 all tools, but please let us know if you have problems. Three
19 classes of CPUs are supported: integer only (no FP, no Altivec),
20 which covers embedded PPC uses, integer and FP but no Altivec
21 (G3-ish), and CPUs capable of Altivec too (G4, G5).
njnf63170c2005-11-12 19:09:51 +000022
sewardj4bbe9d72005-11-16 18:39:25 +000023- Valgrind's address space management has been overhauled. As a
24 result, Valgrind should be much more robust with programs that use
25 large amounts of memory. There should be many fewer "memory
26 exhausted" messages, and debug symbols should be read correctly on
27 large (eg. 300MB+) executables. On 32-bit machines the full address
28 space available to user programs (usually 3GB or 4GB) can be fully
29 utilised. On 64-bit machines up to 32GB of space is usable; when
30 using Memcheck that means your program can use up to about 14GB.
njnf63170c2005-11-12 19:09:51 +000031
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
sewardj4bbe9d72005-11-16 18:39:25 +000037 manager change, the way Valgrind is built has been changed. Each
38 tool is now built as a statically linked stand-alone executable,
39 rather than as a shared object that is dynamically linked with the
40 core. The "valgrind" program invokes the appropriate tool depending
41 on the --tool option. This slightly increases the amount of disk
42 space used by Valgrind, but it greatly simplified many things and
43 removed Valgrind's dependence on glibc.
njnf63170c2005-11-12 19:09:51 +000044
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
sewardj4bbe9d72005-11-16 18:39:25 +000052- It should build with gcc-2.96.
53
njn7cce5b82005-11-16 20:12:22 +000054- Valgrind can now run itself (see README_DEVELOPERS for how).
sewardj47058612005-11-16 19:13:13 +000055 This is not much use to you, but it means the developers can now
56 profile Valgrind using Cachegrind. As a result a couple of
57 performance bad cases have been fixed.
58
sewardj6a5a69c2005-11-17 00:51:36 +000059- The XML output format has changed slightly. See
60 docs/internals/xml-output.txt.
61
njn14c9add2005-11-18 17:36:01 +000062- Core dumping has been reinstated (it was disabled in 3.0.0 and 3.0.1).
63 If your program crashes while running under Valgrind, a core file with
64 the name "vgcore.<pid>" will be created (if your settings allow core
65 file creation). Note that the floating point information is not all
66 there. If Valgrind itself crashes, the OS will create a normal core
67 file.
68
njnf63170c2005-11-12 19:09:51 +000069The following are some user-visible changes that occurred in earlier
70versions that may not have been announced, or were announced but not
njn7cce5b82005-11-16 20:12:22 +000071widely noticed. So we're mentioning them now.
njnf63170c2005-11-12 19:09:51 +000072
73- The --tool flag is optional once again; if you omit it, Memcheck
74 is run by default.
75
76- The --num-callers flag now has a default value of 12. It was
77 previously 4.
78
njn7cce5b82005-11-16 20:12:22 +000079- The --xml=yes flag causes Valgrind's output to be produced in XML
80 format. This is designed to make it easy for other programs to
81 consume Valgrind's output. The format is described in the file
njnf63170c2005-11-12 19:09:51 +000082 docs/internals/xml-format.txt.
83
njn1f503992005-11-13 16:41:15 +000084- The --gen-suppressions flag supports an "all" value that causes every
85 suppression to be printed without asking.
86
njnee88d282005-11-20 17:19:28 +000087- The --log-file option no longer puts "pid" in the filename, eg. the
88 old name "foo.pid12345" is now "foo.12345".
89
njnf63170c2005-11-12 19:09:51 +000090BUGS FIXED:
91
sewardj4bbe9d72005-11-16 18:39:25 +000092109861 amd64 hangs at startup
93110301 ditto
94111554 valgrind crashes with Cannot allocate memory
95111809 Memcheck tool doesn't start java
96111901 cross-platform run of cachegrind fails on opteron
97113468 (vgPlain_mprotect_range): Assertion 'r != -1' failed.
98 92071 Reading debugging info uses too much memory
99109744 memcheck loses track of mmap from direct ld-linux.so.2
100110183 tail of page with _end
101 82301 FV memory layout too rigid
102 98278 Infinite recursion possible when allocating memory
103108994 Valgrind runs out of memory due to 133x overhead
104115643 valgrind cannot allocate memory
105105974 vg_hashtable.c static hash table
106109323 ppc32: dispatch.S uses Altivec insn, which doesn't work on POWER.
107109345 ptrace_setregs not yet implemented for ppc
108110831 Would like to be able to run against both 32 and 64 bit
109 binaries on AMD64
110110829 == 110831
111111781 compile of valgrind-3.0.0 fails on my linux (gcc 2.X prob)
112112670 Cachegrind: cg_main.c:486 (handleOneStatement ...
113112941 vex x86: 0xD9 0xF4 (fxtract)
114110201 == 112941
115113015 vex amd64->IR: 0xE3 0x14 0x48 0x83 (jrcxz)
116113126 Crash with binaries built with -gstabs+/-ggdb
117104065 == 113126
118115741 == 113126
119113403 Partial SSE3 support on x86
120113541 vex: Grp5(x86) (alt encoding inc/dec) case 1
121113642 valgrind crashes when trying to read debug information
122113810 vex x86->IR: 66 0F F6 (66 + PSADBW == SSE PSADBW)
123113796 read() and write() do not work if buffer is in shared memory
124113851 vex x86->IR: (pmaddwd): 0x66 0xF 0xF5 0xC7
125114366 vex amd64 cannnot handle __asm__( "fninit" )
126114412 vex amd64->IR: 0xF 0xAD 0xC2 0xD3 (128-bit shift, shrdq?)
127114455 vex amd64->IR: 0xF 0xAC 0xD0 0x1 (also shrdq)
128115590: amd64->IR: 0x67 0xE3 0x9 0xEB (address size override)
129115953 valgrind svn r5042 does not build with parallel make (-j3)
130116057 maximum instruction size - VG_MAX_INSTR_SZB too small?
131116483 shmat failes with invalid argument
132102202 valgrind crashes when realloc'ing until out of memory
133109487 == 102202
134110536 == 102202
135112687 == 102202
136111724 vex amd64->IR: 0x41 0xF 0xAB (more BT{,S,R,C} fun n games)
137111748 vex amd64->IR: 0xDD 0xE2 (fucom)
138111785 make fails if CC contains spaces
139111829 vex x86->IR: sbb AL, Ib
140111851 vex x86->IR: 0x9F 0x89 (lahf/sahf)
141112031 iopl on AMD64 and README_MISSING_SYSCALL_OR_IOCTL update
142112152 code generation for Xin_MFence on x86 with SSE0 subarch
143112167 == 112152
144112789 == 112152
145112199 naked ar tool is used in vex makefile
146112501 vex x86->IR: movq (0xF 0x7F 0xC1 0xF) (mmx MOVQ)
147113583 == 112501
148112538 memalign crash
149113190 Broken links in docs/html/
150113230 Valgrind sys_pipe on x86-64 wrongly thinks file descriptors
151 should be 64bit
152113996 vex amd64->IR: fucomp (0xDD 0xE9)
153114196 vex x86->IR: out %eax,(%dx) (0xEF 0xC9 0xC3 0x90)
154114289 Memcheck fails to intercept malloc when used in an uclibc environment
155114756 mbind syscall support
156114757 Valgrind dies with assertion: Assertion 'noLargerThan > 0' failed
157114563 stack tracking module not informed when valgrind switches threads
158114564 clone() and stacks
159114565 == 114564
160115496 glibc crashes trying to use sysinfo page
161116200 enable fsetxattr, fgetxattr, and fremovexattr for amd64
njnf63170c2005-11-12 19:09:51 +0000162
163
sewardjcd62fe72005-08-29 13:24:51 +0000164Release 3.0.1 (29 August 2005)
165~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1663.0.1 fixes a bunch of bugs reported in 3.0.0. There is no new
167functionality. Some of the fixed bugs are critical, so if you
sewardjfa233892005-08-30 12:35:36 +0000168use/distribute 3.0.0, an upgrade to 3.0.1 is recommended. The fixed
sewardjcd62fe72005-08-29 13:24:51 +0000169bugs are:
170
171(note: "n-i-bz" means "not in bugzilla" -- this bug does not have
172 a bugzilla entry).
173
174109313 (== 110505) x86 cmpxchg8b
175n-i-bz x86: track but ignore changes to %eflags.AC (alignment check)
176110102 dis_op2_E_G(amd64)
177110202 x86 sys_waitpid(#286)
178110203 clock_getres(,0)
179110208 execve fail wrong retval
180110274 SSE1 now mandatory for x86
181110388 amd64 0xDD 0xD1
182110464 amd64 0xDC 0x1D FCOMP
183110478 amd64 0xF 0xD PREFETCH
184n-i-bz XML <unique> printing wrong
185n-i-bz Dirk r4359 (amd64 syscalls from trunk)
186110591 amd64 and x86: rdtsc not implemented properly
187n-i-bz Nick r4384 (stub implementations of Addrcheck and Helgrind)
188110652 AMD64 valgrind crashes on cwtd instruction
189110653 AMD64 valgrind crashes on sarb $0x4,foo(%rip) instruction
190110656 PATH=/usr/bin::/bin valgrind foobar stats ./fooba
191110657 Small test fixes
192110671 vex x86->IR: unhandled instruction bytes: 0xF3 0xC3 (rep ret)
193n-i-bz Nick (Cachegrind should not assert when it encounters a client
194 request.)
195110685 amd64->IR: unhandled instruction bytes: 0xE1 0x56 (loope Jb)
196110830 configuring with --host fails to build 32 bit on 64 bit target
197110875 Assertion when execve fails
198n-i-bz Updates to Memcheck manual
199n-i-bz Fixed broken malloc_usable_size()
200110898 opteron instructions missing: btq btsq btrq bsfq
201110954 x86->IR: unhandled instruction bytes: 0xE2 0xF6 (loop Jb)
202n-i-bz Make suppressions work for "???" lines in stacktraces.
203111006 bogus warnings from linuxthreads
204111092 x86: dis_Grp2(Reg): unhandled case(x86)
205111231 sctp_getladdrs() and sctp_getpaddrs() returns uninitialized
206 memory
207111102 (comment #4) Fixed 64-bit unclean "silly arg" message
208n-i-bz vex x86->IR: unhandled instruction bytes: 0x14 0x0
209n-i-bz minor umount/fcntl wrapper fixes
210111090 Internal Error running Massif
211101204 noisy warning
212111513 Illegal opcode for SSE instruction (x86 movups)
213111555 VEX/Makefile: CC is set to gcc
sewardjfa233892005-08-30 12:35:36 +0000214n-i-bz Fix XML bugs in FAQ
sewardjcd62fe72005-08-29 13:24:51 +0000215
sewardjfa233892005-08-30 12:35:36 +0000216(3.0.1: 29 August 05,
217 vex/branches/VEX_3_0_BRANCH r1367,
218 valgrind/branches/VALGRIND_3_0_BRANCH r4574).
sewardj820c7722005-08-29 13:44:43 +0000219
220
sewardjcd62fe72005-08-29 13:24:51 +0000221
sewardjec39f332005-08-02 15:28:07 +0000222Release 3.0.0 (3 August 2005)
223~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sewardjf9929e62005-08-02 21:05:58 +00002243.0.0 is a major overhaul of Valgrind. The most significant user
225visible change is that Valgrind now supports architectures other than
226x86. The new architectures it supports are AMD64 and PPC32, and the
227infrastructure is present for other architectures to be added later.
njn4a9f6f42005-07-19 23:46:08 +0000228
sewardjf9929e62005-08-02 21:05:58 +0000229AMD64 support works well, but has some shortcomings:
njn4a9f6f42005-07-19 23:46:08 +0000230
njn7b1a6a42005-07-20 04:20:44 +0000231- It generally won't be as solid as the x86 version. For example,
232 support for more obscure instructions and system calls may be missing.
233 We will fix these as they arise.
njn4a9f6f42005-07-19 23:46:08 +0000234
sewardjc371bd02005-07-27 09:55:24 +0000235- Address space may be limited; see the point about
njn7b1a6a42005-07-20 04:20:44 +0000236 position-independent executables below.
njn4a9f6f42005-07-19 23:46:08 +0000237
njn7b1a6a42005-07-20 04:20:44 +0000238- If Valgrind is built on an AMD64 machine, it will only run 64-bit
239 executables. If you want to run 32-bit x86 executables under Valgrind
240 on an AMD64, you will need to build Valgrind on an x86 machine and
241 copy it to the AMD64 machine. And it probably won't work if you do
242 something tricky like exec'ing a 32-bit program from a 64-bit program
243 while using --trace-children=yes. We hope to improve this situation
244 in the future.
245
246The PPC32 support is very basic. It may not work reliably even for
sewardjc371bd02005-07-27 09:55:24 +0000247small programs, but it's a start. Many thanks to Paul Mackerras for
248his great work that enabled this support. We are working to make
249PPC32 usable as soon as possible.
njn4a9f6f42005-07-19 23:46:08 +0000250
251Other user-visible changes:
252
sewardjec39f332005-08-02 15:28:07 +0000253- Valgrind is no longer built by default as a position-independent
254 executable (PIE), as this caused too many problems.
njn4a9f6f42005-07-19 23:46:08 +0000255
256 Without PIE enabled, AMD64 programs will only be able to access 2GB of
257 address space. We will fix this eventually, but not for the moment.
258
259 Use --enable-pie at configure-time to turn this on.
260
261- Support for programs that use stack-switching has been improved. Use
262 the --max-stackframe flag for simple cases, and the
263 VALGRIND_STACK_REGISTER, VALGRIND_STACK_DEREGISTER and
264 VALGRIND_STACK_CHANGE client requests for trickier cases.
265
njn7b1a6a42005-07-20 04:20:44 +0000266- Support for programs that use self-modifying code has been improved,
267 in particular programs that put temporary code fragments on the stack.
268 This helps for C programs compiled with GCC that use nested functions,
njne7723322005-07-24 17:19:09 +0000269 and also Ada programs. This is controlled with the --smc-check
njn7b1a6a42005-07-20 04:20:44 +0000270 flag, although the default setting should work in most cases.
njn4a9f6f42005-07-19 23:46:08 +0000271
njn7b1a6a42005-07-20 04:20:44 +0000272- Output can now be printed in XML format. This should make it easier
sewardjc371bd02005-07-27 09:55:24 +0000273 for tools such as GUI front-ends and automated error-processing
274 schemes to use Valgrind output as input. The --xml flag controls this.
275 As part of this change, ELF directory information is read from executables,
276 so absolute source file paths are available if needed.
njn4a9f6f42005-07-19 23:46:08 +0000277
278- Programs that allocate many heap blocks may run faster, due to
279 improvements in certain data structures.
280
njn7b1a6a42005-07-20 04:20:44 +0000281- Addrcheck is currently not working. We hope to get it working again
282 soon. Helgrind is still not working, as was the case for the 2.4.0
283 release.
njn4a9f6f42005-07-19 23:46:08 +0000284
sewardjc371bd02005-07-27 09:55:24 +0000285- The JITter has been completely rewritten, and is now in a separate
286 library, called Vex. This enabled a lot of the user-visible changes,
287 such as new architecture support. The new JIT unfortunately translates
288 more slowly than the old one, so programs may take longer to start.
289 We believe the code quality is produces is about the same, so once
290 started, programs should run at about the same speed. Feedback about
291 this would be useful.
292
293 On the plus side, Vex and hence Memcheck tracks value flow properly
294 through floating point and vector registers, something the 2.X line
295 could not do. That means that Memcheck is much more likely to be
296 usably accurate on vectorised code.
297
sewardjec39f332005-08-02 15:28:07 +0000298- There is a subtle change to the way exiting of threaded programs
sewardjc371bd02005-07-27 09:55:24 +0000299 is handled. In 3.0, Valgrind's final diagnostic output (leak check,
300 etc) is not printed until the last thread exits. If the last thread
301 to exit was not the original thread which started the program, any
302 other process wait()-ing on this one to exit may conclude it has
303 finished before the diagnostic output is printed. This may not be
304 what you expect. 2.X had a different scheme which avoided this
305 problem, but caused deadlocks under obscure circumstances, so we
306 are trying something different for 3.0.
307
308- Small changes in control log file naming which make it easier to
sewardjec39f332005-08-02 15:28:07 +0000309 use valgrind for debugging MPI-based programs. The relevant
310 new flags are --log-file-exactly= and --log-file-qualifier=.
sewardjc371bd02005-07-27 09:55:24 +0000311
312- As part of adding AMD64 support, DWARF2 CFI-based stack unwinding
313 support was added. In principle this means Valgrind can produce
314 meaningful backtraces on x86 code compiled with -fomit-frame-pointer
tom81868f02005-07-27 10:33:08 +0000315 providing you also compile your code with -fasynchronous-unwind-tables.
sewardjc371bd02005-07-27 09:55:24 +0000316
sewardjec39f332005-08-02 15:28:07 +0000317- The documentation build system has been completely redone.
318 The documentation masters are now in XML format, and from that
319 HTML, PostScript and PDF documentation is generated. As a result
320 the manual is now available in book form. Note that the
321 documentation in the source tarballs is pre-built, so you don't need
322 any XML processing tools to build Valgrind from a tarball.
njn4a9f6f42005-07-19 23:46:08 +0000323
324Changes that are not user-visible:
325
sewardjc371bd02005-07-27 09:55:24 +0000326- The code has been massively overhauled in order to modularise it.
327 As a result we hope it is easier to navigate and understand.
njn4a9f6f42005-07-19 23:46:08 +0000328
329- Lots of code has been rewritten.
330
sewardjf9929e62005-08-02 21:05:58 +0000331BUGS FIXED:
njn4a9f6f42005-07-19 23:46:08 +0000332
sewardj79bd9b62005-08-03 16:40:10 +0000333110046 sz == 4 assertion failed
334109810 vex amd64->IR: unhandled instruction bytes: 0xA3 0x4C 0x70 0xD7
sewardjf9929e62005-08-02 21:05:58 +0000335109802 Add a plausible_stack_size command-line parameter ?
336109783 unhandled ioctl TIOCMGET (running hw detection tool discover)
337109780 unhandled ioctl BLKSSZGET (running fdisk -l /dev/hda)
338109718 vex x86->IR: unhandled instruction: ffreep
339109429 AMD64 unhandled syscall: 127 (sigpending)
340109401 false positive uninit in strchr from ld-linux.so.2
341109385 "stabs" parse failure
342109378 amd64: unhandled instruction REP NOP
343109376 amd64: unhandled instruction LOOP Jb
344109363 AMD64 unhandled instruction bytes
345109362 AMD64 unhandled syscall: 24 (sched_yield)
346109358 fork() won't work with valgrind-3.0 SVN
347109332 amd64 unhandled instruction: ADC Ev, Gv
348109314 Bogus memcheck report on amd64
349108883 Crash; vg_memory.c:905 (vgPlain_init_shadow_range):
350 Assertion `vgPlain_defined_init_shadow_page()' failed.
351108349 mincore syscall parameter checked incorrectly
352108059 build infrastructure: small update
353107524 epoll_ctl event parameter checked on EPOLL_CTL_DEL
354107123 Vex dies with unhandled instructions: 0xD9 0x31 0xF 0xAE
355106841 auxmap & openGL problems
356106713 SDL_Init causes valgrind to exit
357106352 setcontext and makecontext not handled correctly
358106293 addresses beyond initial client stack allocation
359 not checked in VALGRIND_DO_LEAK_CHECK
360106283 PIE client programs are loaded at address 0
361105831 Assertion `vgPlain_defined_init_shadow_page()' failed.
362105039 long run-times probably due to memory manager
363104797 valgrind needs to be aware of BLKGETSIZE64
364103594 unhandled instruction: FICOM
365103320 Valgrind 2.4.0 fails to compile with gcc 3.4.3 and -O0
366103168 potentially memory leak in coregrind/ume.c
367102039 bad permissions for mapped region at address 0xB7C73680
368101881 weird assertion problem
369101543 Support fadvise64 syscalls
37075247 x86_64/amd64 support (the biggest "bug" we have ever fixed)
njn4a9f6f42005-07-19 23:46:08 +0000371
sewardj9a919512005-08-03 17:01:51 +0000372(3.0RC1: 27 July 05, vex r1303, valgrind r4283).
sewardj1346e132005-08-03 20:42:06 +0000373(3.0.0: 3 August 05, vex r1313, valgrind r4316).
sewardjbfa2b992005-07-27 17:49:17 +0000374
375
376
njn8c927302005-03-12 16:45:01 +0000377Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
njn1aa5ae42005-03-26 16:04:27 +0000378~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3792.4.0 brings many significant changes and bug fixes. The most
380significant user-visible change is that we no longer supply our own
381pthread implementation. Instead, Valgrind is finally capable of
382running the native thread library, either LinuxThreads or NPTL.
njn8c927302005-03-12 16:45:01 +0000383
njn1aa5ae42005-03-26 16:04:27 +0000384This means our libpthread has gone, along with the bugs associated
385with it. Valgrind now supports the kernel's threading syscalls, and
386lets you use your standard system libpthread. As a result:
njn8c927302005-03-12 16:45:01 +0000387
njn1aa5ae42005-03-26 16:04:27 +0000388* There are many fewer system dependencies and strange library-related
389 bugs. There is a small performance improvement, and a large
390 stability improvement.
njn8c927302005-03-12 16:45:01 +0000391
njn1aa5ae42005-03-26 16:04:27 +0000392* On the downside, Valgrind can no longer report misuses of the POSIX
393 PThreads API. It also means that Helgrind currently does not work.
394 We hope to fix these problems in a future release.
njn8c927302005-03-12 16:45:01 +0000395
njn1aa5ae42005-03-26 16:04:27 +0000396Note that running the native thread libraries does not mean Valgrind
397is able to provide genuine concurrent execution on SMPs. We still
398impose the restriction that only one thread is running at any given
399time.
njn8c927302005-03-12 16:45:01 +0000400
njn1aa5ae42005-03-26 16:04:27 +0000401There are many other significant changes too:
njn8c927302005-03-12 16:45:01 +0000402
njn1aa5ae42005-03-26 16:04:27 +0000403* Memcheck is (once again) the default tool.
njn8c927302005-03-12 16:45:01 +0000404
njn1aa5ae42005-03-26 16:04:27 +0000405* The default stack backtrace is now 12 call frames, rather than 4.
njn8c927302005-03-12 16:45:01 +0000406
njn1aa5ae42005-03-26 16:04:27 +0000407* Suppressions can have up to 25 call frame matches, rather than 4.
njn8c927302005-03-12 16:45:01 +0000408
njn1aa5ae42005-03-26 16:04:27 +0000409* Memcheck and Addrcheck use less memory. Under some circumstances,
410 they no longer allocate shadow memory if there are large regions of
411 memory with the same A/V states - such as an mmaped file.
njn8c927302005-03-12 16:45:01 +0000412
njn1aa5ae42005-03-26 16:04:27 +0000413* The memory-leak detector in Memcheck and Addrcheck has been
414 improved. It now reports more types of memory leak, including
415 leaked cycles. When reporting leaked memory, it can distinguish
416 between directly leaked memory (memory with no references), and
417 indirectly leaked memory (memory only referred to by other leaked
418 memory).
njn8c927302005-03-12 16:45:01 +0000419
njn1aa5ae42005-03-26 16:04:27 +0000420* Memcheck's confusion over the effect of mprotect() has been fixed:
421 previously mprotect could erroneously mark undefined data as
422 defined.
njn8c927302005-03-12 16:45:01 +0000423
njn1aa5ae42005-03-26 16:04:27 +0000424* Signal handling is much improved and should be very close to what
425 you get when running natively.
426
427 One result of this is that Valgrind observes changes to sigcontexts
428 passed to signal handlers. Such modifications will take effect when
429 the signal returns. You will need to run with --single-step=yes to
430 make this useful.
njn8c927302005-03-12 16:45:01 +0000431
432* Valgrind is built in Position Independent Executable (PIE) format if
njn1aa5ae42005-03-26 16:04:27 +0000433 your toolchain supports it. This allows it to take advantage of all
njn8c927302005-03-12 16:45:01 +0000434 the available address space on systems with 4Gbyte user address
435 spaces.
436
437* Valgrind can now run itself (requires PIE support).
438
njn1aa5ae42005-03-26 16:04:27 +0000439* Syscall arguments are now checked for validity. Previously all
440 memory used by syscalls was checked, but now the actual values
441 passed are also checked.
njn8c927302005-03-12 16:45:01 +0000442
njn1aa5ae42005-03-26 16:04:27 +0000443* Syscall wrappers are more robust against bad addresses being passed
444 to syscalls: they will fail with EFAULT rather than killing Valgrind
445 with SIGSEGV.
njn8c927302005-03-12 16:45:01 +0000446
njn1aa5ae42005-03-26 16:04:27 +0000447* Because clone() is directly supported, some non-pthread uses of it
448 will work. Partial sharing (where some resources are shared, and
449 some are not) is not supported.
450
451* open() and readlink() on /proc/self/exe are supported.
452
453BUGS FIXED:
454
45588520 pipe+fork+dup2 kills the main program
45688604 Valgrind Aborts when using $VALGRIND_OPTS and user progra...
45788614 valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt...
45888703 Stabs parser fails to handle ";"
45988886 ioctl wrappers for TIOCMBIS and TIOCMBIC
46089032 valgrind pthread_cond_timedwait fails
46189106 the 'impossible' happened
46289139 Missing sched_setaffinity & sched_getaffinity
46389198 valgrind lacks support for SIOCSPGRP and SIOCGPGRP
46489263 Missing ioctl translations for scsi-generic and CD playing
46589440 tests/deadlock.c line endings
46689481 `impossible' happened: EXEC FAILED
46789663 valgrind 2.2.0 crash on Redhat 7.2
46889792 Report pthread_mutex_lock() deadlocks instead of returnin...
46990111 statvfs64 gives invalid error/warning
47090128 crash+memory fault with stabs generated by gnat for a run...
47190778 VALGRIND_CHECK_DEFINED() not as documented in memcheck.h
47290834 cachegrind crashes at end of program without reporting re...
47391028 valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio...
47491162 valgrind crash while debugging drivel 1.2.1
47591199 Unimplemented function
47691325 Signal routing does not propagate the siginfo structure
47791599 Assertion `cv == ((void *)0)'
47891604 rw_lookup clears orig and sends the NULL value to rw_new
47991821 Small problems building valgrind with $top_builddir ne $t...
48091844 signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec...
48192264 UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared
48292331 per-target flags necessitate AM_PROG_CC_C_O
48392420 valgrind doesn't compile with linux 2.6.8.1/9
48492513 Valgrind 2.2.0 generates some warning messages
48592528 vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed.
48693096 unhandled ioctl 0x4B3A and 0x5601
48793117 Tool and core interface versions do not match
48893128 Can't run valgrind --tool=memcheck because of unimplement...
48993174 Valgrind can crash if passed bad args to certain syscalls
49093309 Stack frame in new thread is badly aligned
49193328 Wrong types used with sys_sigprocmask()
49293763 /usr/include/asm/msr.h is missing
49393776 valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser...
49493810 fcntl() argument checking a bit too strict
49594378 Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed.
49694429 valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3
49794645 Impossible happened: PINSRW mem
49894953 valgrind: the `impossible' happened: SIGSEGV
49995667 Valgrind does not work with any KDE app
50096243 Assertion 'res==0' failed
50196252 stage2 loader of valgrind fails to allocate memory
50296520 All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ...
50396660 ioctl CDROMREADTOCENTRY causes bogus warnings
50496747 After looping in a segfault handler, the impossible happens
50596923 Zero sized arrays crash valgrind trace back with SIGFPE
50696948 valgrind stops with assertion failure regarding mmap2
50796966 valgrind fails when application opens more than 16 sockets
50897398 valgrind: vg_libpthread.c:2667 Assertion failed
50997407 valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `...
51097427 "Warning: invalid file descriptor -1 in syscall close()" ...
51197785 missing backtrace
51297792 build in obj dir fails - autoconf / makefile cleanup
51397880 pthread_mutex_lock fails from shared library (special ker...
51497975 program aborts without ang VG messages
51598129 Failed when open and close file 230000 times using stdio
51698175 Crashes when using valgrind-2.2.0 with a program using al...
51798288 Massif broken
51898303 UNIMPLEMENTED FUNCTION pthread_condattr_setpshared
51998630 failed--compilation missing warnings.pm, fails to make he...
52098756 Cannot valgrind signal-heavy kdrive X server
52198966 valgrinding the JVM fails with a sanity check assertion
52299035 Valgrind crashes while profiling
52399142 loops with message "Signal 11 being dropped from thread 0...
52499195 threaded apps crash on thread start (using QThread::start...
52599348 Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off...
52699568 False negative due to mishandling of mprotect
52799738 valgrind memcheck crashes on program that uses sigitimer
52899923 0-sized allocations are reported as leaks
52999949 program seg faults after exit()
530100036 "newSuperblock's request for 1048576 bytes failed"
531100116 valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ...
532100486 memcheck reports "valgrind: the `impossible' happened: V...
533100833 second call to "mremap" fails with EINVAL
534101156 (vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1...
535101173 Assertion `recDepth >= 0 && recDepth < 500' failed
536101291 creating threads in a forked process fails
537101313 valgrind causes different behavior when resizing a window...
538101423 segfault for c++ array of floats
539101562 valgrind massif dies on SIGINT even with signal handler r...
540
njn8c927302005-03-12 16:45:01 +0000541
jseward34ed74f2004-08-30 18:04:42 +0000542Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0
543~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jseward7d180d92004-08-30 18:15:37 +00005442.2.0 brings nine months worth of improvements and bug fixes. We
545believe it to be a worthy successor to 2.0.0. There are literally
546hundreds of bug fixes and minor improvements. There are also some
547fairly major user-visible changes:
548
549* A complete overhaul of handling of system calls and signals, and
550 their interaction with threads. In general, the accuracy of the
551 system call, thread and signal simulations is much improved:
552
553 - Blocking system calls behave exactly as they do when running
554 natively (not on valgrind). That is, if a syscall blocks only the
555 calling thread when running natively, than it behaves the same on
556 valgrind. No more mysterious hangs because V doesn't know that some
557 syscall or other, should block only the calling thread.
558
559 - Interrupted syscalls should now give more faithful results.
560
561 - Signal contexts in signal handlers are supported.
562
563* Improvements to NPTL support to the extent that V now works
564 properly on NPTL-only setups.
565
566* Greater isolation between Valgrind and the program being run, so
567 the program is less likely to inadvertently kill Valgrind by
568 doing wild writes.
569
570* Massif: a new space profiling tool. Try it! It's cool, and it'll
571 tell you in detail where and when your C/C++ code is allocating heap.
572 Draws pretty .ps pictures of memory use against time. A potentially
573 powerful tool for making sense of your program's space use.
574
575* File descriptor leakage checks. When enabled, Valgrind will print out
576 a list of open file descriptors on exit.
577
578* Improved SSE2/SSE3 support.
579
jseward2eb002b2004-08-31 00:14:02 +0000580* Time-stamped output; use --time-stamp=yes
581
jseward34ed74f2004-08-30 18:04:42 +0000582
583
584Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.1.2
585~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5862.2.0 is not much different from 2.1.2, released seven weeks ago.
587A number of bugs have been fixed, most notably #85658, which gave
588problems for quite a few people. There have been many internal
589cleanups, but those are not user visible.
590
591The following bugs have been fixed since 2.1.2:
592
59385658 Assert in coregrind/vg_libpthread.c:2326 (open64) !=
594 (void*)0 failed
595 This bug was reported multiple times, and so the following
596 duplicates of it are also fixed: 87620, 85796, 85935, 86065,
597 86919, 86988, 87917, 88156
598
59980716 Semaphore mapping bug caused by unmap (sem_destroy)
600 (Was fixed prior to 2.1.2)
601
60286987 semctl and shmctl syscalls family is not handled properly
603
60486696 valgrind 2.1.2 + RH AS2.1 + librt
605
60686730 valgrind locks up at end of run with assertion failure
607 in __pthread_unwind
608
60986641 memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1
610 (also fixes 74298, a duplicate of this)
611
61285947 MMX/SSE unhandled instruction 'sfence'
613
61484978 Wrong error "Conditional jump or move depends on
615 uninitialised value" resulting from "sbbl %reg, %reg"
616
61786254 ssort() fails when signed int return type from comparison is
618 too small to handle result of unsigned int subtraction
619
62087089 memalign( 4, xxx) makes valgrind assert
621
jseward2eb002b2004-08-31 00:14:02 +000062286407 Add support for low-level parallel port driver ioctls.
jseward34ed74f2004-08-30 18:04:42 +0000623
62470587 Add timestamps to Valgrind output? (wishlist)
625
62684937 vg_libpthread.c:2505 (se_remap): Assertion `res == 0'
627 (fixed prior to 2.1.2)
628
62986317 cannot load libSDL-1.2.so.0 using valgrind
630
63186989 memcpy from mac_replace_strmem.c complains about
632 uninitialized pointers passed when length to copy is zero
633
63485811 gnu pascal symbol causes segmentation fault; ok in 2.0.0
635
63679138 writing to sbrk()'d memory causes segfault
637
63877369 sched deadlock while signal received during pthread_join
639 and the joined thread exited
640
64188115 In signal handler for SIGFPE, siginfo->si_addr is wrong
642 under Valgrind
643
64478765 Massif crashes on app exit if FP exceptions are enabled
645
646Additionally there are the following changes, which are not
647connected to any bug report numbers, AFAICS:
648
649* Fix scary bug causing mis-identification of SSE stores vs
650 loads and so causing memcheck to sometimes give nonsense results
651 on SSE code.
652
653* Add support for the POSIX message queue system calls.
654
655* Fix to allow 32-bit Valgrind to run on AMD64 boxes. Note: this does
656 NOT allow Valgrind to work with 64-bit executables - only with 32-bit
657 executables on an AMD64 box.
658
659* At configure time, only check whether linux/mii.h can be processed
660 so that we don't generate ugly warnings by trying to compile it.
661
jseward2eb002b2004-08-31 00:14:02 +0000662* Add support for POSIX clocks and timers.
663
jseward34ed74f2004-08-30 18:04:42 +0000664
665
jseward9cd978c2004-07-17 13:38:12 +0000666Developer (cvs head) release 2.1.2 (18 July 2004)
jsewardbd0a6e42004-07-17 12:19:43 +0000667~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6682.1.2 contains four months worth of bug fixes and refinements.
jseward9cd978c2004-07-17 13:38:12 +0000669Although officially a developer release, we believe it to be stable
670enough for widespread day-to-day use. 2.1.2 is pretty good, so try it
671first, although there is a chance it won't work. If so then try 2.0.0
672and tell us what went wrong." 2.1.2 fixes a lot of problems present
673in 2.0.0 and is generally a much better product.
jsewardbd0a6e42004-07-17 12:19:43 +0000674
jseward9cd978c2004-07-17 13:38:12 +0000675Relative to 2.1.1, a large number of minor problems with 2.1.1 have
676been fixed, and so if you use 2.1.1 you should try 2.1.2. Users of
677the last stable release, 2.0.0, might also want to try this release.
jsewardbd0a6e42004-07-17 12:19:43 +0000678
679The following bugs, and probably many more, have been fixed. These
680are listed at http://bugs.kde.org. Reporting a bug for valgrind in
681the http://bugs.kde.org is much more likely to get you a fix than
682mailing developers directly, so please continue to keep sending bugs
683there.
684
68576869 Crashes when running any tool under Fedora Core 2 test1
686 This fixes the problem with returning from a signal handler
jseward0400d4d2004-07-17 23:26:46 +0000687 when VDSOs are turned off in FC2.
jsewardbd0a6e42004-07-17 12:19:43 +0000688
jseward0400d4d2004-07-17 23:26:46 +000068969508 java 1.4.2 client fails with erroneous "stack size too small".
690 This fix makes more of the pthread stack attribute related
691 functions work properly. Java still doesn't work though.
jsewardbd0a6e42004-07-17 12:19:43 +0000692
69371906 malloc alignment should be 8, not 4
694 All memory returned by malloc/new etc is now at least
695 8-byte aligned.
696
jsewarda6017a42004-07-17 23:44:35 +000069781970 vg_alloc_ThreadState: no free slots available
698 (closed because the workaround is simple: increase
699 VG_N_THREADS, rebuild and try again.)
700
jsewardbd0a6e42004-07-17 12:19:43 +000070178514 Conditional jump or move depends on uninitialized value(s)
702 (a slight mishanding of FP code in memcheck)
703
jsewarda6017a42004-07-17 23:44:35 +000070477952 pThread Support (crash) (due to initialisation-ordering probs)
705 (also 85118)
706
jsewardbd0a6e42004-07-17 12:19:43 +000070780942 Addrcheck wasn't doing overlap checking as it should.
70878048 return NULL on malloc/new etc failure, instead of asserting
70973655 operator new() override in user .so files often doesn't get picked up
71083060 Valgrind does not handle native kernel AIO
71169872 Create proper coredumps after fatal signals
71282026 failure with new glibc versions: __libc_* functions are not exported
71370344 UNIMPLEMENTED FUNCTION: tcdrain
71481297 Cancellation of pthread_cond_wait does not require mutex
71582872 Using debug info from additional packages (wishlist)
71683025 Support for ioctls FIGETBSZ and FIBMAP
71783340 Support for ioctl HDIO_GET_IDENTITY
71879714 Support for the semtimedop system call.
71977022 Support for ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO
72082098 hp2ps ansification (wishlist)
72183573 Valgrind SIGSEGV on execve
72282999 show which cmdline option was erroneous (wishlist)
72383040 make valgrind VPATH and distcheck-clean (wishlist)
jsewarda6017a42004-07-17 23:44:35 +000072483998 Assertion `newfd > vgPlain_max_fd' failed (see below)
72582722 Unchecked mmap in as_pad leads to mysterious failures later
72678958 memcheck seg faults while running Mozilla
jsewarda2c08002004-07-18 09:24:57 +000072785416 Arguments with colon (e.g. --logsocket) ignored
jsewardbd0a6e42004-07-17 12:19:43 +0000728
729
730Additionally there are the following changes, which are not
731connected to any bug report numbers, AFAICS:
732
733* Rearranged address space layout relative to 2.1.1, so that
734 Valgrind/tools will run out of memory later than currently in many
735 circumstances. This is good news esp. for Calltree. It should
736 be possible for client programs to allocate over 800MB of
737 memory when using memcheck now.
738
jseward9cd978c2004-07-17 13:38:12 +0000739* Improved checking when laying out memory. Should hopefully avoid
740 the random segmentation faults that 2.1.1 sometimes caused.
741
jsewardbd0a6e42004-07-17 12:19:43 +0000742* Support for Fedora Core 2 and SuSE 9.1. Improvements to NPTL
743 support to the extent that V now works properly on NPTL-only setups.
744
745* Renamed the following options:
746 --logfile-fd --> --log-fd
747 --logfile --> --log-file
748 --logsocket --> --log-socket
749 to be consistent with each other and other options (esp. --input-fd).
750
751* Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and
752 improve the checking of other interface related ioctls.
753
jsewardbd0a6e42004-07-17 12:19:43 +0000754* Fix building with gcc-3.4.1.
755
756* Remove limit on number of semaphores supported.
757
jsewardbd0a6e42004-07-17 12:19:43 +0000758* Add support for syscalls: set_tid_address (258), acct (51).
759
760* Support instruction "repne movs" -- not official but seems to occur.
761
762* Implement an emulated soft limit for file descriptors in addition to
763 the current reserved area, which effectively acts as a hard limit. The
764 setrlimit system call now simply updates the emulated limits as best
765 as possible - the hard limit is not allowed to move at all and just
766 returns EPERM if you try and change it. This should stop reductions
767 in the soft limit causing assertions when valgrind tries to allocate
768 descriptors from the reserved area.
jsewarda6017a42004-07-17 23:44:35 +0000769 (This actually came from bug #83998).
jsewardbd0a6e42004-07-17 12:19:43 +0000770
nethercote76e8fd92004-07-21 10:37:31 +0000771* Major overhaul of Cachegrind implementation. First user-visible change
nethercote5e63bfb2004-07-17 12:49:53 +0000772 is that cachegrind.out files are now typically 90% smaller than they
nethercote76e8fd92004-07-21 10:37:31 +0000773 used to be; code annotation times are correspondingly much smaller.
774 Second user-visible change is that hit/miss counts for code that is
775 unloaded at run-time is no longer dumped into a single "discard" pile,
776 but accurately preserved.
jsewardbd0a6e42004-07-17 12:19:43 +0000777
778* Client requests for telling valgrind about memory pools.
779
780
781
jseward9cd978c2004-07-17 13:38:12 +0000782Developer (cvs head) release 2.1.1 (12 March 2004)
783~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jsewardbd0a6e42004-07-17 12:19:43 +00007842.1.1 contains some internal structural changes needed for V's
jsewarde3e77042004-03-12 21:07:05 +0000785long-term future. These don't affect end-users. Most notable
786user-visible changes are:
787
788* Greater isolation between Valgrind and the program being run, so
789 the program is less likely to inadvertently kill Valgrind by
790 doing wild writes.
791
792* Massif: a new space profiling tool. Try it! It's cool, and it'll
793 tell you in detail where and when your C/C++ code is allocating heap.
794 Draws pretty .ps pictures of memory use against time. A potentially
795 powerful tool for making sense of your program's space use.
796
797* Fixes for many bugs, including support for more SSE2/SSE3 instructions,
798 various signal/syscall things, and various problems with debug
799 info readers.
800
801* Support for glibc-2.3.3 based systems.
802
803We are now doing automatic overnight build-and-test runs on a variety
804of distros. As a result, we believe 2.1.1 builds and runs on:
805Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9.
806
807
808The following bugs, and probably many more, have been fixed. These
809are listed at http://bugs.kde.org. Reporting a bug for valgrind in
810the http://bugs.kde.org is much more likely to get you a fix than
811mailing developers directly, so please continue to keep sending bugs
812there.
813
81469616 glibc 2.3.2 w/NPTL is massively different than what valgrind expects
81569856 I don't know how to instrument MMXish stuff (Helgrind)
81673892 valgrind segfaults starting with Objective-C debug info
817 (fix for S-type stabs)
81873145 Valgrind complains too much about close(<reserved fd>)
81973902 Shadow memory allocation seems to fail on RedHat 8.0
82068633 VG_N_SEMAPHORES too low (V itself was leaking semaphores)
82175099 impossible to trace multiprocess programs
82276839 the `impossible' happened: disInstr: INT but not 0x80 !
82376762 vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed.
82476747 cannot include valgrind.h in c++ program
82576223 parsing B(3,10) gave NULL type => impossible happens
82675604 shmdt handling problem
82776416 Problems with gcc 3.4 snap 20040225
82875614 using -gstabs when building your programs the `impossible' happened
82975787 Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET,
83075294 gcc 3.4 snapshot's libstdc++ have unsupported instructions.
831 (REP RET)
83273326 vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed.
83372596 not recognizing __libc_malloc
83469489 Would like to attach ddd to running program
83572781 Cachegrind crashes with kde programs
83673055 Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes)
83773026 Descriptor leak check reports port numbers wrongly
83871705 README_MISSING_SYSCALL_OR_IOCTL out of date
83972643 Improve support for SSE/SSE2 instructions
84072484 valgrind leaves it's own signal mask in place when execing
84172650 Signal Handling always seems to restart system calls
84272006 The mmap system call turns all errors in ENOMEM
84371781 gdb attach is pretty useless
84471180 unhandled instruction bytes: 0xF 0xAE 0x85 0xE8
84569886 writes to zero page cause valgrind to assert on exit
84671791 crash when valgrinding gimp 1.3 (stabs reader problem)
84769783 unhandled syscall: 218
84869782 unhandled instruction bytes: 0x66 0xF 0x2B 0x80
84970385 valgrind fails if the soft file descriptor limit is less
850 than about 828
85169529 "rep; nop" should do a yield
85270827 programs with lots of shared libraries report "mmap failed"
853 for some of them when reading symbols
85471028 glibc's strnlen is optimised enough to confuse valgrind
855
856
857
858
jseward43230652003-12-14 00:14:54 +0000859Unstable (cvs head) release 2.1.0 (15 December 2003)
860~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
861For whatever it's worth, 2.1.0 actually seems pretty darn stable to me
862(Julian). It looks eminently usable, and given that it fixes some
863significant bugs, may well be worth using on a day-to-day basis.
8642.1.0 is known to build and pass regression tests on: SuSE 9, SuSE
8658.2, RedHat 8.
866
8672.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of
868handling of system calls and signals, and their interaction with
869threads. In general, the accuracy of the system call, thread and
870signal simulations is much improved. Specifically:
871
872- Blocking system calls behave exactly as they do when running
873 natively (not on valgrind). That is, if a syscall blocks only the
874 calling thread when running natively, than it behaves the same on
875 valgrind. No more mysterious hangs because V doesn't know that some
876 syscall or other, should block only the calling thread.
877
878- Interrupted syscalls should now give more faithful results.
879
880- Finally, signal contexts in signal handlers are supported. As a
881 result, konqueror on SuSE 9 no longer segfaults when notified of
882 file changes in directories it is watching.
883
884Other changes:
885
886- Robert Walsh's file descriptor leakage checks. When enabled,
887 Valgrind will print out a list of open file descriptors on
888 exit. Along with each file descriptor, Valgrind prints out a stack
889 backtrace of where the file was opened and any details relating to the
890 file descriptor such as the file name or socket details.
891 To use, give: --track-fds=yes
892
893- Implemented a few more SSE/SSE2 instructions.
894
895- Less crud on the stack when you do 'where' inside a GDB attach.
896
897- Fixed the following bugs:
898 68360: Valgrind does not compile against 2.6.0-testX kernels
899 68525: CVS head doesn't compile on C90 compilers
900 68566: pkgconfig support (wishlist)
901 68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr)
902 69140: valgrind not able to explicitly specify a path to a binary.
903 69432: helgrind asserts encountering a MutexErr when there are
904 EraserErr suppressions
905
jseward0b12daf2003-12-14 14:35:28 +0000906- Increase the max size of the translation cache from 200k average bbs
907 to 300k average bbs. Programs on the size of OOo (680m17) are
908 thrashing the cache at the smaller size, creating large numbers of
909 retranslations and wasting significant time as a result.
910
jseward43230652003-12-14 00:14:54 +0000911
912
913Stable release 2.0.0 (5 Nov 2003)
914~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
915
9162.0.0 improves SSE/SSE2 support, fixes some minor bugs, and
917improves support for SuSE 9 and the Red Hat "Severn" beta.
918
919- Further improvements to SSE/SSE2 support. The entire test suite of
920 the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1
921 20030307Z '-g -O -xW' now works. I think this gives pretty good
922 coverage of SSE/SSE2 floating point instructions, or at least the
923 subset emitted by Icc.
924
925- Also added support for the following instructions:
926 MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS
927 PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS).
928
929- CFI support for GDB version 6. Needed to enable newer GDBs
930 to figure out where they are when using --gdb-attach=yes.
931
932- Fix this:
933 mc_translate.c:1091 (memcheck_instrument): Assertion
934 `u_in->size == 4 || u_in->size == 16' failed.
935
936- Return an error rather than panicing when given a bad socketcall.
937
938- Fix checking of syscall rt_sigtimedwait().
939
940- Implement __NR_clock_gettime (syscall 265). Needed on Red Hat Severn.
941
942- Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n'
943 bytes long, when it could be shorter, which could cause false
944 positives.
945
946- Support use of select() for very large numbers of file descriptors.
947
948- Don't fail silently if the executable is statically linked, or is
949 setuid/setgid. Print an error message instead.
950
951- Support for old DWARF-1 format line number info.
952
953
954
955Snapshot 20031012 (12 October 2003)
956~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
957
958Three months worth of bug fixes, roughly. Most significant single
959change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
960
96120031012 builds on Red Hat Fedora ("Severn") but doesn't really work
962(curiosly, mozilla runs OK, but a modest "ls -l" bombs). I hope to
963get a working version out soon. It may or may not work ok on the
964forthcoming SuSE 9; I hear positive noises about it but haven't been
965able to verify this myself (not until I get hold of a copy of 9).
966
967A detailed list of changes, in no particular order:
968
969- Describe --gen-suppressions in the FAQ.
970
971- Syscall __NR_waitpid supported.
972
973- Minor MMX bug fix.
974
975- -v prints program's argv[] at startup.
976
977- More glibc-2.3 suppressions.
978
979- Suppressions for stack underrun bug(s) in the c++ support library
980 distributed with Intel Icc 7.0.
981
982- Fix problems reading /proc/self/maps.
983
984- Fix a couple of messages that should have been suppressed by -q,
985 but weren't.
986
987- Make Addrcheck understand "Overlap" suppressions.
988
989- At startup, check if program is statically linked and bail out if so.
990
991- Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
992
993- Memcheck/addrcheck: minor speed optimisations
994
995- Handle syscall __NR_brk more correctly than before.
996
997- Fixed incorrect allocate/free mismatch errors when using
998 operator new(unsigned, std::nothrow_t const&)
999 operator new[](unsigned, std::nothrow_t const&)
1000
1001- Support POSIX pthread spinlocks.
1002
1003- Fixups for clean compilation with gcc-3.3.1.
daywalker5d945de2003-09-26 00:32:53 +00001004
1005- Implemented more opcodes:
1006 - push %es
1007 - push %ds
1008 - pop %es
1009 - pop %ds
1010 - movntq
1011 - sfence
1012 - pshufw
1013 - pavgb
1014 - ucomiss
1015 - enter
daywalkerb18d2532003-09-27 20:15:01 +00001016 - mov imm32, %esp
1017 - all "in" and "out" opcodes
daywalker79aad842003-09-30 22:58:12 +00001018 - inc/dec %esp
jseward43230652003-12-14 00:14:54 +00001019 - A whole bunch of SSE/SSE2 instructions
daywalker5d945de2003-09-26 00:32:53 +00001020
jseward43230652003-12-14 00:14:54 +00001021- Memcheck: don't bomb on SSE/SSE2 code.
daywalker5d945de2003-09-26 00:32:53 +00001022
sewardj90238792003-05-05 00:23:42 +00001023
sewardj945f39f2003-07-25 21:11:40 +00001024Snapshot 20030725 (25 July 2003)
1025~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1026
1027Fixes some minor problems in 20030716.
1028
1029- Fix bugs in overlap checking for strcpy/memcpy etc.
1030
1031- Do overlap checking with Addrcheck as well as Memcheck.
1032
1033- Fix this:
1034 Memcheck: the `impossible' happened:
1035 get_error_name: unexpected type
1036
1037- Install headers needed to compile new skins.
1038
sewardje3dd2e02003-07-27 08:04:48 +00001039- Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD
sewardj945f39f2003-07-25 21:11:40 +00001040 passed to non-traced children.
1041
sewardjb9eda952003-07-26 21:39:05 +00001042- Fix file descriptor leak in valgrind-listener.
1043
sewardje3dd2e02003-07-27 08:04:48 +00001044- Fix longstanding bug in which the allocation point of a
1045 block resized by realloc was not correctly set. This may
1046 have caused confusing error messages.
sewardj945f39f2003-07-25 21:11:40 +00001047
1048
sewardj626fd892003-07-16 20:10:26 +00001049Snapshot 20030716 (16 July 2003)
sewardj9d916ed2003-07-14 23:38:40 +00001050~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1051
sewardj626fd892003-07-16 20:10:26 +0000105220030716 is a snapshot of our current CVS head (development) branch.
sewardj9d916ed2003-07-14 23:38:40 +00001053This is the branch which will become valgrind-2.0. It contains
1054significant enhancements over the 1.9.X branch.
1055
1056Despite this being a snapshot of the CVS head, it is believed to be
1057quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so
1058-- and therefore suitable for widespread use. Please let us know asap
1059if it causes problems for you.
1060
1061Two reasons for releasing a snapshot now are:
1062
1063- It's been a while since 1.9.6, and this snapshot fixes
1064 various problems that 1.9.6 has with threaded programs
1065 on glibc-2.3.X based systems.
1066
1067- So as to make available improvements in the 2.0 line.
1068
sewardj626fd892003-07-16 20:10:26 +00001069Major changes in 20030716, as compared to 1.9.6:
sewardj9d916ed2003-07-14 23:38:40 +00001070
1071- More fixes to threading support on glibc-2.3.1 and 2.3.2-based
1072 systems (SuSE 8.2, Red Hat 9). If you have had problems
1073 with inconsistent/illogical behaviour of errno, h_errno or the DNS
sewardj626fd892003-07-16 20:10:26 +00001074 resolver functions in threaded programs, 20030716 should improve
sewardj9d916ed2003-07-14 23:38:40 +00001075 matters. This snapshot seems stable enough to run OpenOffice.org
1076 1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big
1077 threaded app if ever I saw one.
1078
1079- Automatic generation of suppression records; you no longer
1080 need to write them by hand. Use --gen-suppressions=yes.
1081
sewardj21511802003-07-22 17:47:42 +00001082- strcpy/memcpy/etc check their arguments for overlaps, when
1083 running with the Memcheck or Addrcheck skins.
1084
1085- malloc_usable_size() is now supported.
1086
1087- new client requests:
1088 - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS:
1089 useful with regression testing
1090 - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions
1091 on real CPU (use with caution!)
1092
sewardj9d916ed2003-07-14 23:38:40 +00001093- The GDB attach mechanism is more flexible. Allow the GDB to
1094 be run to be specified by --gdb-path=/path/to/gdb, and specify
1095 which file descriptor V will read its input from with
1096 --input-fd=<number>.
1097
sewardj21511802003-07-22 17:47:42 +00001098- Cachegrind gives more accurate results (wasn't tracking instructions in
1099 malloc() and friends previously, is now).
1100
sewardj9d916ed2003-07-14 23:38:40 +00001101- Complete support for the MMX instruction set.
1102
1103- Partial support for the SSE and SSE2 instruction sets. Work for this
1104 is ongoing. About half the SSE/SSE2 instructions are done, so
1105 some SSE based programs may work. Currently you need to specify
1106 --skin=addrcheck. Basically not suitable for real use yet.
1107
1108- Significant speedups (10%-20%) for standard memory checking.
1109
1110- Fix assertion failure in pthread_once().
1111
1112- Fix this:
1113 valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select):
1114 Assertion `ms_end >= ms_now' failed.
1115
1116- Implement pthread_mutexattr_setpshared.
1117
1118- Understand Pentium 4 branch hints. Also implemented a couple more
1119 obscure x86 instructions.
1120
1121- Lots of other minor bug fixes.
1122
sewardj626fd892003-07-16 20:10:26 +00001123- We have a decent regression test system, for the first time.
1124 This doesn't help you directly, but it does make it a lot easier
1125 for us to track the quality of the system, especially across
1126 multiple linux distributions.
1127
1128 You can run the regression tests with 'make regtest' after 'make
1129 install' completes. On SuSE 8.2 and Red Hat 9 I get this:
1130
1131 == 84 tests, 0 stderr failures, 0 stdout failures ==
1132
1133 On Red Hat 8, I get this:
1134
1135 == 84 tests, 2 stderr failures, 1 stdout failure ==
1136 corecheck/tests/res_search (stdout)
1137 memcheck/tests/sigaltstack (stderr)
1138
1139 sigaltstack is probably harmless. res_search doesn't work
1140 on R H 8 even running natively, so I'm not too worried.
1141
1142 On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures:
1143
1144 == 84 tests, 2 stderr failures, 1 stdout failure ==
1145 corecheck/tests/pth_atfork1 (stdout)
1146 corecheck/tests/pth_atfork1 (stderr)
1147 memcheck/tests/sigaltstack (stderr)
1148
1149 You need to run on a PII system, at least, since some tests
1150 contain P6-specific instructions, and the test machine needs
1151 access to the internet so that corecheck/tests/res_search
1152 (a test that the DNS resolver works) can function.
1153
sewardj9d916ed2003-07-14 23:38:40 +00001154As ever, thanks for the vast amount of feedback :) and bug reports :(
1155We may not answer all messages, but we do at least look at all of
1156them, and tend to fix the most frequently reported bugs.
1157
1158
1159
sewardj37918822003-05-05 01:05:09 +00001160Version 1.9.6 (7 May 2003 or thereabouts)
1161~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1162
1163Major changes in 1.9.6:
1164
1165- Improved threading support for glibc >= 2.3.2 (SuSE 8.2,
1166 RedHat 9, to name but two ...) It turned out that 1.9.5
1167 had problems with threading support on glibc >= 2.3.2,
1168 usually manifested by threaded programs deadlocking in system calls,
1169 or running unbelievably slowly. Hopefully these are fixed now. 1.9.6
1170 is the first valgrind which gives reasonable support for
1171 glibc-2.3.2. Also fixed a 2.3.2 problem with pthread_atfork().
1172
1173- Majorly expanded FAQ.txt. We've added workarounds for all
1174 common problems for which a workaround is known.
1175
1176Minor changes in 1.9.6:
1177
1178- Fix identification of the main thread's stack. Incorrect
1179 identification of it was causing some on-stack addresses to not get
1180 identified as such. This only affected the usefulness of some error
1181 messages; the correctness of the checks made is unchanged.
1182
1183- Support for kernels >= 2.5.68.
1184
1185- Dummy implementations of __libc_current_sigrtmin,
1186 __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully
1187 good enough to keep alive programs which previously died for lack of
1188 them.
1189
1190- Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request.
1191
sewardj3d47b792003-05-05 22:15:35 +00001192- Fix bug in the DWARF2 debug line info loader, when instructions
1193 following each other have source lines far from each other
1194 (e.g. with inlined functions).
1195
sewardj37918822003-05-05 01:05:09 +00001196- Debug info reading: read symbols from both "symtab" and "dynsym"
1197 sections, rather than merely from the one that comes last in the
1198 file.
1199
1200- New syscall support: prctl(), creat(), lookup_dcookie().
1201
1202- When checking calls to accept(), recvfrom(), getsocketopt(),
1203 don't complain if buffer values are NULL.
1204
1205- Try and avoid assertion failures in
1206 mash_LD_PRELOAD_and_LD_LIBRARY_PATH.
1207
1208- Minor bug fixes in cg_annotate.
1209
1210
1211
sewardj90238792003-05-05 00:23:42 +00001212Version 1.9.5 (7 April 2003)
1213~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1214
1215It occurs to me that it would be helpful for valgrind users to record
1216in the source distribution the changes in each release. So I now
1217attempt to mend my errant ways :-) Changes in this and future releases
1218will be documented in the NEWS file in the source distribution.
1219
1220Major changes in 1.9.5:
1221
1222- (Critical bug fix): Fix a bug in the FPU simulation. This was
1223 causing some floating point conditional tests not to work right.
1224 Several people reported this. If you had floating point code which
1225 didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5.
1226
1227- Partial support for Red Hat 9. RH9 uses the new Native Posix
1228 Threads Library (NPTL), instead of the older LinuxThreads.
1229 This potentially causes problems with V which will take some
1230 time to correct. In the meantime we have partially worked around
1231 this, and so 1.9.5 works on RH9. Threaded programs still work,
1232 but they may deadlock, because some system calls (accept, read,
1233 write, etc) which should be nonblocking, in fact do block. This
1234 is a known bug which we are looking into.
1235
1236 If you can, your best bet (unfortunately) is to avoid using
1237 1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution.
1238 If your glibc is 2.3.1 or earlier, you're almost certainly OK.
1239
1240Minor changes in 1.9.5:
1241
1242- Added some #errors to valgrind.h to ensure people don't include
1243 it accidentally in their sources. This is a change from 1.0.X
1244 which was never properly documented. The right thing to include
1245 is now memcheck.h. Some people reported problems and strange
1246 behaviour when (incorrectly) including valgrind.h in code with
1247 1.9.1 -- 1.9.4. This is no longer possible.
1248
1249- Add some __extension__ bits and pieces so that gcc configured
1250 for valgrind-checking compiles even with -Werror. If you
1251 don't understand this, ignore it. Of interest to gcc developers
1252 only.
1253
1254- Removed a pointless check which caused problems interworking
1255 with Clearcase. V would complain about shared objects whose
1256 names did not end ".so", and refuse to run. This is now fixed.
1257 In fact it was fixed in 1.9.4 but not documented.
1258
1259- Fixed a bug causing an assertion failure of "waiters == 1"
1260 somewhere in vg_scheduler.c, when running large threaded apps,
1261 notably MySQL.
1262
1263- Add support for the munlock system call (124).
1264
1265Some comments about future releases:
1266
12671.9.5 is, we hope, the most stable Valgrind so far. It pretty much
1268supersedes the 1.0.X branch. If you are a valgrind packager, please
1269consider making 1.9.5 available to your users. You can regard the
12701.0.X branch as obsolete: 1.9.5 is stable and vastly superior. There
1271are no plans at all for further releases of the 1.0.X branch.
1272
1273If you want a leading-edge valgrind, consider building the cvs head
1274(from SourceForge), or getting a snapshot of it. Current cool stuff
1275going in includes MMX support (done); SSE/SSE2 support (in progress),
1276a significant (10-20%) performance improvement (done), and the usual
1277large collection of minor changes. Hopefully we will be able to
1278improve our NPTL support, but no promises.
1279