blob: 76ee3147a0839a60950ffecc289ace49b5ffe56b [file] [log] [blame]
jseward43230652003-12-14 00:14:54 +00001
sewardj4bbe9d72005-11-16 18:39:25 +00002Release 3.1.0 (25 November 2005)
njnf63170c2005-11-12 19:09:51 +00003~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sewardj4bbe9d72005-11-16 18:39:25 +000043.1.0 is a feature release with a number of significant improvements:
5AMD64 support is much improved, PPC32 support is good enough to be
6usable, and the handling of memory management and address space is
7much more robust. In detail:
njnf63170c2005-11-12 19:09:51 +00008
sewardj4bbe9d72005-11-16 18:39:25 +00009- AMD64 support is much improved. The 64-bit vs. 32-bit issues in
10 3.0.X have been resolved, and it should "just work" now in all
11 cases. On AMD64 machines both 64-bit and 32-bit versions of
12 Valgrind are built. The right version will be invoked
13 automatically, even when using --trace-children and mixing execution
14 between 64-bit and 32-bit executables. Also, many more instructions
15 are supported.
njnf63170c2005-11-12 19:09:51 +000016
sewardj4bbe9d72005-11-16 18:39:25 +000017- PPC32 support is now good enough to be usable. It should work with
18 all tools, but please let us know if you have problems. Three
19 classes of CPUs are supported: integer only (no FP, no Altivec),
20 which covers embedded PPC uses, integer and FP but no Altivec
21 (G3-ish), and CPUs capable of Altivec too (G4, G5).
njnf63170c2005-11-12 19:09:51 +000022
sewardj4bbe9d72005-11-16 18:39:25 +000023- Valgrind's address space management has been overhauled. As a
24 result, Valgrind should be much more robust with programs that use
25 large amounts of memory. There should be many fewer "memory
26 exhausted" messages, and debug symbols should be read correctly on
27 large (eg. 300MB+) executables. On 32-bit machines the full address
28 space available to user programs (usually 3GB or 4GB) can be fully
29 utilised. On 64-bit machines up to 32GB of space is usable; when
30 using Memcheck that means your program can use up to about 14GB.
njnf63170c2005-11-12 19:09:51 +000031
32 A side effect of this change is that Valgrind is no longer protected
33 against wild writes by the client. This feature was nice but relied
34 on the x86 segment registers and so wasn't portable.
35
36- Most users should not notice, but as part of the address space
sewardj4bbe9d72005-11-16 18:39:25 +000037 manager change, the way Valgrind is built has been changed. Each
38 tool is now built as a statically linked stand-alone executable,
39 rather than as a shared object that is dynamically linked with the
40 core. The "valgrind" program invokes the appropriate tool depending
41 on the --tool option. This slightly increases the amount of disk
42 space used by Valgrind, but it greatly simplified many things and
43 removed Valgrind's dependence on glibc.
njnf63170c2005-11-12 19:09:51 +000044
45Other user-visible changes:
46
47- The --weird-hacks option has been renamed --sim-hints.
48
49- The --time-stamp option no longer gives an absolute date and time.
50 It now prints the time elapsed since the program began.
51
sewardj4bbe9d72005-11-16 18:39:25 +000052- It should build with gcc-2.96.
53
sewardj47058612005-11-16 19:13:13 +000054- Valgrind can now run itself (given some very-magical incantations).
55 This is not much use to you, but it means the developers can now
56 profile Valgrind using Cachegrind. As a result a couple of
57 performance bad cases have been fixed.
58
njnf63170c2005-11-12 19:09:51 +000059The following are some user-visible changes that occurred in earlier
60versions that may not have been announced, or were announced but not
61widely realised. So we're mentioning them now.
62
63- The --tool flag is optional once again; if you omit it, Memcheck
64 is run by default.
65
66- The --num-callers flag now has a default value of 12. It was
67 previously 4.
68
69- The --xml flag causes Valgrind's output to be produced in XML format.
70 This is designed to make it easy for other programs to consume
71 Valgrind's output. The format is described in the file
72 docs/internals/xml-format.txt.
73
njn1f503992005-11-13 16:41:15 +000074- The --gen-suppressions flag supports an "all" value that causes every
75 suppression to be printed without asking.
76
njnf63170c2005-11-12 19:09:51 +000077BUGS FIXED:
78
sewardj4bbe9d72005-11-16 18:39:25 +000079109861 amd64 hangs at startup
80110301 ditto
81111554 valgrind crashes with Cannot allocate memory
82111809 Memcheck tool doesn't start java
83111901 cross-platform run of cachegrind fails on opteron
84113468 (vgPlain_mprotect_range): Assertion 'r != -1' failed.
85 92071 Reading debugging info uses too much memory
86109744 memcheck loses track of mmap from direct ld-linux.so.2
87110183 tail of page with _end
88 82301 FV memory layout too rigid
89 98278 Infinite recursion possible when allocating memory
90108994 Valgrind runs out of memory due to 133x overhead
91115643 valgrind cannot allocate memory
92105974 vg_hashtable.c static hash table
93109323 ppc32: dispatch.S uses Altivec insn, which doesn't work on POWER.
94109345 ptrace_setregs not yet implemented for ppc
95110831 Would like to be able to run against both 32 and 64 bit
96 binaries on AMD64
97110829 == 110831
98111781 compile of valgrind-3.0.0 fails on my linux (gcc 2.X prob)
99112670 Cachegrind: cg_main.c:486 (handleOneStatement ...
100112941 vex x86: 0xD9 0xF4 (fxtract)
101110201 == 112941
102113015 vex amd64->IR: 0xE3 0x14 0x48 0x83 (jrcxz)
103113126 Crash with binaries built with -gstabs+/-ggdb
104104065 == 113126
105115741 == 113126
106113403 Partial SSE3 support on x86
107113541 vex: Grp5(x86) (alt encoding inc/dec) case 1
108113642 valgrind crashes when trying to read debug information
109113810 vex x86->IR: 66 0F F6 (66 + PSADBW == SSE PSADBW)
110113796 read() and write() do not work if buffer is in shared memory
111113851 vex x86->IR: (pmaddwd): 0x66 0xF 0xF5 0xC7
112114366 vex amd64 cannnot handle __asm__( "fninit" )
113114412 vex amd64->IR: 0xF 0xAD 0xC2 0xD3 (128-bit shift, shrdq?)
114114455 vex amd64->IR: 0xF 0xAC 0xD0 0x1 (also shrdq)
115115590: amd64->IR: 0x67 0xE3 0x9 0xEB (address size override)
116115953 valgrind svn r5042 does not build with parallel make (-j3)
117116057 maximum instruction size - VG_MAX_INSTR_SZB too small?
118116483 shmat failes with invalid argument
119102202 valgrind crashes when realloc'ing until out of memory
120109487 == 102202
121110536 == 102202
122112687 == 102202
123111724 vex amd64->IR: 0x41 0xF 0xAB (more BT{,S,R,C} fun n games)
124111748 vex amd64->IR: 0xDD 0xE2 (fucom)
125111785 make fails if CC contains spaces
126111829 vex x86->IR: sbb AL, Ib
127111851 vex x86->IR: 0x9F 0x89 (lahf/sahf)
128112031 iopl on AMD64 and README_MISSING_SYSCALL_OR_IOCTL update
129112152 code generation for Xin_MFence on x86 with SSE0 subarch
130112167 == 112152
131112789 == 112152
132112199 naked ar tool is used in vex makefile
133112501 vex x86->IR: movq (0xF 0x7F 0xC1 0xF) (mmx MOVQ)
134113583 == 112501
135112538 memalign crash
136113190 Broken links in docs/html/
137113230 Valgrind sys_pipe on x86-64 wrongly thinks file descriptors
138 should be 64bit
139113996 vex amd64->IR: fucomp (0xDD 0xE9)
140114196 vex x86->IR: out %eax,(%dx) (0xEF 0xC9 0xC3 0x90)
141114289 Memcheck fails to intercept malloc when used in an uclibc environment
142114756 mbind syscall support
143114757 Valgrind dies with assertion: Assertion 'noLargerThan > 0' failed
144114563 stack tracking module not informed when valgrind switches threads
145114564 clone() and stacks
146114565 == 114564
147115496 glibc crashes trying to use sysinfo page
148116200 enable fsetxattr, fgetxattr, and fremovexattr for amd64
njnf63170c2005-11-12 19:09:51 +0000149
150
sewardjcd62fe72005-08-29 13:24:51 +0000151Release 3.0.1 (29 August 2005)
152~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1533.0.1 fixes a bunch of bugs reported in 3.0.0. There is no new
154functionality. Some of the fixed bugs are critical, so if you
sewardjfa233892005-08-30 12:35:36 +0000155use/distribute 3.0.0, an upgrade to 3.0.1 is recommended. The fixed
sewardjcd62fe72005-08-29 13:24:51 +0000156bugs are:
157
158(note: "n-i-bz" means "not in bugzilla" -- this bug does not have
159 a bugzilla entry).
160
161109313 (== 110505) x86 cmpxchg8b
162n-i-bz x86: track but ignore changes to %eflags.AC (alignment check)
163110102 dis_op2_E_G(amd64)
164110202 x86 sys_waitpid(#286)
165110203 clock_getres(,0)
166110208 execve fail wrong retval
167110274 SSE1 now mandatory for x86
168110388 amd64 0xDD 0xD1
169110464 amd64 0xDC 0x1D FCOMP
170110478 amd64 0xF 0xD PREFETCH
171n-i-bz XML <unique> printing wrong
172n-i-bz Dirk r4359 (amd64 syscalls from trunk)
173110591 amd64 and x86: rdtsc not implemented properly
174n-i-bz Nick r4384 (stub implementations of Addrcheck and Helgrind)
175110652 AMD64 valgrind crashes on cwtd instruction
176110653 AMD64 valgrind crashes on sarb $0x4,foo(%rip) instruction
177110656 PATH=/usr/bin::/bin valgrind foobar stats ./fooba
178110657 Small test fixes
179110671 vex x86->IR: unhandled instruction bytes: 0xF3 0xC3 (rep ret)
180n-i-bz Nick (Cachegrind should not assert when it encounters a client
181 request.)
182110685 amd64->IR: unhandled instruction bytes: 0xE1 0x56 (loope Jb)
183110830 configuring with --host fails to build 32 bit on 64 bit target
184110875 Assertion when execve fails
185n-i-bz Updates to Memcheck manual
186n-i-bz Fixed broken malloc_usable_size()
187110898 opteron instructions missing: btq btsq btrq bsfq
188110954 x86->IR: unhandled instruction bytes: 0xE2 0xF6 (loop Jb)
189n-i-bz Make suppressions work for "???" lines in stacktraces.
190111006 bogus warnings from linuxthreads
191111092 x86: dis_Grp2(Reg): unhandled case(x86)
192111231 sctp_getladdrs() and sctp_getpaddrs() returns uninitialized
193 memory
194111102 (comment #4) Fixed 64-bit unclean "silly arg" message
195n-i-bz vex x86->IR: unhandled instruction bytes: 0x14 0x0
196n-i-bz minor umount/fcntl wrapper fixes
197111090 Internal Error running Massif
198101204 noisy warning
199111513 Illegal opcode for SSE instruction (x86 movups)
200111555 VEX/Makefile: CC is set to gcc
sewardjfa233892005-08-30 12:35:36 +0000201n-i-bz Fix XML bugs in FAQ
sewardjcd62fe72005-08-29 13:24:51 +0000202
sewardjfa233892005-08-30 12:35:36 +0000203(3.0.1: 29 August 05,
204 vex/branches/VEX_3_0_BRANCH r1367,
205 valgrind/branches/VALGRIND_3_0_BRANCH r4574).
sewardj820c7722005-08-29 13:44:43 +0000206
207
sewardjcd62fe72005-08-29 13:24:51 +0000208
sewardjec39f332005-08-02 15:28:07 +0000209Release 3.0.0 (3 August 2005)
210~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sewardjf9929e62005-08-02 21:05:58 +00002113.0.0 is a major overhaul of Valgrind. The most significant user
212visible change is that Valgrind now supports architectures other than
213x86. The new architectures it supports are AMD64 and PPC32, and the
214infrastructure is present for other architectures to be added later.
njn4a9f6f42005-07-19 23:46:08 +0000215
sewardjf9929e62005-08-02 21:05:58 +0000216AMD64 support works well, but has some shortcomings:
njn4a9f6f42005-07-19 23:46:08 +0000217
njn7b1a6a42005-07-20 04:20:44 +0000218- It generally won't be as solid as the x86 version. For example,
219 support for more obscure instructions and system calls may be missing.
220 We will fix these as they arise.
njn4a9f6f42005-07-19 23:46:08 +0000221
sewardjc371bd02005-07-27 09:55:24 +0000222- Address space may be limited; see the point about
njn7b1a6a42005-07-20 04:20:44 +0000223 position-independent executables below.
njn4a9f6f42005-07-19 23:46:08 +0000224
njn7b1a6a42005-07-20 04:20:44 +0000225- If Valgrind is built on an AMD64 machine, it will only run 64-bit
226 executables. If you want to run 32-bit x86 executables under Valgrind
227 on an AMD64, you will need to build Valgrind on an x86 machine and
228 copy it to the AMD64 machine. And it probably won't work if you do
229 something tricky like exec'ing a 32-bit program from a 64-bit program
230 while using --trace-children=yes. We hope to improve this situation
231 in the future.
232
233The PPC32 support is very basic. It may not work reliably even for
sewardjc371bd02005-07-27 09:55:24 +0000234small programs, but it's a start. Many thanks to Paul Mackerras for
235his great work that enabled this support. We are working to make
236PPC32 usable as soon as possible.
njn4a9f6f42005-07-19 23:46:08 +0000237
238Other user-visible changes:
239
sewardjec39f332005-08-02 15:28:07 +0000240- Valgrind is no longer built by default as a position-independent
241 executable (PIE), as this caused too many problems.
njn4a9f6f42005-07-19 23:46:08 +0000242
243 Without PIE enabled, AMD64 programs will only be able to access 2GB of
244 address space. We will fix this eventually, but not for the moment.
245
246 Use --enable-pie at configure-time to turn this on.
247
248- Support for programs that use stack-switching has been improved. Use
249 the --max-stackframe flag for simple cases, and the
250 VALGRIND_STACK_REGISTER, VALGRIND_STACK_DEREGISTER and
251 VALGRIND_STACK_CHANGE client requests for trickier cases.
252
njn7b1a6a42005-07-20 04:20:44 +0000253- Support for programs that use self-modifying code has been improved,
254 in particular programs that put temporary code fragments on the stack.
255 This helps for C programs compiled with GCC that use nested functions,
njne7723322005-07-24 17:19:09 +0000256 and also Ada programs. This is controlled with the --smc-check
njn7b1a6a42005-07-20 04:20:44 +0000257 flag, although the default setting should work in most cases.
njn4a9f6f42005-07-19 23:46:08 +0000258
njn7b1a6a42005-07-20 04:20:44 +0000259- Output can now be printed in XML format. This should make it easier
sewardjc371bd02005-07-27 09:55:24 +0000260 for tools such as GUI front-ends and automated error-processing
261 schemes to use Valgrind output as input. The --xml flag controls this.
262 As part of this change, ELF directory information is read from executables,
263 so absolute source file paths are available if needed.
njn4a9f6f42005-07-19 23:46:08 +0000264
265- Programs that allocate many heap blocks may run faster, due to
266 improvements in certain data structures.
267
njn7b1a6a42005-07-20 04:20:44 +0000268- Addrcheck is currently not working. We hope to get it working again
269 soon. Helgrind is still not working, as was the case for the 2.4.0
270 release.
njn4a9f6f42005-07-19 23:46:08 +0000271
sewardjc371bd02005-07-27 09:55:24 +0000272- The JITter has been completely rewritten, and is now in a separate
273 library, called Vex. This enabled a lot of the user-visible changes,
274 such as new architecture support. The new JIT unfortunately translates
275 more slowly than the old one, so programs may take longer to start.
276 We believe the code quality is produces is about the same, so once
277 started, programs should run at about the same speed. Feedback about
278 this would be useful.
279
280 On the plus side, Vex and hence Memcheck tracks value flow properly
281 through floating point and vector registers, something the 2.X line
282 could not do. That means that Memcheck is much more likely to be
283 usably accurate on vectorised code.
284
sewardjec39f332005-08-02 15:28:07 +0000285- There is a subtle change to the way exiting of threaded programs
sewardjc371bd02005-07-27 09:55:24 +0000286 is handled. In 3.0, Valgrind's final diagnostic output (leak check,
287 etc) is not printed until the last thread exits. If the last thread
288 to exit was not the original thread which started the program, any
289 other process wait()-ing on this one to exit may conclude it has
290 finished before the diagnostic output is printed. This may not be
291 what you expect. 2.X had a different scheme which avoided this
292 problem, but caused deadlocks under obscure circumstances, so we
293 are trying something different for 3.0.
294
295- Small changes in control log file naming which make it easier to
sewardjec39f332005-08-02 15:28:07 +0000296 use valgrind for debugging MPI-based programs. The relevant
297 new flags are --log-file-exactly= and --log-file-qualifier=.
sewardjc371bd02005-07-27 09:55:24 +0000298
299- As part of adding AMD64 support, DWARF2 CFI-based stack unwinding
300 support was added. In principle this means Valgrind can produce
301 meaningful backtraces on x86 code compiled with -fomit-frame-pointer
tom81868f02005-07-27 10:33:08 +0000302 providing you also compile your code with -fasynchronous-unwind-tables.
sewardjc371bd02005-07-27 09:55:24 +0000303
sewardjec39f332005-08-02 15:28:07 +0000304- The documentation build system has been completely redone.
305 The documentation masters are now in XML format, and from that
306 HTML, PostScript and PDF documentation is generated. As a result
307 the manual is now available in book form. Note that the
308 documentation in the source tarballs is pre-built, so you don't need
309 any XML processing tools to build Valgrind from a tarball.
njn4a9f6f42005-07-19 23:46:08 +0000310
311Changes that are not user-visible:
312
sewardjc371bd02005-07-27 09:55:24 +0000313- The code has been massively overhauled in order to modularise it.
314 As a result we hope it is easier to navigate and understand.
njn4a9f6f42005-07-19 23:46:08 +0000315
316- Lots of code has been rewritten.
317
sewardjf9929e62005-08-02 21:05:58 +0000318BUGS FIXED:
njn4a9f6f42005-07-19 23:46:08 +0000319
sewardj79bd9b62005-08-03 16:40:10 +0000320110046 sz == 4 assertion failed
321109810 vex amd64->IR: unhandled instruction bytes: 0xA3 0x4C 0x70 0xD7
sewardjf9929e62005-08-02 21:05:58 +0000322109802 Add a plausible_stack_size command-line parameter ?
323109783 unhandled ioctl TIOCMGET (running hw detection tool discover)
324109780 unhandled ioctl BLKSSZGET (running fdisk -l /dev/hda)
325109718 vex x86->IR: unhandled instruction: ffreep
326109429 AMD64 unhandled syscall: 127 (sigpending)
327109401 false positive uninit in strchr from ld-linux.so.2
328109385 "stabs" parse failure
329109378 amd64: unhandled instruction REP NOP
330109376 amd64: unhandled instruction LOOP Jb
331109363 AMD64 unhandled instruction bytes
332109362 AMD64 unhandled syscall: 24 (sched_yield)
333109358 fork() won't work with valgrind-3.0 SVN
334109332 amd64 unhandled instruction: ADC Ev, Gv
335109314 Bogus memcheck report on amd64
336108883 Crash; vg_memory.c:905 (vgPlain_init_shadow_range):
337 Assertion `vgPlain_defined_init_shadow_page()' failed.
338108349 mincore syscall parameter checked incorrectly
339108059 build infrastructure: small update
340107524 epoll_ctl event parameter checked on EPOLL_CTL_DEL
341107123 Vex dies with unhandled instructions: 0xD9 0x31 0xF 0xAE
342106841 auxmap & openGL problems
343106713 SDL_Init causes valgrind to exit
344106352 setcontext and makecontext not handled correctly
345106293 addresses beyond initial client stack allocation
346 not checked in VALGRIND_DO_LEAK_CHECK
347106283 PIE client programs are loaded at address 0
348105831 Assertion `vgPlain_defined_init_shadow_page()' failed.
349105039 long run-times probably due to memory manager
350104797 valgrind needs to be aware of BLKGETSIZE64
351103594 unhandled instruction: FICOM
352103320 Valgrind 2.4.0 fails to compile with gcc 3.4.3 and -O0
353103168 potentially memory leak in coregrind/ume.c
354102039 bad permissions for mapped region at address 0xB7C73680
355101881 weird assertion problem
356101543 Support fadvise64 syscalls
35775247 x86_64/amd64 support (the biggest "bug" we have ever fixed)
njn4a9f6f42005-07-19 23:46:08 +0000358
sewardj9a919512005-08-03 17:01:51 +0000359(3.0RC1: 27 July 05, vex r1303, valgrind r4283).
sewardj1346e132005-08-03 20:42:06 +0000360(3.0.0: 3 August 05, vex r1313, valgrind r4316).
sewardjbfa2b992005-07-27 17:49:17 +0000361
362
363
njn8c927302005-03-12 16:45:01 +0000364Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
njn1aa5ae42005-03-26 16:04:27 +0000365~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3662.4.0 brings many significant changes and bug fixes. The most
367significant user-visible change is that we no longer supply our own
368pthread implementation. Instead, Valgrind is finally capable of
369running the native thread library, either LinuxThreads or NPTL.
njn8c927302005-03-12 16:45:01 +0000370
njn1aa5ae42005-03-26 16:04:27 +0000371This means our libpthread has gone, along with the bugs associated
372with it. Valgrind now supports the kernel's threading syscalls, and
373lets you use your standard system libpthread. As a result:
njn8c927302005-03-12 16:45:01 +0000374
njn1aa5ae42005-03-26 16:04:27 +0000375* There are many fewer system dependencies and strange library-related
376 bugs. There is a small performance improvement, and a large
377 stability improvement.
njn8c927302005-03-12 16:45:01 +0000378
njn1aa5ae42005-03-26 16:04:27 +0000379* On the downside, Valgrind can no longer report misuses of the POSIX
380 PThreads API. It also means that Helgrind currently does not work.
381 We hope to fix these problems in a future release.
njn8c927302005-03-12 16:45:01 +0000382
njn1aa5ae42005-03-26 16:04:27 +0000383Note that running the native thread libraries does not mean Valgrind
384is able to provide genuine concurrent execution on SMPs. We still
385impose the restriction that only one thread is running at any given
386time.
njn8c927302005-03-12 16:45:01 +0000387
njn1aa5ae42005-03-26 16:04:27 +0000388There are many other significant changes too:
njn8c927302005-03-12 16:45:01 +0000389
njn1aa5ae42005-03-26 16:04:27 +0000390* Memcheck is (once again) the default tool.
njn8c927302005-03-12 16:45:01 +0000391
njn1aa5ae42005-03-26 16:04:27 +0000392* The default stack backtrace is now 12 call frames, rather than 4.
njn8c927302005-03-12 16:45:01 +0000393
njn1aa5ae42005-03-26 16:04:27 +0000394* Suppressions can have up to 25 call frame matches, rather than 4.
njn8c927302005-03-12 16:45:01 +0000395
njn1aa5ae42005-03-26 16:04:27 +0000396* Memcheck and Addrcheck use less memory. Under some circumstances,
397 they no longer allocate shadow memory if there are large regions of
398 memory with the same A/V states - such as an mmaped file.
njn8c927302005-03-12 16:45:01 +0000399
njn1aa5ae42005-03-26 16:04:27 +0000400* The memory-leak detector in Memcheck and Addrcheck has been
401 improved. It now reports more types of memory leak, including
402 leaked cycles. When reporting leaked memory, it can distinguish
403 between directly leaked memory (memory with no references), and
404 indirectly leaked memory (memory only referred to by other leaked
405 memory).
njn8c927302005-03-12 16:45:01 +0000406
njn1aa5ae42005-03-26 16:04:27 +0000407* Memcheck's confusion over the effect of mprotect() has been fixed:
408 previously mprotect could erroneously mark undefined data as
409 defined.
njn8c927302005-03-12 16:45:01 +0000410
njn1aa5ae42005-03-26 16:04:27 +0000411* Signal handling is much improved and should be very close to what
412 you get when running natively.
413
414 One result of this is that Valgrind observes changes to sigcontexts
415 passed to signal handlers. Such modifications will take effect when
416 the signal returns. You will need to run with --single-step=yes to
417 make this useful.
njn8c927302005-03-12 16:45:01 +0000418
419* Valgrind is built in Position Independent Executable (PIE) format if
njn1aa5ae42005-03-26 16:04:27 +0000420 your toolchain supports it. This allows it to take advantage of all
njn8c927302005-03-12 16:45:01 +0000421 the available address space on systems with 4Gbyte user address
422 spaces.
423
424* Valgrind can now run itself (requires PIE support).
425
njn1aa5ae42005-03-26 16:04:27 +0000426* Syscall arguments are now checked for validity. Previously all
427 memory used by syscalls was checked, but now the actual values
428 passed are also checked.
njn8c927302005-03-12 16:45:01 +0000429
njn1aa5ae42005-03-26 16:04:27 +0000430* Syscall wrappers are more robust against bad addresses being passed
431 to syscalls: they will fail with EFAULT rather than killing Valgrind
432 with SIGSEGV.
njn8c927302005-03-12 16:45:01 +0000433
njn1aa5ae42005-03-26 16:04:27 +0000434* Because clone() is directly supported, some non-pthread uses of it
435 will work. Partial sharing (where some resources are shared, and
436 some are not) is not supported.
437
438* open() and readlink() on /proc/self/exe are supported.
439
440BUGS FIXED:
441
44288520 pipe+fork+dup2 kills the main program
44388604 Valgrind Aborts when using $VALGRIND_OPTS and user progra...
44488614 valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt...
44588703 Stabs parser fails to handle ";"
44688886 ioctl wrappers for TIOCMBIS and TIOCMBIC
44789032 valgrind pthread_cond_timedwait fails
44889106 the 'impossible' happened
44989139 Missing sched_setaffinity & sched_getaffinity
45089198 valgrind lacks support for SIOCSPGRP and SIOCGPGRP
45189263 Missing ioctl translations for scsi-generic and CD playing
45289440 tests/deadlock.c line endings
45389481 `impossible' happened: EXEC FAILED
45489663 valgrind 2.2.0 crash on Redhat 7.2
45589792 Report pthread_mutex_lock() deadlocks instead of returnin...
45690111 statvfs64 gives invalid error/warning
45790128 crash+memory fault with stabs generated by gnat for a run...
45890778 VALGRIND_CHECK_DEFINED() not as documented in memcheck.h
45990834 cachegrind crashes at end of program without reporting re...
46091028 valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio...
46191162 valgrind crash while debugging drivel 1.2.1
46291199 Unimplemented function
46391325 Signal routing does not propagate the siginfo structure
46491599 Assertion `cv == ((void *)0)'
46591604 rw_lookup clears orig and sends the NULL value to rw_new
46691821 Small problems building valgrind with $top_builddir ne $t...
46791844 signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec...
46892264 UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared
46992331 per-target flags necessitate AM_PROG_CC_C_O
47092420 valgrind doesn't compile with linux 2.6.8.1/9
47192513 Valgrind 2.2.0 generates some warning messages
47292528 vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed.
47393096 unhandled ioctl 0x4B3A and 0x5601
47493117 Tool and core interface versions do not match
47593128 Can't run valgrind --tool=memcheck because of unimplement...
47693174 Valgrind can crash if passed bad args to certain syscalls
47793309 Stack frame in new thread is badly aligned
47893328 Wrong types used with sys_sigprocmask()
47993763 /usr/include/asm/msr.h is missing
48093776 valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser...
48193810 fcntl() argument checking a bit too strict
48294378 Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed.
48394429 valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3
48494645 Impossible happened: PINSRW mem
48594953 valgrind: the `impossible' happened: SIGSEGV
48695667 Valgrind does not work with any KDE app
48796243 Assertion 'res==0' failed
48896252 stage2 loader of valgrind fails to allocate memory
48996520 All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ...
49096660 ioctl CDROMREADTOCENTRY causes bogus warnings
49196747 After looping in a segfault handler, the impossible happens
49296923 Zero sized arrays crash valgrind trace back with SIGFPE
49396948 valgrind stops with assertion failure regarding mmap2
49496966 valgrind fails when application opens more than 16 sockets
49597398 valgrind: vg_libpthread.c:2667 Assertion failed
49697407 valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `...
49797427 "Warning: invalid file descriptor -1 in syscall close()" ...
49897785 missing backtrace
49997792 build in obj dir fails - autoconf / makefile cleanup
50097880 pthread_mutex_lock fails from shared library (special ker...
50197975 program aborts without ang VG messages
50298129 Failed when open and close file 230000 times using stdio
50398175 Crashes when using valgrind-2.2.0 with a program using al...
50498288 Massif broken
50598303 UNIMPLEMENTED FUNCTION pthread_condattr_setpshared
50698630 failed--compilation missing warnings.pm, fails to make he...
50798756 Cannot valgrind signal-heavy kdrive X server
50898966 valgrinding the JVM fails with a sanity check assertion
50999035 Valgrind crashes while profiling
51099142 loops with message "Signal 11 being dropped from thread 0...
51199195 threaded apps crash on thread start (using QThread::start...
51299348 Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off...
51399568 False negative due to mishandling of mprotect
51499738 valgrind memcheck crashes on program that uses sigitimer
51599923 0-sized allocations are reported as leaks
51699949 program seg faults after exit()
517100036 "newSuperblock's request for 1048576 bytes failed"
518100116 valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ...
519100486 memcheck reports "valgrind: the `impossible' happened: V...
520100833 second call to "mremap" fails with EINVAL
521101156 (vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1...
522101173 Assertion `recDepth >= 0 && recDepth < 500' failed
523101291 creating threads in a forked process fails
524101313 valgrind causes different behavior when resizing a window...
525101423 segfault for c++ array of floats
526101562 valgrind massif dies on SIGINT even with signal handler r...
527
njn8c927302005-03-12 16:45:01 +0000528
jseward34ed74f2004-08-30 18:04:42 +0000529Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0
530~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jseward7d180d92004-08-30 18:15:37 +00005312.2.0 brings nine months worth of improvements and bug fixes. We
532believe it to be a worthy successor to 2.0.0. There are literally
533hundreds of bug fixes and minor improvements. There are also some
534fairly major user-visible changes:
535
536* A complete overhaul of handling of system calls and signals, and
537 their interaction with threads. In general, the accuracy of the
538 system call, thread and signal simulations is much improved:
539
540 - Blocking system calls behave exactly as they do when running
541 natively (not on valgrind). That is, if a syscall blocks only the
542 calling thread when running natively, than it behaves the same on
543 valgrind. No more mysterious hangs because V doesn't know that some
544 syscall or other, should block only the calling thread.
545
546 - Interrupted syscalls should now give more faithful results.
547
548 - Signal contexts in signal handlers are supported.
549
550* Improvements to NPTL support to the extent that V now works
551 properly on NPTL-only setups.
552
553* Greater isolation between Valgrind and the program being run, so
554 the program is less likely to inadvertently kill Valgrind by
555 doing wild writes.
556
557* Massif: a new space profiling tool. Try it! It's cool, and it'll
558 tell you in detail where and when your C/C++ code is allocating heap.
559 Draws pretty .ps pictures of memory use against time. A potentially
560 powerful tool for making sense of your program's space use.
561
562* File descriptor leakage checks. When enabled, Valgrind will print out
563 a list of open file descriptors on exit.
564
565* Improved SSE2/SSE3 support.
566
jseward2eb002b2004-08-31 00:14:02 +0000567* Time-stamped output; use --time-stamp=yes
568
jseward34ed74f2004-08-30 18:04:42 +0000569
570
571Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.1.2
572~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5732.2.0 is not much different from 2.1.2, released seven weeks ago.
574A number of bugs have been fixed, most notably #85658, which gave
575problems for quite a few people. There have been many internal
576cleanups, but those are not user visible.
577
578The following bugs have been fixed since 2.1.2:
579
58085658 Assert in coregrind/vg_libpthread.c:2326 (open64) !=
581 (void*)0 failed
582 This bug was reported multiple times, and so the following
583 duplicates of it are also fixed: 87620, 85796, 85935, 86065,
584 86919, 86988, 87917, 88156
585
58680716 Semaphore mapping bug caused by unmap (sem_destroy)
587 (Was fixed prior to 2.1.2)
588
58986987 semctl and shmctl syscalls family is not handled properly
590
59186696 valgrind 2.1.2 + RH AS2.1 + librt
592
59386730 valgrind locks up at end of run with assertion failure
594 in __pthread_unwind
595
59686641 memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1
597 (also fixes 74298, a duplicate of this)
598
59985947 MMX/SSE unhandled instruction 'sfence'
600
60184978 Wrong error "Conditional jump or move depends on
602 uninitialised value" resulting from "sbbl %reg, %reg"
603
60486254 ssort() fails when signed int return type from comparison is
605 too small to handle result of unsigned int subtraction
606
60787089 memalign( 4, xxx) makes valgrind assert
608
jseward2eb002b2004-08-31 00:14:02 +000060986407 Add support for low-level parallel port driver ioctls.
jseward34ed74f2004-08-30 18:04:42 +0000610
61170587 Add timestamps to Valgrind output? (wishlist)
612
61384937 vg_libpthread.c:2505 (se_remap): Assertion `res == 0'
614 (fixed prior to 2.1.2)
615
61686317 cannot load libSDL-1.2.so.0 using valgrind
617
61886989 memcpy from mac_replace_strmem.c complains about
619 uninitialized pointers passed when length to copy is zero
620
62185811 gnu pascal symbol causes segmentation fault; ok in 2.0.0
622
62379138 writing to sbrk()'d memory causes segfault
624
62577369 sched deadlock while signal received during pthread_join
626 and the joined thread exited
627
62888115 In signal handler for SIGFPE, siginfo->si_addr is wrong
629 under Valgrind
630
63178765 Massif crashes on app exit if FP exceptions are enabled
632
633Additionally there are the following changes, which are not
634connected to any bug report numbers, AFAICS:
635
636* Fix scary bug causing mis-identification of SSE stores vs
637 loads and so causing memcheck to sometimes give nonsense results
638 on SSE code.
639
640* Add support for the POSIX message queue system calls.
641
642* Fix to allow 32-bit Valgrind to run on AMD64 boxes. Note: this does
643 NOT allow Valgrind to work with 64-bit executables - only with 32-bit
644 executables on an AMD64 box.
645
646* At configure time, only check whether linux/mii.h can be processed
647 so that we don't generate ugly warnings by trying to compile it.
648
jseward2eb002b2004-08-31 00:14:02 +0000649* Add support for POSIX clocks and timers.
650
jseward34ed74f2004-08-30 18:04:42 +0000651
652
jseward9cd978c2004-07-17 13:38:12 +0000653Developer (cvs head) release 2.1.2 (18 July 2004)
jsewardbd0a6e42004-07-17 12:19:43 +0000654~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6552.1.2 contains four months worth of bug fixes and refinements.
jseward9cd978c2004-07-17 13:38:12 +0000656Although officially a developer release, we believe it to be stable
657enough for widespread day-to-day use. 2.1.2 is pretty good, so try it
658first, although there is a chance it won't work. If so then try 2.0.0
659and tell us what went wrong." 2.1.2 fixes a lot of problems present
660in 2.0.0 and is generally a much better product.
jsewardbd0a6e42004-07-17 12:19:43 +0000661
jseward9cd978c2004-07-17 13:38:12 +0000662Relative to 2.1.1, a large number of minor problems with 2.1.1 have
663been fixed, and so if you use 2.1.1 you should try 2.1.2. Users of
664the last stable release, 2.0.0, might also want to try this release.
jsewardbd0a6e42004-07-17 12:19:43 +0000665
666The following bugs, and probably many more, have been fixed. These
667are listed at http://bugs.kde.org. Reporting a bug for valgrind in
668the http://bugs.kde.org is much more likely to get you a fix than
669mailing developers directly, so please continue to keep sending bugs
670there.
671
67276869 Crashes when running any tool under Fedora Core 2 test1
673 This fixes the problem with returning from a signal handler
jseward0400d4d2004-07-17 23:26:46 +0000674 when VDSOs are turned off in FC2.
jsewardbd0a6e42004-07-17 12:19:43 +0000675
jseward0400d4d2004-07-17 23:26:46 +000067669508 java 1.4.2 client fails with erroneous "stack size too small".
677 This fix makes more of the pthread stack attribute related
678 functions work properly. Java still doesn't work though.
jsewardbd0a6e42004-07-17 12:19:43 +0000679
68071906 malloc alignment should be 8, not 4
681 All memory returned by malloc/new etc is now at least
682 8-byte aligned.
683
jsewarda6017a42004-07-17 23:44:35 +000068481970 vg_alloc_ThreadState: no free slots available
685 (closed because the workaround is simple: increase
686 VG_N_THREADS, rebuild and try again.)
687
jsewardbd0a6e42004-07-17 12:19:43 +000068878514 Conditional jump or move depends on uninitialized value(s)
689 (a slight mishanding of FP code in memcheck)
690
jsewarda6017a42004-07-17 23:44:35 +000069177952 pThread Support (crash) (due to initialisation-ordering probs)
692 (also 85118)
693
jsewardbd0a6e42004-07-17 12:19:43 +000069480942 Addrcheck wasn't doing overlap checking as it should.
69578048 return NULL on malloc/new etc failure, instead of asserting
69673655 operator new() override in user .so files often doesn't get picked up
69783060 Valgrind does not handle native kernel AIO
69869872 Create proper coredumps after fatal signals
69982026 failure with new glibc versions: __libc_* functions are not exported
70070344 UNIMPLEMENTED FUNCTION: tcdrain
70181297 Cancellation of pthread_cond_wait does not require mutex
70282872 Using debug info from additional packages (wishlist)
70383025 Support for ioctls FIGETBSZ and FIBMAP
70483340 Support for ioctl HDIO_GET_IDENTITY
70579714 Support for the semtimedop system call.
70677022 Support for ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO
70782098 hp2ps ansification (wishlist)
70883573 Valgrind SIGSEGV on execve
70982999 show which cmdline option was erroneous (wishlist)
71083040 make valgrind VPATH and distcheck-clean (wishlist)
jsewarda6017a42004-07-17 23:44:35 +000071183998 Assertion `newfd > vgPlain_max_fd' failed (see below)
71282722 Unchecked mmap in as_pad leads to mysterious failures later
71378958 memcheck seg faults while running Mozilla
jsewarda2c08002004-07-18 09:24:57 +000071485416 Arguments with colon (e.g. --logsocket) ignored
jsewardbd0a6e42004-07-17 12:19:43 +0000715
716
717Additionally there are the following changes, which are not
718connected to any bug report numbers, AFAICS:
719
720* Rearranged address space layout relative to 2.1.1, so that
721 Valgrind/tools will run out of memory later than currently in many
722 circumstances. This is good news esp. for Calltree. It should
723 be possible for client programs to allocate over 800MB of
724 memory when using memcheck now.
725
jseward9cd978c2004-07-17 13:38:12 +0000726* Improved checking when laying out memory. Should hopefully avoid
727 the random segmentation faults that 2.1.1 sometimes caused.
728
jsewardbd0a6e42004-07-17 12:19:43 +0000729* Support for Fedora Core 2 and SuSE 9.1. Improvements to NPTL
730 support to the extent that V now works properly on NPTL-only setups.
731
732* Renamed the following options:
733 --logfile-fd --> --log-fd
734 --logfile --> --log-file
735 --logsocket --> --log-socket
736 to be consistent with each other and other options (esp. --input-fd).
737
738* Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and
739 improve the checking of other interface related ioctls.
740
jsewardbd0a6e42004-07-17 12:19:43 +0000741* Fix building with gcc-3.4.1.
742
743* Remove limit on number of semaphores supported.
744
jsewardbd0a6e42004-07-17 12:19:43 +0000745* Add support for syscalls: set_tid_address (258), acct (51).
746
747* Support instruction "repne movs" -- not official but seems to occur.
748
749* Implement an emulated soft limit for file descriptors in addition to
750 the current reserved area, which effectively acts as a hard limit. The
751 setrlimit system call now simply updates the emulated limits as best
752 as possible - the hard limit is not allowed to move at all and just
753 returns EPERM if you try and change it. This should stop reductions
754 in the soft limit causing assertions when valgrind tries to allocate
755 descriptors from the reserved area.
jsewarda6017a42004-07-17 23:44:35 +0000756 (This actually came from bug #83998).
jsewardbd0a6e42004-07-17 12:19:43 +0000757
nethercote76e8fd92004-07-21 10:37:31 +0000758* Major overhaul of Cachegrind implementation. First user-visible change
nethercote5e63bfb2004-07-17 12:49:53 +0000759 is that cachegrind.out files are now typically 90% smaller than they
nethercote76e8fd92004-07-21 10:37:31 +0000760 used to be; code annotation times are correspondingly much smaller.
761 Second user-visible change is that hit/miss counts for code that is
762 unloaded at run-time is no longer dumped into a single "discard" pile,
763 but accurately preserved.
jsewardbd0a6e42004-07-17 12:19:43 +0000764
765* Client requests for telling valgrind about memory pools.
766
767
768
jseward9cd978c2004-07-17 13:38:12 +0000769Developer (cvs head) release 2.1.1 (12 March 2004)
770~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jsewardbd0a6e42004-07-17 12:19:43 +00007712.1.1 contains some internal structural changes needed for V's
jsewarde3e77042004-03-12 21:07:05 +0000772long-term future. These don't affect end-users. Most notable
773user-visible changes are:
774
775* Greater isolation between Valgrind and the program being run, so
776 the program is less likely to inadvertently kill Valgrind by
777 doing wild writes.
778
779* Massif: a new space profiling tool. Try it! It's cool, and it'll
780 tell you in detail where and when your C/C++ code is allocating heap.
781 Draws pretty .ps pictures of memory use against time. A potentially
782 powerful tool for making sense of your program's space use.
783
784* Fixes for many bugs, including support for more SSE2/SSE3 instructions,
785 various signal/syscall things, and various problems with debug
786 info readers.
787
788* Support for glibc-2.3.3 based systems.
789
790We are now doing automatic overnight build-and-test runs on a variety
791of distros. As a result, we believe 2.1.1 builds and runs on:
792Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9.
793
794
795The following bugs, and probably many more, have been fixed. These
796are listed at http://bugs.kde.org. Reporting a bug for valgrind in
797the http://bugs.kde.org is much more likely to get you a fix than
798mailing developers directly, so please continue to keep sending bugs
799there.
800
80169616 glibc 2.3.2 w/NPTL is massively different than what valgrind expects
80269856 I don't know how to instrument MMXish stuff (Helgrind)
80373892 valgrind segfaults starting with Objective-C debug info
804 (fix for S-type stabs)
80573145 Valgrind complains too much about close(<reserved fd>)
80673902 Shadow memory allocation seems to fail on RedHat 8.0
80768633 VG_N_SEMAPHORES too low (V itself was leaking semaphores)
80875099 impossible to trace multiprocess programs
80976839 the `impossible' happened: disInstr: INT but not 0x80 !
81076762 vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed.
81176747 cannot include valgrind.h in c++ program
81276223 parsing B(3,10) gave NULL type => impossible happens
81375604 shmdt handling problem
81476416 Problems with gcc 3.4 snap 20040225
81575614 using -gstabs when building your programs the `impossible' happened
81675787 Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET,
81775294 gcc 3.4 snapshot's libstdc++ have unsupported instructions.
818 (REP RET)
81973326 vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed.
82072596 not recognizing __libc_malloc
82169489 Would like to attach ddd to running program
82272781 Cachegrind crashes with kde programs
82373055 Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes)
82473026 Descriptor leak check reports port numbers wrongly
82571705 README_MISSING_SYSCALL_OR_IOCTL out of date
82672643 Improve support for SSE/SSE2 instructions
82772484 valgrind leaves it's own signal mask in place when execing
82872650 Signal Handling always seems to restart system calls
82972006 The mmap system call turns all errors in ENOMEM
83071781 gdb attach is pretty useless
83171180 unhandled instruction bytes: 0xF 0xAE 0x85 0xE8
83269886 writes to zero page cause valgrind to assert on exit
83371791 crash when valgrinding gimp 1.3 (stabs reader problem)
83469783 unhandled syscall: 218
83569782 unhandled instruction bytes: 0x66 0xF 0x2B 0x80
83670385 valgrind fails if the soft file descriptor limit is less
837 than about 828
83869529 "rep; nop" should do a yield
83970827 programs with lots of shared libraries report "mmap failed"
840 for some of them when reading symbols
84171028 glibc's strnlen is optimised enough to confuse valgrind
842
843
844
845
jseward43230652003-12-14 00:14:54 +0000846Unstable (cvs head) release 2.1.0 (15 December 2003)
847~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
848For whatever it's worth, 2.1.0 actually seems pretty darn stable to me
849(Julian). It looks eminently usable, and given that it fixes some
850significant bugs, may well be worth using on a day-to-day basis.
8512.1.0 is known to build and pass regression tests on: SuSE 9, SuSE
8528.2, RedHat 8.
853
8542.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of
855handling of system calls and signals, and their interaction with
856threads. In general, the accuracy of the system call, thread and
857signal simulations is much improved. Specifically:
858
859- Blocking system calls behave exactly as they do when running
860 natively (not on valgrind). That is, if a syscall blocks only the
861 calling thread when running natively, than it behaves the same on
862 valgrind. No more mysterious hangs because V doesn't know that some
863 syscall or other, should block only the calling thread.
864
865- Interrupted syscalls should now give more faithful results.
866
867- Finally, signal contexts in signal handlers are supported. As a
868 result, konqueror on SuSE 9 no longer segfaults when notified of
869 file changes in directories it is watching.
870
871Other changes:
872
873- Robert Walsh's file descriptor leakage checks. When enabled,
874 Valgrind will print out a list of open file descriptors on
875 exit. Along with each file descriptor, Valgrind prints out a stack
876 backtrace of where the file was opened and any details relating to the
877 file descriptor such as the file name or socket details.
878 To use, give: --track-fds=yes
879
880- Implemented a few more SSE/SSE2 instructions.
881
882- Less crud on the stack when you do 'where' inside a GDB attach.
883
884- Fixed the following bugs:
885 68360: Valgrind does not compile against 2.6.0-testX kernels
886 68525: CVS head doesn't compile on C90 compilers
887 68566: pkgconfig support (wishlist)
888 68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr)
889 69140: valgrind not able to explicitly specify a path to a binary.
890 69432: helgrind asserts encountering a MutexErr when there are
891 EraserErr suppressions
892
jseward0b12daf2003-12-14 14:35:28 +0000893- Increase the max size of the translation cache from 200k average bbs
894 to 300k average bbs. Programs on the size of OOo (680m17) are
895 thrashing the cache at the smaller size, creating large numbers of
896 retranslations and wasting significant time as a result.
897
jseward43230652003-12-14 00:14:54 +0000898
899
900Stable release 2.0.0 (5 Nov 2003)
901~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
902
9032.0.0 improves SSE/SSE2 support, fixes some minor bugs, and
904improves support for SuSE 9 and the Red Hat "Severn" beta.
905
906- Further improvements to SSE/SSE2 support. The entire test suite of
907 the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1
908 20030307Z '-g -O -xW' now works. I think this gives pretty good
909 coverage of SSE/SSE2 floating point instructions, or at least the
910 subset emitted by Icc.
911
912- Also added support for the following instructions:
913 MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS
914 PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS).
915
916- CFI support for GDB version 6. Needed to enable newer GDBs
917 to figure out where they are when using --gdb-attach=yes.
918
919- Fix this:
920 mc_translate.c:1091 (memcheck_instrument): Assertion
921 `u_in->size == 4 || u_in->size == 16' failed.
922
923- Return an error rather than panicing when given a bad socketcall.
924
925- Fix checking of syscall rt_sigtimedwait().
926
927- Implement __NR_clock_gettime (syscall 265). Needed on Red Hat Severn.
928
929- Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n'
930 bytes long, when it could be shorter, which could cause false
931 positives.
932
933- Support use of select() for very large numbers of file descriptors.
934
935- Don't fail silently if the executable is statically linked, or is
936 setuid/setgid. Print an error message instead.
937
938- Support for old DWARF-1 format line number info.
939
940
941
942Snapshot 20031012 (12 October 2003)
943~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
944
945Three months worth of bug fixes, roughly. Most significant single
946change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
947
94820031012 builds on Red Hat Fedora ("Severn") but doesn't really work
949(curiosly, mozilla runs OK, but a modest "ls -l" bombs). I hope to
950get a working version out soon. It may or may not work ok on the
951forthcoming SuSE 9; I hear positive noises about it but haven't been
952able to verify this myself (not until I get hold of a copy of 9).
953
954A detailed list of changes, in no particular order:
955
956- Describe --gen-suppressions in the FAQ.
957
958- Syscall __NR_waitpid supported.
959
960- Minor MMX bug fix.
961
962- -v prints program's argv[] at startup.
963
964- More glibc-2.3 suppressions.
965
966- Suppressions for stack underrun bug(s) in the c++ support library
967 distributed with Intel Icc 7.0.
968
969- Fix problems reading /proc/self/maps.
970
971- Fix a couple of messages that should have been suppressed by -q,
972 but weren't.
973
974- Make Addrcheck understand "Overlap" suppressions.
975
976- At startup, check if program is statically linked and bail out if so.
977
978- Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
979
980- Memcheck/addrcheck: minor speed optimisations
981
982- Handle syscall __NR_brk more correctly than before.
983
984- Fixed incorrect allocate/free mismatch errors when using
985 operator new(unsigned, std::nothrow_t const&)
986 operator new[](unsigned, std::nothrow_t const&)
987
988- Support POSIX pthread spinlocks.
989
990- Fixups for clean compilation with gcc-3.3.1.
daywalker5d945de2003-09-26 00:32:53 +0000991
992- Implemented more opcodes:
993 - push %es
994 - push %ds
995 - pop %es
996 - pop %ds
997 - movntq
998 - sfence
999 - pshufw
1000 - pavgb
1001 - ucomiss
1002 - enter
daywalkerb18d2532003-09-27 20:15:01 +00001003 - mov imm32, %esp
1004 - all "in" and "out" opcodes
daywalker79aad842003-09-30 22:58:12 +00001005 - inc/dec %esp
jseward43230652003-12-14 00:14:54 +00001006 - A whole bunch of SSE/SSE2 instructions
daywalker5d945de2003-09-26 00:32:53 +00001007
jseward43230652003-12-14 00:14:54 +00001008- Memcheck: don't bomb on SSE/SSE2 code.
daywalker5d945de2003-09-26 00:32:53 +00001009
sewardj90238792003-05-05 00:23:42 +00001010
sewardj945f39f2003-07-25 21:11:40 +00001011Snapshot 20030725 (25 July 2003)
1012~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1013
1014Fixes some minor problems in 20030716.
1015
1016- Fix bugs in overlap checking for strcpy/memcpy etc.
1017
1018- Do overlap checking with Addrcheck as well as Memcheck.
1019
1020- Fix this:
1021 Memcheck: the `impossible' happened:
1022 get_error_name: unexpected type
1023
1024- Install headers needed to compile new skins.
1025
sewardje3dd2e02003-07-27 08:04:48 +00001026- Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD
sewardj945f39f2003-07-25 21:11:40 +00001027 passed to non-traced children.
1028
sewardjb9eda952003-07-26 21:39:05 +00001029- Fix file descriptor leak in valgrind-listener.
1030
sewardje3dd2e02003-07-27 08:04:48 +00001031- Fix longstanding bug in which the allocation point of a
1032 block resized by realloc was not correctly set. This may
1033 have caused confusing error messages.
sewardj945f39f2003-07-25 21:11:40 +00001034
1035
sewardj626fd892003-07-16 20:10:26 +00001036Snapshot 20030716 (16 July 2003)
sewardj9d916ed2003-07-14 23:38:40 +00001037~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1038
sewardj626fd892003-07-16 20:10:26 +0000103920030716 is a snapshot of our current CVS head (development) branch.
sewardj9d916ed2003-07-14 23:38:40 +00001040This is the branch which will become valgrind-2.0. It contains
1041significant enhancements over the 1.9.X branch.
1042
1043Despite this being a snapshot of the CVS head, it is believed to be
1044quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so
1045-- and therefore suitable for widespread use. Please let us know asap
1046if it causes problems for you.
1047
1048Two reasons for releasing a snapshot now are:
1049
1050- It's been a while since 1.9.6, and this snapshot fixes
1051 various problems that 1.9.6 has with threaded programs
1052 on glibc-2.3.X based systems.
1053
1054- So as to make available improvements in the 2.0 line.
1055
sewardj626fd892003-07-16 20:10:26 +00001056Major changes in 20030716, as compared to 1.9.6:
sewardj9d916ed2003-07-14 23:38:40 +00001057
1058- More fixes to threading support on glibc-2.3.1 and 2.3.2-based
1059 systems (SuSE 8.2, Red Hat 9). If you have had problems
1060 with inconsistent/illogical behaviour of errno, h_errno or the DNS
sewardj626fd892003-07-16 20:10:26 +00001061 resolver functions in threaded programs, 20030716 should improve
sewardj9d916ed2003-07-14 23:38:40 +00001062 matters. This snapshot seems stable enough to run OpenOffice.org
1063 1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big
1064 threaded app if ever I saw one.
1065
1066- Automatic generation of suppression records; you no longer
1067 need to write them by hand. Use --gen-suppressions=yes.
1068
sewardj21511802003-07-22 17:47:42 +00001069- strcpy/memcpy/etc check their arguments for overlaps, when
1070 running with the Memcheck or Addrcheck skins.
1071
1072- malloc_usable_size() is now supported.
1073
1074- new client requests:
1075 - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS:
1076 useful with regression testing
1077 - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions
1078 on real CPU (use with caution!)
1079
sewardj9d916ed2003-07-14 23:38:40 +00001080- The GDB attach mechanism is more flexible. Allow the GDB to
1081 be run to be specified by --gdb-path=/path/to/gdb, and specify
1082 which file descriptor V will read its input from with
1083 --input-fd=<number>.
1084
sewardj21511802003-07-22 17:47:42 +00001085- Cachegrind gives more accurate results (wasn't tracking instructions in
1086 malloc() and friends previously, is now).
1087
sewardj9d916ed2003-07-14 23:38:40 +00001088- Complete support for the MMX instruction set.
1089
1090- Partial support for the SSE and SSE2 instruction sets. Work for this
1091 is ongoing. About half the SSE/SSE2 instructions are done, so
1092 some SSE based programs may work. Currently you need to specify
1093 --skin=addrcheck. Basically not suitable for real use yet.
1094
1095- Significant speedups (10%-20%) for standard memory checking.
1096
1097- Fix assertion failure in pthread_once().
1098
1099- Fix this:
1100 valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select):
1101 Assertion `ms_end >= ms_now' failed.
1102
1103- Implement pthread_mutexattr_setpshared.
1104
1105- Understand Pentium 4 branch hints. Also implemented a couple more
1106 obscure x86 instructions.
1107
1108- Lots of other minor bug fixes.
1109
sewardj626fd892003-07-16 20:10:26 +00001110- We have a decent regression test system, for the first time.
1111 This doesn't help you directly, but it does make it a lot easier
1112 for us to track the quality of the system, especially across
1113 multiple linux distributions.
1114
1115 You can run the regression tests with 'make regtest' after 'make
1116 install' completes. On SuSE 8.2 and Red Hat 9 I get this:
1117
1118 == 84 tests, 0 stderr failures, 0 stdout failures ==
1119
1120 On Red Hat 8, I get this:
1121
1122 == 84 tests, 2 stderr failures, 1 stdout failure ==
1123 corecheck/tests/res_search (stdout)
1124 memcheck/tests/sigaltstack (stderr)
1125
1126 sigaltstack is probably harmless. res_search doesn't work
1127 on R H 8 even running natively, so I'm not too worried.
1128
1129 On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures:
1130
1131 == 84 tests, 2 stderr failures, 1 stdout failure ==
1132 corecheck/tests/pth_atfork1 (stdout)
1133 corecheck/tests/pth_atfork1 (stderr)
1134 memcheck/tests/sigaltstack (stderr)
1135
1136 You need to run on a PII system, at least, since some tests
1137 contain P6-specific instructions, and the test machine needs
1138 access to the internet so that corecheck/tests/res_search
1139 (a test that the DNS resolver works) can function.
1140
sewardj9d916ed2003-07-14 23:38:40 +00001141As ever, thanks for the vast amount of feedback :) and bug reports :(
1142We may not answer all messages, but we do at least look at all of
1143them, and tend to fix the most frequently reported bugs.
1144
1145
1146
sewardj37918822003-05-05 01:05:09 +00001147Version 1.9.6 (7 May 2003 or thereabouts)
1148~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1149
1150Major changes in 1.9.6:
1151
1152- Improved threading support for glibc >= 2.3.2 (SuSE 8.2,
1153 RedHat 9, to name but two ...) It turned out that 1.9.5
1154 had problems with threading support on glibc >= 2.3.2,
1155 usually manifested by threaded programs deadlocking in system calls,
1156 or running unbelievably slowly. Hopefully these are fixed now. 1.9.6
1157 is the first valgrind which gives reasonable support for
1158 glibc-2.3.2. Also fixed a 2.3.2 problem with pthread_atfork().
1159
1160- Majorly expanded FAQ.txt. We've added workarounds for all
1161 common problems for which a workaround is known.
1162
1163Minor changes in 1.9.6:
1164
1165- Fix identification of the main thread's stack. Incorrect
1166 identification of it was causing some on-stack addresses to not get
1167 identified as such. This only affected the usefulness of some error
1168 messages; the correctness of the checks made is unchanged.
1169
1170- Support for kernels >= 2.5.68.
1171
1172- Dummy implementations of __libc_current_sigrtmin,
1173 __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully
1174 good enough to keep alive programs which previously died for lack of
1175 them.
1176
1177- Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request.
1178
sewardj3d47b792003-05-05 22:15:35 +00001179- Fix bug in the DWARF2 debug line info loader, when instructions
1180 following each other have source lines far from each other
1181 (e.g. with inlined functions).
1182
sewardj37918822003-05-05 01:05:09 +00001183- Debug info reading: read symbols from both "symtab" and "dynsym"
1184 sections, rather than merely from the one that comes last in the
1185 file.
1186
1187- New syscall support: prctl(), creat(), lookup_dcookie().
1188
1189- When checking calls to accept(), recvfrom(), getsocketopt(),
1190 don't complain if buffer values are NULL.
1191
1192- Try and avoid assertion failures in
1193 mash_LD_PRELOAD_and_LD_LIBRARY_PATH.
1194
1195- Minor bug fixes in cg_annotate.
1196
1197
1198
sewardj90238792003-05-05 00:23:42 +00001199Version 1.9.5 (7 April 2003)
1200~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1201
1202It occurs to me that it would be helpful for valgrind users to record
1203in the source distribution the changes in each release. So I now
1204attempt to mend my errant ways :-) Changes in this and future releases
1205will be documented in the NEWS file in the source distribution.
1206
1207Major changes in 1.9.5:
1208
1209- (Critical bug fix): Fix a bug in the FPU simulation. This was
1210 causing some floating point conditional tests not to work right.
1211 Several people reported this. If you had floating point code which
1212 didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5.
1213
1214- Partial support for Red Hat 9. RH9 uses the new Native Posix
1215 Threads Library (NPTL), instead of the older LinuxThreads.
1216 This potentially causes problems with V which will take some
1217 time to correct. In the meantime we have partially worked around
1218 this, and so 1.9.5 works on RH9. Threaded programs still work,
1219 but they may deadlock, because some system calls (accept, read,
1220 write, etc) which should be nonblocking, in fact do block. This
1221 is a known bug which we are looking into.
1222
1223 If you can, your best bet (unfortunately) is to avoid using
1224 1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution.
1225 If your glibc is 2.3.1 or earlier, you're almost certainly OK.
1226
1227Minor changes in 1.9.5:
1228
1229- Added some #errors to valgrind.h to ensure people don't include
1230 it accidentally in their sources. This is a change from 1.0.X
1231 which was never properly documented. The right thing to include
1232 is now memcheck.h. Some people reported problems and strange
1233 behaviour when (incorrectly) including valgrind.h in code with
1234 1.9.1 -- 1.9.4. This is no longer possible.
1235
1236- Add some __extension__ bits and pieces so that gcc configured
1237 for valgrind-checking compiles even with -Werror. If you
1238 don't understand this, ignore it. Of interest to gcc developers
1239 only.
1240
1241- Removed a pointless check which caused problems interworking
1242 with Clearcase. V would complain about shared objects whose
1243 names did not end ".so", and refuse to run. This is now fixed.
1244 In fact it was fixed in 1.9.4 but not documented.
1245
1246- Fixed a bug causing an assertion failure of "waiters == 1"
1247 somewhere in vg_scheduler.c, when running large threaded apps,
1248 notably MySQL.
1249
1250- Add support for the munlock system call (124).
1251
1252Some comments about future releases:
1253
12541.9.5 is, we hope, the most stable Valgrind so far. It pretty much
1255supersedes the 1.0.X branch. If you are a valgrind packager, please
1256consider making 1.9.5 available to your users. You can regard the
12571.0.X branch as obsolete: 1.9.5 is stable and vastly superior. There
1258are no plans at all for further releases of the 1.0.X branch.
1259
1260If you want a leading-edge valgrind, consider building the cvs head
1261(from SourceForge), or getting a snapshot of it. Current cool stuff
1262going in includes MMX support (done); SSE/SSE2 support (in progress),
1263a significant (10-20%) performance improvement (done), and the usual
1264large collection of minor changes. Hopefully we will be able to
1265improve our NPTL support, but no promises.
1266