blob: a5af6fce0ca5c103d1e64784c09ddf6d48139357 [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:
njneaf0ca92006-04-09 01:23:29 +00004Performance (especially of Memcheck) is much improved, Addrcheck has been
5removed, Callgrind has been added, PPC64/Linux support has been added,
6Lackey has been improved, and MPI support has been added. In detail:
njna3e96762006-03-27 12:23:44 +00007
8- Performance is much improved: programs typically run 1.20--1.40 times
njn390aa542006-03-28 00:05:16 +00009 faster under Memcheck (much more for some unusual programs) with an
10 average of about 1.30 for the programs we tested it on. The improvements
11 for Nulgrind are similar. We haven't measured Cachegrind and Massif, they
12 should be also be faster, but with smaller improvements. We are
njneaf0ca92006-04-09 01:23:29 +000013 interested to hear what improvements users get.
njna3e96762006-03-27 12:23:44 +000014
njneaf0ca92006-04-09 01:23:29 +000015 Also, Memcheck uses much less memory, due to the introduction of a
16 "compressed V bits" representation for Memcheck's shadow memory. The
17 amount of shadow memory used -- which accounts for a large percentage of
18 Memcheck's memory overhead -- has been reduced by a factor of more than 4
19 on most programs. This means you should be able to run programs that use
20 more memory than before without hitting problems. This change in
21 representation also contributes to the speed improvements.
njna3e96762006-03-27 12:23:44 +000022
23- Addrcheck has been removed. It has not worked since version 2.4.0, and
24 with the speed and memory improvements to Memcheck it is no longer worth
25 having around. If you liked using Addrcheck because it didn't give
26 undefined value errors, you can use the new Memcheck option
27 --undef-value-errors=no to obtain this behaviour.
28
njneaf0ca92006-04-09 01:23:29 +000029- Josef Weidendorfer's popular Callgrind tool has been added. [XXX:
30 more details] [XXX: say something about KCachegrind and why it has not
31 been folded in... I guess because its development is quite independent]
32
njna3e96762006-03-27 12:23:44 +000033- Valgrind now works on PPC64/Linux. [XXX: more details...]
34
njnb2939162006-04-18 00:52:37 +000035- Floating point accuracy has been improved for PPC32/Linux. [XXX: more
36 details]
37
njneaf0ca92006-04-09 01:23:29 +000038- Lackey, the example tool, has been improved:
njna3e96762006-03-27 12:23:44 +000039
njneaf0ca92006-04-09 01:23:29 +000040 * It has a new option --detailed-counts (off by default) which causes
41 it to print out a count of loads, stores and ALU operations done, and
42 their sizes.
njndbf7ca72006-03-31 11:57:59 +000043
njneaf0ca92006-04-09 01:23:29 +000044 * It has a new option --trace-mem (off by default) which causes it to
45 print out a trace of all memory accesses performed by a program. It's a
46 good starting point for building Valgrind tools that need to track
47 memory accesses. Read the comments at the top of the file
48 lackey/lk_main.c for details.
sewardj42fcf5d2006-04-08 13:16:36 +000049
njneaf0ca92006-04-09 01:23:29 +000050 * The original instrumentation (counting numbers of instructions, jumps,
51 etc) is now controlled by a new option --basic-counts. It is on by
52 default.
sewardj42fcf5d2006-04-08 13:16:36 +000053
54- MPI support: partial support for debugging distributed applications
55 using the MPI library specification has been added. Valgrind is
56 aware of the memory state changes caused by a subset of the MPI
57 functions, and will carefully check data passed to the (P)MPI_
58 interface.
59
njneaf0ca92006-04-09 01:23:29 +000060- XXX: others...
61
62Please note that Helgrind is still not working. We have made an important
63step towards making it work again, however, with the addition of function
64wrapping (see below).
65
66Other user-visible changes:
67
68- Valgrind now has the ability to intercept and wrap arbitrary functions.
69 This is a preliminary step towards making Helgrind work again, and
70 was required for MPI support.
71
njndbf7ca72006-03-31 11:57:59 +000072- There are some changes to Memcheck's client requests. Some of them have
73 changed names:
74
75 MAKE_NOACCESS --> MAKE_MEM_NOACCESS
76 MAKE_WRITABLE --> MAKE_MEM_UNDEFINED
77 MAKE_READABLE --> MAKE_MEM_DEFINED
78
79 CHECK_WRITABLE --> CHECK_MEM_IS_ADDRESSABLE
80 CHECK_READABLE --> CHECK_MEM_IS_DEFINED
81 CHECK_DEFINED --> CHECK_VALUE_IS_DEFINED
82
83 The reason for the change is that the old names are subtly misleading.
84 The old names will still work, but they are deprecated and may be removed
85 in a future release.
86
87 We also added a new client request:
88
89 MAKE_MEM_DEFINED_IF_ADDRESSABLE(a, len)
90
91 which is like MAKE_MEM_DEFINED but only affects a byte if the byte is
92 already addressable.
93
njneaf0ca92006-04-09 01:23:29 +000094
njna3e96762006-03-27 12:23:44 +000095BUGS FIXED:
96
97XXX
98
99
sewardj50654672006-03-16 11:33:14 +0000100Release 3.1.1 (15 March 2006)
101~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1023.1.1 fixes a bunch of bugs reported in 3.1.0. There is no new
103functionality. The fixed bugs are:
104
105(note: "n-i-bz" means "not in bugzilla" -- this bug does not have
106 a bugzilla entry).
107
108n-i-bz ppc32: fsub 3,3,3 in dispatcher doesn't clear NaNs
109n-i-bz ppc32: __NR_{set,get}priority
110117332 x86: missing line info with icc 8.1
111117366 amd64: 0xDD 0x7C fnstsw
112118274 == 117366
113117367 amd64: 0xD9 0xF4 fxtract
114117369 amd64: __NR_getpriority (140)
115117419 ppc32: lfsu f5, -4(r11)
116117419 ppc32: fsqrt
117117936 more stabs problems (segfaults while reading debug info)
118119914 == 117936
119120345 == 117936
120118239 amd64: 0xF 0xAE 0x3F (clflush)
121118939 vm86old system call
122n-i-bz memcheck/tests/mempool reads freed memory
123n-i-bz AshleyP's custom-allocator assertion
124n-i-bz Dirk strict-aliasing stuff
125n-i-bz More space for debugger cmd line (Dan Thaler)
126n-i-bz Clarified leak checker output message
127n-i-bz AshleyP's --gen-suppressions output fix
128n-i-bz cg_annotate's --sort option broken
129n-i-bz OSet 64-bit fastcmp bug
130n-i-bz VG_(getgroups) fix (Shinichi Noda)
131n-i-bz ppc32: allocate from callee-saved FP/VMX regs
132n-i-bz misaligned path word-size bug in mc_main.c
133119297 Incorrect error message for sse code
134120410 x86: prefetchw (0xF 0xD 0x48 0x4)
135120728 TIOCSERGETLSR, TIOCGICOUNT, HDIO_GET_DMA ioctls
136120658 Build fixes for gcc 2.96
137120734 x86: Support for changing EIP in signal handler
138n-i-bz memcheck/tests/zeropage de-looping fix
139n-i-bz x86: fxtract doesn't work reliably
140121662 x86: lock xadd (0xF0 0xF 0xC0 0x2)
141121893 calloc does not always return zeroed memory
142121901 no support for syscall tkill
143n-i-bz Suppression update for Debian unstable
144122067 amd64: fcmovnu (0xDB 0xD9)
145n-i-bz ppc32: broken signal handling in cpu feature detection
146n-i-bz ppc32: rounding mode problems (improved, partial fix only)
147119482 ppc32: mtfsb1
148n-i-bz ppc32: mtocrf/mfocrf
149
150(3.1.1: 15 March 2006, vex r1597, valgrind r5771).
151
jseward43230652003-12-14 00:14:54 +0000152
sewardj4bbe9d72005-11-16 18:39:25 +0000153Release 3.1.0 (25 November 2005)
njnf63170c2005-11-12 19:09:51 +0000154~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sewardj4bbe9d72005-11-16 18:39:25 +00001553.1.0 is a feature release with a number of significant improvements:
156AMD64 support is much improved, PPC32 support is good enough to be
157usable, and the handling of memory management and address space is
158much more robust. In detail:
njnf63170c2005-11-12 19:09:51 +0000159
sewardj4bbe9d72005-11-16 18:39:25 +0000160- AMD64 support is much improved. The 64-bit vs. 32-bit issues in
161 3.0.X have been resolved, and it should "just work" now in all
162 cases. On AMD64 machines both 64-bit and 32-bit versions of
163 Valgrind are built. The right version will be invoked
164 automatically, even when using --trace-children and mixing execution
165 between 64-bit and 32-bit executables. Also, many more instructions
166 are supported.
njnf63170c2005-11-12 19:09:51 +0000167
sewardj4bbe9d72005-11-16 18:39:25 +0000168- PPC32 support is now good enough to be usable. It should work with
169 all tools, but please let us know if you have problems. Three
170 classes of CPUs are supported: integer only (no FP, no Altivec),
171 which covers embedded PPC uses, integer and FP but no Altivec
172 (G3-ish), and CPUs capable of Altivec too (G4, G5).
njnf63170c2005-11-12 19:09:51 +0000173
sewardj4bbe9d72005-11-16 18:39:25 +0000174- Valgrind's address space management has been overhauled. As a
175 result, Valgrind should be much more robust with programs that use
176 large amounts of memory. There should be many fewer "memory
177 exhausted" messages, and debug symbols should be read correctly on
178 large (eg. 300MB+) executables. On 32-bit machines the full address
179 space available to user programs (usually 3GB or 4GB) can be fully
180 utilised. On 64-bit machines up to 32GB of space is usable; when
181 using Memcheck that means your program can use up to about 14GB.
njnf63170c2005-11-12 19:09:51 +0000182
183 A side effect of this change is that Valgrind is no longer protected
184 against wild writes by the client. This feature was nice but relied
185 on the x86 segment registers and so wasn't portable.
186
187- Most users should not notice, but as part of the address space
sewardj4bbe9d72005-11-16 18:39:25 +0000188 manager change, the way Valgrind is built has been changed. Each
189 tool is now built as a statically linked stand-alone executable,
190 rather than as a shared object that is dynamically linked with the
191 core. The "valgrind" program invokes the appropriate tool depending
192 on the --tool option. This slightly increases the amount of disk
193 space used by Valgrind, but it greatly simplified many things and
194 removed Valgrind's dependence on glibc.
njnf63170c2005-11-12 19:09:51 +0000195
njn336c89d2005-11-20 18:14:04 +0000196Please note that Addrcheck and Helgrind are still not working. Work
197is underway to reinstate them (or equivalents). We apologise for the
198inconvenience.
199
njnf63170c2005-11-12 19:09:51 +0000200Other user-visible changes:
201
202- The --weird-hacks option has been renamed --sim-hints.
203
204- The --time-stamp option no longer gives an absolute date and time.
205 It now prints the time elapsed since the program began.
206
sewardj4bbe9d72005-11-16 18:39:25 +0000207- It should build with gcc-2.96.
208
njn7cce5b82005-11-16 20:12:22 +0000209- Valgrind can now run itself (see README_DEVELOPERS for how).
sewardj47058612005-11-16 19:13:13 +0000210 This is not much use to you, but it means the developers can now
211 profile Valgrind using Cachegrind. As a result a couple of
212 performance bad cases have been fixed.
213
sewardj6a5a69c2005-11-17 00:51:36 +0000214- The XML output format has changed slightly. See
215 docs/internals/xml-output.txt.
216
njn14c9add2005-11-18 17:36:01 +0000217- Core dumping has been reinstated (it was disabled in 3.0.0 and 3.0.1).
218 If your program crashes while running under Valgrind, a core file with
219 the name "vgcore.<pid>" will be created (if your settings allow core
220 file creation). Note that the floating point information is not all
221 there. If Valgrind itself crashes, the OS will create a normal core
222 file.
223
njnf63170c2005-11-12 19:09:51 +0000224The following are some user-visible changes that occurred in earlier
225versions that may not have been announced, or were announced but not
njn7cce5b82005-11-16 20:12:22 +0000226widely noticed. So we're mentioning them now.
njnf63170c2005-11-12 19:09:51 +0000227
228- The --tool flag is optional once again; if you omit it, Memcheck
229 is run by default.
230
231- The --num-callers flag now has a default value of 12. It was
232 previously 4.
233
njn7cce5b82005-11-16 20:12:22 +0000234- The --xml=yes flag causes Valgrind's output to be produced in XML
235 format. This is designed to make it easy for other programs to
236 consume Valgrind's output. The format is described in the file
njnf63170c2005-11-12 19:09:51 +0000237 docs/internals/xml-format.txt.
238
njn1f503992005-11-13 16:41:15 +0000239- The --gen-suppressions flag supports an "all" value that causes every
240 suppression to be printed without asking.
241
njnee88d282005-11-20 17:19:28 +0000242- The --log-file option no longer puts "pid" in the filename, eg. the
243 old name "foo.pid12345" is now "foo.12345".
244
njnc66077e2005-11-20 18:02:15 +0000245- There are several graphical front-ends for Valgrind, such as Valkyrie,
246 Alleyoop and Valgui. See http://www.valgrind.org/downloads/guis.html
247 for a list.
248
njnf63170c2005-11-12 19:09:51 +0000249BUGS FIXED:
250
sewardj4bbe9d72005-11-16 18:39:25 +0000251109861 amd64 hangs at startup
252110301 ditto
253111554 valgrind crashes with Cannot allocate memory
254111809 Memcheck tool doesn't start java
255111901 cross-platform run of cachegrind fails on opteron
256113468 (vgPlain_mprotect_range): Assertion 'r != -1' failed.
257 92071 Reading debugging info uses too much memory
258109744 memcheck loses track of mmap from direct ld-linux.so.2
259110183 tail of page with _end
260 82301 FV memory layout too rigid
261 98278 Infinite recursion possible when allocating memory
262108994 Valgrind runs out of memory due to 133x overhead
263115643 valgrind cannot allocate memory
264105974 vg_hashtable.c static hash table
265109323 ppc32: dispatch.S uses Altivec insn, which doesn't work on POWER.
266109345 ptrace_setregs not yet implemented for ppc
267110831 Would like to be able to run against both 32 and 64 bit
268 binaries on AMD64
269110829 == 110831
270111781 compile of valgrind-3.0.0 fails on my linux (gcc 2.X prob)
271112670 Cachegrind: cg_main.c:486 (handleOneStatement ...
272112941 vex x86: 0xD9 0xF4 (fxtract)
273110201 == 112941
274113015 vex amd64->IR: 0xE3 0x14 0x48 0x83 (jrcxz)
275113126 Crash with binaries built with -gstabs+/-ggdb
276104065 == 113126
277115741 == 113126
278113403 Partial SSE3 support on x86
279113541 vex: Grp5(x86) (alt encoding inc/dec) case 1
280113642 valgrind crashes when trying to read debug information
281113810 vex x86->IR: 66 0F F6 (66 + PSADBW == SSE PSADBW)
282113796 read() and write() do not work if buffer is in shared memory
283113851 vex x86->IR: (pmaddwd): 0x66 0xF 0xF5 0xC7
284114366 vex amd64 cannnot handle __asm__( "fninit" )
285114412 vex amd64->IR: 0xF 0xAD 0xC2 0xD3 (128-bit shift, shrdq?)
286114455 vex amd64->IR: 0xF 0xAC 0xD0 0x1 (also shrdq)
287115590: amd64->IR: 0x67 0xE3 0x9 0xEB (address size override)
288115953 valgrind svn r5042 does not build with parallel make (-j3)
289116057 maximum instruction size - VG_MAX_INSTR_SZB too small?
290116483 shmat failes with invalid argument
291102202 valgrind crashes when realloc'ing until out of memory
292109487 == 102202
293110536 == 102202
294112687 == 102202
295111724 vex amd64->IR: 0x41 0xF 0xAB (more BT{,S,R,C} fun n games)
296111748 vex amd64->IR: 0xDD 0xE2 (fucom)
297111785 make fails if CC contains spaces
298111829 vex x86->IR: sbb AL, Ib
299111851 vex x86->IR: 0x9F 0x89 (lahf/sahf)
300112031 iopl on AMD64 and README_MISSING_SYSCALL_OR_IOCTL update
301112152 code generation for Xin_MFence on x86 with SSE0 subarch
302112167 == 112152
303112789 == 112152
304112199 naked ar tool is used in vex makefile
305112501 vex x86->IR: movq (0xF 0x7F 0xC1 0xF) (mmx MOVQ)
306113583 == 112501
307112538 memalign crash
308113190 Broken links in docs/html/
309113230 Valgrind sys_pipe on x86-64 wrongly thinks file descriptors
310 should be 64bit
311113996 vex amd64->IR: fucomp (0xDD 0xE9)
312114196 vex x86->IR: out %eax,(%dx) (0xEF 0xC9 0xC3 0x90)
313114289 Memcheck fails to intercept malloc when used in an uclibc environment
314114756 mbind syscall support
315114757 Valgrind dies with assertion: Assertion 'noLargerThan > 0' failed
316114563 stack tracking module not informed when valgrind switches threads
317114564 clone() and stacks
318114565 == 114564
319115496 glibc crashes trying to use sysinfo page
320116200 enable fsetxattr, fgetxattr, and fremovexattr for amd64
njnf63170c2005-11-12 19:09:51 +0000321
sewardjae17e7e2005-11-20 19:45:30 +0000322(3.1.0RC1: 20 November 2005, vex r1466, valgrind r5224).
sewardjfa462022005-11-26 13:38:58 +0000323(3.1.0: 26 November 2005, vex r1471, valgrind r5235).
sewardjae17e7e2005-11-20 19:45:30 +0000324
njnf63170c2005-11-12 19:09:51 +0000325
sewardjcd62fe72005-08-29 13:24:51 +0000326Release 3.0.1 (29 August 2005)
327~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3283.0.1 fixes a bunch of bugs reported in 3.0.0. There is no new
329functionality. Some of the fixed bugs are critical, so if you
sewardjfa233892005-08-30 12:35:36 +0000330use/distribute 3.0.0, an upgrade to 3.0.1 is recommended. The fixed
sewardjcd62fe72005-08-29 13:24:51 +0000331bugs are:
332
333(note: "n-i-bz" means "not in bugzilla" -- this bug does not have
334 a bugzilla entry).
335
336109313 (== 110505) x86 cmpxchg8b
337n-i-bz x86: track but ignore changes to %eflags.AC (alignment check)
338110102 dis_op2_E_G(amd64)
339110202 x86 sys_waitpid(#286)
340110203 clock_getres(,0)
341110208 execve fail wrong retval
342110274 SSE1 now mandatory for x86
343110388 amd64 0xDD 0xD1
344110464 amd64 0xDC 0x1D FCOMP
345110478 amd64 0xF 0xD PREFETCH
346n-i-bz XML <unique> printing wrong
347n-i-bz Dirk r4359 (amd64 syscalls from trunk)
348110591 amd64 and x86: rdtsc not implemented properly
349n-i-bz Nick r4384 (stub implementations of Addrcheck and Helgrind)
350110652 AMD64 valgrind crashes on cwtd instruction
351110653 AMD64 valgrind crashes on sarb $0x4,foo(%rip) instruction
352110656 PATH=/usr/bin::/bin valgrind foobar stats ./fooba
353110657 Small test fixes
354110671 vex x86->IR: unhandled instruction bytes: 0xF3 0xC3 (rep ret)
355n-i-bz Nick (Cachegrind should not assert when it encounters a client
356 request.)
357110685 amd64->IR: unhandled instruction bytes: 0xE1 0x56 (loope Jb)
358110830 configuring with --host fails to build 32 bit on 64 bit target
359110875 Assertion when execve fails
360n-i-bz Updates to Memcheck manual
361n-i-bz Fixed broken malloc_usable_size()
362110898 opteron instructions missing: btq btsq btrq bsfq
363110954 x86->IR: unhandled instruction bytes: 0xE2 0xF6 (loop Jb)
364n-i-bz Make suppressions work for "???" lines in stacktraces.
365111006 bogus warnings from linuxthreads
366111092 x86: dis_Grp2(Reg): unhandled case(x86)
367111231 sctp_getladdrs() and sctp_getpaddrs() returns uninitialized
368 memory
369111102 (comment #4) Fixed 64-bit unclean "silly arg" message
370n-i-bz vex x86->IR: unhandled instruction bytes: 0x14 0x0
371n-i-bz minor umount/fcntl wrapper fixes
372111090 Internal Error running Massif
373101204 noisy warning
374111513 Illegal opcode for SSE instruction (x86 movups)
375111555 VEX/Makefile: CC is set to gcc
sewardjfa233892005-08-30 12:35:36 +0000376n-i-bz Fix XML bugs in FAQ
sewardjcd62fe72005-08-29 13:24:51 +0000377
sewardjfa233892005-08-30 12:35:36 +0000378(3.0.1: 29 August 05,
379 vex/branches/VEX_3_0_BRANCH r1367,
380 valgrind/branches/VALGRIND_3_0_BRANCH r4574).
sewardj820c7722005-08-29 13:44:43 +0000381
382
sewardjcd62fe72005-08-29 13:24:51 +0000383
sewardjec39f332005-08-02 15:28:07 +0000384Release 3.0.0 (3 August 2005)
385~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sewardjf9929e62005-08-02 21:05:58 +00003863.0.0 is a major overhaul of Valgrind. The most significant user
387visible change is that Valgrind now supports architectures other than
388x86. The new architectures it supports are AMD64 and PPC32, and the
389infrastructure is present for other architectures to be added later.
njn4a9f6f42005-07-19 23:46:08 +0000390
sewardjf9929e62005-08-02 21:05:58 +0000391AMD64 support works well, but has some shortcomings:
njn4a9f6f42005-07-19 23:46:08 +0000392
njn7b1a6a42005-07-20 04:20:44 +0000393- It generally won't be as solid as the x86 version. For example,
394 support for more obscure instructions and system calls may be missing.
395 We will fix these as they arise.
njn4a9f6f42005-07-19 23:46:08 +0000396
sewardjc371bd02005-07-27 09:55:24 +0000397- Address space may be limited; see the point about
njn7b1a6a42005-07-20 04:20:44 +0000398 position-independent executables below.
njn4a9f6f42005-07-19 23:46:08 +0000399
njn7b1a6a42005-07-20 04:20:44 +0000400- If Valgrind is built on an AMD64 machine, it will only run 64-bit
401 executables. If you want to run 32-bit x86 executables under Valgrind
402 on an AMD64, you will need to build Valgrind on an x86 machine and
403 copy it to the AMD64 machine. And it probably won't work if you do
404 something tricky like exec'ing a 32-bit program from a 64-bit program
405 while using --trace-children=yes. We hope to improve this situation
406 in the future.
407
408The PPC32 support is very basic. It may not work reliably even for
sewardjc371bd02005-07-27 09:55:24 +0000409small programs, but it's a start. Many thanks to Paul Mackerras for
410his great work that enabled this support. We are working to make
411PPC32 usable as soon as possible.
njn4a9f6f42005-07-19 23:46:08 +0000412
413Other user-visible changes:
414
sewardjec39f332005-08-02 15:28:07 +0000415- Valgrind is no longer built by default as a position-independent
416 executable (PIE), as this caused too many problems.
njn4a9f6f42005-07-19 23:46:08 +0000417
418 Without PIE enabled, AMD64 programs will only be able to access 2GB of
419 address space. We will fix this eventually, but not for the moment.
420
421 Use --enable-pie at configure-time to turn this on.
422
423- Support for programs that use stack-switching has been improved. Use
424 the --max-stackframe flag for simple cases, and the
425 VALGRIND_STACK_REGISTER, VALGRIND_STACK_DEREGISTER and
426 VALGRIND_STACK_CHANGE client requests for trickier cases.
427
njn7b1a6a42005-07-20 04:20:44 +0000428- Support for programs that use self-modifying code has been improved,
429 in particular programs that put temporary code fragments on the stack.
430 This helps for C programs compiled with GCC that use nested functions,
njne7723322005-07-24 17:19:09 +0000431 and also Ada programs. This is controlled with the --smc-check
njn7b1a6a42005-07-20 04:20:44 +0000432 flag, although the default setting should work in most cases.
njn4a9f6f42005-07-19 23:46:08 +0000433
njn7b1a6a42005-07-20 04:20:44 +0000434- Output can now be printed in XML format. This should make it easier
sewardjc371bd02005-07-27 09:55:24 +0000435 for tools such as GUI front-ends and automated error-processing
436 schemes to use Valgrind output as input. The --xml flag controls this.
437 As part of this change, ELF directory information is read from executables,
438 so absolute source file paths are available if needed.
njn4a9f6f42005-07-19 23:46:08 +0000439
440- Programs that allocate many heap blocks may run faster, due to
441 improvements in certain data structures.
442
njn7b1a6a42005-07-20 04:20:44 +0000443- Addrcheck is currently not working. We hope to get it working again
444 soon. Helgrind is still not working, as was the case for the 2.4.0
445 release.
njn4a9f6f42005-07-19 23:46:08 +0000446
sewardjc371bd02005-07-27 09:55:24 +0000447- The JITter has been completely rewritten, and is now in a separate
448 library, called Vex. This enabled a lot of the user-visible changes,
449 such as new architecture support. The new JIT unfortunately translates
450 more slowly than the old one, so programs may take longer to start.
451 We believe the code quality is produces is about the same, so once
452 started, programs should run at about the same speed. Feedback about
453 this would be useful.
454
455 On the plus side, Vex and hence Memcheck tracks value flow properly
456 through floating point and vector registers, something the 2.X line
457 could not do. That means that Memcheck is much more likely to be
458 usably accurate on vectorised code.
459
sewardjec39f332005-08-02 15:28:07 +0000460- There is a subtle change to the way exiting of threaded programs
sewardjc371bd02005-07-27 09:55:24 +0000461 is handled. In 3.0, Valgrind's final diagnostic output (leak check,
462 etc) is not printed until the last thread exits. If the last thread
463 to exit was not the original thread which started the program, any
464 other process wait()-ing on this one to exit may conclude it has
465 finished before the diagnostic output is printed. This may not be
466 what you expect. 2.X had a different scheme which avoided this
467 problem, but caused deadlocks under obscure circumstances, so we
468 are trying something different for 3.0.
469
470- Small changes in control log file naming which make it easier to
sewardjec39f332005-08-02 15:28:07 +0000471 use valgrind for debugging MPI-based programs. The relevant
472 new flags are --log-file-exactly= and --log-file-qualifier=.
sewardjc371bd02005-07-27 09:55:24 +0000473
474- As part of adding AMD64 support, DWARF2 CFI-based stack unwinding
475 support was added. In principle this means Valgrind can produce
476 meaningful backtraces on x86 code compiled with -fomit-frame-pointer
tom81868f02005-07-27 10:33:08 +0000477 providing you also compile your code with -fasynchronous-unwind-tables.
sewardjc371bd02005-07-27 09:55:24 +0000478
sewardjec39f332005-08-02 15:28:07 +0000479- The documentation build system has been completely redone.
480 The documentation masters are now in XML format, and from that
481 HTML, PostScript and PDF documentation is generated. As a result
482 the manual is now available in book form. Note that the
483 documentation in the source tarballs is pre-built, so you don't need
484 any XML processing tools to build Valgrind from a tarball.
njn4a9f6f42005-07-19 23:46:08 +0000485
486Changes that are not user-visible:
487
sewardjc371bd02005-07-27 09:55:24 +0000488- The code has been massively overhauled in order to modularise it.
489 As a result we hope it is easier to navigate and understand.
njn4a9f6f42005-07-19 23:46:08 +0000490
491- Lots of code has been rewritten.
492
sewardjf9929e62005-08-02 21:05:58 +0000493BUGS FIXED:
njn4a9f6f42005-07-19 23:46:08 +0000494
sewardj79bd9b62005-08-03 16:40:10 +0000495110046 sz == 4 assertion failed
496109810 vex amd64->IR: unhandled instruction bytes: 0xA3 0x4C 0x70 0xD7
sewardjf9929e62005-08-02 21:05:58 +0000497109802 Add a plausible_stack_size command-line parameter ?
498109783 unhandled ioctl TIOCMGET (running hw detection tool discover)
499109780 unhandled ioctl BLKSSZGET (running fdisk -l /dev/hda)
500109718 vex x86->IR: unhandled instruction: ffreep
501109429 AMD64 unhandled syscall: 127 (sigpending)
502109401 false positive uninit in strchr from ld-linux.so.2
503109385 "stabs" parse failure
504109378 amd64: unhandled instruction REP NOP
505109376 amd64: unhandled instruction LOOP Jb
506109363 AMD64 unhandled instruction bytes
507109362 AMD64 unhandled syscall: 24 (sched_yield)
508109358 fork() won't work with valgrind-3.0 SVN
509109332 amd64 unhandled instruction: ADC Ev, Gv
510109314 Bogus memcheck report on amd64
511108883 Crash; vg_memory.c:905 (vgPlain_init_shadow_range):
512 Assertion `vgPlain_defined_init_shadow_page()' failed.
513108349 mincore syscall parameter checked incorrectly
514108059 build infrastructure: small update
515107524 epoll_ctl event parameter checked on EPOLL_CTL_DEL
516107123 Vex dies with unhandled instructions: 0xD9 0x31 0xF 0xAE
517106841 auxmap & openGL problems
518106713 SDL_Init causes valgrind to exit
519106352 setcontext and makecontext not handled correctly
520106293 addresses beyond initial client stack allocation
521 not checked in VALGRIND_DO_LEAK_CHECK
522106283 PIE client programs are loaded at address 0
523105831 Assertion `vgPlain_defined_init_shadow_page()' failed.
524105039 long run-times probably due to memory manager
525104797 valgrind needs to be aware of BLKGETSIZE64
526103594 unhandled instruction: FICOM
527103320 Valgrind 2.4.0 fails to compile with gcc 3.4.3 and -O0
528103168 potentially memory leak in coregrind/ume.c
529102039 bad permissions for mapped region at address 0xB7C73680
530101881 weird assertion problem
531101543 Support fadvise64 syscalls
53275247 x86_64/amd64 support (the biggest "bug" we have ever fixed)
njn4a9f6f42005-07-19 23:46:08 +0000533
sewardj9a919512005-08-03 17:01:51 +0000534(3.0RC1: 27 July 05, vex r1303, valgrind r4283).
sewardj1346e132005-08-03 20:42:06 +0000535(3.0.0: 3 August 05, vex r1313, valgrind r4316).
sewardjbfa2b992005-07-27 17:49:17 +0000536
537
538
njn8c927302005-03-12 16:45:01 +0000539Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
njn1aa5ae42005-03-26 16:04:27 +0000540~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5412.4.0 brings many significant changes and bug fixes. The most
542significant user-visible change is that we no longer supply our own
543pthread implementation. Instead, Valgrind is finally capable of
544running the native thread library, either LinuxThreads or NPTL.
njn8c927302005-03-12 16:45:01 +0000545
njn1aa5ae42005-03-26 16:04:27 +0000546This means our libpthread has gone, along with the bugs associated
547with it. Valgrind now supports the kernel's threading syscalls, and
548lets you use your standard system libpthread. As a result:
njn8c927302005-03-12 16:45:01 +0000549
njn1aa5ae42005-03-26 16:04:27 +0000550* There are many fewer system dependencies and strange library-related
551 bugs. There is a small performance improvement, and a large
552 stability improvement.
njn8c927302005-03-12 16:45:01 +0000553
njn1aa5ae42005-03-26 16:04:27 +0000554* On the downside, Valgrind can no longer report misuses of the POSIX
555 PThreads API. It also means that Helgrind currently does not work.
556 We hope to fix these problems in a future release.
njn8c927302005-03-12 16:45:01 +0000557
njn1aa5ae42005-03-26 16:04:27 +0000558Note that running the native thread libraries does not mean Valgrind
559is able to provide genuine concurrent execution on SMPs. We still
560impose the restriction that only one thread is running at any given
561time.
njn8c927302005-03-12 16:45:01 +0000562
njn1aa5ae42005-03-26 16:04:27 +0000563There are many other significant changes too:
njn8c927302005-03-12 16:45:01 +0000564
njn1aa5ae42005-03-26 16:04:27 +0000565* Memcheck is (once again) the default tool.
njn8c927302005-03-12 16:45:01 +0000566
njn1aa5ae42005-03-26 16:04:27 +0000567* The default stack backtrace is now 12 call frames, rather than 4.
njn8c927302005-03-12 16:45:01 +0000568
njn1aa5ae42005-03-26 16:04:27 +0000569* Suppressions can have up to 25 call frame matches, rather than 4.
njn8c927302005-03-12 16:45:01 +0000570
njn1aa5ae42005-03-26 16:04:27 +0000571* Memcheck and Addrcheck use less memory. Under some circumstances,
572 they no longer allocate shadow memory if there are large regions of
573 memory with the same A/V states - such as an mmaped file.
njn8c927302005-03-12 16:45:01 +0000574
njn1aa5ae42005-03-26 16:04:27 +0000575* The memory-leak detector in Memcheck and Addrcheck has been
576 improved. It now reports more types of memory leak, including
577 leaked cycles. When reporting leaked memory, it can distinguish
578 between directly leaked memory (memory with no references), and
579 indirectly leaked memory (memory only referred to by other leaked
580 memory).
njn8c927302005-03-12 16:45:01 +0000581
njn1aa5ae42005-03-26 16:04:27 +0000582* Memcheck's confusion over the effect of mprotect() has been fixed:
583 previously mprotect could erroneously mark undefined data as
584 defined.
njn8c927302005-03-12 16:45:01 +0000585
njn1aa5ae42005-03-26 16:04:27 +0000586* Signal handling is much improved and should be very close to what
587 you get when running natively.
588
589 One result of this is that Valgrind observes changes to sigcontexts
590 passed to signal handlers. Such modifications will take effect when
591 the signal returns. You will need to run with --single-step=yes to
592 make this useful.
njn8c927302005-03-12 16:45:01 +0000593
594* Valgrind is built in Position Independent Executable (PIE) format if
njn1aa5ae42005-03-26 16:04:27 +0000595 your toolchain supports it. This allows it to take advantage of all
njn8c927302005-03-12 16:45:01 +0000596 the available address space on systems with 4Gbyte user address
597 spaces.
598
599* Valgrind can now run itself (requires PIE support).
600
njn1aa5ae42005-03-26 16:04:27 +0000601* Syscall arguments are now checked for validity. Previously all
602 memory used by syscalls was checked, but now the actual values
603 passed are also checked.
njn8c927302005-03-12 16:45:01 +0000604
njn1aa5ae42005-03-26 16:04:27 +0000605* Syscall wrappers are more robust against bad addresses being passed
606 to syscalls: they will fail with EFAULT rather than killing Valgrind
607 with SIGSEGV.
njn8c927302005-03-12 16:45:01 +0000608
njn1aa5ae42005-03-26 16:04:27 +0000609* Because clone() is directly supported, some non-pthread uses of it
610 will work. Partial sharing (where some resources are shared, and
611 some are not) is not supported.
612
613* open() and readlink() on /proc/self/exe are supported.
614
615BUGS FIXED:
616
61788520 pipe+fork+dup2 kills the main program
61888604 Valgrind Aborts when using $VALGRIND_OPTS and user progra...
61988614 valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt...
62088703 Stabs parser fails to handle ";"
62188886 ioctl wrappers for TIOCMBIS and TIOCMBIC
62289032 valgrind pthread_cond_timedwait fails
62389106 the 'impossible' happened
62489139 Missing sched_setaffinity & sched_getaffinity
62589198 valgrind lacks support for SIOCSPGRP and SIOCGPGRP
62689263 Missing ioctl translations for scsi-generic and CD playing
62789440 tests/deadlock.c line endings
62889481 `impossible' happened: EXEC FAILED
62989663 valgrind 2.2.0 crash on Redhat 7.2
63089792 Report pthread_mutex_lock() deadlocks instead of returnin...
63190111 statvfs64 gives invalid error/warning
63290128 crash+memory fault with stabs generated by gnat for a run...
63390778 VALGRIND_CHECK_DEFINED() not as documented in memcheck.h
63490834 cachegrind crashes at end of program without reporting re...
63591028 valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio...
63691162 valgrind crash while debugging drivel 1.2.1
63791199 Unimplemented function
63891325 Signal routing does not propagate the siginfo structure
63991599 Assertion `cv == ((void *)0)'
64091604 rw_lookup clears orig and sends the NULL value to rw_new
64191821 Small problems building valgrind with $top_builddir ne $t...
64291844 signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec...
64392264 UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared
64492331 per-target flags necessitate AM_PROG_CC_C_O
64592420 valgrind doesn't compile with linux 2.6.8.1/9
64692513 Valgrind 2.2.0 generates some warning messages
64792528 vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed.
64893096 unhandled ioctl 0x4B3A and 0x5601
64993117 Tool and core interface versions do not match
65093128 Can't run valgrind --tool=memcheck because of unimplement...
65193174 Valgrind can crash if passed bad args to certain syscalls
65293309 Stack frame in new thread is badly aligned
65393328 Wrong types used with sys_sigprocmask()
65493763 /usr/include/asm/msr.h is missing
65593776 valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser...
65693810 fcntl() argument checking a bit too strict
65794378 Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed.
65894429 valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3
65994645 Impossible happened: PINSRW mem
66094953 valgrind: the `impossible' happened: SIGSEGV
66195667 Valgrind does not work with any KDE app
66296243 Assertion 'res==0' failed
66396252 stage2 loader of valgrind fails to allocate memory
66496520 All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ...
66596660 ioctl CDROMREADTOCENTRY causes bogus warnings
66696747 After looping in a segfault handler, the impossible happens
66796923 Zero sized arrays crash valgrind trace back with SIGFPE
66896948 valgrind stops with assertion failure regarding mmap2
66996966 valgrind fails when application opens more than 16 sockets
67097398 valgrind: vg_libpthread.c:2667 Assertion failed
67197407 valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `...
67297427 "Warning: invalid file descriptor -1 in syscall close()" ...
67397785 missing backtrace
67497792 build in obj dir fails - autoconf / makefile cleanup
67597880 pthread_mutex_lock fails from shared library (special ker...
67697975 program aborts without ang VG messages
67798129 Failed when open and close file 230000 times using stdio
67898175 Crashes when using valgrind-2.2.0 with a program using al...
67998288 Massif broken
68098303 UNIMPLEMENTED FUNCTION pthread_condattr_setpshared
68198630 failed--compilation missing warnings.pm, fails to make he...
68298756 Cannot valgrind signal-heavy kdrive X server
68398966 valgrinding the JVM fails with a sanity check assertion
68499035 Valgrind crashes while profiling
68599142 loops with message "Signal 11 being dropped from thread 0...
68699195 threaded apps crash on thread start (using QThread::start...
68799348 Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off...
68899568 False negative due to mishandling of mprotect
68999738 valgrind memcheck crashes on program that uses sigitimer
69099923 0-sized allocations are reported as leaks
69199949 program seg faults after exit()
692100036 "newSuperblock's request for 1048576 bytes failed"
693100116 valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ...
694100486 memcheck reports "valgrind: the `impossible' happened: V...
695100833 second call to "mremap" fails with EINVAL
696101156 (vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1...
697101173 Assertion `recDepth >= 0 && recDepth < 500' failed
698101291 creating threads in a forked process fails
699101313 valgrind causes different behavior when resizing a window...
700101423 segfault for c++ array of floats
701101562 valgrind massif dies on SIGINT even with signal handler r...
702
njn8c927302005-03-12 16:45:01 +0000703
jseward34ed74f2004-08-30 18:04:42 +0000704Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0
705~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jseward7d180d92004-08-30 18:15:37 +00007062.2.0 brings nine months worth of improvements and bug fixes. We
707believe it to be a worthy successor to 2.0.0. There are literally
708hundreds of bug fixes and minor improvements. There are also some
709fairly major user-visible changes:
710
711* A complete overhaul of handling of system calls and signals, and
712 their interaction with threads. In general, the accuracy of the
713 system call, thread and signal simulations is much improved:
714
715 - Blocking system calls behave exactly as they do when running
716 natively (not on valgrind). That is, if a syscall blocks only the
717 calling thread when running natively, than it behaves the same on
718 valgrind. No more mysterious hangs because V doesn't know that some
719 syscall or other, should block only the calling thread.
720
721 - Interrupted syscalls should now give more faithful results.
722
723 - Signal contexts in signal handlers are supported.
724
725* Improvements to NPTL support to the extent that V now works
726 properly on NPTL-only setups.
727
728* Greater isolation between Valgrind and the program being run, so
729 the program is less likely to inadvertently kill Valgrind by
730 doing wild writes.
731
732* Massif: a new space profiling tool. Try it! It's cool, and it'll
733 tell you in detail where and when your C/C++ code is allocating heap.
734 Draws pretty .ps pictures of memory use against time. A potentially
735 powerful tool for making sense of your program's space use.
736
737* File descriptor leakage checks. When enabled, Valgrind will print out
738 a list of open file descriptors on exit.
739
740* Improved SSE2/SSE3 support.
741
jseward2eb002b2004-08-31 00:14:02 +0000742* Time-stamped output; use --time-stamp=yes
743
jseward34ed74f2004-08-30 18:04:42 +0000744
745
746Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.1.2
747~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7482.2.0 is not much different from 2.1.2, released seven weeks ago.
749A number of bugs have been fixed, most notably #85658, which gave
750problems for quite a few people. There have been many internal
751cleanups, but those are not user visible.
752
753The following bugs have been fixed since 2.1.2:
754
75585658 Assert in coregrind/vg_libpthread.c:2326 (open64) !=
756 (void*)0 failed
757 This bug was reported multiple times, and so the following
758 duplicates of it are also fixed: 87620, 85796, 85935, 86065,
759 86919, 86988, 87917, 88156
760
76180716 Semaphore mapping bug caused by unmap (sem_destroy)
762 (Was fixed prior to 2.1.2)
763
76486987 semctl and shmctl syscalls family is not handled properly
765
76686696 valgrind 2.1.2 + RH AS2.1 + librt
767
76886730 valgrind locks up at end of run with assertion failure
769 in __pthread_unwind
770
77186641 memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1
772 (also fixes 74298, a duplicate of this)
773
77485947 MMX/SSE unhandled instruction 'sfence'
775
77684978 Wrong error "Conditional jump or move depends on
777 uninitialised value" resulting from "sbbl %reg, %reg"
778
77986254 ssort() fails when signed int return type from comparison is
780 too small to handle result of unsigned int subtraction
781
78287089 memalign( 4, xxx) makes valgrind assert
783
jseward2eb002b2004-08-31 00:14:02 +000078486407 Add support for low-level parallel port driver ioctls.
jseward34ed74f2004-08-30 18:04:42 +0000785
78670587 Add timestamps to Valgrind output? (wishlist)
787
78884937 vg_libpthread.c:2505 (se_remap): Assertion `res == 0'
789 (fixed prior to 2.1.2)
790
79186317 cannot load libSDL-1.2.so.0 using valgrind
792
79386989 memcpy from mac_replace_strmem.c complains about
794 uninitialized pointers passed when length to copy is zero
795
79685811 gnu pascal symbol causes segmentation fault; ok in 2.0.0
797
79879138 writing to sbrk()'d memory causes segfault
799
80077369 sched deadlock while signal received during pthread_join
801 and the joined thread exited
802
80388115 In signal handler for SIGFPE, siginfo->si_addr is wrong
804 under Valgrind
805
80678765 Massif crashes on app exit if FP exceptions are enabled
807
808Additionally there are the following changes, which are not
809connected to any bug report numbers, AFAICS:
810
811* Fix scary bug causing mis-identification of SSE stores vs
812 loads and so causing memcheck to sometimes give nonsense results
813 on SSE code.
814
815* Add support for the POSIX message queue system calls.
816
817* Fix to allow 32-bit Valgrind to run on AMD64 boxes. Note: this does
818 NOT allow Valgrind to work with 64-bit executables - only with 32-bit
819 executables on an AMD64 box.
820
821* At configure time, only check whether linux/mii.h can be processed
822 so that we don't generate ugly warnings by trying to compile it.
823
jseward2eb002b2004-08-31 00:14:02 +0000824* Add support for POSIX clocks and timers.
825
jseward34ed74f2004-08-30 18:04:42 +0000826
827
jseward9cd978c2004-07-17 13:38:12 +0000828Developer (cvs head) release 2.1.2 (18 July 2004)
jsewardbd0a6e42004-07-17 12:19:43 +0000829~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
8302.1.2 contains four months worth of bug fixes and refinements.
jseward9cd978c2004-07-17 13:38:12 +0000831Although officially a developer release, we believe it to be stable
832enough for widespread day-to-day use. 2.1.2 is pretty good, so try it
833first, although there is a chance it won't work. If so then try 2.0.0
834and tell us what went wrong." 2.1.2 fixes a lot of problems present
835in 2.0.0 and is generally a much better product.
jsewardbd0a6e42004-07-17 12:19:43 +0000836
jseward9cd978c2004-07-17 13:38:12 +0000837Relative to 2.1.1, a large number of minor problems with 2.1.1 have
838been fixed, and so if you use 2.1.1 you should try 2.1.2. Users of
839the last stable release, 2.0.0, might also want to try this release.
jsewardbd0a6e42004-07-17 12:19:43 +0000840
841The following bugs, and probably many more, have been fixed. These
842are listed at http://bugs.kde.org. Reporting a bug for valgrind in
843the http://bugs.kde.org is much more likely to get you a fix than
844mailing developers directly, so please continue to keep sending bugs
845there.
846
84776869 Crashes when running any tool under Fedora Core 2 test1
848 This fixes the problem with returning from a signal handler
jseward0400d4d2004-07-17 23:26:46 +0000849 when VDSOs are turned off in FC2.
jsewardbd0a6e42004-07-17 12:19:43 +0000850
jseward0400d4d2004-07-17 23:26:46 +000085169508 java 1.4.2 client fails with erroneous "stack size too small".
852 This fix makes more of the pthread stack attribute related
853 functions work properly. Java still doesn't work though.
jsewardbd0a6e42004-07-17 12:19:43 +0000854
85571906 malloc alignment should be 8, not 4
856 All memory returned by malloc/new etc is now at least
857 8-byte aligned.
858
jsewarda6017a42004-07-17 23:44:35 +000085981970 vg_alloc_ThreadState: no free slots available
860 (closed because the workaround is simple: increase
861 VG_N_THREADS, rebuild and try again.)
862
jsewardbd0a6e42004-07-17 12:19:43 +000086378514 Conditional jump or move depends on uninitialized value(s)
864 (a slight mishanding of FP code in memcheck)
865
jsewarda6017a42004-07-17 23:44:35 +000086677952 pThread Support (crash) (due to initialisation-ordering probs)
867 (also 85118)
868
jsewardbd0a6e42004-07-17 12:19:43 +000086980942 Addrcheck wasn't doing overlap checking as it should.
87078048 return NULL on malloc/new etc failure, instead of asserting
87173655 operator new() override in user .so files often doesn't get picked up
87283060 Valgrind does not handle native kernel AIO
87369872 Create proper coredumps after fatal signals
87482026 failure with new glibc versions: __libc_* functions are not exported
87570344 UNIMPLEMENTED FUNCTION: tcdrain
87681297 Cancellation of pthread_cond_wait does not require mutex
87782872 Using debug info from additional packages (wishlist)
87883025 Support for ioctls FIGETBSZ and FIBMAP
87983340 Support for ioctl HDIO_GET_IDENTITY
88079714 Support for the semtimedop system call.
88177022 Support for ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO
88282098 hp2ps ansification (wishlist)
88383573 Valgrind SIGSEGV on execve
88482999 show which cmdline option was erroneous (wishlist)
88583040 make valgrind VPATH and distcheck-clean (wishlist)
jsewarda6017a42004-07-17 23:44:35 +000088683998 Assertion `newfd > vgPlain_max_fd' failed (see below)
88782722 Unchecked mmap in as_pad leads to mysterious failures later
88878958 memcheck seg faults while running Mozilla
jsewarda2c08002004-07-18 09:24:57 +000088985416 Arguments with colon (e.g. --logsocket) ignored
jsewardbd0a6e42004-07-17 12:19:43 +0000890
891
892Additionally there are the following changes, which are not
893connected to any bug report numbers, AFAICS:
894
895* Rearranged address space layout relative to 2.1.1, so that
896 Valgrind/tools will run out of memory later than currently in many
897 circumstances. This is good news esp. for Calltree. It should
898 be possible for client programs to allocate over 800MB of
899 memory when using memcheck now.
900
jseward9cd978c2004-07-17 13:38:12 +0000901* Improved checking when laying out memory. Should hopefully avoid
902 the random segmentation faults that 2.1.1 sometimes caused.
903
jsewardbd0a6e42004-07-17 12:19:43 +0000904* Support for Fedora Core 2 and SuSE 9.1. Improvements to NPTL
905 support to the extent that V now works properly on NPTL-only setups.
906
907* Renamed the following options:
908 --logfile-fd --> --log-fd
909 --logfile --> --log-file
910 --logsocket --> --log-socket
911 to be consistent with each other and other options (esp. --input-fd).
912
913* Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and
914 improve the checking of other interface related ioctls.
915
jsewardbd0a6e42004-07-17 12:19:43 +0000916* Fix building with gcc-3.4.1.
917
918* Remove limit on number of semaphores supported.
919
jsewardbd0a6e42004-07-17 12:19:43 +0000920* Add support for syscalls: set_tid_address (258), acct (51).
921
922* Support instruction "repne movs" -- not official but seems to occur.
923
924* Implement an emulated soft limit for file descriptors in addition to
925 the current reserved area, which effectively acts as a hard limit. The
926 setrlimit system call now simply updates the emulated limits as best
927 as possible - the hard limit is not allowed to move at all and just
928 returns EPERM if you try and change it. This should stop reductions
929 in the soft limit causing assertions when valgrind tries to allocate
930 descriptors from the reserved area.
jsewarda6017a42004-07-17 23:44:35 +0000931 (This actually came from bug #83998).
jsewardbd0a6e42004-07-17 12:19:43 +0000932
nethercote76e8fd92004-07-21 10:37:31 +0000933* Major overhaul of Cachegrind implementation. First user-visible change
nethercote5e63bfb2004-07-17 12:49:53 +0000934 is that cachegrind.out files are now typically 90% smaller than they
nethercote76e8fd92004-07-21 10:37:31 +0000935 used to be; code annotation times are correspondingly much smaller.
936 Second user-visible change is that hit/miss counts for code that is
937 unloaded at run-time is no longer dumped into a single "discard" pile,
938 but accurately preserved.
jsewardbd0a6e42004-07-17 12:19:43 +0000939
940* Client requests for telling valgrind about memory pools.
941
942
943
jseward9cd978c2004-07-17 13:38:12 +0000944Developer (cvs head) release 2.1.1 (12 March 2004)
945~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jsewardbd0a6e42004-07-17 12:19:43 +00009462.1.1 contains some internal structural changes needed for V's
jsewarde3e77042004-03-12 21:07:05 +0000947long-term future. These don't affect end-users. Most notable
948user-visible changes are:
949
950* Greater isolation between Valgrind and the program being run, so
951 the program is less likely to inadvertently kill Valgrind by
952 doing wild writes.
953
954* Massif: a new space profiling tool. Try it! It's cool, and it'll
955 tell you in detail where and when your C/C++ code is allocating heap.
956 Draws pretty .ps pictures of memory use against time. A potentially
957 powerful tool for making sense of your program's space use.
958
959* Fixes for many bugs, including support for more SSE2/SSE3 instructions,
960 various signal/syscall things, and various problems with debug
961 info readers.
962
963* Support for glibc-2.3.3 based systems.
964
965We are now doing automatic overnight build-and-test runs on a variety
966of distros. As a result, we believe 2.1.1 builds and runs on:
967Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9.
968
969
970The following bugs, and probably many more, have been fixed. These
971are listed at http://bugs.kde.org. Reporting a bug for valgrind in
972the http://bugs.kde.org is much more likely to get you a fix than
973mailing developers directly, so please continue to keep sending bugs
974there.
975
97669616 glibc 2.3.2 w/NPTL is massively different than what valgrind expects
97769856 I don't know how to instrument MMXish stuff (Helgrind)
97873892 valgrind segfaults starting with Objective-C debug info
979 (fix for S-type stabs)
98073145 Valgrind complains too much about close(<reserved fd>)
98173902 Shadow memory allocation seems to fail on RedHat 8.0
98268633 VG_N_SEMAPHORES too low (V itself was leaking semaphores)
98375099 impossible to trace multiprocess programs
98476839 the `impossible' happened: disInstr: INT but not 0x80 !
98576762 vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed.
98676747 cannot include valgrind.h in c++ program
98776223 parsing B(3,10) gave NULL type => impossible happens
98875604 shmdt handling problem
98976416 Problems with gcc 3.4 snap 20040225
99075614 using -gstabs when building your programs the `impossible' happened
99175787 Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET,
99275294 gcc 3.4 snapshot's libstdc++ have unsupported instructions.
993 (REP RET)
99473326 vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed.
99572596 not recognizing __libc_malloc
99669489 Would like to attach ddd to running program
99772781 Cachegrind crashes with kde programs
99873055 Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes)
99973026 Descriptor leak check reports port numbers wrongly
100071705 README_MISSING_SYSCALL_OR_IOCTL out of date
100172643 Improve support for SSE/SSE2 instructions
100272484 valgrind leaves it's own signal mask in place when execing
100372650 Signal Handling always seems to restart system calls
100472006 The mmap system call turns all errors in ENOMEM
100571781 gdb attach is pretty useless
100671180 unhandled instruction bytes: 0xF 0xAE 0x85 0xE8
100769886 writes to zero page cause valgrind to assert on exit
100871791 crash when valgrinding gimp 1.3 (stabs reader problem)
100969783 unhandled syscall: 218
101069782 unhandled instruction bytes: 0x66 0xF 0x2B 0x80
101170385 valgrind fails if the soft file descriptor limit is less
1012 than about 828
101369529 "rep; nop" should do a yield
101470827 programs with lots of shared libraries report "mmap failed"
1015 for some of them when reading symbols
101671028 glibc's strnlen is optimised enough to confuse valgrind
1017
1018
1019
1020
jseward43230652003-12-14 00:14:54 +00001021Unstable (cvs head) release 2.1.0 (15 December 2003)
1022~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1023For whatever it's worth, 2.1.0 actually seems pretty darn stable to me
1024(Julian). It looks eminently usable, and given that it fixes some
1025significant bugs, may well be worth using on a day-to-day basis.
10262.1.0 is known to build and pass regression tests on: SuSE 9, SuSE
10278.2, RedHat 8.
1028
10292.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of
1030handling of system calls and signals, and their interaction with
1031threads. In general, the accuracy of the system call, thread and
1032signal simulations is much improved. Specifically:
1033
1034- Blocking system calls behave exactly as they do when running
1035 natively (not on valgrind). That is, if a syscall blocks only the
1036 calling thread when running natively, than it behaves the same on
1037 valgrind. No more mysterious hangs because V doesn't know that some
1038 syscall or other, should block only the calling thread.
1039
1040- Interrupted syscalls should now give more faithful results.
1041
1042- Finally, signal contexts in signal handlers are supported. As a
1043 result, konqueror on SuSE 9 no longer segfaults when notified of
1044 file changes in directories it is watching.
1045
1046Other changes:
1047
1048- Robert Walsh's file descriptor leakage checks. When enabled,
1049 Valgrind will print out a list of open file descriptors on
1050 exit. Along with each file descriptor, Valgrind prints out a stack
1051 backtrace of where the file was opened and any details relating to the
1052 file descriptor such as the file name or socket details.
1053 To use, give: --track-fds=yes
1054
1055- Implemented a few more SSE/SSE2 instructions.
1056
1057- Less crud on the stack when you do 'where' inside a GDB attach.
1058
1059- Fixed the following bugs:
1060 68360: Valgrind does not compile against 2.6.0-testX kernels
1061 68525: CVS head doesn't compile on C90 compilers
1062 68566: pkgconfig support (wishlist)
1063 68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr)
1064 69140: valgrind not able to explicitly specify a path to a binary.
1065 69432: helgrind asserts encountering a MutexErr when there are
1066 EraserErr suppressions
1067
jseward0b12daf2003-12-14 14:35:28 +00001068- Increase the max size of the translation cache from 200k average bbs
1069 to 300k average bbs. Programs on the size of OOo (680m17) are
1070 thrashing the cache at the smaller size, creating large numbers of
1071 retranslations and wasting significant time as a result.
1072
jseward43230652003-12-14 00:14:54 +00001073
1074
1075Stable release 2.0.0 (5 Nov 2003)
1076~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1077
10782.0.0 improves SSE/SSE2 support, fixes some minor bugs, and
1079improves support for SuSE 9 and the Red Hat "Severn" beta.
1080
1081- Further improvements to SSE/SSE2 support. The entire test suite of
1082 the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1
1083 20030307Z '-g -O -xW' now works. I think this gives pretty good
1084 coverage of SSE/SSE2 floating point instructions, or at least the
1085 subset emitted by Icc.
1086
1087- Also added support for the following instructions:
1088 MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS
1089 PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS).
1090
1091- CFI support for GDB version 6. Needed to enable newer GDBs
1092 to figure out where they are when using --gdb-attach=yes.
1093
1094- Fix this:
1095 mc_translate.c:1091 (memcheck_instrument): Assertion
1096 `u_in->size == 4 || u_in->size == 16' failed.
1097
1098- Return an error rather than panicing when given a bad socketcall.
1099
1100- Fix checking of syscall rt_sigtimedwait().
1101
1102- Implement __NR_clock_gettime (syscall 265). Needed on Red Hat Severn.
1103
1104- Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n'
1105 bytes long, when it could be shorter, which could cause false
1106 positives.
1107
1108- Support use of select() for very large numbers of file descriptors.
1109
1110- Don't fail silently if the executable is statically linked, or is
1111 setuid/setgid. Print an error message instead.
1112
1113- Support for old DWARF-1 format line number info.
1114
1115
1116
1117Snapshot 20031012 (12 October 2003)
1118~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1119
1120Three months worth of bug fixes, roughly. Most significant single
1121change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
1122
112320031012 builds on Red Hat Fedora ("Severn") but doesn't really work
1124(curiosly, mozilla runs OK, but a modest "ls -l" bombs). I hope to
1125get a working version out soon. It may or may not work ok on the
1126forthcoming SuSE 9; I hear positive noises about it but haven't been
1127able to verify this myself (not until I get hold of a copy of 9).
1128
1129A detailed list of changes, in no particular order:
1130
1131- Describe --gen-suppressions in the FAQ.
1132
1133- Syscall __NR_waitpid supported.
1134
1135- Minor MMX bug fix.
1136
1137- -v prints program's argv[] at startup.
1138
1139- More glibc-2.3 suppressions.
1140
1141- Suppressions for stack underrun bug(s) in the c++ support library
1142 distributed with Intel Icc 7.0.
1143
1144- Fix problems reading /proc/self/maps.
1145
1146- Fix a couple of messages that should have been suppressed by -q,
1147 but weren't.
1148
1149- Make Addrcheck understand "Overlap" suppressions.
1150
1151- At startup, check if program is statically linked and bail out if so.
1152
1153- Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
1154
1155- Memcheck/addrcheck: minor speed optimisations
1156
1157- Handle syscall __NR_brk more correctly than before.
1158
1159- Fixed incorrect allocate/free mismatch errors when using
1160 operator new(unsigned, std::nothrow_t const&)
1161 operator new[](unsigned, std::nothrow_t const&)
1162
1163- Support POSIX pthread spinlocks.
1164
1165- Fixups for clean compilation with gcc-3.3.1.
daywalker5d945de2003-09-26 00:32:53 +00001166
1167- Implemented more opcodes:
1168 - push %es
1169 - push %ds
1170 - pop %es
1171 - pop %ds
1172 - movntq
1173 - sfence
1174 - pshufw
1175 - pavgb
1176 - ucomiss
1177 - enter
daywalkerb18d2532003-09-27 20:15:01 +00001178 - mov imm32, %esp
1179 - all "in" and "out" opcodes
daywalker79aad842003-09-30 22:58:12 +00001180 - inc/dec %esp
jseward43230652003-12-14 00:14:54 +00001181 - A whole bunch of SSE/SSE2 instructions
daywalker5d945de2003-09-26 00:32:53 +00001182
jseward43230652003-12-14 00:14:54 +00001183- Memcheck: don't bomb on SSE/SSE2 code.
daywalker5d945de2003-09-26 00:32:53 +00001184
sewardj90238792003-05-05 00:23:42 +00001185
sewardj945f39f2003-07-25 21:11:40 +00001186Snapshot 20030725 (25 July 2003)
1187~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1188
1189Fixes some minor problems in 20030716.
1190
1191- Fix bugs in overlap checking for strcpy/memcpy etc.
1192
1193- Do overlap checking with Addrcheck as well as Memcheck.
1194
1195- Fix this:
1196 Memcheck: the `impossible' happened:
1197 get_error_name: unexpected type
1198
1199- Install headers needed to compile new skins.
1200
sewardje3dd2e02003-07-27 08:04:48 +00001201- Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD
sewardj945f39f2003-07-25 21:11:40 +00001202 passed to non-traced children.
1203
sewardjb9eda952003-07-26 21:39:05 +00001204- Fix file descriptor leak in valgrind-listener.
1205
sewardje3dd2e02003-07-27 08:04:48 +00001206- Fix longstanding bug in which the allocation point of a
1207 block resized by realloc was not correctly set. This may
1208 have caused confusing error messages.
sewardj945f39f2003-07-25 21:11:40 +00001209
1210
sewardj626fd892003-07-16 20:10:26 +00001211Snapshot 20030716 (16 July 2003)
sewardj9d916ed2003-07-14 23:38:40 +00001212~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1213
sewardj626fd892003-07-16 20:10:26 +0000121420030716 is a snapshot of our current CVS head (development) branch.
sewardj9d916ed2003-07-14 23:38:40 +00001215This is the branch which will become valgrind-2.0. It contains
1216significant enhancements over the 1.9.X branch.
1217
1218Despite this being a snapshot of the CVS head, it is believed to be
1219quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so
1220-- and therefore suitable for widespread use. Please let us know asap
1221if it causes problems for you.
1222
1223Two reasons for releasing a snapshot now are:
1224
1225- It's been a while since 1.9.6, and this snapshot fixes
1226 various problems that 1.9.6 has with threaded programs
1227 on glibc-2.3.X based systems.
1228
1229- So as to make available improvements in the 2.0 line.
1230
sewardj626fd892003-07-16 20:10:26 +00001231Major changes in 20030716, as compared to 1.9.6:
sewardj9d916ed2003-07-14 23:38:40 +00001232
1233- More fixes to threading support on glibc-2.3.1 and 2.3.2-based
1234 systems (SuSE 8.2, Red Hat 9). If you have had problems
1235 with inconsistent/illogical behaviour of errno, h_errno or the DNS
sewardj626fd892003-07-16 20:10:26 +00001236 resolver functions in threaded programs, 20030716 should improve
sewardj9d916ed2003-07-14 23:38:40 +00001237 matters. This snapshot seems stable enough to run OpenOffice.org
1238 1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big
1239 threaded app if ever I saw one.
1240
1241- Automatic generation of suppression records; you no longer
1242 need to write them by hand. Use --gen-suppressions=yes.
1243
sewardj21511802003-07-22 17:47:42 +00001244- strcpy/memcpy/etc check their arguments for overlaps, when
1245 running with the Memcheck or Addrcheck skins.
1246
1247- malloc_usable_size() is now supported.
1248
1249- new client requests:
1250 - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS:
1251 useful with regression testing
1252 - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions
1253 on real CPU (use with caution!)
1254
sewardj9d916ed2003-07-14 23:38:40 +00001255- The GDB attach mechanism is more flexible. Allow the GDB to
1256 be run to be specified by --gdb-path=/path/to/gdb, and specify
1257 which file descriptor V will read its input from with
1258 --input-fd=<number>.
1259
sewardj21511802003-07-22 17:47:42 +00001260- Cachegrind gives more accurate results (wasn't tracking instructions in
1261 malloc() and friends previously, is now).
1262
sewardj9d916ed2003-07-14 23:38:40 +00001263- Complete support for the MMX instruction set.
1264
1265- Partial support for the SSE and SSE2 instruction sets. Work for this
1266 is ongoing. About half the SSE/SSE2 instructions are done, so
1267 some SSE based programs may work. Currently you need to specify
1268 --skin=addrcheck. Basically not suitable for real use yet.
1269
1270- Significant speedups (10%-20%) for standard memory checking.
1271
1272- Fix assertion failure in pthread_once().
1273
1274- Fix this:
1275 valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select):
1276 Assertion `ms_end >= ms_now' failed.
1277
1278- Implement pthread_mutexattr_setpshared.
1279
1280- Understand Pentium 4 branch hints. Also implemented a couple more
1281 obscure x86 instructions.
1282
1283- Lots of other minor bug fixes.
1284
sewardj626fd892003-07-16 20:10:26 +00001285- We have a decent regression test system, for the first time.
1286 This doesn't help you directly, but it does make it a lot easier
1287 for us to track the quality of the system, especially across
1288 multiple linux distributions.
1289
1290 You can run the regression tests with 'make regtest' after 'make
1291 install' completes. On SuSE 8.2 and Red Hat 9 I get this:
1292
1293 == 84 tests, 0 stderr failures, 0 stdout failures ==
1294
1295 On Red Hat 8, I get this:
1296
1297 == 84 tests, 2 stderr failures, 1 stdout failure ==
1298 corecheck/tests/res_search (stdout)
1299 memcheck/tests/sigaltstack (stderr)
1300
1301 sigaltstack is probably harmless. res_search doesn't work
1302 on R H 8 even running natively, so I'm not too worried.
1303
1304 On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures:
1305
1306 == 84 tests, 2 stderr failures, 1 stdout failure ==
1307 corecheck/tests/pth_atfork1 (stdout)
1308 corecheck/tests/pth_atfork1 (stderr)
1309 memcheck/tests/sigaltstack (stderr)
1310
1311 You need to run on a PII system, at least, since some tests
1312 contain P6-specific instructions, and the test machine needs
1313 access to the internet so that corecheck/tests/res_search
1314 (a test that the DNS resolver works) can function.
1315
sewardj9d916ed2003-07-14 23:38:40 +00001316As ever, thanks for the vast amount of feedback :) and bug reports :(
1317We may not answer all messages, but we do at least look at all of
1318them, and tend to fix the most frequently reported bugs.
1319
1320
1321
sewardj37918822003-05-05 01:05:09 +00001322Version 1.9.6 (7 May 2003 or thereabouts)
1323~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1324
1325Major changes in 1.9.6:
1326
1327- Improved threading support for glibc >= 2.3.2 (SuSE 8.2,
1328 RedHat 9, to name but two ...) It turned out that 1.9.5
1329 had problems with threading support on glibc >= 2.3.2,
1330 usually manifested by threaded programs deadlocking in system calls,
1331 or running unbelievably slowly. Hopefully these are fixed now. 1.9.6
1332 is the first valgrind which gives reasonable support for
1333 glibc-2.3.2. Also fixed a 2.3.2 problem with pthread_atfork().
1334
1335- Majorly expanded FAQ.txt. We've added workarounds for all
1336 common problems for which a workaround is known.
1337
1338Minor changes in 1.9.6:
1339
1340- Fix identification of the main thread's stack. Incorrect
1341 identification of it was causing some on-stack addresses to not get
1342 identified as such. This only affected the usefulness of some error
1343 messages; the correctness of the checks made is unchanged.
1344
1345- Support for kernels >= 2.5.68.
1346
1347- Dummy implementations of __libc_current_sigrtmin,
1348 __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully
1349 good enough to keep alive programs which previously died for lack of
1350 them.
1351
1352- Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request.
1353
sewardj3d47b792003-05-05 22:15:35 +00001354- Fix bug in the DWARF2 debug line info loader, when instructions
1355 following each other have source lines far from each other
1356 (e.g. with inlined functions).
1357
sewardj37918822003-05-05 01:05:09 +00001358- Debug info reading: read symbols from both "symtab" and "dynsym"
1359 sections, rather than merely from the one that comes last in the
1360 file.
1361
1362- New syscall support: prctl(), creat(), lookup_dcookie().
1363
1364- When checking calls to accept(), recvfrom(), getsocketopt(),
1365 don't complain if buffer values are NULL.
1366
1367- Try and avoid assertion failures in
1368 mash_LD_PRELOAD_and_LD_LIBRARY_PATH.
1369
1370- Minor bug fixes in cg_annotate.
1371
1372
1373
sewardj90238792003-05-05 00:23:42 +00001374Version 1.9.5 (7 April 2003)
1375~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1376
1377It occurs to me that it would be helpful for valgrind users to record
1378in the source distribution the changes in each release. So I now
1379attempt to mend my errant ways :-) Changes in this and future releases
1380will be documented in the NEWS file in the source distribution.
1381
1382Major changes in 1.9.5:
1383
1384- (Critical bug fix): Fix a bug in the FPU simulation. This was
1385 causing some floating point conditional tests not to work right.
1386 Several people reported this. If you had floating point code which
1387 didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5.
1388
1389- Partial support for Red Hat 9. RH9 uses the new Native Posix
1390 Threads Library (NPTL), instead of the older LinuxThreads.
1391 This potentially causes problems with V which will take some
1392 time to correct. In the meantime we have partially worked around
1393 this, and so 1.9.5 works on RH9. Threaded programs still work,
1394 but they may deadlock, because some system calls (accept, read,
1395 write, etc) which should be nonblocking, in fact do block. This
1396 is a known bug which we are looking into.
1397
1398 If you can, your best bet (unfortunately) is to avoid using
1399 1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution.
1400 If your glibc is 2.3.1 or earlier, you're almost certainly OK.
1401
1402Minor changes in 1.9.5:
1403
1404- Added some #errors to valgrind.h to ensure people don't include
1405 it accidentally in their sources. This is a change from 1.0.X
1406 which was never properly documented. The right thing to include
1407 is now memcheck.h. Some people reported problems and strange
1408 behaviour when (incorrectly) including valgrind.h in code with
1409 1.9.1 -- 1.9.4. This is no longer possible.
1410
1411- Add some __extension__ bits and pieces so that gcc configured
1412 for valgrind-checking compiles even with -Werror. If you
1413 don't understand this, ignore it. Of interest to gcc developers
1414 only.
1415
1416- Removed a pointless check which caused problems interworking
1417 with Clearcase. V would complain about shared objects whose
1418 names did not end ".so", and refuse to run. This is now fixed.
1419 In fact it was fixed in 1.9.4 but not documented.
1420
1421- Fixed a bug causing an assertion failure of "waiters == 1"
1422 somewhere in vg_scheduler.c, when running large threaded apps,
1423 notably MySQL.
1424
1425- Add support for the munlock system call (124).
1426
1427Some comments about future releases:
1428
14291.9.5 is, we hope, the most stable Valgrind so far. It pretty much
1430supersedes the 1.0.X branch. If you are a valgrind packager, please
1431consider making 1.9.5 available to your users. You can regard the
14321.0.X branch as obsolete: 1.9.5 is stable and vastly superior. There
1433are no plans at all for further releases of the 1.0.X branch.
1434
1435If you want a leading-edge valgrind, consider building the cvs head
1436(from SourceForge), or getting a snapshot of it. Current cool stuff
1437going in includes MMX support (done); SSE/SSE2 support (in progress),
1438a significant (10-20%) performance improvement (done), and the usual
1439large collection of minor changes. Hopefully we will be able to
1440improve our NPTL support, but no promises.
1441