blob: 32c09149c1b92b4a6d705fa4db14607815010ee0 [file] [log] [blame]
jseward43230652003-12-14 00:14:54 +00001
jsewarde3e77042004-03-12 21:07:05 +00002Unstable (cvs head) release 2.1.1 (12 March 2004)
3~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
42.1.1 contains some internal structure changes needed for V's
5long-term future. These don't affect end-users. Most notable
6user-visible changes are:
7
8* Greater isolation between Valgrind and the program being run, so
9 the program is less likely to inadvertently kill Valgrind by
10 doing wild writes.
11
12* Massif: a new space profiling tool. Try it! It's cool, and it'll
13 tell you in detail where and when your C/C++ code is allocating heap.
14 Draws pretty .ps pictures of memory use against time. A potentially
15 powerful tool for making sense of your program's space use.
16
17* Fixes for many bugs, including support for more SSE2/SSE3 instructions,
18 various signal/syscall things, and various problems with debug
19 info readers.
20
21* Support for glibc-2.3.3 based systems.
22
23We are now doing automatic overnight build-and-test runs on a variety
24of distros. As a result, we believe 2.1.1 builds and runs on:
25Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9.
26
27
28The following bugs, and probably many more, have been fixed. These
29are listed at http://bugs.kde.org. Reporting a bug for valgrind in
30the http://bugs.kde.org is much more likely to get you a fix than
31mailing developers directly, so please continue to keep sending bugs
32there.
33
3469616 glibc 2.3.2 w/NPTL is massively different than what valgrind expects
3569856 I don't know how to instrument MMXish stuff (Helgrind)
3673892 valgrind segfaults starting with Objective-C debug info
37 (fix for S-type stabs)
3873145 Valgrind complains too much about close(<reserved fd>)
3973902 Shadow memory allocation seems to fail on RedHat 8.0
4068633 VG_N_SEMAPHORES too low (V itself was leaking semaphores)
4175099 impossible to trace multiprocess programs
4276839 the `impossible' happened: disInstr: INT but not 0x80 !
4376762 vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed.
4476747 cannot include valgrind.h in c++ program
4576223 parsing B(3,10) gave NULL type => impossible happens
4675604 shmdt handling problem
4776416 Problems with gcc 3.4 snap 20040225
4875614 using -gstabs when building your programs the `impossible' happened
4975787 Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET,
5075294 gcc 3.4 snapshot's libstdc++ have unsupported instructions.
51 (REP RET)
5273326 vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed.
5372596 not recognizing __libc_malloc
5469489 Would like to attach ddd to running program
5572781 Cachegrind crashes with kde programs
5673055 Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes)
5773026 Descriptor leak check reports port numbers wrongly
5871705 README_MISSING_SYSCALL_OR_IOCTL out of date
5972643 Improve support for SSE/SSE2 instructions
6072484 valgrind leaves it's own signal mask in place when execing
6172650 Signal Handling always seems to restart system calls
6272006 The mmap system call turns all errors in ENOMEM
6371781 gdb attach is pretty useless
6471180 unhandled instruction bytes: 0xF 0xAE 0x85 0xE8
6569886 writes to zero page cause valgrind to assert on exit
6671791 crash when valgrinding gimp 1.3 (stabs reader problem)
6769783 unhandled syscall: 218
6869782 unhandled instruction bytes: 0x66 0xF 0x2B 0x80
6970385 valgrind fails if the soft file descriptor limit is less
70 than about 828
7169529 "rep; nop" should do a yield
7270827 programs with lots of shared libraries report "mmap failed"
73 for some of them when reading symbols
7471028 glibc's strnlen is optimised enough to confuse valgrind
75
76
77
78
jseward43230652003-12-14 00:14:54 +000079Unstable (cvs head) release 2.1.0 (15 December 2003)
80~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
81For whatever it's worth, 2.1.0 actually seems pretty darn stable to me
82(Julian). It looks eminently usable, and given that it fixes some
83significant bugs, may well be worth using on a day-to-day basis.
842.1.0 is known to build and pass regression tests on: SuSE 9, SuSE
858.2, RedHat 8.
86
872.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of
88handling of system calls and signals, and their interaction with
89threads. In general, the accuracy of the system call, thread and
90signal simulations is much improved. Specifically:
91
92- Blocking system calls behave exactly as they do when running
93 natively (not on valgrind). That is, if a syscall blocks only the
94 calling thread when running natively, than it behaves the same on
95 valgrind. No more mysterious hangs because V doesn't know that some
96 syscall or other, should block only the calling thread.
97
98- Interrupted syscalls should now give more faithful results.
99
100- Finally, signal contexts in signal handlers are supported. As a
101 result, konqueror on SuSE 9 no longer segfaults when notified of
102 file changes in directories it is watching.
103
104Other changes:
105
106- Robert Walsh's file descriptor leakage checks. When enabled,
107 Valgrind will print out a list of open file descriptors on
108 exit. Along with each file descriptor, Valgrind prints out a stack
109 backtrace of where the file was opened and any details relating to the
110 file descriptor such as the file name or socket details.
111 To use, give: --track-fds=yes
112
113- Implemented a few more SSE/SSE2 instructions.
114
115- Less crud on the stack when you do 'where' inside a GDB attach.
116
117- Fixed the following bugs:
118 68360: Valgrind does not compile against 2.6.0-testX kernels
119 68525: CVS head doesn't compile on C90 compilers
120 68566: pkgconfig support (wishlist)
121 68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr)
122 69140: valgrind not able to explicitly specify a path to a binary.
123 69432: helgrind asserts encountering a MutexErr when there are
124 EraserErr suppressions
125
jseward0b12daf2003-12-14 14:35:28 +0000126- Increase the max size of the translation cache from 200k average bbs
127 to 300k average bbs. Programs on the size of OOo (680m17) are
128 thrashing the cache at the smaller size, creating large numbers of
129 retranslations and wasting significant time as a result.
130
jseward43230652003-12-14 00:14:54 +0000131
132
133Stable release 2.0.0 (5 Nov 2003)
134~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
135
1362.0.0 improves SSE/SSE2 support, fixes some minor bugs, and
137improves support for SuSE 9 and the Red Hat "Severn" beta.
138
139- Further improvements to SSE/SSE2 support. The entire test suite of
140 the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1
141 20030307Z '-g -O -xW' now works. I think this gives pretty good
142 coverage of SSE/SSE2 floating point instructions, or at least the
143 subset emitted by Icc.
144
145- Also added support for the following instructions:
146 MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS
147 PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS).
148
149- CFI support for GDB version 6. Needed to enable newer GDBs
150 to figure out where they are when using --gdb-attach=yes.
151
152- Fix this:
153 mc_translate.c:1091 (memcheck_instrument): Assertion
154 `u_in->size == 4 || u_in->size == 16' failed.
155
156- Return an error rather than panicing when given a bad socketcall.
157
158- Fix checking of syscall rt_sigtimedwait().
159
160- Implement __NR_clock_gettime (syscall 265). Needed on Red Hat Severn.
161
162- Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n'
163 bytes long, when it could be shorter, which could cause false
164 positives.
165
166- Support use of select() for very large numbers of file descriptors.
167
168- Don't fail silently if the executable is statically linked, or is
169 setuid/setgid. Print an error message instead.
170
171- Support for old DWARF-1 format line number info.
172
173
174
175Snapshot 20031012 (12 October 2003)
176~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
177
178Three months worth of bug fixes, roughly. Most significant single
179change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
180
18120031012 builds on Red Hat Fedora ("Severn") but doesn't really work
182(curiosly, mozilla runs OK, but a modest "ls -l" bombs). I hope to
183get a working version out soon. It may or may not work ok on the
184forthcoming SuSE 9; I hear positive noises about it but haven't been
185able to verify this myself (not until I get hold of a copy of 9).
186
187A detailed list of changes, in no particular order:
188
189- Describe --gen-suppressions in the FAQ.
190
191- Syscall __NR_waitpid supported.
192
193- Minor MMX bug fix.
194
195- -v prints program's argv[] at startup.
196
197- More glibc-2.3 suppressions.
198
199- Suppressions for stack underrun bug(s) in the c++ support library
200 distributed with Intel Icc 7.0.
201
202- Fix problems reading /proc/self/maps.
203
204- Fix a couple of messages that should have been suppressed by -q,
205 but weren't.
206
207- Make Addrcheck understand "Overlap" suppressions.
208
209- At startup, check if program is statically linked and bail out if so.
210
211- Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
212
213- Memcheck/addrcheck: minor speed optimisations
214
215- Handle syscall __NR_brk more correctly than before.
216
217- Fixed incorrect allocate/free mismatch errors when using
218 operator new(unsigned, std::nothrow_t const&)
219 operator new[](unsigned, std::nothrow_t const&)
220
221- Support POSIX pthread spinlocks.
222
223- Fixups for clean compilation with gcc-3.3.1.
daywalker5d945de2003-09-26 00:32:53 +0000224
225- Implemented more opcodes:
226 - push %es
227 - push %ds
228 - pop %es
229 - pop %ds
230 - movntq
231 - sfence
232 - pshufw
233 - pavgb
234 - ucomiss
235 - enter
daywalkerb18d2532003-09-27 20:15:01 +0000236 - mov imm32, %esp
237 - all "in" and "out" opcodes
daywalker79aad842003-09-30 22:58:12 +0000238 - inc/dec %esp
jseward43230652003-12-14 00:14:54 +0000239 - A whole bunch of SSE/SSE2 instructions
daywalker5d945de2003-09-26 00:32:53 +0000240
jseward43230652003-12-14 00:14:54 +0000241- Memcheck: don't bomb on SSE/SSE2 code.
daywalker5d945de2003-09-26 00:32:53 +0000242
sewardj90238792003-05-05 00:23:42 +0000243
sewardj945f39f2003-07-25 21:11:40 +0000244Snapshot 20030725 (25 July 2003)
245~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
246
247Fixes some minor problems in 20030716.
248
249- Fix bugs in overlap checking for strcpy/memcpy etc.
250
251- Do overlap checking with Addrcheck as well as Memcheck.
252
253- Fix this:
254 Memcheck: the `impossible' happened:
255 get_error_name: unexpected type
256
257- Install headers needed to compile new skins.
258
sewardje3dd2e02003-07-27 08:04:48 +0000259- Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD
sewardj945f39f2003-07-25 21:11:40 +0000260 passed to non-traced children.
261
sewardjb9eda952003-07-26 21:39:05 +0000262- Fix file descriptor leak in valgrind-listener.
263
sewardje3dd2e02003-07-27 08:04:48 +0000264- Fix longstanding bug in which the allocation point of a
265 block resized by realloc was not correctly set. This may
266 have caused confusing error messages.
sewardj945f39f2003-07-25 21:11:40 +0000267
268
sewardj626fd892003-07-16 20:10:26 +0000269Snapshot 20030716 (16 July 2003)
sewardj9d916ed2003-07-14 23:38:40 +0000270~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
271
sewardj626fd892003-07-16 20:10:26 +000027220030716 is a snapshot of our current CVS head (development) branch.
sewardj9d916ed2003-07-14 23:38:40 +0000273This is the branch which will become valgrind-2.0. It contains
274significant enhancements over the 1.9.X branch.
275
276Despite this being a snapshot of the CVS head, it is believed to be
277quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so
278-- and therefore suitable for widespread use. Please let us know asap
279if it causes problems for you.
280
281Two reasons for releasing a snapshot now are:
282
283- It's been a while since 1.9.6, and this snapshot fixes
284 various problems that 1.9.6 has with threaded programs
285 on glibc-2.3.X based systems.
286
287- So as to make available improvements in the 2.0 line.
288
sewardj626fd892003-07-16 20:10:26 +0000289Major changes in 20030716, as compared to 1.9.6:
sewardj9d916ed2003-07-14 23:38:40 +0000290
291- More fixes to threading support on glibc-2.3.1 and 2.3.2-based
292 systems (SuSE 8.2, Red Hat 9). If you have had problems
293 with inconsistent/illogical behaviour of errno, h_errno or the DNS
sewardj626fd892003-07-16 20:10:26 +0000294 resolver functions in threaded programs, 20030716 should improve
sewardj9d916ed2003-07-14 23:38:40 +0000295 matters. This snapshot seems stable enough to run OpenOffice.org
296 1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big
297 threaded app if ever I saw one.
298
299- Automatic generation of suppression records; you no longer
300 need to write them by hand. Use --gen-suppressions=yes.
301
sewardj21511802003-07-22 17:47:42 +0000302- strcpy/memcpy/etc check their arguments for overlaps, when
303 running with the Memcheck or Addrcheck skins.
304
305- malloc_usable_size() is now supported.
306
307- new client requests:
308 - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS:
309 useful with regression testing
310 - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions
311 on real CPU (use with caution!)
312
sewardj9d916ed2003-07-14 23:38:40 +0000313- The GDB attach mechanism is more flexible. Allow the GDB to
314 be run to be specified by --gdb-path=/path/to/gdb, and specify
315 which file descriptor V will read its input from with
316 --input-fd=<number>.
317
sewardj21511802003-07-22 17:47:42 +0000318- Cachegrind gives more accurate results (wasn't tracking instructions in
319 malloc() and friends previously, is now).
320
sewardj9d916ed2003-07-14 23:38:40 +0000321- Complete support for the MMX instruction set.
322
323- Partial support for the SSE and SSE2 instruction sets. Work for this
324 is ongoing. About half the SSE/SSE2 instructions are done, so
325 some SSE based programs may work. Currently you need to specify
326 --skin=addrcheck. Basically not suitable for real use yet.
327
328- Significant speedups (10%-20%) for standard memory checking.
329
330- Fix assertion failure in pthread_once().
331
332- Fix this:
333 valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select):
334 Assertion `ms_end >= ms_now' failed.
335
336- Implement pthread_mutexattr_setpshared.
337
338- Understand Pentium 4 branch hints. Also implemented a couple more
339 obscure x86 instructions.
340
341- Lots of other minor bug fixes.
342
sewardj626fd892003-07-16 20:10:26 +0000343- We have a decent regression test system, for the first time.
344 This doesn't help you directly, but it does make it a lot easier
345 for us to track the quality of the system, especially across
346 multiple linux distributions.
347
348 You can run the regression tests with 'make regtest' after 'make
349 install' completes. On SuSE 8.2 and Red Hat 9 I get this:
350
351 == 84 tests, 0 stderr failures, 0 stdout failures ==
352
353 On Red Hat 8, I get this:
354
355 == 84 tests, 2 stderr failures, 1 stdout failure ==
356 corecheck/tests/res_search (stdout)
357 memcheck/tests/sigaltstack (stderr)
358
359 sigaltstack is probably harmless. res_search doesn't work
360 on R H 8 even running natively, so I'm not too worried.
361
362 On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures:
363
364 == 84 tests, 2 stderr failures, 1 stdout failure ==
365 corecheck/tests/pth_atfork1 (stdout)
366 corecheck/tests/pth_atfork1 (stderr)
367 memcheck/tests/sigaltstack (stderr)
368
369 You need to run on a PII system, at least, since some tests
370 contain P6-specific instructions, and the test machine needs
371 access to the internet so that corecheck/tests/res_search
372 (a test that the DNS resolver works) can function.
373
sewardj9d916ed2003-07-14 23:38:40 +0000374As ever, thanks for the vast amount of feedback :) and bug reports :(
375We may not answer all messages, but we do at least look at all of
376them, and tend to fix the most frequently reported bugs.
377
378
379
sewardj37918822003-05-05 01:05:09 +0000380Version 1.9.6 (7 May 2003 or thereabouts)
381~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
382
383Major changes in 1.9.6:
384
385- Improved threading support for glibc >= 2.3.2 (SuSE 8.2,
386 RedHat 9, to name but two ...) It turned out that 1.9.5
387 had problems with threading support on glibc >= 2.3.2,
388 usually manifested by threaded programs deadlocking in system calls,
389 or running unbelievably slowly. Hopefully these are fixed now. 1.9.6
390 is the first valgrind which gives reasonable support for
391 glibc-2.3.2. Also fixed a 2.3.2 problem with pthread_atfork().
392
393- Majorly expanded FAQ.txt. We've added workarounds for all
394 common problems for which a workaround is known.
395
396Minor changes in 1.9.6:
397
398- Fix identification of the main thread's stack. Incorrect
399 identification of it was causing some on-stack addresses to not get
400 identified as such. This only affected the usefulness of some error
401 messages; the correctness of the checks made is unchanged.
402
403- Support for kernels >= 2.5.68.
404
405- Dummy implementations of __libc_current_sigrtmin,
406 __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully
407 good enough to keep alive programs which previously died for lack of
408 them.
409
410- Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request.
411
sewardj3d47b792003-05-05 22:15:35 +0000412- Fix bug in the DWARF2 debug line info loader, when instructions
413 following each other have source lines far from each other
414 (e.g. with inlined functions).
415
sewardj37918822003-05-05 01:05:09 +0000416- Debug info reading: read symbols from both "symtab" and "dynsym"
417 sections, rather than merely from the one that comes last in the
418 file.
419
420- New syscall support: prctl(), creat(), lookup_dcookie().
421
422- When checking calls to accept(), recvfrom(), getsocketopt(),
423 don't complain if buffer values are NULL.
424
425- Try and avoid assertion failures in
426 mash_LD_PRELOAD_and_LD_LIBRARY_PATH.
427
428- Minor bug fixes in cg_annotate.
429
430
431
sewardj90238792003-05-05 00:23:42 +0000432Version 1.9.5 (7 April 2003)
433~~~~~~~~~~~~~~~~~~~~~~~~~~~~
434
435It occurs to me that it would be helpful for valgrind users to record
436in the source distribution the changes in each release. So I now
437attempt to mend my errant ways :-) Changes in this and future releases
438will be documented in the NEWS file in the source distribution.
439
440Major changes in 1.9.5:
441
442- (Critical bug fix): Fix a bug in the FPU simulation. This was
443 causing some floating point conditional tests not to work right.
444 Several people reported this. If you had floating point code which
445 didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5.
446
447- Partial support for Red Hat 9. RH9 uses the new Native Posix
448 Threads Library (NPTL), instead of the older LinuxThreads.
449 This potentially causes problems with V which will take some
450 time to correct. In the meantime we have partially worked around
451 this, and so 1.9.5 works on RH9. Threaded programs still work,
452 but they may deadlock, because some system calls (accept, read,
453 write, etc) which should be nonblocking, in fact do block. This
454 is a known bug which we are looking into.
455
456 If you can, your best bet (unfortunately) is to avoid using
457 1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution.
458 If your glibc is 2.3.1 or earlier, you're almost certainly OK.
459
460Minor changes in 1.9.5:
461
462- Added some #errors to valgrind.h to ensure people don't include
463 it accidentally in their sources. This is a change from 1.0.X
464 which was never properly documented. The right thing to include
465 is now memcheck.h. Some people reported problems and strange
466 behaviour when (incorrectly) including valgrind.h in code with
467 1.9.1 -- 1.9.4. This is no longer possible.
468
469- Add some __extension__ bits and pieces so that gcc configured
470 for valgrind-checking compiles even with -Werror. If you
471 don't understand this, ignore it. Of interest to gcc developers
472 only.
473
474- Removed a pointless check which caused problems interworking
475 with Clearcase. V would complain about shared objects whose
476 names did not end ".so", and refuse to run. This is now fixed.
477 In fact it was fixed in 1.9.4 but not documented.
478
479- Fixed a bug causing an assertion failure of "waiters == 1"
480 somewhere in vg_scheduler.c, when running large threaded apps,
481 notably MySQL.
482
483- Add support for the munlock system call (124).
484
485Some comments about future releases:
486
4871.9.5 is, we hope, the most stable Valgrind so far. It pretty much
488supersedes the 1.0.X branch. If you are a valgrind packager, please
489consider making 1.9.5 available to your users. You can regard the
4901.0.X branch as obsolete: 1.9.5 is stable and vastly superior. There
491are no plans at all for further releases of the 1.0.X branch.
492
493If you want a leading-edge valgrind, consider building the cvs head
494(from SourceForge), or getting a snapshot of it. Current cool stuff
495going in includes MMX support (done); SSE/SSE2 support (in progress),
496a significant (10-20%) performance improvement (done), and the usual
497large collection of minor changes. Hopefully we will be able to
498improve our NPTL support, but no promises.
499