blob: 40a086a6e0ba5de5ed1098c7e3ed284233942633 [file] [log] [blame]
njna3e96762006-03-27 12:23:44 +00001Release 3.2.0 (?? April 2006)
2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
33.2.0 is a feature release with a number of significant improvements:
4Performance (especially of Memcheck) is much improved, XXX...
5In detail:
6
7- Performance is much improved: programs typically run 1.20--1.40 times
njn390aa542006-03-28 00:05:16 +00008 faster under Memcheck (much more for some unusual programs) with an
9 average of about 1.30 for the programs we tested it on. The improvements
10 for Nulgrind are similar. We haven't measured Cachegrind and Massif, they
11 should be also be faster, but with smaller improvements. We are
12 interested to hear what speed-ups users get.
njna3e96762006-03-27 12:23:44 +000013
14- Memcheck uses much less memory. The amount of shadow memory used -- which
15 accounts for a large percentage of all of Memcheck's memory overhead --
16 has been reduced by a factor of more than 4 on most programs. This means
17 you should be able to run programs that use more memory than before
18 without hitting problems. This memory size reduction also contributes to
19 the speed improvements.
20
21- Addrcheck has been removed. It has not worked since version 2.4.0, and
22 with the speed and memory improvements to Memcheck it is no longer worth
23 having around. If you liked using Addrcheck because it didn't give
24 undefined value errors, you can use the new Memcheck option
25 --undef-value-errors=no to obtain this behaviour.
26
27- Valgrind now works on PPC64/Linux. [XXX: more details...]
28
29- XXX: others...
30
31BUGS FIXED:
32
33XXX
34
35
sewardj50654672006-03-16 11:33:14 +000036Release 3.1.1 (15 March 2006)
37~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
383.1.1 fixes a bunch of bugs reported in 3.1.0. There is no new
39functionality. The fixed bugs are:
40
41(note: "n-i-bz" means "not in bugzilla" -- this bug does not have
42 a bugzilla entry).
43
44n-i-bz ppc32: fsub 3,3,3 in dispatcher doesn't clear NaNs
45n-i-bz ppc32: __NR_{set,get}priority
46117332 x86: missing line info with icc 8.1
47117366 amd64: 0xDD 0x7C fnstsw
48118274 == 117366
49117367 amd64: 0xD9 0xF4 fxtract
50117369 amd64: __NR_getpriority (140)
51117419 ppc32: lfsu f5, -4(r11)
52117419 ppc32: fsqrt
53117936 more stabs problems (segfaults while reading debug info)
54119914 == 117936
55120345 == 117936
56118239 amd64: 0xF 0xAE 0x3F (clflush)
57118939 vm86old system call
58n-i-bz memcheck/tests/mempool reads freed memory
59n-i-bz AshleyP's custom-allocator assertion
60n-i-bz Dirk strict-aliasing stuff
61n-i-bz More space for debugger cmd line (Dan Thaler)
62n-i-bz Clarified leak checker output message
63n-i-bz AshleyP's --gen-suppressions output fix
64n-i-bz cg_annotate's --sort option broken
65n-i-bz OSet 64-bit fastcmp bug
66n-i-bz VG_(getgroups) fix (Shinichi Noda)
67n-i-bz ppc32: allocate from callee-saved FP/VMX regs
68n-i-bz misaligned path word-size bug in mc_main.c
69119297 Incorrect error message for sse code
70120410 x86: prefetchw (0xF 0xD 0x48 0x4)
71120728 TIOCSERGETLSR, TIOCGICOUNT, HDIO_GET_DMA ioctls
72120658 Build fixes for gcc 2.96
73120734 x86: Support for changing EIP in signal handler
74n-i-bz memcheck/tests/zeropage de-looping fix
75n-i-bz x86: fxtract doesn't work reliably
76121662 x86: lock xadd (0xF0 0xF 0xC0 0x2)
77121893 calloc does not always return zeroed memory
78121901 no support for syscall tkill
79n-i-bz Suppression update for Debian unstable
80122067 amd64: fcmovnu (0xDB 0xD9)
81n-i-bz ppc32: broken signal handling in cpu feature detection
82n-i-bz ppc32: rounding mode problems (improved, partial fix only)
83119482 ppc32: mtfsb1
84n-i-bz ppc32: mtocrf/mfocrf
85
86(3.1.1: 15 March 2006, vex r1597, valgrind r5771).
87
jseward43230652003-12-14 00:14:54 +000088
sewardj4bbe9d72005-11-16 18:39:25 +000089Release 3.1.0 (25 November 2005)
njnf63170c2005-11-12 19:09:51 +000090~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sewardj4bbe9d72005-11-16 18:39:25 +0000913.1.0 is a feature release with a number of significant improvements:
92AMD64 support is much improved, PPC32 support is good enough to be
93usable, and the handling of memory management and address space is
94much more robust. In detail:
njnf63170c2005-11-12 19:09:51 +000095
sewardj4bbe9d72005-11-16 18:39:25 +000096- AMD64 support is much improved. The 64-bit vs. 32-bit issues in
97 3.0.X have been resolved, and it should "just work" now in all
98 cases. On AMD64 machines both 64-bit and 32-bit versions of
99 Valgrind are built. The right version will be invoked
100 automatically, even when using --trace-children and mixing execution
101 between 64-bit and 32-bit executables. Also, many more instructions
102 are supported.
njnf63170c2005-11-12 19:09:51 +0000103
sewardj4bbe9d72005-11-16 18:39:25 +0000104- PPC32 support is now good enough to be usable. It should work with
105 all tools, but please let us know if you have problems. Three
106 classes of CPUs are supported: integer only (no FP, no Altivec),
107 which covers embedded PPC uses, integer and FP but no Altivec
108 (G3-ish), and CPUs capable of Altivec too (G4, G5).
njnf63170c2005-11-12 19:09:51 +0000109
sewardj4bbe9d72005-11-16 18:39:25 +0000110- Valgrind's address space management has been overhauled. As a
111 result, Valgrind should be much more robust with programs that use
112 large amounts of memory. There should be many fewer "memory
113 exhausted" messages, and debug symbols should be read correctly on
114 large (eg. 300MB+) executables. On 32-bit machines the full address
115 space available to user programs (usually 3GB or 4GB) can be fully
116 utilised. On 64-bit machines up to 32GB of space is usable; when
117 using Memcheck that means your program can use up to about 14GB.
njnf63170c2005-11-12 19:09:51 +0000118
119 A side effect of this change is that Valgrind is no longer protected
120 against wild writes by the client. This feature was nice but relied
121 on the x86 segment registers and so wasn't portable.
122
123- Most users should not notice, but as part of the address space
sewardj4bbe9d72005-11-16 18:39:25 +0000124 manager change, the way Valgrind is built has been changed. Each
125 tool is now built as a statically linked stand-alone executable,
126 rather than as a shared object that is dynamically linked with the
127 core. The "valgrind" program invokes the appropriate tool depending
128 on the --tool option. This slightly increases the amount of disk
129 space used by Valgrind, but it greatly simplified many things and
130 removed Valgrind's dependence on glibc.
njnf63170c2005-11-12 19:09:51 +0000131
njn336c89d2005-11-20 18:14:04 +0000132Please note that Addrcheck and Helgrind are still not working. Work
133is underway to reinstate them (or equivalents). We apologise for the
134inconvenience.
135
njnf63170c2005-11-12 19:09:51 +0000136Other user-visible changes:
137
138- The --weird-hacks option has been renamed --sim-hints.
139
140- The --time-stamp option no longer gives an absolute date and time.
141 It now prints the time elapsed since the program began.
142
sewardj4bbe9d72005-11-16 18:39:25 +0000143- It should build with gcc-2.96.
144
njn7cce5b82005-11-16 20:12:22 +0000145- Valgrind can now run itself (see README_DEVELOPERS for how).
sewardj47058612005-11-16 19:13:13 +0000146 This is not much use to you, but it means the developers can now
147 profile Valgrind using Cachegrind. As a result a couple of
148 performance bad cases have been fixed.
149
sewardj6a5a69c2005-11-17 00:51:36 +0000150- The XML output format has changed slightly. See
151 docs/internals/xml-output.txt.
152
njn14c9add2005-11-18 17:36:01 +0000153- Core dumping has been reinstated (it was disabled in 3.0.0 and 3.0.1).
154 If your program crashes while running under Valgrind, a core file with
155 the name "vgcore.<pid>" will be created (if your settings allow core
156 file creation). Note that the floating point information is not all
157 there. If Valgrind itself crashes, the OS will create a normal core
158 file.
159
njnf63170c2005-11-12 19:09:51 +0000160The following are some user-visible changes that occurred in earlier
161versions that may not have been announced, or were announced but not
njn7cce5b82005-11-16 20:12:22 +0000162widely noticed. So we're mentioning them now.
njnf63170c2005-11-12 19:09:51 +0000163
164- The --tool flag is optional once again; if you omit it, Memcheck
165 is run by default.
166
167- The --num-callers flag now has a default value of 12. It was
168 previously 4.
169
njn7cce5b82005-11-16 20:12:22 +0000170- The --xml=yes flag causes Valgrind's output to be produced in XML
171 format. This is designed to make it easy for other programs to
172 consume Valgrind's output. The format is described in the file
njnf63170c2005-11-12 19:09:51 +0000173 docs/internals/xml-format.txt.
174
njn1f503992005-11-13 16:41:15 +0000175- The --gen-suppressions flag supports an "all" value that causes every
176 suppression to be printed without asking.
177
njnee88d282005-11-20 17:19:28 +0000178- The --log-file option no longer puts "pid" in the filename, eg. the
179 old name "foo.pid12345" is now "foo.12345".
180
njnc66077e2005-11-20 18:02:15 +0000181- There are several graphical front-ends for Valgrind, such as Valkyrie,
182 Alleyoop and Valgui. See http://www.valgrind.org/downloads/guis.html
183 for a list.
184
njnf63170c2005-11-12 19:09:51 +0000185BUGS FIXED:
186
sewardj4bbe9d72005-11-16 18:39:25 +0000187109861 amd64 hangs at startup
188110301 ditto
189111554 valgrind crashes with Cannot allocate memory
190111809 Memcheck tool doesn't start java
191111901 cross-platform run of cachegrind fails on opteron
192113468 (vgPlain_mprotect_range): Assertion 'r != -1' failed.
193 92071 Reading debugging info uses too much memory
194109744 memcheck loses track of mmap from direct ld-linux.so.2
195110183 tail of page with _end
196 82301 FV memory layout too rigid
197 98278 Infinite recursion possible when allocating memory
198108994 Valgrind runs out of memory due to 133x overhead
199115643 valgrind cannot allocate memory
200105974 vg_hashtable.c static hash table
201109323 ppc32: dispatch.S uses Altivec insn, which doesn't work on POWER.
202109345 ptrace_setregs not yet implemented for ppc
203110831 Would like to be able to run against both 32 and 64 bit
204 binaries on AMD64
205110829 == 110831
206111781 compile of valgrind-3.0.0 fails on my linux (gcc 2.X prob)
207112670 Cachegrind: cg_main.c:486 (handleOneStatement ...
208112941 vex x86: 0xD9 0xF4 (fxtract)
209110201 == 112941
210113015 vex amd64->IR: 0xE3 0x14 0x48 0x83 (jrcxz)
211113126 Crash with binaries built with -gstabs+/-ggdb
212104065 == 113126
213115741 == 113126
214113403 Partial SSE3 support on x86
215113541 vex: Grp5(x86) (alt encoding inc/dec) case 1
216113642 valgrind crashes when trying to read debug information
217113810 vex x86->IR: 66 0F F6 (66 + PSADBW == SSE PSADBW)
218113796 read() and write() do not work if buffer is in shared memory
219113851 vex x86->IR: (pmaddwd): 0x66 0xF 0xF5 0xC7
220114366 vex amd64 cannnot handle __asm__( "fninit" )
221114412 vex amd64->IR: 0xF 0xAD 0xC2 0xD3 (128-bit shift, shrdq?)
222114455 vex amd64->IR: 0xF 0xAC 0xD0 0x1 (also shrdq)
223115590: amd64->IR: 0x67 0xE3 0x9 0xEB (address size override)
224115953 valgrind svn r5042 does not build with parallel make (-j3)
225116057 maximum instruction size - VG_MAX_INSTR_SZB too small?
226116483 shmat failes with invalid argument
227102202 valgrind crashes when realloc'ing until out of memory
228109487 == 102202
229110536 == 102202
230112687 == 102202
231111724 vex amd64->IR: 0x41 0xF 0xAB (more BT{,S,R,C} fun n games)
232111748 vex amd64->IR: 0xDD 0xE2 (fucom)
233111785 make fails if CC contains spaces
234111829 vex x86->IR: sbb AL, Ib
235111851 vex x86->IR: 0x9F 0x89 (lahf/sahf)
236112031 iopl on AMD64 and README_MISSING_SYSCALL_OR_IOCTL update
237112152 code generation for Xin_MFence on x86 with SSE0 subarch
238112167 == 112152
239112789 == 112152
240112199 naked ar tool is used in vex makefile
241112501 vex x86->IR: movq (0xF 0x7F 0xC1 0xF) (mmx MOVQ)
242113583 == 112501
243112538 memalign crash
244113190 Broken links in docs/html/
245113230 Valgrind sys_pipe on x86-64 wrongly thinks file descriptors
246 should be 64bit
247113996 vex amd64->IR: fucomp (0xDD 0xE9)
248114196 vex x86->IR: out %eax,(%dx) (0xEF 0xC9 0xC3 0x90)
249114289 Memcheck fails to intercept malloc when used in an uclibc environment
250114756 mbind syscall support
251114757 Valgrind dies with assertion: Assertion 'noLargerThan > 0' failed
252114563 stack tracking module not informed when valgrind switches threads
253114564 clone() and stacks
254114565 == 114564
255115496 glibc crashes trying to use sysinfo page
256116200 enable fsetxattr, fgetxattr, and fremovexattr for amd64
njnf63170c2005-11-12 19:09:51 +0000257
sewardjae17e7e2005-11-20 19:45:30 +0000258(3.1.0RC1: 20 November 2005, vex r1466, valgrind r5224).
sewardjfa462022005-11-26 13:38:58 +0000259(3.1.0: 26 November 2005, vex r1471, valgrind r5235).
sewardjae17e7e2005-11-20 19:45:30 +0000260
njnf63170c2005-11-12 19:09:51 +0000261
sewardjcd62fe72005-08-29 13:24:51 +0000262Release 3.0.1 (29 August 2005)
263~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2643.0.1 fixes a bunch of bugs reported in 3.0.0. There is no new
265functionality. Some of the fixed bugs are critical, so if you
sewardjfa233892005-08-30 12:35:36 +0000266use/distribute 3.0.0, an upgrade to 3.0.1 is recommended. The fixed
sewardjcd62fe72005-08-29 13:24:51 +0000267bugs are:
268
269(note: "n-i-bz" means "not in bugzilla" -- this bug does not have
270 a bugzilla entry).
271
272109313 (== 110505) x86 cmpxchg8b
273n-i-bz x86: track but ignore changes to %eflags.AC (alignment check)
274110102 dis_op2_E_G(amd64)
275110202 x86 sys_waitpid(#286)
276110203 clock_getres(,0)
277110208 execve fail wrong retval
278110274 SSE1 now mandatory for x86
279110388 amd64 0xDD 0xD1
280110464 amd64 0xDC 0x1D FCOMP
281110478 amd64 0xF 0xD PREFETCH
282n-i-bz XML <unique> printing wrong
283n-i-bz Dirk r4359 (amd64 syscalls from trunk)
284110591 amd64 and x86: rdtsc not implemented properly
285n-i-bz Nick r4384 (stub implementations of Addrcheck and Helgrind)
286110652 AMD64 valgrind crashes on cwtd instruction
287110653 AMD64 valgrind crashes on sarb $0x4,foo(%rip) instruction
288110656 PATH=/usr/bin::/bin valgrind foobar stats ./fooba
289110657 Small test fixes
290110671 vex x86->IR: unhandled instruction bytes: 0xF3 0xC3 (rep ret)
291n-i-bz Nick (Cachegrind should not assert when it encounters a client
292 request.)
293110685 amd64->IR: unhandled instruction bytes: 0xE1 0x56 (loope Jb)
294110830 configuring with --host fails to build 32 bit on 64 bit target
295110875 Assertion when execve fails
296n-i-bz Updates to Memcheck manual
297n-i-bz Fixed broken malloc_usable_size()
298110898 opteron instructions missing: btq btsq btrq bsfq
299110954 x86->IR: unhandled instruction bytes: 0xE2 0xF6 (loop Jb)
300n-i-bz Make suppressions work for "???" lines in stacktraces.
301111006 bogus warnings from linuxthreads
302111092 x86: dis_Grp2(Reg): unhandled case(x86)
303111231 sctp_getladdrs() and sctp_getpaddrs() returns uninitialized
304 memory
305111102 (comment #4) Fixed 64-bit unclean "silly arg" message
306n-i-bz vex x86->IR: unhandled instruction bytes: 0x14 0x0
307n-i-bz minor umount/fcntl wrapper fixes
308111090 Internal Error running Massif
309101204 noisy warning
310111513 Illegal opcode for SSE instruction (x86 movups)
311111555 VEX/Makefile: CC is set to gcc
sewardjfa233892005-08-30 12:35:36 +0000312n-i-bz Fix XML bugs in FAQ
sewardjcd62fe72005-08-29 13:24:51 +0000313
sewardjfa233892005-08-30 12:35:36 +0000314(3.0.1: 29 August 05,
315 vex/branches/VEX_3_0_BRANCH r1367,
316 valgrind/branches/VALGRIND_3_0_BRANCH r4574).
sewardj820c7722005-08-29 13:44:43 +0000317
318
sewardjcd62fe72005-08-29 13:24:51 +0000319
sewardjec39f332005-08-02 15:28:07 +0000320Release 3.0.0 (3 August 2005)
321~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sewardjf9929e62005-08-02 21:05:58 +00003223.0.0 is a major overhaul of Valgrind. The most significant user
323visible change is that Valgrind now supports architectures other than
324x86. The new architectures it supports are AMD64 and PPC32, and the
325infrastructure is present for other architectures to be added later.
njn4a9f6f42005-07-19 23:46:08 +0000326
sewardjf9929e62005-08-02 21:05:58 +0000327AMD64 support works well, but has some shortcomings:
njn4a9f6f42005-07-19 23:46:08 +0000328
njn7b1a6a42005-07-20 04:20:44 +0000329- It generally won't be as solid as the x86 version. For example,
330 support for more obscure instructions and system calls may be missing.
331 We will fix these as they arise.
njn4a9f6f42005-07-19 23:46:08 +0000332
sewardjc371bd02005-07-27 09:55:24 +0000333- Address space may be limited; see the point about
njn7b1a6a42005-07-20 04:20:44 +0000334 position-independent executables below.
njn4a9f6f42005-07-19 23:46:08 +0000335
njn7b1a6a42005-07-20 04:20:44 +0000336- If Valgrind is built on an AMD64 machine, it will only run 64-bit
337 executables. If you want to run 32-bit x86 executables under Valgrind
338 on an AMD64, you will need to build Valgrind on an x86 machine and
339 copy it to the AMD64 machine. And it probably won't work if you do
340 something tricky like exec'ing a 32-bit program from a 64-bit program
341 while using --trace-children=yes. We hope to improve this situation
342 in the future.
343
344The PPC32 support is very basic. It may not work reliably even for
sewardjc371bd02005-07-27 09:55:24 +0000345small programs, but it's a start. Many thanks to Paul Mackerras for
346his great work that enabled this support. We are working to make
347PPC32 usable as soon as possible.
njn4a9f6f42005-07-19 23:46:08 +0000348
349Other user-visible changes:
350
sewardjec39f332005-08-02 15:28:07 +0000351- Valgrind is no longer built by default as a position-independent
352 executable (PIE), as this caused too many problems.
njn4a9f6f42005-07-19 23:46:08 +0000353
354 Without PIE enabled, AMD64 programs will only be able to access 2GB of
355 address space. We will fix this eventually, but not for the moment.
356
357 Use --enable-pie at configure-time to turn this on.
358
359- Support for programs that use stack-switching has been improved. Use
360 the --max-stackframe flag for simple cases, and the
361 VALGRIND_STACK_REGISTER, VALGRIND_STACK_DEREGISTER and
362 VALGRIND_STACK_CHANGE client requests for trickier cases.
363
njn7b1a6a42005-07-20 04:20:44 +0000364- Support for programs that use self-modifying code has been improved,
365 in particular programs that put temporary code fragments on the stack.
366 This helps for C programs compiled with GCC that use nested functions,
njne7723322005-07-24 17:19:09 +0000367 and also Ada programs. This is controlled with the --smc-check
njn7b1a6a42005-07-20 04:20:44 +0000368 flag, although the default setting should work in most cases.
njn4a9f6f42005-07-19 23:46:08 +0000369
njn7b1a6a42005-07-20 04:20:44 +0000370- Output can now be printed in XML format. This should make it easier
sewardjc371bd02005-07-27 09:55:24 +0000371 for tools such as GUI front-ends and automated error-processing
372 schemes to use Valgrind output as input. The --xml flag controls this.
373 As part of this change, ELF directory information is read from executables,
374 so absolute source file paths are available if needed.
njn4a9f6f42005-07-19 23:46:08 +0000375
376- Programs that allocate many heap blocks may run faster, due to
377 improvements in certain data structures.
378
njn7b1a6a42005-07-20 04:20:44 +0000379- Addrcheck is currently not working. We hope to get it working again
380 soon. Helgrind is still not working, as was the case for the 2.4.0
381 release.
njn4a9f6f42005-07-19 23:46:08 +0000382
sewardjc371bd02005-07-27 09:55:24 +0000383- The JITter has been completely rewritten, and is now in a separate
384 library, called Vex. This enabled a lot of the user-visible changes,
385 such as new architecture support. The new JIT unfortunately translates
386 more slowly than the old one, so programs may take longer to start.
387 We believe the code quality is produces is about the same, so once
388 started, programs should run at about the same speed. Feedback about
389 this would be useful.
390
391 On the plus side, Vex and hence Memcheck tracks value flow properly
392 through floating point and vector registers, something the 2.X line
393 could not do. That means that Memcheck is much more likely to be
394 usably accurate on vectorised code.
395
sewardjec39f332005-08-02 15:28:07 +0000396- There is a subtle change to the way exiting of threaded programs
sewardjc371bd02005-07-27 09:55:24 +0000397 is handled. In 3.0, Valgrind's final diagnostic output (leak check,
398 etc) is not printed until the last thread exits. If the last thread
399 to exit was not the original thread which started the program, any
400 other process wait()-ing on this one to exit may conclude it has
401 finished before the diagnostic output is printed. This may not be
402 what you expect. 2.X had a different scheme which avoided this
403 problem, but caused deadlocks under obscure circumstances, so we
404 are trying something different for 3.0.
405
406- Small changes in control log file naming which make it easier to
sewardjec39f332005-08-02 15:28:07 +0000407 use valgrind for debugging MPI-based programs. The relevant
408 new flags are --log-file-exactly= and --log-file-qualifier=.
sewardjc371bd02005-07-27 09:55:24 +0000409
410- As part of adding AMD64 support, DWARF2 CFI-based stack unwinding
411 support was added. In principle this means Valgrind can produce
412 meaningful backtraces on x86 code compiled with -fomit-frame-pointer
tom81868f02005-07-27 10:33:08 +0000413 providing you also compile your code with -fasynchronous-unwind-tables.
sewardjc371bd02005-07-27 09:55:24 +0000414
sewardjec39f332005-08-02 15:28:07 +0000415- The documentation build system has been completely redone.
416 The documentation masters are now in XML format, and from that
417 HTML, PostScript and PDF documentation is generated. As a result
418 the manual is now available in book form. Note that the
419 documentation in the source tarballs is pre-built, so you don't need
420 any XML processing tools to build Valgrind from a tarball.
njn4a9f6f42005-07-19 23:46:08 +0000421
422Changes that are not user-visible:
423
sewardjc371bd02005-07-27 09:55:24 +0000424- The code has been massively overhauled in order to modularise it.
425 As a result we hope it is easier to navigate and understand.
njn4a9f6f42005-07-19 23:46:08 +0000426
427- Lots of code has been rewritten.
428
sewardjf9929e62005-08-02 21:05:58 +0000429BUGS FIXED:
njn4a9f6f42005-07-19 23:46:08 +0000430
sewardj79bd9b62005-08-03 16:40:10 +0000431110046 sz == 4 assertion failed
432109810 vex amd64->IR: unhandled instruction bytes: 0xA3 0x4C 0x70 0xD7
sewardjf9929e62005-08-02 21:05:58 +0000433109802 Add a plausible_stack_size command-line parameter ?
434109783 unhandled ioctl TIOCMGET (running hw detection tool discover)
435109780 unhandled ioctl BLKSSZGET (running fdisk -l /dev/hda)
436109718 vex x86->IR: unhandled instruction: ffreep
437109429 AMD64 unhandled syscall: 127 (sigpending)
438109401 false positive uninit in strchr from ld-linux.so.2
439109385 "stabs" parse failure
440109378 amd64: unhandled instruction REP NOP
441109376 amd64: unhandled instruction LOOP Jb
442109363 AMD64 unhandled instruction bytes
443109362 AMD64 unhandled syscall: 24 (sched_yield)
444109358 fork() won't work with valgrind-3.0 SVN
445109332 amd64 unhandled instruction: ADC Ev, Gv
446109314 Bogus memcheck report on amd64
447108883 Crash; vg_memory.c:905 (vgPlain_init_shadow_range):
448 Assertion `vgPlain_defined_init_shadow_page()' failed.
449108349 mincore syscall parameter checked incorrectly
450108059 build infrastructure: small update
451107524 epoll_ctl event parameter checked on EPOLL_CTL_DEL
452107123 Vex dies with unhandled instructions: 0xD9 0x31 0xF 0xAE
453106841 auxmap & openGL problems
454106713 SDL_Init causes valgrind to exit
455106352 setcontext and makecontext not handled correctly
456106293 addresses beyond initial client stack allocation
457 not checked in VALGRIND_DO_LEAK_CHECK
458106283 PIE client programs are loaded at address 0
459105831 Assertion `vgPlain_defined_init_shadow_page()' failed.
460105039 long run-times probably due to memory manager
461104797 valgrind needs to be aware of BLKGETSIZE64
462103594 unhandled instruction: FICOM
463103320 Valgrind 2.4.0 fails to compile with gcc 3.4.3 and -O0
464103168 potentially memory leak in coregrind/ume.c
465102039 bad permissions for mapped region at address 0xB7C73680
466101881 weird assertion problem
467101543 Support fadvise64 syscalls
46875247 x86_64/amd64 support (the biggest "bug" we have ever fixed)
njn4a9f6f42005-07-19 23:46:08 +0000469
sewardj9a919512005-08-03 17:01:51 +0000470(3.0RC1: 27 July 05, vex r1303, valgrind r4283).
sewardj1346e132005-08-03 20:42:06 +0000471(3.0.0: 3 August 05, vex r1313, valgrind r4316).
sewardjbfa2b992005-07-27 17:49:17 +0000472
473
474
njn8c927302005-03-12 16:45:01 +0000475Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
njn1aa5ae42005-03-26 16:04:27 +0000476~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4772.4.0 brings many significant changes and bug fixes. The most
478significant user-visible change is that we no longer supply our own
479pthread implementation. Instead, Valgrind is finally capable of
480running the native thread library, either LinuxThreads or NPTL.
njn8c927302005-03-12 16:45:01 +0000481
njn1aa5ae42005-03-26 16:04:27 +0000482This means our libpthread has gone, along with the bugs associated
483with it. Valgrind now supports the kernel's threading syscalls, and
484lets you use your standard system libpthread. As a result:
njn8c927302005-03-12 16:45:01 +0000485
njn1aa5ae42005-03-26 16:04:27 +0000486* There are many fewer system dependencies and strange library-related
487 bugs. There is a small performance improvement, and a large
488 stability improvement.
njn8c927302005-03-12 16:45:01 +0000489
njn1aa5ae42005-03-26 16:04:27 +0000490* On the downside, Valgrind can no longer report misuses of the POSIX
491 PThreads API. It also means that Helgrind currently does not work.
492 We hope to fix these problems in a future release.
njn8c927302005-03-12 16:45:01 +0000493
njn1aa5ae42005-03-26 16:04:27 +0000494Note that running the native thread libraries does not mean Valgrind
495is able to provide genuine concurrent execution on SMPs. We still
496impose the restriction that only one thread is running at any given
497time.
njn8c927302005-03-12 16:45:01 +0000498
njn1aa5ae42005-03-26 16:04:27 +0000499There are many other significant changes too:
njn8c927302005-03-12 16:45:01 +0000500
njn1aa5ae42005-03-26 16:04:27 +0000501* Memcheck is (once again) the default tool.
njn8c927302005-03-12 16:45:01 +0000502
njn1aa5ae42005-03-26 16:04:27 +0000503* The default stack backtrace is now 12 call frames, rather than 4.
njn8c927302005-03-12 16:45:01 +0000504
njn1aa5ae42005-03-26 16:04:27 +0000505* Suppressions can have up to 25 call frame matches, rather than 4.
njn8c927302005-03-12 16:45:01 +0000506
njn1aa5ae42005-03-26 16:04:27 +0000507* Memcheck and Addrcheck use less memory. Under some circumstances,
508 they no longer allocate shadow memory if there are large regions of
509 memory with the same A/V states - such as an mmaped file.
njn8c927302005-03-12 16:45:01 +0000510
njn1aa5ae42005-03-26 16:04:27 +0000511* The memory-leak detector in Memcheck and Addrcheck has been
512 improved. It now reports more types of memory leak, including
513 leaked cycles. When reporting leaked memory, it can distinguish
514 between directly leaked memory (memory with no references), and
515 indirectly leaked memory (memory only referred to by other leaked
516 memory).
njn8c927302005-03-12 16:45:01 +0000517
njn1aa5ae42005-03-26 16:04:27 +0000518* Memcheck's confusion over the effect of mprotect() has been fixed:
519 previously mprotect could erroneously mark undefined data as
520 defined.
njn8c927302005-03-12 16:45:01 +0000521
njn1aa5ae42005-03-26 16:04:27 +0000522* Signal handling is much improved and should be very close to what
523 you get when running natively.
524
525 One result of this is that Valgrind observes changes to sigcontexts
526 passed to signal handlers. Such modifications will take effect when
527 the signal returns. You will need to run with --single-step=yes to
528 make this useful.
njn8c927302005-03-12 16:45:01 +0000529
530* Valgrind is built in Position Independent Executable (PIE) format if
njn1aa5ae42005-03-26 16:04:27 +0000531 your toolchain supports it. This allows it to take advantage of all
njn8c927302005-03-12 16:45:01 +0000532 the available address space on systems with 4Gbyte user address
533 spaces.
534
535* Valgrind can now run itself (requires PIE support).
536
njn1aa5ae42005-03-26 16:04:27 +0000537* Syscall arguments are now checked for validity. Previously all
538 memory used by syscalls was checked, but now the actual values
539 passed are also checked.
njn8c927302005-03-12 16:45:01 +0000540
njn1aa5ae42005-03-26 16:04:27 +0000541* Syscall wrappers are more robust against bad addresses being passed
542 to syscalls: they will fail with EFAULT rather than killing Valgrind
543 with SIGSEGV.
njn8c927302005-03-12 16:45:01 +0000544
njn1aa5ae42005-03-26 16:04:27 +0000545* Because clone() is directly supported, some non-pthread uses of it
546 will work. Partial sharing (where some resources are shared, and
547 some are not) is not supported.
548
549* open() and readlink() on /proc/self/exe are supported.
550
551BUGS FIXED:
552
55388520 pipe+fork+dup2 kills the main program
55488604 Valgrind Aborts when using $VALGRIND_OPTS and user progra...
55588614 valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt...
55688703 Stabs parser fails to handle ";"
55788886 ioctl wrappers for TIOCMBIS and TIOCMBIC
55889032 valgrind pthread_cond_timedwait fails
55989106 the 'impossible' happened
56089139 Missing sched_setaffinity & sched_getaffinity
56189198 valgrind lacks support for SIOCSPGRP and SIOCGPGRP
56289263 Missing ioctl translations for scsi-generic and CD playing
56389440 tests/deadlock.c line endings
56489481 `impossible' happened: EXEC FAILED
56589663 valgrind 2.2.0 crash on Redhat 7.2
56689792 Report pthread_mutex_lock() deadlocks instead of returnin...
56790111 statvfs64 gives invalid error/warning
56890128 crash+memory fault with stabs generated by gnat for a run...
56990778 VALGRIND_CHECK_DEFINED() not as documented in memcheck.h
57090834 cachegrind crashes at end of program without reporting re...
57191028 valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio...
57291162 valgrind crash while debugging drivel 1.2.1
57391199 Unimplemented function
57491325 Signal routing does not propagate the siginfo structure
57591599 Assertion `cv == ((void *)0)'
57691604 rw_lookup clears orig and sends the NULL value to rw_new
57791821 Small problems building valgrind with $top_builddir ne $t...
57891844 signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec...
57992264 UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared
58092331 per-target flags necessitate AM_PROG_CC_C_O
58192420 valgrind doesn't compile with linux 2.6.8.1/9
58292513 Valgrind 2.2.0 generates some warning messages
58392528 vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed.
58493096 unhandled ioctl 0x4B3A and 0x5601
58593117 Tool and core interface versions do not match
58693128 Can't run valgrind --tool=memcheck because of unimplement...
58793174 Valgrind can crash if passed bad args to certain syscalls
58893309 Stack frame in new thread is badly aligned
58993328 Wrong types used with sys_sigprocmask()
59093763 /usr/include/asm/msr.h is missing
59193776 valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser...
59293810 fcntl() argument checking a bit too strict
59394378 Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed.
59494429 valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3
59594645 Impossible happened: PINSRW mem
59694953 valgrind: the `impossible' happened: SIGSEGV
59795667 Valgrind does not work with any KDE app
59896243 Assertion 'res==0' failed
59996252 stage2 loader of valgrind fails to allocate memory
60096520 All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ...
60196660 ioctl CDROMREADTOCENTRY causes bogus warnings
60296747 After looping in a segfault handler, the impossible happens
60396923 Zero sized arrays crash valgrind trace back with SIGFPE
60496948 valgrind stops with assertion failure regarding mmap2
60596966 valgrind fails when application opens more than 16 sockets
60697398 valgrind: vg_libpthread.c:2667 Assertion failed
60797407 valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `...
60897427 "Warning: invalid file descriptor -1 in syscall close()" ...
60997785 missing backtrace
61097792 build in obj dir fails - autoconf / makefile cleanup
61197880 pthread_mutex_lock fails from shared library (special ker...
61297975 program aborts without ang VG messages
61398129 Failed when open and close file 230000 times using stdio
61498175 Crashes when using valgrind-2.2.0 with a program using al...
61598288 Massif broken
61698303 UNIMPLEMENTED FUNCTION pthread_condattr_setpshared
61798630 failed--compilation missing warnings.pm, fails to make he...
61898756 Cannot valgrind signal-heavy kdrive X server
61998966 valgrinding the JVM fails with a sanity check assertion
62099035 Valgrind crashes while profiling
62199142 loops with message "Signal 11 being dropped from thread 0...
62299195 threaded apps crash on thread start (using QThread::start...
62399348 Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off...
62499568 False negative due to mishandling of mprotect
62599738 valgrind memcheck crashes on program that uses sigitimer
62699923 0-sized allocations are reported as leaks
62799949 program seg faults after exit()
628100036 "newSuperblock's request for 1048576 bytes failed"
629100116 valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ...
630100486 memcheck reports "valgrind: the `impossible' happened: V...
631100833 second call to "mremap" fails with EINVAL
632101156 (vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1...
633101173 Assertion `recDepth >= 0 && recDepth < 500' failed
634101291 creating threads in a forked process fails
635101313 valgrind causes different behavior when resizing a window...
636101423 segfault for c++ array of floats
637101562 valgrind massif dies on SIGINT even with signal handler r...
638
njn8c927302005-03-12 16:45:01 +0000639
jseward34ed74f2004-08-30 18:04:42 +0000640Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0
641~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jseward7d180d92004-08-30 18:15:37 +00006422.2.0 brings nine months worth of improvements and bug fixes. We
643believe it to be a worthy successor to 2.0.0. There are literally
644hundreds of bug fixes and minor improvements. There are also some
645fairly major user-visible changes:
646
647* A complete overhaul of handling of system calls and signals, and
648 their interaction with threads. In general, the accuracy of the
649 system call, thread and signal simulations is much improved:
650
651 - Blocking system calls behave exactly as they do when running
652 natively (not on valgrind). That is, if a syscall blocks only the
653 calling thread when running natively, than it behaves the same on
654 valgrind. No more mysterious hangs because V doesn't know that some
655 syscall or other, should block only the calling thread.
656
657 - Interrupted syscalls should now give more faithful results.
658
659 - Signal contexts in signal handlers are supported.
660
661* Improvements to NPTL support to the extent that V now works
662 properly on NPTL-only setups.
663
664* Greater isolation between Valgrind and the program being run, so
665 the program is less likely to inadvertently kill Valgrind by
666 doing wild writes.
667
668* Massif: a new space profiling tool. Try it! It's cool, and it'll
669 tell you in detail where and when your C/C++ code is allocating heap.
670 Draws pretty .ps pictures of memory use against time. A potentially
671 powerful tool for making sense of your program's space use.
672
673* File descriptor leakage checks. When enabled, Valgrind will print out
674 a list of open file descriptors on exit.
675
676* Improved SSE2/SSE3 support.
677
jseward2eb002b2004-08-31 00:14:02 +0000678* Time-stamped output; use --time-stamp=yes
679
jseward34ed74f2004-08-30 18:04:42 +0000680
681
682Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.1.2
683~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6842.2.0 is not much different from 2.1.2, released seven weeks ago.
685A number of bugs have been fixed, most notably #85658, which gave
686problems for quite a few people. There have been many internal
687cleanups, but those are not user visible.
688
689The following bugs have been fixed since 2.1.2:
690
69185658 Assert in coregrind/vg_libpthread.c:2326 (open64) !=
692 (void*)0 failed
693 This bug was reported multiple times, and so the following
694 duplicates of it are also fixed: 87620, 85796, 85935, 86065,
695 86919, 86988, 87917, 88156
696
69780716 Semaphore mapping bug caused by unmap (sem_destroy)
698 (Was fixed prior to 2.1.2)
699
70086987 semctl and shmctl syscalls family is not handled properly
701
70286696 valgrind 2.1.2 + RH AS2.1 + librt
703
70486730 valgrind locks up at end of run with assertion failure
705 in __pthread_unwind
706
70786641 memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1
708 (also fixes 74298, a duplicate of this)
709
71085947 MMX/SSE unhandled instruction 'sfence'
711
71284978 Wrong error "Conditional jump or move depends on
713 uninitialised value" resulting from "sbbl %reg, %reg"
714
71586254 ssort() fails when signed int return type from comparison is
716 too small to handle result of unsigned int subtraction
717
71887089 memalign( 4, xxx) makes valgrind assert
719
jseward2eb002b2004-08-31 00:14:02 +000072086407 Add support for low-level parallel port driver ioctls.
jseward34ed74f2004-08-30 18:04:42 +0000721
72270587 Add timestamps to Valgrind output? (wishlist)
723
72484937 vg_libpthread.c:2505 (se_remap): Assertion `res == 0'
725 (fixed prior to 2.1.2)
726
72786317 cannot load libSDL-1.2.so.0 using valgrind
728
72986989 memcpy from mac_replace_strmem.c complains about
730 uninitialized pointers passed when length to copy is zero
731
73285811 gnu pascal symbol causes segmentation fault; ok in 2.0.0
733
73479138 writing to sbrk()'d memory causes segfault
735
73677369 sched deadlock while signal received during pthread_join
737 and the joined thread exited
738
73988115 In signal handler for SIGFPE, siginfo->si_addr is wrong
740 under Valgrind
741
74278765 Massif crashes on app exit if FP exceptions are enabled
743
744Additionally there are the following changes, which are not
745connected to any bug report numbers, AFAICS:
746
747* Fix scary bug causing mis-identification of SSE stores vs
748 loads and so causing memcheck to sometimes give nonsense results
749 on SSE code.
750
751* Add support for the POSIX message queue system calls.
752
753* Fix to allow 32-bit Valgrind to run on AMD64 boxes. Note: this does
754 NOT allow Valgrind to work with 64-bit executables - only with 32-bit
755 executables on an AMD64 box.
756
757* At configure time, only check whether linux/mii.h can be processed
758 so that we don't generate ugly warnings by trying to compile it.
759
jseward2eb002b2004-08-31 00:14:02 +0000760* Add support for POSIX clocks and timers.
761
jseward34ed74f2004-08-30 18:04:42 +0000762
763
jseward9cd978c2004-07-17 13:38:12 +0000764Developer (cvs head) release 2.1.2 (18 July 2004)
jsewardbd0a6e42004-07-17 12:19:43 +0000765~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7662.1.2 contains four months worth of bug fixes and refinements.
jseward9cd978c2004-07-17 13:38:12 +0000767Although officially a developer release, we believe it to be stable
768enough for widespread day-to-day use. 2.1.2 is pretty good, so try it
769first, although there is a chance it won't work. If so then try 2.0.0
770and tell us what went wrong." 2.1.2 fixes a lot of problems present
771in 2.0.0 and is generally a much better product.
jsewardbd0a6e42004-07-17 12:19:43 +0000772
jseward9cd978c2004-07-17 13:38:12 +0000773Relative to 2.1.1, a large number of minor problems with 2.1.1 have
774been fixed, and so if you use 2.1.1 you should try 2.1.2. Users of
775the last stable release, 2.0.0, might also want to try this release.
jsewardbd0a6e42004-07-17 12:19:43 +0000776
777The following bugs, and probably many more, have been fixed. These
778are listed at http://bugs.kde.org. Reporting a bug for valgrind in
779the http://bugs.kde.org is much more likely to get you a fix than
780mailing developers directly, so please continue to keep sending bugs
781there.
782
78376869 Crashes when running any tool under Fedora Core 2 test1
784 This fixes the problem with returning from a signal handler
jseward0400d4d2004-07-17 23:26:46 +0000785 when VDSOs are turned off in FC2.
jsewardbd0a6e42004-07-17 12:19:43 +0000786
jseward0400d4d2004-07-17 23:26:46 +000078769508 java 1.4.2 client fails with erroneous "stack size too small".
788 This fix makes more of the pthread stack attribute related
789 functions work properly. Java still doesn't work though.
jsewardbd0a6e42004-07-17 12:19:43 +0000790
79171906 malloc alignment should be 8, not 4
792 All memory returned by malloc/new etc is now at least
793 8-byte aligned.
794
jsewarda6017a42004-07-17 23:44:35 +000079581970 vg_alloc_ThreadState: no free slots available
796 (closed because the workaround is simple: increase
797 VG_N_THREADS, rebuild and try again.)
798
jsewardbd0a6e42004-07-17 12:19:43 +000079978514 Conditional jump or move depends on uninitialized value(s)
800 (a slight mishanding of FP code in memcheck)
801
jsewarda6017a42004-07-17 23:44:35 +000080277952 pThread Support (crash) (due to initialisation-ordering probs)
803 (also 85118)
804
jsewardbd0a6e42004-07-17 12:19:43 +000080580942 Addrcheck wasn't doing overlap checking as it should.
80678048 return NULL on malloc/new etc failure, instead of asserting
80773655 operator new() override in user .so files often doesn't get picked up
80883060 Valgrind does not handle native kernel AIO
80969872 Create proper coredumps after fatal signals
81082026 failure with new glibc versions: __libc_* functions are not exported
81170344 UNIMPLEMENTED FUNCTION: tcdrain
81281297 Cancellation of pthread_cond_wait does not require mutex
81382872 Using debug info from additional packages (wishlist)
81483025 Support for ioctls FIGETBSZ and FIBMAP
81583340 Support for ioctl HDIO_GET_IDENTITY
81679714 Support for the semtimedop system call.
81777022 Support for ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO
81882098 hp2ps ansification (wishlist)
81983573 Valgrind SIGSEGV on execve
82082999 show which cmdline option was erroneous (wishlist)
82183040 make valgrind VPATH and distcheck-clean (wishlist)
jsewarda6017a42004-07-17 23:44:35 +000082283998 Assertion `newfd > vgPlain_max_fd' failed (see below)
82382722 Unchecked mmap in as_pad leads to mysterious failures later
82478958 memcheck seg faults while running Mozilla
jsewarda2c08002004-07-18 09:24:57 +000082585416 Arguments with colon (e.g. --logsocket) ignored
jsewardbd0a6e42004-07-17 12:19:43 +0000826
827
828Additionally there are the following changes, which are not
829connected to any bug report numbers, AFAICS:
830
831* Rearranged address space layout relative to 2.1.1, so that
832 Valgrind/tools will run out of memory later than currently in many
833 circumstances. This is good news esp. for Calltree. It should
834 be possible for client programs to allocate over 800MB of
835 memory when using memcheck now.
836
jseward9cd978c2004-07-17 13:38:12 +0000837* Improved checking when laying out memory. Should hopefully avoid
838 the random segmentation faults that 2.1.1 sometimes caused.
839
jsewardbd0a6e42004-07-17 12:19:43 +0000840* Support for Fedora Core 2 and SuSE 9.1. Improvements to NPTL
841 support to the extent that V now works properly on NPTL-only setups.
842
843* Renamed the following options:
844 --logfile-fd --> --log-fd
845 --logfile --> --log-file
846 --logsocket --> --log-socket
847 to be consistent with each other and other options (esp. --input-fd).
848
849* Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and
850 improve the checking of other interface related ioctls.
851
jsewardbd0a6e42004-07-17 12:19:43 +0000852* Fix building with gcc-3.4.1.
853
854* Remove limit on number of semaphores supported.
855
jsewardbd0a6e42004-07-17 12:19:43 +0000856* Add support for syscalls: set_tid_address (258), acct (51).
857
858* Support instruction "repne movs" -- not official but seems to occur.
859
860* Implement an emulated soft limit for file descriptors in addition to
861 the current reserved area, which effectively acts as a hard limit. The
862 setrlimit system call now simply updates the emulated limits as best
863 as possible - the hard limit is not allowed to move at all and just
864 returns EPERM if you try and change it. This should stop reductions
865 in the soft limit causing assertions when valgrind tries to allocate
866 descriptors from the reserved area.
jsewarda6017a42004-07-17 23:44:35 +0000867 (This actually came from bug #83998).
jsewardbd0a6e42004-07-17 12:19:43 +0000868
nethercote76e8fd92004-07-21 10:37:31 +0000869* Major overhaul of Cachegrind implementation. First user-visible change
nethercote5e63bfb2004-07-17 12:49:53 +0000870 is that cachegrind.out files are now typically 90% smaller than they
nethercote76e8fd92004-07-21 10:37:31 +0000871 used to be; code annotation times are correspondingly much smaller.
872 Second user-visible change is that hit/miss counts for code that is
873 unloaded at run-time is no longer dumped into a single "discard" pile,
874 but accurately preserved.
jsewardbd0a6e42004-07-17 12:19:43 +0000875
876* Client requests for telling valgrind about memory pools.
877
878
879
jseward9cd978c2004-07-17 13:38:12 +0000880Developer (cvs head) release 2.1.1 (12 March 2004)
881~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jsewardbd0a6e42004-07-17 12:19:43 +00008822.1.1 contains some internal structural changes needed for V's
jsewarde3e77042004-03-12 21:07:05 +0000883long-term future. These don't affect end-users. Most notable
884user-visible changes are:
885
886* Greater isolation between Valgrind and the program being run, so
887 the program is less likely to inadvertently kill Valgrind by
888 doing wild writes.
889
890* Massif: a new space profiling tool. Try it! It's cool, and it'll
891 tell you in detail where and when your C/C++ code is allocating heap.
892 Draws pretty .ps pictures of memory use against time. A potentially
893 powerful tool for making sense of your program's space use.
894
895* Fixes for many bugs, including support for more SSE2/SSE3 instructions,
896 various signal/syscall things, and various problems with debug
897 info readers.
898
899* Support for glibc-2.3.3 based systems.
900
901We are now doing automatic overnight build-and-test runs on a variety
902of distros. As a result, we believe 2.1.1 builds and runs on:
903Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9.
904
905
906The following bugs, and probably many more, have been fixed. These
907are listed at http://bugs.kde.org. Reporting a bug for valgrind in
908the http://bugs.kde.org is much more likely to get you a fix than
909mailing developers directly, so please continue to keep sending bugs
910there.
911
91269616 glibc 2.3.2 w/NPTL is massively different than what valgrind expects
91369856 I don't know how to instrument MMXish stuff (Helgrind)
91473892 valgrind segfaults starting with Objective-C debug info
915 (fix for S-type stabs)
91673145 Valgrind complains too much about close(<reserved fd>)
91773902 Shadow memory allocation seems to fail on RedHat 8.0
91868633 VG_N_SEMAPHORES too low (V itself was leaking semaphores)
91975099 impossible to trace multiprocess programs
92076839 the `impossible' happened: disInstr: INT but not 0x80 !
92176762 vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed.
92276747 cannot include valgrind.h in c++ program
92376223 parsing B(3,10) gave NULL type => impossible happens
92475604 shmdt handling problem
92576416 Problems with gcc 3.4 snap 20040225
92675614 using -gstabs when building your programs the `impossible' happened
92775787 Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET,
92875294 gcc 3.4 snapshot's libstdc++ have unsupported instructions.
929 (REP RET)
93073326 vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed.
93172596 not recognizing __libc_malloc
93269489 Would like to attach ddd to running program
93372781 Cachegrind crashes with kde programs
93473055 Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes)
93573026 Descriptor leak check reports port numbers wrongly
93671705 README_MISSING_SYSCALL_OR_IOCTL out of date
93772643 Improve support for SSE/SSE2 instructions
93872484 valgrind leaves it's own signal mask in place when execing
93972650 Signal Handling always seems to restart system calls
94072006 The mmap system call turns all errors in ENOMEM
94171781 gdb attach is pretty useless
94271180 unhandled instruction bytes: 0xF 0xAE 0x85 0xE8
94369886 writes to zero page cause valgrind to assert on exit
94471791 crash when valgrinding gimp 1.3 (stabs reader problem)
94569783 unhandled syscall: 218
94669782 unhandled instruction bytes: 0x66 0xF 0x2B 0x80
94770385 valgrind fails if the soft file descriptor limit is less
948 than about 828
94969529 "rep; nop" should do a yield
95070827 programs with lots of shared libraries report "mmap failed"
951 for some of them when reading symbols
95271028 glibc's strnlen is optimised enough to confuse valgrind
953
954
955
956
jseward43230652003-12-14 00:14:54 +0000957Unstable (cvs head) release 2.1.0 (15 December 2003)
958~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
959For whatever it's worth, 2.1.0 actually seems pretty darn stable to me
960(Julian). It looks eminently usable, and given that it fixes some
961significant bugs, may well be worth using on a day-to-day basis.
9622.1.0 is known to build and pass regression tests on: SuSE 9, SuSE
9638.2, RedHat 8.
964
9652.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of
966handling of system calls and signals, and their interaction with
967threads. In general, the accuracy of the system call, thread and
968signal simulations is much improved. Specifically:
969
970- Blocking system calls behave exactly as they do when running
971 natively (not on valgrind). That is, if a syscall blocks only the
972 calling thread when running natively, than it behaves the same on
973 valgrind. No more mysterious hangs because V doesn't know that some
974 syscall or other, should block only the calling thread.
975
976- Interrupted syscalls should now give more faithful results.
977
978- Finally, signal contexts in signal handlers are supported. As a
979 result, konqueror on SuSE 9 no longer segfaults when notified of
980 file changes in directories it is watching.
981
982Other changes:
983
984- Robert Walsh's file descriptor leakage checks. When enabled,
985 Valgrind will print out a list of open file descriptors on
986 exit. Along with each file descriptor, Valgrind prints out a stack
987 backtrace of where the file was opened and any details relating to the
988 file descriptor such as the file name or socket details.
989 To use, give: --track-fds=yes
990
991- Implemented a few more SSE/SSE2 instructions.
992
993- Less crud on the stack when you do 'where' inside a GDB attach.
994
995- Fixed the following bugs:
996 68360: Valgrind does not compile against 2.6.0-testX kernels
997 68525: CVS head doesn't compile on C90 compilers
998 68566: pkgconfig support (wishlist)
999 68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr)
1000 69140: valgrind not able to explicitly specify a path to a binary.
1001 69432: helgrind asserts encountering a MutexErr when there are
1002 EraserErr suppressions
1003
jseward0b12daf2003-12-14 14:35:28 +00001004- Increase the max size of the translation cache from 200k average bbs
1005 to 300k average bbs. Programs on the size of OOo (680m17) are
1006 thrashing the cache at the smaller size, creating large numbers of
1007 retranslations and wasting significant time as a result.
1008
jseward43230652003-12-14 00:14:54 +00001009
1010
1011Stable release 2.0.0 (5 Nov 2003)
1012~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1013
10142.0.0 improves SSE/SSE2 support, fixes some minor bugs, and
1015improves support for SuSE 9 and the Red Hat "Severn" beta.
1016
1017- Further improvements to SSE/SSE2 support. The entire test suite of
1018 the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1
1019 20030307Z '-g -O -xW' now works. I think this gives pretty good
1020 coverage of SSE/SSE2 floating point instructions, or at least the
1021 subset emitted by Icc.
1022
1023- Also added support for the following instructions:
1024 MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS
1025 PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS).
1026
1027- CFI support for GDB version 6. Needed to enable newer GDBs
1028 to figure out where they are when using --gdb-attach=yes.
1029
1030- Fix this:
1031 mc_translate.c:1091 (memcheck_instrument): Assertion
1032 `u_in->size == 4 || u_in->size == 16' failed.
1033
1034- Return an error rather than panicing when given a bad socketcall.
1035
1036- Fix checking of syscall rt_sigtimedwait().
1037
1038- Implement __NR_clock_gettime (syscall 265). Needed on Red Hat Severn.
1039
1040- Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n'
1041 bytes long, when it could be shorter, which could cause false
1042 positives.
1043
1044- Support use of select() for very large numbers of file descriptors.
1045
1046- Don't fail silently if the executable is statically linked, or is
1047 setuid/setgid. Print an error message instead.
1048
1049- Support for old DWARF-1 format line number info.
1050
1051
1052
1053Snapshot 20031012 (12 October 2003)
1054~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1055
1056Three months worth of bug fixes, roughly. Most significant single
1057change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
1058
105920031012 builds on Red Hat Fedora ("Severn") but doesn't really work
1060(curiosly, mozilla runs OK, but a modest "ls -l" bombs). I hope to
1061get a working version out soon. It may or may not work ok on the
1062forthcoming SuSE 9; I hear positive noises about it but haven't been
1063able to verify this myself (not until I get hold of a copy of 9).
1064
1065A detailed list of changes, in no particular order:
1066
1067- Describe --gen-suppressions in the FAQ.
1068
1069- Syscall __NR_waitpid supported.
1070
1071- Minor MMX bug fix.
1072
1073- -v prints program's argv[] at startup.
1074
1075- More glibc-2.3 suppressions.
1076
1077- Suppressions for stack underrun bug(s) in the c++ support library
1078 distributed with Intel Icc 7.0.
1079
1080- Fix problems reading /proc/self/maps.
1081
1082- Fix a couple of messages that should have been suppressed by -q,
1083 but weren't.
1084
1085- Make Addrcheck understand "Overlap" suppressions.
1086
1087- At startup, check if program is statically linked and bail out if so.
1088
1089- Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
1090
1091- Memcheck/addrcheck: minor speed optimisations
1092
1093- Handle syscall __NR_brk more correctly than before.
1094
1095- Fixed incorrect allocate/free mismatch errors when using
1096 operator new(unsigned, std::nothrow_t const&)
1097 operator new[](unsigned, std::nothrow_t const&)
1098
1099- Support POSIX pthread spinlocks.
1100
1101- Fixups for clean compilation with gcc-3.3.1.
daywalker5d945de2003-09-26 00:32:53 +00001102
1103- Implemented more opcodes:
1104 - push %es
1105 - push %ds
1106 - pop %es
1107 - pop %ds
1108 - movntq
1109 - sfence
1110 - pshufw
1111 - pavgb
1112 - ucomiss
1113 - enter
daywalkerb18d2532003-09-27 20:15:01 +00001114 - mov imm32, %esp
1115 - all "in" and "out" opcodes
daywalker79aad842003-09-30 22:58:12 +00001116 - inc/dec %esp
jseward43230652003-12-14 00:14:54 +00001117 - A whole bunch of SSE/SSE2 instructions
daywalker5d945de2003-09-26 00:32:53 +00001118
jseward43230652003-12-14 00:14:54 +00001119- Memcheck: don't bomb on SSE/SSE2 code.
daywalker5d945de2003-09-26 00:32:53 +00001120
sewardj90238792003-05-05 00:23:42 +00001121
sewardj945f39f2003-07-25 21:11:40 +00001122Snapshot 20030725 (25 July 2003)
1123~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1124
1125Fixes some minor problems in 20030716.
1126
1127- Fix bugs in overlap checking for strcpy/memcpy etc.
1128
1129- Do overlap checking with Addrcheck as well as Memcheck.
1130
1131- Fix this:
1132 Memcheck: the `impossible' happened:
1133 get_error_name: unexpected type
1134
1135- Install headers needed to compile new skins.
1136
sewardje3dd2e02003-07-27 08:04:48 +00001137- Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD
sewardj945f39f2003-07-25 21:11:40 +00001138 passed to non-traced children.
1139
sewardjb9eda952003-07-26 21:39:05 +00001140- Fix file descriptor leak in valgrind-listener.
1141
sewardje3dd2e02003-07-27 08:04:48 +00001142- Fix longstanding bug in which the allocation point of a
1143 block resized by realloc was not correctly set. This may
1144 have caused confusing error messages.
sewardj945f39f2003-07-25 21:11:40 +00001145
1146
sewardj626fd892003-07-16 20:10:26 +00001147Snapshot 20030716 (16 July 2003)
sewardj9d916ed2003-07-14 23:38:40 +00001148~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1149
sewardj626fd892003-07-16 20:10:26 +0000115020030716 is a snapshot of our current CVS head (development) branch.
sewardj9d916ed2003-07-14 23:38:40 +00001151This is the branch which will become valgrind-2.0. It contains
1152significant enhancements over the 1.9.X branch.
1153
1154Despite this being a snapshot of the CVS head, it is believed to be
1155quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so
1156-- and therefore suitable for widespread use. Please let us know asap
1157if it causes problems for you.
1158
1159Two reasons for releasing a snapshot now are:
1160
1161- It's been a while since 1.9.6, and this snapshot fixes
1162 various problems that 1.9.6 has with threaded programs
1163 on glibc-2.3.X based systems.
1164
1165- So as to make available improvements in the 2.0 line.
1166
sewardj626fd892003-07-16 20:10:26 +00001167Major changes in 20030716, as compared to 1.9.6:
sewardj9d916ed2003-07-14 23:38:40 +00001168
1169- More fixes to threading support on glibc-2.3.1 and 2.3.2-based
1170 systems (SuSE 8.2, Red Hat 9). If you have had problems
1171 with inconsistent/illogical behaviour of errno, h_errno or the DNS
sewardj626fd892003-07-16 20:10:26 +00001172 resolver functions in threaded programs, 20030716 should improve
sewardj9d916ed2003-07-14 23:38:40 +00001173 matters. This snapshot seems stable enough to run OpenOffice.org
1174 1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big
1175 threaded app if ever I saw one.
1176
1177- Automatic generation of suppression records; you no longer
1178 need to write them by hand. Use --gen-suppressions=yes.
1179
sewardj21511802003-07-22 17:47:42 +00001180- strcpy/memcpy/etc check their arguments for overlaps, when
1181 running with the Memcheck or Addrcheck skins.
1182
1183- malloc_usable_size() is now supported.
1184
1185- new client requests:
1186 - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS:
1187 useful with regression testing
1188 - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions
1189 on real CPU (use with caution!)
1190
sewardj9d916ed2003-07-14 23:38:40 +00001191- The GDB attach mechanism is more flexible. Allow the GDB to
1192 be run to be specified by --gdb-path=/path/to/gdb, and specify
1193 which file descriptor V will read its input from with
1194 --input-fd=<number>.
1195
sewardj21511802003-07-22 17:47:42 +00001196- Cachegrind gives more accurate results (wasn't tracking instructions in
1197 malloc() and friends previously, is now).
1198
sewardj9d916ed2003-07-14 23:38:40 +00001199- Complete support for the MMX instruction set.
1200
1201- Partial support for the SSE and SSE2 instruction sets. Work for this
1202 is ongoing. About half the SSE/SSE2 instructions are done, so
1203 some SSE based programs may work. Currently you need to specify
1204 --skin=addrcheck. Basically not suitable for real use yet.
1205
1206- Significant speedups (10%-20%) for standard memory checking.
1207
1208- Fix assertion failure in pthread_once().
1209
1210- Fix this:
1211 valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select):
1212 Assertion `ms_end >= ms_now' failed.
1213
1214- Implement pthread_mutexattr_setpshared.
1215
1216- Understand Pentium 4 branch hints. Also implemented a couple more
1217 obscure x86 instructions.
1218
1219- Lots of other minor bug fixes.
1220
sewardj626fd892003-07-16 20:10:26 +00001221- We have a decent regression test system, for the first time.
1222 This doesn't help you directly, but it does make it a lot easier
1223 for us to track the quality of the system, especially across
1224 multiple linux distributions.
1225
1226 You can run the regression tests with 'make regtest' after 'make
1227 install' completes. On SuSE 8.2 and Red Hat 9 I get this:
1228
1229 == 84 tests, 0 stderr failures, 0 stdout failures ==
1230
1231 On Red Hat 8, I get this:
1232
1233 == 84 tests, 2 stderr failures, 1 stdout failure ==
1234 corecheck/tests/res_search (stdout)
1235 memcheck/tests/sigaltstack (stderr)
1236
1237 sigaltstack is probably harmless. res_search doesn't work
1238 on R H 8 even running natively, so I'm not too worried.
1239
1240 On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures:
1241
1242 == 84 tests, 2 stderr failures, 1 stdout failure ==
1243 corecheck/tests/pth_atfork1 (stdout)
1244 corecheck/tests/pth_atfork1 (stderr)
1245 memcheck/tests/sigaltstack (stderr)
1246
1247 You need to run on a PII system, at least, since some tests
1248 contain P6-specific instructions, and the test machine needs
1249 access to the internet so that corecheck/tests/res_search
1250 (a test that the DNS resolver works) can function.
1251
sewardj9d916ed2003-07-14 23:38:40 +00001252As ever, thanks for the vast amount of feedback :) and bug reports :(
1253We may not answer all messages, but we do at least look at all of
1254them, and tend to fix the most frequently reported bugs.
1255
1256
1257
sewardj37918822003-05-05 01:05:09 +00001258Version 1.9.6 (7 May 2003 or thereabouts)
1259~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1260
1261Major changes in 1.9.6:
1262
1263- Improved threading support for glibc >= 2.3.2 (SuSE 8.2,
1264 RedHat 9, to name but two ...) It turned out that 1.9.5
1265 had problems with threading support on glibc >= 2.3.2,
1266 usually manifested by threaded programs deadlocking in system calls,
1267 or running unbelievably slowly. Hopefully these are fixed now. 1.9.6
1268 is the first valgrind which gives reasonable support for
1269 glibc-2.3.2. Also fixed a 2.3.2 problem with pthread_atfork().
1270
1271- Majorly expanded FAQ.txt. We've added workarounds for all
1272 common problems for which a workaround is known.
1273
1274Minor changes in 1.9.6:
1275
1276- Fix identification of the main thread's stack. Incorrect
1277 identification of it was causing some on-stack addresses to not get
1278 identified as such. This only affected the usefulness of some error
1279 messages; the correctness of the checks made is unchanged.
1280
1281- Support for kernels >= 2.5.68.
1282
1283- Dummy implementations of __libc_current_sigrtmin,
1284 __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully
1285 good enough to keep alive programs which previously died for lack of
1286 them.
1287
1288- Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request.
1289
sewardj3d47b792003-05-05 22:15:35 +00001290- Fix bug in the DWARF2 debug line info loader, when instructions
1291 following each other have source lines far from each other
1292 (e.g. with inlined functions).
1293
sewardj37918822003-05-05 01:05:09 +00001294- Debug info reading: read symbols from both "symtab" and "dynsym"
1295 sections, rather than merely from the one that comes last in the
1296 file.
1297
1298- New syscall support: prctl(), creat(), lookup_dcookie().
1299
1300- When checking calls to accept(), recvfrom(), getsocketopt(),
1301 don't complain if buffer values are NULL.
1302
1303- Try and avoid assertion failures in
1304 mash_LD_PRELOAD_and_LD_LIBRARY_PATH.
1305
1306- Minor bug fixes in cg_annotate.
1307
1308
1309
sewardj90238792003-05-05 00:23:42 +00001310Version 1.9.5 (7 April 2003)
1311~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1312
1313It occurs to me that it would be helpful for valgrind users to record
1314in the source distribution the changes in each release. So I now
1315attempt to mend my errant ways :-) Changes in this and future releases
1316will be documented in the NEWS file in the source distribution.
1317
1318Major changes in 1.9.5:
1319
1320- (Critical bug fix): Fix a bug in the FPU simulation. This was
1321 causing some floating point conditional tests not to work right.
1322 Several people reported this. If you had floating point code which
1323 didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5.
1324
1325- Partial support for Red Hat 9. RH9 uses the new Native Posix
1326 Threads Library (NPTL), instead of the older LinuxThreads.
1327 This potentially causes problems with V which will take some
1328 time to correct. In the meantime we have partially worked around
1329 this, and so 1.9.5 works on RH9. Threaded programs still work,
1330 but they may deadlock, because some system calls (accept, read,
1331 write, etc) which should be nonblocking, in fact do block. This
1332 is a known bug which we are looking into.
1333
1334 If you can, your best bet (unfortunately) is to avoid using
1335 1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution.
1336 If your glibc is 2.3.1 or earlier, you're almost certainly OK.
1337
1338Minor changes in 1.9.5:
1339
1340- Added some #errors to valgrind.h to ensure people don't include
1341 it accidentally in their sources. This is a change from 1.0.X
1342 which was never properly documented. The right thing to include
1343 is now memcheck.h. Some people reported problems and strange
1344 behaviour when (incorrectly) including valgrind.h in code with
1345 1.9.1 -- 1.9.4. This is no longer possible.
1346
1347- Add some __extension__ bits and pieces so that gcc configured
1348 for valgrind-checking compiles even with -Werror. If you
1349 don't understand this, ignore it. Of interest to gcc developers
1350 only.
1351
1352- Removed a pointless check which caused problems interworking
1353 with Clearcase. V would complain about shared objects whose
1354 names did not end ".so", and refuse to run. This is now fixed.
1355 In fact it was fixed in 1.9.4 but not documented.
1356
1357- Fixed a bug causing an assertion failure of "waiters == 1"
1358 somewhere in vg_scheduler.c, when running large threaded apps,
1359 notably MySQL.
1360
1361- Add support for the munlock system call (124).
1362
1363Some comments about future releases:
1364
13651.9.5 is, we hope, the most stable Valgrind so far. It pretty much
1366supersedes the 1.0.X branch. If you are a valgrind packager, please
1367consider making 1.9.5 available to your users. You can regard the
13681.0.X branch as obsolete: 1.9.5 is stable and vastly superior. There
1369are no plans at all for further releases of the 1.0.X branch.
1370
1371If you want a leading-edge valgrind, consider building the cvs head
1372(from SourceForge), or getting a snapshot of it. Current cool stuff
1373going in includes MMX support (done); SSE/SSE2 support (in progress),
1374a significant (10-20%) performance improvement (done), and the usual
1375large collection of minor changes. Hopefully we will be able to
1376improve our NPTL support, but no promises.
1377