blob: 2aa6963c67166a306a958297d290bc51e8b69156 [file] [log] [blame]
jseward43230652003-12-14 00:14:54 +00001
sewardj4bbe9d72005-11-16 18:39:25 +00002Release 3.1.0 (25 November 2005)
njnf63170c2005-11-12 19:09:51 +00003~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sewardj4bbe9d72005-11-16 18:39:25 +000043.1.0 is a feature release with a number of significant improvements:
5AMD64 support is much improved, PPC32 support is good enough to be
6usable, and the handling of memory management and address space is
7much more robust. In detail:
njnf63170c2005-11-12 19:09:51 +00008
sewardj4bbe9d72005-11-16 18:39:25 +00009- AMD64 support is much improved. The 64-bit vs. 32-bit issues in
10 3.0.X have been resolved, and it should "just work" now in all
11 cases. On AMD64 machines both 64-bit and 32-bit versions of
12 Valgrind are built. The right version will be invoked
13 automatically, even when using --trace-children and mixing execution
14 between 64-bit and 32-bit executables. Also, many more instructions
15 are supported.
njnf63170c2005-11-12 19:09:51 +000016
sewardj4bbe9d72005-11-16 18:39:25 +000017- PPC32 support is now good enough to be usable. It should work with
18 all tools, but please let us know if you have problems. Three
19 classes of CPUs are supported: integer only (no FP, no Altivec),
20 which covers embedded PPC uses, integer and FP but no Altivec
21 (G3-ish), and CPUs capable of Altivec too (G4, G5).
njnf63170c2005-11-12 19:09:51 +000022
sewardj4bbe9d72005-11-16 18:39:25 +000023- Valgrind's address space management has been overhauled. As a
24 result, Valgrind should be much more robust with programs that use
25 large amounts of memory. There should be many fewer "memory
26 exhausted" messages, and debug symbols should be read correctly on
27 large (eg. 300MB+) executables. On 32-bit machines the full address
28 space available to user programs (usually 3GB or 4GB) can be fully
29 utilised. On 64-bit machines up to 32GB of space is usable; when
30 using Memcheck that means your program can use up to about 14GB.
njnf63170c2005-11-12 19:09:51 +000031
32 A side effect of this change is that Valgrind is no longer protected
33 against wild writes by the client. This feature was nice but relied
34 on the x86 segment registers and so wasn't portable.
35
36- Most users should not notice, but as part of the address space
sewardj4bbe9d72005-11-16 18:39:25 +000037 manager change, the way Valgrind is built has been changed. Each
38 tool is now built as a statically linked stand-alone executable,
39 rather than as a shared object that is dynamically linked with the
40 core. The "valgrind" program invokes the appropriate tool depending
41 on the --tool option. This slightly increases the amount of disk
42 space used by Valgrind, but it greatly simplified many things and
43 removed Valgrind's dependence on glibc.
njnf63170c2005-11-12 19:09:51 +000044
45Other user-visible changes:
46
47- The --weird-hacks option has been renamed --sim-hints.
48
49- The --time-stamp option no longer gives an absolute date and time.
50 It now prints the time elapsed since the program began.
51
sewardj4bbe9d72005-11-16 18:39:25 +000052- It should build with gcc-2.96.
53
njn7cce5b82005-11-16 20:12:22 +000054- Valgrind can now run itself (see README_DEVELOPERS for how).
sewardj47058612005-11-16 19:13:13 +000055 This is not much use to you, but it means the developers can now
56 profile Valgrind using Cachegrind. As a result a couple of
57 performance bad cases have been fixed.
58
sewardj6a5a69c2005-11-17 00:51:36 +000059- The XML output format has changed slightly. See
60 docs/internals/xml-output.txt.
61
njnf63170c2005-11-12 19:09:51 +000062The following are some user-visible changes that occurred in earlier
63versions that may not have been announced, or were announced but not
njn7cce5b82005-11-16 20:12:22 +000064widely noticed. So we're mentioning them now.
njnf63170c2005-11-12 19:09:51 +000065
66- The --tool flag is optional once again; if you omit it, Memcheck
67 is run by default.
68
69- The --num-callers flag now has a default value of 12. It was
70 previously 4.
71
njn7cce5b82005-11-16 20:12:22 +000072- The --xml=yes flag causes Valgrind's output to be produced in XML
73 format. This is designed to make it easy for other programs to
74 consume Valgrind's output. The format is described in the file
njnf63170c2005-11-12 19:09:51 +000075 docs/internals/xml-format.txt.
76
njn1f503992005-11-13 16:41:15 +000077- The --gen-suppressions flag supports an "all" value that causes every
78 suppression to be printed without asking.
79
njnf63170c2005-11-12 19:09:51 +000080BUGS FIXED:
81
sewardj4bbe9d72005-11-16 18:39:25 +000082109861 amd64 hangs at startup
83110301 ditto
84111554 valgrind crashes with Cannot allocate memory
85111809 Memcheck tool doesn't start java
86111901 cross-platform run of cachegrind fails on opteron
87113468 (vgPlain_mprotect_range): Assertion 'r != -1' failed.
88 92071 Reading debugging info uses too much memory
89109744 memcheck loses track of mmap from direct ld-linux.so.2
90110183 tail of page with _end
91 82301 FV memory layout too rigid
92 98278 Infinite recursion possible when allocating memory
93108994 Valgrind runs out of memory due to 133x overhead
94115643 valgrind cannot allocate memory
95105974 vg_hashtable.c static hash table
96109323 ppc32: dispatch.S uses Altivec insn, which doesn't work on POWER.
97109345 ptrace_setregs not yet implemented for ppc
98110831 Would like to be able to run against both 32 and 64 bit
99 binaries on AMD64
100110829 == 110831
101111781 compile of valgrind-3.0.0 fails on my linux (gcc 2.X prob)
102112670 Cachegrind: cg_main.c:486 (handleOneStatement ...
103112941 vex x86: 0xD9 0xF4 (fxtract)
104110201 == 112941
105113015 vex amd64->IR: 0xE3 0x14 0x48 0x83 (jrcxz)
106113126 Crash with binaries built with -gstabs+/-ggdb
107104065 == 113126
108115741 == 113126
109113403 Partial SSE3 support on x86
110113541 vex: Grp5(x86) (alt encoding inc/dec) case 1
111113642 valgrind crashes when trying to read debug information
112113810 vex x86->IR: 66 0F F6 (66 + PSADBW == SSE PSADBW)
113113796 read() and write() do not work if buffer is in shared memory
114113851 vex x86->IR: (pmaddwd): 0x66 0xF 0xF5 0xC7
115114366 vex amd64 cannnot handle __asm__( "fninit" )
116114412 vex amd64->IR: 0xF 0xAD 0xC2 0xD3 (128-bit shift, shrdq?)
117114455 vex amd64->IR: 0xF 0xAC 0xD0 0x1 (also shrdq)
118115590: amd64->IR: 0x67 0xE3 0x9 0xEB (address size override)
119115953 valgrind svn r5042 does not build with parallel make (-j3)
120116057 maximum instruction size - VG_MAX_INSTR_SZB too small?
121116483 shmat failes with invalid argument
122102202 valgrind crashes when realloc'ing until out of memory
123109487 == 102202
124110536 == 102202
125112687 == 102202
126111724 vex amd64->IR: 0x41 0xF 0xAB (more BT{,S,R,C} fun n games)
127111748 vex amd64->IR: 0xDD 0xE2 (fucom)
128111785 make fails if CC contains spaces
129111829 vex x86->IR: sbb AL, Ib
130111851 vex x86->IR: 0x9F 0x89 (lahf/sahf)
131112031 iopl on AMD64 and README_MISSING_SYSCALL_OR_IOCTL update
132112152 code generation for Xin_MFence on x86 with SSE0 subarch
133112167 == 112152
134112789 == 112152
135112199 naked ar tool is used in vex makefile
136112501 vex x86->IR: movq (0xF 0x7F 0xC1 0xF) (mmx MOVQ)
137113583 == 112501
138112538 memalign crash
139113190 Broken links in docs/html/
140113230 Valgrind sys_pipe on x86-64 wrongly thinks file descriptors
141 should be 64bit
142113996 vex amd64->IR: fucomp (0xDD 0xE9)
143114196 vex x86->IR: out %eax,(%dx) (0xEF 0xC9 0xC3 0x90)
144114289 Memcheck fails to intercept malloc when used in an uclibc environment
145114756 mbind syscall support
146114757 Valgrind dies with assertion: Assertion 'noLargerThan > 0' failed
147114563 stack tracking module not informed when valgrind switches threads
148114564 clone() and stacks
149114565 == 114564
150115496 glibc crashes trying to use sysinfo page
151116200 enable fsetxattr, fgetxattr, and fremovexattr for amd64
njnf63170c2005-11-12 19:09:51 +0000152
153
sewardjcd62fe72005-08-29 13:24:51 +0000154Release 3.0.1 (29 August 2005)
155~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1563.0.1 fixes a bunch of bugs reported in 3.0.0. There is no new
157functionality. Some of the fixed bugs are critical, so if you
sewardjfa233892005-08-30 12:35:36 +0000158use/distribute 3.0.0, an upgrade to 3.0.1 is recommended. The fixed
sewardjcd62fe72005-08-29 13:24:51 +0000159bugs are:
160
161(note: "n-i-bz" means "not in bugzilla" -- this bug does not have
162 a bugzilla entry).
163
164109313 (== 110505) x86 cmpxchg8b
165n-i-bz x86: track but ignore changes to %eflags.AC (alignment check)
166110102 dis_op2_E_G(amd64)
167110202 x86 sys_waitpid(#286)
168110203 clock_getres(,0)
169110208 execve fail wrong retval
170110274 SSE1 now mandatory for x86
171110388 amd64 0xDD 0xD1
172110464 amd64 0xDC 0x1D FCOMP
173110478 amd64 0xF 0xD PREFETCH
174n-i-bz XML <unique> printing wrong
175n-i-bz Dirk r4359 (amd64 syscalls from trunk)
176110591 amd64 and x86: rdtsc not implemented properly
177n-i-bz Nick r4384 (stub implementations of Addrcheck and Helgrind)
178110652 AMD64 valgrind crashes on cwtd instruction
179110653 AMD64 valgrind crashes on sarb $0x4,foo(%rip) instruction
180110656 PATH=/usr/bin::/bin valgrind foobar stats ./fooba
181110657 Small test fixes
182110671 vex x86->IR: unhandled instruction bytes: 0xF3 0xC3 (rep ret)
183n-i-bz Nick (Cachegrind should not assert when it encounters a client
184 request.)
185110685 amd64->IR: unhandled instruction bytes: 0xE1 0x56 (loope Jb)
186110830 configuring with --host fails to build 32 bit on 64 bit target
187110875 Assertion when execve fails
188n-i-bz Updates to Memcheck manual
189n-i-bz Fixed broken malloc_usable_size()
190110898 opteron instructions missing: btq btsq btrq bsfq
191110954 x86->IR: unhandled instruction bytes: 0xE2 0xF6 (loop Jb)
192n-i-bz Make suppressions work for "???" lines in stacktraces.
193111006 bogus warnings from linuxthreads
194111092 x86: dis_Grp2(Reg): unhandled case(x86)
195111231 sctp_getladdrs() and sctp_getpaddrs() returns uninitialized
196 memory
197111102 (comment #4) Fixed 64-bit unclean "silly arg" message
198n-i-bz vex x86->IR: unhandled instruction bytes: 0x14 0x0
199n-i-bz minor umount/fcntl wrapper fixes
200111090 Internal Error running Massif
201101204 noisy warning
202111513 Illegal opcode for SSE instruction (x86 movups)
203111555 VEX/Makefile: CC is set to gcc
sewardjfa233892005-08-30 12:35:36 +0000204n-i-bz Fix XML bugs in FAQ
sewardjcd62fe72005-08-29 13:24:51 +0000205
sewardjfa233892005-08-30 12:35:36 +0000206(3.0.1: 29 August 05,
207 vex/branches/VEX_3_0_BRANCH r1367,
208 valgrind/branches/VALGRIND_3_0_BRANCH r4574).
sewardj820c7722005-08-29 13:44:43 +0000209
210
sewardjcd62fe72005-08-29 13:24:51 +0000211
sewardjec39f332005-08-02 15:28:07 +0000212Release 3.0.0 (3 August 2005)
213~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sewardjf9929e62005-08-02 21:05:58 +00002143.0.0 is a major overhaul of Valgrind. The most significant user
215visible change is that Valgrind now supports architectures other than
216x86. The new architectures it supports are AMD64 and PPC32, and the
217infrastructure is present for other architectures to be added later.
njn4a9f6f42005-07-19 23:46:08 +0000218
sewardjf9929e62005-08-02 21:05:58 +0000219AMD64 support works well, but has some shortcomings:
njn4a9f6f42005-07-19 23:46:08 +0000220
njn7b1a6a42005-07-20 04:20:44 +0000221- It generally won't be as solid as the x86 version. For example,
222 support for more obscure instructions and system calls may be missing.
223 We will fix these as they arise.
njn4a9f6f42005-07-19 23:46:08 +0000224
sewardjc371bd02005-07-27 09:55:24 +0000225- Address space may be limited; see the point about
njn7b1a6a42005-07-20 04:20:44 +0000226 position-independent executables below.
njn4a9f6f42005-07-19 23:46:08 +0000227
njn7b1a6a42005-07-20 04:20:44 +0000228- If Valgrind is built on an AMD64 machine, it will only run 64-bit
229 executables. If you want to run 32-bit x86 executables under Valgrind
230 on an AMD64, you will need to build Valgrind on an x86 machine and
231 copy it to the AMD64 machine. And it probably won't work if you do
232 something tricky like exec'ing a 32-bit program from a 64-bit program
233 while using --trace-children=yes. We hope to improve this situation
234 in the future.
235
236The PPC32 support is very basic. It may not work reliably even for
sewardjc371bd02005-07-27 09:55:24 +0000237small programs, but it's a start. Many thanks to Paul Mackerras for
238his great work that enabled this support. We are working to make
239PPC32 usable as soon as possible.
njn4a9f6f42005-07-19 23:46:08 +0000240
241Other user-visible changes:
242
sewardjec39f332005-08-02 15:28:07 +0000243- Valgrind is no longer built by default as a position-independent
244 executable (PIE), as this caused too many problems.
njn4a9f6f42005-07-19 23:46:08 +0000245
246 Without PIE enabled, AMD64 programs will only be able to access 2GB of
247 address space. We will fix this eventually, but not for the moment.
248
249 Use --enable-pie at configure-time to turn this on.
250
251- Support for programs that use stack-switching has been improved. Use
252 the --max-stackframe flag for simple cases, and the
253 VALGRIND_STACK_REGISTER, VALGRIND_STACK_DEREGISTER and
254 VALGRIND_STACK_CHANGE client requests for trickier cases.
255
njn7b1a6a42005-07-20 04:20:44 +0000256- Support for programs that use self-modifying code has been improved,
257 in particular programs that put temporary code fragments on the stack.
258 This helps for C programs compiled with GCC that use nested functions,
njne7723322005-07-24 17:19:09 +0000259 and also Ada programs. This is controlled with the --smc-check
njn7b1a6a42005-07-20 04:20:44 +0000260 flag, although the default setting should work in most cases.
njn4a9f6f42005-07-19 23:46:08 +0000261
njn7b1a6a42005-07-20 04:20:44 +0000262- Output can now be printed in XML format. This should make it easier
sewardjc371bd02005-07-27 09:55:24 +0000263 for tools such as GUI front-ends and automated error-processing
264 schemes to use Valgrind output as input. The --xml flag controls this.
265 As part of this change, ELF directory information is read from executables,
266 so absolute source file paths are available if needed.
njn4a9f6f42005-07-19 23:46:08 +0000267
268- Programs that allocate many heap blocks may run faster, due to
269 improvements in certain data structures.
270
njn7b1a6a42005-07-20 04:20:44 +0000271- Addrcheck is currently not working. We hope to get it working again
272 soon. Helgrind is still not working, as was the case for the 2.4.0
273 release.
njn4a9f6f42005-07-19 23:46:08 +0000274
sewardjc371bd02005-07-27 09:55:24 +0000275- The JITter has been completely rewritten, and is now in a separate
276 library, called Vex. This enabled a lot of the user-visible changes,
277 such as new architecture support. The new JIT unfortunately translates
278 more slowly than the old one, so programs may take longer to start.
279 We believe the code quality is produces is about the same, so once
280 started, programs should run at about the same speed. Feedback about
281 this would be useful.
282
283 On the plus side, Vex and hence Memcheck tracks value flow properly
284 through floating point and vector registers, something the 2.X line
285 could not do. That means that Memcheck is much more likely to be
286 usably accurate on vectorised code.
287
sewardjec39f332005-08-02 15:28:07 +0000288- There is a subtle change to the way exiting of threaded programs
sewardjc371bd02005-07-27 09:55:24 +0000289 is handled. In 3.0, Valgrind's final diagnostic output (leak check,
290 etc) is not printed until the last thread exits. If the last thread
291 to exit was not the original thread which started the program, any
292 other process wait()-ing on this one to exit may conclude it has
293 finished before the diagnostic output is printed. This may not be
294 what you expect. 2.X had a different scheme which avoided this
295 problem, but caused deadlocks under obscure circumstances, so we
296 are trying something different for 3.0.
297
298- Small changes in control log file naming which make it easier to
sewardjec39f332005-08-02 15:28:07 +0000299 use valgrind for debugging MPI-based programs. The relevant
300 new flags are --log-file-exactly= and --log-file-qualifier=.
sewardjc371bd02005-07-27 09:55:24 +0000301
302- As part of adding AMD64 support, DWARF2 CFI-based stack unwinding
303 support was added. In principle this means Valgrind can produce
304 meaningful backtraces on x86 code compiled with -fomit-frame-pointer
tom81868f02005-07-27 10:33:08 +0000305 providing you also compile your code with -fasynchronous-unwind-tables.
sewardjc371bd02005-07-27 09:55:24 +0000306
sewardjec39f332005-08-02 15:28:07 +0000307- The documentation build system has been completely redone.
308 The documentation masters are now in XML format, and from that
309 HTML, PostScript and PDF documentation is generated. As a result
310 the manual is now available in book form. Note that the
311 documentation in the source tarballs is pre-built, so you don't need
312 any XML processing tools to build Valgrind from a tarball.
njn4a9f6f42005-07-19 23:46:08 +0000313
314Changes that are not user-visible:
315
sewardjc371bd02005-07-27 09:55:24 +0000316- The code has been massively overhauled in order to modularise it.
317 As a result we hope it is easier to navigate and understand.
njn4a9f6f42005-07-19 23:46:08 +0000318
319- Lots of code has been rewritten.
320
sewardjf9929e62005-08-02 21:05:58 +0000321BUGS FIXED:
njn4a9f6f42005-07-19 23:46:08 +0000322
sewardj79bd9b62005-08-03 16:40:10 +0000323110046 sz == 4 assertion failed
324109810 vex amd64->IR: unhandled instruction bytes: 0xA3 0x4C 0x70 0xD7
sewardjf9929e62005-08-02 21:05:58 +0000325109802 Add a plausible_stack_size command-line parameter ?
326109783 unhandled ioctl TIOCMGET (running hw detection tool discover)
327109780 unhandled ioctl BLKSSZGET (running fdisk -l /dev/hda)
328109718 vex x86->IR: unhandled instruction: ffreep
329109429 AMD64 unhandled syscall: 127 (sigpending)
330109401 false positive uninit in strchr from ld-linux.so.2
331109385 "stabs" parse failure
332109378 amd64: unhandled instruction REP NOP
333109376 amd64: unhandled instruction LOOP Jb
334109363 AMD64 unhandled instruction bytes
335109362 AMD64 unhandled syscall: 24 (sched_yield)
336109358 fork() won't work with valgrind-3.0 SVN
337109332 amd64 unhandled instruction: ADC Ev, Gv
338109314 Bogus memcheck report on amd64
339108883 Crash; vg_memory.c:905 (vgPlain_init_shadow_range):
340 Assertion `vgPlain_defined_init_shadow_page()' failed.
341108349 mincore syscall parameter checked incorrectly
342108059 build infrastructure: small update
343107524 epoll_ctl event parameter checked on EPOLL_CTL_DEL
344107123 Vex dies with unhandled instructions: 0xD9 0x31 0xF 0xAE
345106841 auxmap & openGL problems
346106713 SDL_Init causes valgrind to exit
347106352 setcontext and makecontext not handled correctly
348106293 addresses beyond initial client stack allocation
349 not checked in VALGRIND_DO_LEAK_CHECK
350106283 PIE client programs are loaded at address 0
351105831 Assertion `vgPlain_defined_init_shadow_page()' failed.
352105039 long run-times probably due to memory manager
353104797 valgrind needs to be aware of BLKGETSIZE64
354103594 unhandled instruction: FICOM
355103320 Valgrind 2.4.0 fails to compile with gcc 3.4.3 and -O0
356103168 potentially memory leak in coregrind/ume.c
357102039 bad permissions for mapped region at address 0xB7C73680
358101881 weird assertion problem
359101543 Support fadvise64 syscalls
36075247 x86_64/amd64 support (the biggest "bug" we have ever fixed)
njn4a9f6f42005-07-19 23:46:08 +0000361
sewardj9a919512005-08-03 17:01:51 +0000362(3.0RC1: 27 July 05, vex r1303, valgrind r4283).
sewardj1346e132005-08-03 20:42:06 +0000363(3.0.0: 3 August 05, vex r1313, valgrind r4316).
sewardjbfa2b992005-07-27 17:49:17 +0000364
365
366
njn8c927302005-03-12 16:45:01 +0000367Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
njn1aa5ae42005-03-26 16:04:27 +0000368~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3692.4.0 brings many significant changes and bug fixes. The most
370significant user-visible change is that we no longer supply our own
371pthread implementation. Instead, Valgrind is finally capable of
372running the native thread library, either LinuxThreads or NPTL.
njn8c927302005-03-12 16:45:01 +0000373
njn1aa5ae42005-03-26 16:04:27 +0000374This means our libpthread has gone, along with the bugs associated
375with it. Valgrind now supports the kernel's threading syscalls, and
376lets you use your standard system libpthread. As a result:
njn8c927302005-03-12 16:45:01 +0000377
njn1aa5ae42005-03-26 16:04:27 +0000378* There are many fewer system dependencies and strange library-related
379 bugs. There is a small performance improvement, and a large
380 stability improvement.
njn8c927302005-03-12 16:45:01 +0000381
njn1aa5ae42005-03-26 16:04:27 +0000382* On the downside, Valgrind can no longer report misuses of the POSIX
383 PThreads API. It also means that Helgrind currently does not work.
384 We hope to fix these problems in a future release.
njn8c927302005-03-12 16:45:01 +0000385
njn1aa5ae42005-03-26 16:04:27 +0000386Note that running the native thread libraries does not mean Valgrind
387is able to provide genuine concurrent execution on SMPs. We still
388impose the restriction that only one thread is running at any given
389time.
njn8c927302005-03-12 16:45:01 +0000390
njn1aa5ae42005-03-26 16:04:27 +0000391There are many other significant changes too:
njn8c927302005-03-12 16:45:01 +0000392
njn1aa5ae42005-03-26 16:04:27 +0000393* Memcheck is (once again) the default tool.
njn8c927302005-03-12 16:45:01 +0000394
njn1aa5ae42005-03-26 16:04:27 +0000395* The default stack backtrace is now 12 call frames, rather than 4.
njn8c927302005-03-12 16:45:01 +0000396
njn1aa5ae42005-03-26 16:04:27 +0000397* Suppressions can have up to 25 call frame matches, rather than 4.
njn8c927302005-03-12 16:45:01 +0000398
njn1aa5ae42005-03-26 16:04:27 +0000399* Memcheck and Addrcheck use less memory. Under some circumstances,
400 they no longer allocate shadow memory if there are large regions of
401 memory with the same A/V states - such as an mmaped file.
njn8c927302005-03-12 16:45:01 +0000402
njn1aa5ae42005-03-26 16:04:27 +0000403* The memory-leak detector in Memcheck and Addrcheck has been
404 improved. It now reports more types of memory leak, including
405 leaked cycles. When reporting leaked memory, it can distinguish
406 between directly leaked memory (memory with no references), and
407 indirectly leaked memory (memory only referred to by other leaked
408 memory).
njn8c927302005-03-12 16:45:01 +0000409
njn1aa5ae42005-03-26 16:04:27 +0000410* Memcheck's confusion over the effect of mprotect() has been fixed:
411 previously mprotect could erroneously mark undefined data as
412 defined.
njn8c927302005-03-12 16:45:01 +0000413
njn1aa5ae42005-03-26 16:04:27 +0000414* Signal handling is much improved and should be very close to what
415 you get when running natively.
416
417 One result of this is that Valgrind observes changes to sigcontexts
418 passed to signal handlers. Such modifications will take effect when
419 the signal returns. You will need to run with --single-step=yes to
420 make this useful.
njn8c927302005-03-12 16:45:01 +0000421
422* Valgrind is built in Position Independent Executable (PIE) format if
njn1aa5ae42005-03-26 16:04:27 +0000423 your toolchain supports it. This allows it to take advantage of all
njn8c927302005-03-12 16:45:01 +0000424 the available address space on systems with 4Gbyte user address
425 spaces.
426
427* Valgrind can now run itself (requires PIE support).
428
njn1aa5ae42005-03-26 16:04:27 +0000429* Syscall arguments are now checked for validity. Previously all
430 memory used by syscalls was checked, but now the actual values
431 passed are also checked.
njn8c927302005-03-12 16:45:01 +0000432
njn1aa5ae42005-03-26 16:04:27 +0000433* Syscall wrappers are more robust against bad addresses being passed
434 to syscalls: they will fail with EFAULT rather than killing Valgrind
435 with SIGSEGV.
njn8c927302005-03-12 16:45:01 +0000436
njn1aa5ae42005-03-26 16:04:27 +0000437* Because clone() is directly supported, some non-pthread uses of it
438 will work. Partial sharing (where some resources are shared, and
439 some are not) is not supported.
440
441* open() and readlink() on /proc/self/exe are supported.
442
443BUGS FIXED:
444
44588520 pipe+fork+dup2 kills the main program
44688604 Valgrind Aborts when using $VALGRIND_OPTS and user progra...
44788614 valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt...
44888703 Stabs parser fails to handle ";"
44988886 ioctl wrappers for TIOCMBIS and TIOCMBIC
45089032 valgrind pthread_cond_timedwait fails
45189106 the 'impossible' happened
45289139 Missing sched_setaffinity & sched_getaffinity
45389198 valgrind lacks support for SIOCSPGRP and SIOCGPGRP
45489263 Missing ioctl translations for scsi-generic and CD playing
45589440 tests/deadlock.c line endings
45689481 `impossible' happened: EXEC FAILED
45789663 valgrind 2.2.0 crash on Redhat 7.2
45889792 Report pthread_mutex_lock() deadlocks instead of returnin...
45990111 statvfs64 gives invalid error/warning
46090128 crash+memory fault with stabs generated by gnat for a run...
46190778 VALGRIND_CHECK_DEFINED() not as documented in memcheck.h
46290834 cachegrind crashes at end of program without reporting re...
46391028 valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio...
46491162 valgrind crash while debugging drivel 1.2.1
46591199 Unimplemented function
46691325 Signal routing does not propagate the siginfo structure
46791599 Assertion `cv == ((void *)0)'
46891604 rw_lookup clears orig and sends the NULL value to rw_new
46991821 Small problems building valgrind with $top_builddir ne $t...
47091844 signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec...
47192264 UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared
47292331 per-target flags necessitate AM_PROG_CC_C_O
47392420 valgrind doesn't compile with linux 2.6.8.1/9
47492513 Valgrind 2.2.0 generates some warning messages
47592528 vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed.
47693096 unhandled ioctl 0x4B3A and 0x5601
47793117 Tool and core interface versions do not match
47893128 Can't run valgrind --tool=memcheck because of unimplement...
47993174 Valgrind can crash if passed bad args to certain syscalls
48093309 Stack frame in new thread is badly aligned
48193328 Wrong types used with sys_sigprocmask()
48293763 /usr/include/asm/msr.h is missing
48393776 valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser...
48493810 fcntl() argument checking a bit too strict
48594378 Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed.
48694429 valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3
48794645 Impossible happened: PINSRW mem
48894953 valgrind: the `impossible' happened: SIGSEGV
48995667 Valgrind does not work with any KDE app
49096243 Assertion 'res==0' failed
49196252 stage2 loader of valgrind fails to allocate memory
49296520 All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ...
49396660 ioctl CDROMREADTOCENTRY causes bogus warnings
49496747 After looping in a segfault handler, the impossible happens
49596923 Zero sized arrays crash valgrind trace back with SIGFPE
49696948 valgrind stops with assertion failure regarding mmap2
49796966 valgrind fails when application opens more than 16 sockets
49897398 valgrind: vg_libpthread.c:2667 Assertion failed
49997407 valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `...
50097427 "Warning: invalid file descriptor -1 in syscall close()" ...
50197785 missing backtrace
50297792 build in obj dir fails - autoconf / makefile cleanup
50397880 pthread_mutex_lock fails from shared library (special ker...
50497975 program aborts without ang VG messages
50598129 Failed when open and close file 230000 times using stdio
50698175 Crashes when using valgrind-2.2.0 with a program using al...
50798288 Massif broken
50898303 UNIMPLEMENTED FUNCTION pthread_condattr_setpshared
50998630 failed--compilation missing warnings.pm, fails to make he...
51098756 Cannot valgrind signal-heavy kdrive X server
51198966 valgrinding the JVM fails with a sanity check assertion
51299035 Valgrind crashes while profiling
51399142 loops with message "Signal 11 being dropped from thread 0...
51499195 threaded apps crash on thread start (using QThread::start...
51599348 Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off...
51699568 False negative due to mishandling of mprotect
51799738 valgrind memcheck crashes on program that uses sigitimer
51899923 0-sized allocations are reported as leaks
51999949 program seg faults after exit()
520100036 "newSuperblock's request for 1048576 bytes failed"
521100116 valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ...
522100486 memcheck reports "valgrind: the `impossible' happened: V...
523100833 second call to "mremap" fails with EINVAL
524101156 (vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1...
525101173 Assertion `recDepth >= 0 && recDepth < 500' failed
526101291 creating threads in a forked process fails
527101313 valgrind causes different behavior when resizing a window...
528101423 segfault for c++ array of floats
529101562 valgrind massif dies on SIGINT even with signal handler r...
530
njn8c927302005-03-12 16:45:01 +0000531
jseward34ed74f2004-08-30 18:04:42 +0000532Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0
533~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jseward7d180d92004-08-30 18:15:37 +00005342.2.0 brings nine months worth of improvements and bug fixes. We
535believe it to be a worthy successor to 2.0.0. There are literally
536hundreds of bug fixes and minor improvements. There are also some
537fairly major user-visible changes:
538
539* A complete overhaul of handling of system calls and signals, and
540 their interaction with threads. In general, the accuracy of the
541 system call, thread and signal simulations is much improved:
542
543 - Blocking system calls behave exactly as they do when running
544 natively (not on valgrind). That is, if a syscall blocks only the
545 calling thread when running natively, than it behaves the same on
546 valgrind. No more mysterious hangs because V doesn't know that some
547 syscall or other, should block only the calling thread.
548
549 - Interrupted syscalls should now give more faithful results.
550
551 - Signal contexts in signal handlers are supported.
552
553* Improvements to NPTL support to the extent that V now works
554 properly on NPTL-only setups.
555
556* Greater isolation between Valgrind and the program being run, so
557 the program is less likely to inadvertently kill Valgrind by
558 doing wild writes.
559
560* Massif: a new space profiling tool. Try it! It's cool, and it'll
561 tell you in detail where and when your C/C++ code is allocating heap.
562 Draws pretty .ps pictures of memory use against time. A potentially
563 powerful tool for making sense of your program's space use.
564
565* File descriptor leakage checks. When enabled, Valgrind will print out
566 a list of open file descriptors on exit.
567
568* Improved SSE2/SSE3 support.
569
jseward2eb002b2004-08-31 00:14:02 +0000570* Time-stamped output; use --time-stamp=yes
571
jseward34ed74f2004-08-30 18:04:42 +0000572
573
574Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.1.2
575~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5762.2.0 is not much different from 2.1.2, released seven weeks ago.
577A number of bugs have been fixed, most notably #85658, which gave
578problems for quite a few people. There have been many internal
579cleanups, but those are not user visible.
580
581The following bugs have been fixed since 2.1.2:
582
58385658 Assert in coregrind/vg_libpthread.c:2326 (open64) !=
584 (void*)0 failed
585 This bug was reported multiple times, and so the following
586 duplicates of it are also fixed: 87620, 85796, 85935, 86065,
587 86919, 86988, 87917, 88156
588
58980716 Semaphore mapping bug caused by unmap (sem_destroy)
590 (Was fixed prior to 2.1.2)
591
59286987 semctl and shmctl syscalls family is not handled properly
593
59486696 valgrind 2.1.2 + RH AS2.1 + librt
595
59686730 valgrind locks up at end of run with assertion failure
597 in __pthread_unwind
598
59986641 memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1
600 (also fixes 74298, a duplicate of this)
601
60285947 MMX/SSE unhandled instruction 'sfence'
603
60484978 Wrong error "Conditional jump or move depends on
605 uninitialised value" resulting from "sbbl %reg, %reg"
606
60786254 ssort() fails when signed int return type from comparison is
608 too small to handle result of unsigned int subtraction
609
61087089 memalign( 4, xxx) makes valgrind assert
611
jseward2eb002b2004-08-31 00:14:02 +000061286407 Add support for low-level parallel port driver ioctls.
jseward34ed74f2004-08-30 18:04:42 +0000613
61470587 Add timestamps to Valgrind output? (wishlist)
615
61684937 vg_libpthread.c:2505 (se_remap): Assertion `res == 0'
617 (fixed prior to 2.1.2)
618
61986317 cannot load libSDL-1.2.so.0 using valgrind
620
62186989 memcpy from mac_replace_strmem.c complains about
622 uninitialized pointers passed when length to copy is zero
623
62485811 gnu pascal symbol causes segmentation fault; ok in 2.0.0
625
62679138 writing to sbrk()'d memory causes segfault
627
62877369 sched deadlock while signal received during pthread_join
629 and the joined thread exited
630
63188115 In signal handler for SIGFPE, siginfo->si_addr is wrong
632 under Valgrind
633
63478765 Massif crashes on app exit if FP exceptions are enabled
635
636Additionally there are the following changes, which are not
637connected to any bug report numbers, AFAICS:
638
639* Fix scary bug causing mis-identification of SSE stores vs
640 loads and so causing memcheck to sometimes give nonsense results
641 on SSE code.
642
643* Add support for the POSIX message queue system calls.
644
645* Fix to allow 32-bit Valgrind to run on AMD64 boxes. Note: this does
646 NOT allow Valgrind to work with 64-bit executables - only with 32-bit
647 executables on an AMD64 box.
648
649* At configure time, only check whether linux/mii.h can be processed
650 so that we don't generate ugly warnings by trying to compile it.
651
jseward2eb002b2004-08-31 00:14:02 +0000652* Add support for POSIX clocks and timers.
653
jseward34ed74f2004-08-30 18:04:42 +0000654
655
jseward9cd978c2004-07-17 13:38:12 +0000656Developer (cvs head) release 2.1.2 (18 July 2004)
jsewardbd0a6e42004-07-17 12:19:43 +0000657~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6582.1.2 contains four months worth of bug fixes and refinements.
jseward9cd978c2004-07-17 13:38:12 +0000659Although officially a developer release, we believe it to be stable
660enough for widespread day-to-day use. 2.1.2 is pretty good, so try it
661first, although there is a chance it won't work. If so then try 2.0.0
662and tell us what went wrong." 2.1.2 fixes a lot of problems present
663in 2.0.0 and is generally a much better product.
jsewardbd0a6e42004-07-17 12:19:43 +0000664
jseward9cd978c2004-07-17 13:38:12 +0000665Relative to 2.1.1, a large number of minor problems with 2.1.1 have
666been fixed, and so if you use 2.1.1 you should try 2.1.2. Users of
667the last stable release, 2.0.0, might also want to try this release.
jsewardbd0a6e42004-07-17 12:19:43 +0000668
669The following bugs, and probably many more, have been fixed. These
670are listed at http://bugs.kde.org. Reporting a bug for valgrind in
671the http://bugs.kde.org is much more likely to get you a fix than
672mailing developers directly, so please continue to keep sending bugs
673there.
674
67576869 Crashes when running any tool under Fedora Core 2 test1
676 This fixes the problem with returning from a signal handler
jseward0400d4d2004-07-17 23:26:46 +0000677 when VDSOs are turned off in FC2.
jsewardbd0a6e42004-07-17 12:19:43 +0000678
jseward0400d4d2004-07-17 23:26:46 +000067969508 java 1.4.2 client fails with erroneous "stack size too small".
680 This fix makes more of the pthread stack attribute related
681 functions work properly. Java still doesn't work though.
jsewardbd0a6e42004-07-17 12:19:43 +0000682
68371906 malloc alignment should be 8, not 4
684 All memory returned by malloc/new etc is now at least
685 8-byte aligned.
686
jsewarda6017a42004-07-17 23:44:35 +000068781970 vg_alloc_ThreadState: no free slots available
688 (closed because the workaround is simple: increase
689 VG_N_THREADS, rebuild and try again.)
690
jsewardbd0a6e42004-07-17 12:19:43 +000069178514 Conditional jump or move depends on uninitialized value(s)
692 (a slight mishanding of FP code in memcheck)
693
jsewarda6017a42004-07-17 23:44:35 +000069477952 pThread Support (crash) (due to initialisation-ordering probs)
695 (also 85118)
696
jsewardbd0a6e42004-07-17 12:19:43 +000069780942 Addrcheck wasn't doing overlap checking as it should.
69878048 return NULL on malloc/new etc failure, instead of asserting
69973655 operator new() override in user .so files often doesn't get picked up
70083060 Valgrind does not handle native kernel AIO
70169872 Create proper coredumps after fatal signals
70282026 failure with new glibc versions: __libc_* functions are not exported
70370344 UNIMPLEMENTED FUNCTION: tcdrain
70481297 Cancellation of pthread_cond_wait does not require mutex
70582872 Using debug info from additional packages (wishlist)
70683025 Support for ioctls FIGETBSZ and FIBMAP
70783340 Support for ioctl HDIO_GET_IDENTITY
70879714 Support for the semtimedop system call.
70977022 Support for ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO
71082098 hp2ps ansification (wishlist)
71183573 Valgrind SIGSEGV on execve
71282999 show which cmdline option was erroneous (wishlist)
71383040 make valgrind VPATH and distcheck-clean (wishlist)
jsewarda6017a42004-07-17 23:44:35 +000071483998 Assertion `newfd > vgPlain_max_fd' failed (see below)
71582722 Unchecked mmap in as_pad leads to mysterious failures later
71678958 memcheck seg faults while running Mozilla
jsewarda2c08002004-07-18 09:24:57 +000071785416 Arguments with colon (e.g. --logsocket) ignored
jsewardbd0a6e42004-07-17 12:19:43 +0000718
719
720Additionally there are the following changes, which are not
721connected to any bug report numbers, AFAICS:
722
723* Rearranged address space layout relative to 2.1.1, so that
724 Valgrind/tools will run out of memory later than currently in many
725 circumstances. This is good news esp. for Calltree. It should
726 be possible for client programs to allocate over 800MB of
727 memory when using memcheck now.
728
jseward9cd978c2004-07-17 13:38:12 +0000729* Improved checking when laying out memory. Should hopefully avoid
730 the random segmentation faults that 2.1.1 sometimes caused.
731
jsewardbd0a6e42004-07-17 12:19:43 +0000732* Support for Fedora Core 2 and SuSE 9.1. Improvements to NPTL
733 support to the extent that V now works properly on NPTL-only setups.
734
735* Renamed the following options:
736 --logfile-fd --> --log-fd
737 --logfile --> --log-file
738 --logsocket --> --log-socket
739 to be consistent with each other and other options (esp. --input-fd).
740
741* Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and
742 improve the checking of other interface related ioctls.
743
jsewardbd0a6e42004-07-17 12:19:43 +0000744* Fix building with gcc-3.4.1.
745
746* Remove limit on number of semaphores supported.
747
jsewardbd0a6e42004-07-17 12:19:43 +0000748* Add support for syscalls: set_tid_address (258), acct (51).
749
750* Support instruction "repne movs" -- not official but seems to occur.
751
752* Implement an emulated soft limit for file descriptors in addition to
753 the current reserved area, which effectively acts as a hard limit. The
754 setrlimit system call now simply updates the emulated limits as best
755 as possible - the hard limit is not allowed to move at all and just
756 returns EPERM if you try and change it. This should stop reductions
757 in the soft limit causing assertions when valgrind tries to allocate
758 descriptors from the reserved area.
jsewarda6017a42004-07-17 23:44:35 +0000759 (This actually came from bug #83998).
jsewardbd0a6e42004-07-17 12:19:43 +0000760
nethercote76e8fd92004-07-21 10:37:31 +0000761* Major overhaul of Cachegrind implementation. First user-visible change
nethercote5e63bfb2004-07-17 12:49:53 +0000762 is that cachegrind.out files are now typically 90% smaller than they
nethercote76e8fd92004-07-21 10:37:31 +0000763 used to be; code annotation times are correspondingly much smaller.
764 Second user-visible change is that hit/miss counts for code that is
765 unloaded at run-time is no longer dumped into a single "discard" pile,
766 but accurately preserved.
jsewardbd0a6e42004-07-17 12:19:43 +0000767
768* Client requests for telling valgrind about memory pools.
769
770
771
jseward9cd978c2004-07-17 13:38:12 +0000772Developer (cvs head) release 2.1.1 (12 March 2004)
773~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jsewardbd0a6e42004-07-17 12:19:43 +00007742.1.1 contains some internal structural changes needed for V's
jsewarde3e77042004-03-12 21:07:05 +0000775long-term future. These don't affect end-users. Most notable
776user-visible changes are:
777
778* Greater isolation between Valgrind and the program being run, so
779 the program is less likely to inadvertently kill Valgrind by
780 doing wild writes.
781
782* Massif: a new space profiling tool. Try it! It's cool, and it'll
783 tell you in detail where and when your C/C++ code is allocating heap.
784 Draws pretty .ps pictures of memory use against time. A potentially
785 powerful tool for making sense of your program's space use.
786
787* Fixes for many bugs, including support for more SSE2/SSE3 instructions,
788 various signal/syscall things, and various problems with debug
789 info readers.
790
791* Support for glibc-2.3.3 based systems.
792
793We are now doing automatic overnight build-and-test runs on a variety
794of distros. As a result, we believe 2.1.1 builds and runs on:
795Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9.
796
797
798The following bugs, and probably many more, have been fixed. These
799are listed at http://bugs.kde.org. Reporting a bug for valgrind in
800the http://bugs.kde.org is much more likely to get you a fix than
801mailing developers directly, so please continue to keep sending bugs
802there.
803
80469616 glibc 2.3.2 w/NPTL is massively different than what valgrind expects
80569856 I don't know how to instrument MMXish stuff (Helgrind)
80673892 valgrind segfaults starting with Objective-C debug info
807 (fix for S-type stabs)
80873145 Valgrind complains too much about close(<reserved fd>)
80973902 Shadow memory allocation seems to fail on RedHat 8.0
81068633 VG_N_SEMAPHORES too low (V itself was leaking semaphores)
81175099 impossible to trace multiprocess programs
81276839 the `impossible' happened: disInstr: INT but not 0x80 !
81376762 vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed.
81476747 cannot include valgrind.h in c++ program
81576223 parsing B(3,10) gave NULL type => impossible happens
81675604 shmdt handling problem
81776416 Problems with gcc 3.4 snap 20040225
81875614 using -gstabs when building your programs the `impossible' happened
81975787 Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET,
82075294 gcc 3.4 snapshot's libstdc++ have unsupported instructions.
821 (REP RET)
82273326 vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed.
82372596 not recognizing __libc_malloc
82469489 Would like to attach ddd to running program
82572781 Cachegrind crashes with kde programs
82673055 Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes)
82773026 Descriptor leak check reports port numbers wrongly
82871705 README_MISSING_SYSCALL_OR_IOCTL out of date
82972643 Improve support for SSE/SSE2 instructions
83072484 valgrind leaves it's own signal mask in place when execing
83172650 Signal Handling always seems to restart system calls
83272006 The mmap system call turns all errors in ENOMEM
83371781 gdb attach is pretty useless
83471180 unhandled instruction bytes: 0xF 0xAE 0x85 0xE8
83569886 writes to zero page cause valgrind to assert on exit
83671791 crash when valgrinding gimp 1.3 (stabs reader problem)
83769783 unhandled syscall: 218
83869782 unhandled instruction bytes: 0x66 0xF 0x2B 0x80
83970385 valgrind fails if the soft file descriptor limit is less
840 than about 828
84169529 "rep; nop" should do a yield
84270827 programs with lots of shared libraries report "mmap failed"
843 for some of them when reading symbols
84471028 glibc's strnlen is optimised enough to confuse valgrind
845
846
847
848
jseward43230652003-12-14 00:14:54 +0000849Unstable (cvs head) release 2.1.0 (15 December 2003)
850~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
851For whatever it's worth, 2.1.0 actually seems pretty darn stable to me
852(Julian). It looks eminently usable, and given that it fixes some
853significant bugs, may well be worth using on a day-to-day basis.
8542.1.0 is known to build and pass regression tests on: SuSE 9, SuSE
8558.2, RedHat 8.
856
8572.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of
858handling of system calls and signals, and their interaction with
859threads. In general, the accuracy of the system call, thread and
860signal simulations is much improved. Specifically:
861
862- Blocking system calls behave exactly as they do when running
863 natively (not on valgrind). That is, if a syscall blocks only the
864 calling thread when running natively, than it behaves the same on
865 valgrind. No more mysterious hangs because V doesn't know that some
866 syscall or other, should block only the calling thread.
867
868- Interrupted syscalls should now give more faithful results.
869
870- Finally, signal contexts in signal handlers are supported. As a
871 result, konqueror on SuSE 9 no longer segfaults when notified of
872 file changes in directories it is watching.
873
874Other changes:
875
876- Robert Walsh's file descriptor leakage checks. When enabled,
877 Valgrind will print out a list of open file descriptors on
878 exit. Along with each file descriptor, Valgrind prints out a stack
879 backtrace of where the file was opened and any details relating to the
880 file descriptor such as the file name or socket details.
881 To use, give: --track-fds=yes
882
883- Implemented a few more SSE/SSE2 instructions.
884
885- Less crud on the stack when you do 'where' inside a GDB attach.
886
887- Fixed the following bugs:
888 68360: Valgrind does not compile against 2.6.0-testX kernels
889 68525: CVS head doesn't compile on C90 compilers
890 68566: pkgconfig support (wishlist)
891 68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr)
892 69140: valgrind not able to explicitly specify a path to a binary.
893 69432: helgrind asserts encountering a MutexErr when there are
894 EraserErr suppressions
895
jseward0b12daf2003-12-14 14:35:28 +0000896- Increase the max size of the translation cache from 200k average bbs
897 to 300k average bbs. Programs on the size of OOo (680m17) are
898 thrashing the cache at the smaller size, creating large numbers of
899 retranslations and wasting significant time as a result.
900
jseward43230652003-12-14 00:14:54 +0000901
902
903Stable release 2.0.0 (5 Nov 2003)
904~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
905
9062.0.0 improves SSE/SSE2 support, fixes some minor bugs, and
907improves support for SuSE 9 and the Red Hat "Severn" beta.
908
909- Further improvements to SSE/SSE2 support. The entire test suite of
910 the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1
911 20030307Z '-g -O -xW' now works. I think this gives pretty good
912 coverage of SSE/SSE2 floating point instructions, or at least the
913 subset emitted by Icc.
914
915- Also added support for the following instructions:
916 MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS
917 PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS).
918
919- CFI support for GDB version 6. Needed to enable newer GDBs
920 to figure out where they are when using --gdb-attach=yes.
921
922- Fix this:
923 mc_translate.c:1091 (memcheck_instrument): Assertion
924 `u_in->size == 4 || u_in->size == 16' failed.
925
926- Return an error rather than panicing when given a bad socketcall.
927
928- Fix checking of syscall rt_sigtimedwait().
929
930- Implement __NR_clock_gettime (syscall 265). Needed on Red Hat Severn.
931
932- Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n'
933 bytes long, when it could be shorter, which could cause false
934 positives.
935
936- Support use of select() for very large numbers of file descriptors.
937
938- Don't fail silently if the executable is statically linked, or is
939 setuid/setgid. Print an error message instead.
940
941- Support for old DWARF-1 format line number info.
942
943
944
945Snapshot 20031012 (12 October 2003)
946~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
947
948Three months worth of bug fixes, roughly. Most significant single
949change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
950
95120031012 builds on Red Hat Fedora ("Severn") but doesn't really work
952(curiosly, mozilla runs OK, but a modest "ls -l" bombs). I hope to
953get a working version out soon. It may or may not work ok on the
954forthcoming SuSE 9; I hear positive noises about it but haven't been
955able to verify this myself (not until I get hold of a copy of 9).
956
957A detailed list of changes, in no particular order:
958
959- Describe --gen-suppressions in the FAQ.
960
961- Syscall __NR_waitpid supported.
962
963- Minor MMX bug fix.
964
965- -v prints program's argv[] at startup.
966
967- More glibc-2.3 suppressions.
968
969- Suppressions for stack underrun bug(s) in the c++ support library
970 distributed with Intel Icc 7.0.
971
972- Fix problems reading /proc/self/maps.
973
974- Fix a couple of messages that should have been suppressed by -q,
975 but weren't.
976
977- Make Addrcheck understand "Overlap" suppressions.
978
979- At startup, check if program is statically linked and bail out if so.
980
981- Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
982
983- Memcheck/addrcheck: minor speed optimisations
984
985- Handle syscall __NR_brk more correctly than before.
986
987- Fixed incorrect allocate/free mismatch errors when using
988 operator new(unsigned, std::nothrow_t const&)
989 operator new[](unsigned, std::nothrow_t const&)
990
991- Support POSIX pthread spinlocks.
992
993- Fixups for clean compilation with gcc-3.3.1.
daywalker5d945de2003-09-26 00:32:53 +0000994
995- Implemented more opcodes:
996 - push %es
997 - push %ds
998 - pop %es
999 - pop %ds
1000 - movntq
1001 - sfence
1002 - pshufw
1003 - pavgb
1004 - ucomiss
1005 - enter
daywalkerb18d2532003-09-27 20:15:01 +00001006 - mov imm32, %esp
1007 - all "in" and "out" opcodes
daywalker79aad842003-09-30 22:58:12 +00001008 - inc/dec %esp
jseward43230652003-12-14 00:14:54 +00001009 - A whole bunch of SSE/SSE2 instructions
daywalker5d945de2003-09-26 00:32:53 +00001010
jseward43230652003-12-14 00:14:54 +00001011- Memcheck: don't bomb on SSE/SSE2 code.
daywalker5d945de2003-09-26 00:32:53 +00001012
sewardj90238792003-05-05 00:23:42 +00001013
sewardj945f39f2003-07-25 21:11:40 +00001014Snapshot 20030725 (25 July 2003)
1015~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1016
1017Fixes some minor problems in 20030716.
1018
1019- Fix bugs in overlap checking for strcpy/memcpy etc.
1020
1021- Do overlap checking with Addrcheck as well as Memcheck.
1022
1023- Fix this:
1024 Memcheck: the `impossible' happened:
1025 get_error_name: unexpected type
1026
1027- Install headers needed to compile new skins.
1028
sewardje3dd2e02003-07-27 08:04:48 +00001029- Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD
sewardj945f39f2003-07-25 21:11:40 +00001030 passed to non-traced children.
1031
sewardjb9eda952003-07-26 21:39:05 +00001032- Fix file descriptor leak in valgrind-listener.
1033
sewardje3dd2e02003-07-27 08:04:48 +00001034- Fix longstanding bug in which the allocation point of a
1035 block resized by realloc was not correctly set. This may
1036 have caused confusing error messages.
sewardj945f39f2003-07-25 21:11:40 +00001037
1038
sewardj626fd892003-07-16 20:10:26 +00001039Snapshot 20030716 (16 July 2003)
sewardj9d916ed2003-07-14 23:38:40 +00001040~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1041
sewardj626fd892003-07-16 20:10:26 +0000104220030716 is a snapshot of our current CVS head (development) branch.
sewardj9d916ed2003-07-14 23:38:40 +00001043This is the branch which will become valgrind-2.0. It contains
1044significant enhancements over the 1.9.X branch.
1045
1046Despite this being a snapshot of the CVS head, it is believed to be
1047quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so
1048-- and therefore suitable for widespread use. Please let us know asap
1049if it causes problems for you.
1050
1051Two reasons for releasing a snapshot now are:
1052
1053- It's been a while since 1.9.6, and this snapshot fixes
1054 various problems that 1.9.6 has with threaded programs
1055 on glibc-2.3.X based systems.
1056
1057- So as to make available improvements in the 2.0 line.
1058
sewardj626fd892003-07-16 20:10:26 +00001059Major changes in 20030716, as compared to 1.9.6:
sewardj9d916ed2003-07-14 23:38:40 +00001060
1061- More fixes to threading support on glibc-2.3.1 and 2.3.2-based
1062 systems (SuSE 8.2, Red Hat 9). If you have had problems
1063 with inconsistent/illogical behaviour of errno, h_errno or the DNS
sewardj626fd892003-07-16 20:10:26 +00001064 resolver functions in threaded programs, 20030716 should improve
sewardj9d916ed2003-07-14 23:38:40 +00001065 matters. This snapshot seems stable enough to run OpenOffice.org
1066 1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big
1067 threaded app if ever I saw one.
1068
1069- Automatic generation of suppression records; you no longer
1070 need to write them by hand. Use --gen-suppressions=yes.
1071
sewardj21511802003-07-22 17:47:42 +00001072- strcpy/memcpy/etc check their arguments for overlaps, when
1073 running with the Memcheck or Addrcheck skins.
1074
1075- malloc_usable_size() is now supported.
1076
1077- new client requests:
1078 - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS:
1079 useful with regression testing
1080 - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions
1081 on real CPU (use with caution!)
1082
sewardj9d916ed2003-07-14 23:38:40 +00001083- The GDB attach mechanism is more flexible. Allow the GDB to
1084 be run to be specified by --gdb-path=/path/to/gdb, and specify
1085 which file descriptor V will read its input from with
1086 --input-fd=<number>.
1087
sewardj21511802003-07-22 17:47:42 +00001088- Cachegrind gives more accurate results (wasn't tracking instructions in
1089 malloc() and friends previously, is now).
1090
sewardj9d916ed2003-07-14 23:38:40 +00001091- Complete support for the MMX instruction set.
1092
1093- Partial support for the SSE and SSE2 instruction sets. Work for this
1094 is ongoing. About half the SSE/SSE2 instructions are done, so
1095 some SSE based programs may work. Currently you need to specify
1096 --skin=addrcheck. Basically not suitable for real use yet.
1097
1098- Significant speedups (10%-20%) for standard memory checking.
1099
1100- Fix assertion failure in pthread_once().
1101
1102- Fix this:
1103 valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select):
1104 Assertion `ms_end >= ms_now' failed.
1105
1106- Implement pthread_mutexattr_setpshared.
1107
1108- Understand Pentium 4 branch hints. Also implemented a couple more
1109 obscure x86 instructions.
1110
1111- Lots of other minor bug fixes.
1112
sewardj626fd892003-07-16 20:10:26 +00001113- We have a decent regression test system, for the first time.
1114 This doesn't help you directly, but it does make it a lot easier
1115 for us to track the quality of the system, especially across
1116 multiple linux distributions.
1117
1118 You can run the regression tests with 'make regtest' after 'make
1119 install' completes. On SuSE 8.2 and Red Hat 9 I get this:
1120
1121 == 84 tests, 0 stderr failures, 0 stdout failures ==
1122
1123 On Red Hat 8, I get this:
1124
1125 == 84 tests, 2 stderr failures, 1 stdout failure ==
1126 corecheck/tests/res_search (stdout)
1127 memcheck/tests/sigaltstack (stderr)
1128
1129 sigaltstack is probably harmless. res_search doesn't work
1130 on R H 8 even running natively, so I'm not too worried.
1131
1132 On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures:
1133
1134 == 84 tests, 2 stderr failures, 1 stdout failure ==
1135 corecheck/tests/pth_atfork1 (stdout)
1136 corecheck/tests/pth_atfork1 (stderr)
1137 memcheck/tests/sigaltstack (stderr)
1138
1139 You need to run on a PII system, at least, since some tests
1140 contain P6-specific instructions, and the test machine needs
1141 access to the internet so that corecheck/tests/res_search
1142 (a test that the DNS resolver works) can function.
1143
sewardj9d916ed2003-07-14 23:38:40 +00001144As ever, thanks for the vast amount of feedback :) and bug reports :(
1145We may not answer all messages, but we do at least look at all of
1146them, and tend to fix the most frequently reported bugs.
1147
1148
1149
sewardj37918822003-05-05 01:05:09 +00001150Version 1.9.6 (7 May 2003 or thereabouts)
1151~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1152
1153Major changes in 1.9.6:
1154
1155- Improved threading support for glibc >= 2.3.2 (SuSE 8.2,
1156 RedHat 9, to name but two ...) It turned out that 1.9.5
1157 had problems with threading support on glibc >= 2.3.2,
1158 usually manifested by threaded programs deadlocking in system calls,
1159 or running unbelievably slowly. Hopefully these are fixed now. 1.9.6
1160 is the first valgrind which gives reasonable support for
1161 glibc-2.3.2. Also fixed a 2.3.2 problem with pthread_atfork().
1162
1163- Majorly expanded FAQ.txt. We've added workarounds for all
1164 common problems for which a workaround is known.
1165
1166Minor changes in 1.9.6:
1167
1168- Fix identification of the main thread's stack. Incorrect
1169 identification of it was causing some on-stack addresses to not get
1170 identified as such. This only affected the usefulness of some error
1171 messages; the correctness of the checks made is unchanged.
1172
1173- Support for kernels >= 2.5.68.
1174
1175- Dummy implementations of __libc_current_sigrtmin,
1176 __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully
1177 good enough to keep alive programs which previously died for lack of
1178 them.
1179
1180- Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request.
1181
sewardj3d47b792003-05-05 22:15:35 +00001182- Fix bug in the DWARF2 debug line info loader, when instructions
1183 following each other have source lines far from each other
1184 (e.g. with inlined functions).
1185
sewardj37918822003-05-05 01:05:09 +00001186- Debug info reading: read symbols from both "symtab" and "dynsym"
1187 sections, rather than merely from the one that comes last in the
1188 file.
1189
1190- New syscall support: prctl(), creat(), lookup_dcookie().
1191
1192- When checking calls to accept(), recvfrom(), getsocketopt(),
1193 don't complain if buffer values are NULL.
1194
1195- Try and avoid assertion failures in
1196 mash_LD_PRELOAD_and_LD_LIBRARY_PATH.
1197
1198- Minor bug fixes in cg_annotate.
1199
1200
1201
sewardj90238792003-05-05 00:23:42 +00001202Version 1.9.5 (7 April 2003)
1203~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1204
1205It occurs to me that it would be helpful for valgrind users to record
1206in the source distribution the changes in each release. So I now
1207attempt to mend my errant ways :-) Changes in this and future releases
1208will be documented in the NEWS file in the source distribution.
1209
1210Major changes in 1.9.5:
1211
1212- (Critical bug fix): Fix a bug in the FPU simulation. This was
1213 causing some floating point conditional tests not to work right.
1214 Several people reported this. If you had floating point code which
1215 didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5.
1216
1217- Partial support for Red Hat 9. RH9 uses the new Native Posix
1218 Threads Library (NPTL), instead of the older LinuxThreads.
1219 This potentially causes problems with V which will take some
1220 time to correct. In the meantime we have partially worked around
1221 this, and so 1.9.5 works on RH9. Threaded programs still work,
1222 but they may deadlock, because some system calls (accept, read,
1223 write, etc) which should be nonblocking, in fact do block. This
1224 is a known bug which we are looking into.
1225
1226 If you can, your best bet (unfortunately) is to avoid using
1227 1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution.
1228 If your glibc is 2.3.1 or earlier, you're almost certainly OK.
1229
1230Minor changes in 1.9.5:
1231
1232- Added some #errors to valgrind.h to ensure people don't include
1233 it accidentally in their sources. This is a change from 1.0.X
1234 which was never properly documented. The right thing to include
1235 is now memcheck.h. Some people reported problems and strange
1236 behaviour when (incorrectly) including valgrind.h in code with
1237 1.9.1 -- 1.9.4. This is no longer possible.
1238
1239- Add some __extension__ bits and pieces so that gcc configured
1240 for valgrind-checking compiles even with -Werror. If you
1241 don't understand this, ignore it. Of interest to gcc developers
1242 only.
1243
1244- Removed a pointless check which caused problems interworking
1245 with Clearcase. V would complain about shared objects whose
1246 names did not end ".so", and refuse to run. This is now fixed.
1247 In fact it was fixed in 1.9.4 but not documented.
1248
1249- Fixed a bug causing an assertion failure of "waiters == 1"
1250 somewhere in vg_scheduler.c, when running large threaded apps,
1251 notably MySQL.
1252
1253- Add support for the munlock system call (124).
1254
1255Some comments about future releases:
1256
12571.9.5 is, we hope, the most stable Valgrind so far. It pretty much
1258supersedes the 1.0.X branch. If you are a valgrind packager, please
1259consider making 1.9.5 available to your users. You can regard the
12601.0.X branch as obsolete: 1.9.5 is stable and vastly superior. There
1261are no plans at all for further releases of the 1.0.X branch.
1262
1263If you want a leading-edge valgrind, consider building the cvs head
1264(from SourceForge), or getting a snapshot of it. Current cool stuff
1265going in includes MMX support (done); SSE/SSE2 support (in progress),
1266a significant (10-20%) performance improvement (done), and the usual
1267large collection of minor changes. Hopefully we will be able to
1268improve our NPTL support, but no promises.
1269