~bkerensa/ubuntu/raring/valgrind/merge-from-deb

« back to all changes in this revision

Viewing changes to NEWS.old

  • Committer: Benjamin Kerensa
  • Date: 2012-11-21 23:57:58 UTC
  • mfrom: (1.1.16)
  • Revision ID: bkerensa@ubuntu.com-20121121235758-bd1rv5uc5vzov2p6
Merge from debian unstable

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
Release 3.3.1 (4 June 2008)
 
2
~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
3
3.3.1 fixes a bunch of bugs in 3.3.0, adds support for glibc-2.8 based
 
4
systems (openSUSE 11, Fedora Core 9), improves the existing glibc-2.7
 
5
support, and adds support for the SSSE3 (Core 2) instruction set.
 
6
 
 
7
3.3.1 will likely be the last release that supports some very old
 
8
systems.  In particular, the next major release, 3.4.0, will drop
 
9
support for the old LinuxThreads threading library, and for gcc
 
10
versions prior to 3.0.
 
11
 
 
12
The fixed bugs are as follows.  Note that "n-i-bz" stands for "not in
 
13
bugzilla" -- that is, a bug that was reported to us but never got a
 
14
bugzilla entry.  We encourage you to file bugs in bugzilla
 
15
(http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the
 
16
developers (or mailing lists) directly -- bugs that are not entered
 
17
into bugzilla tend to get forgotten about or ignored.
 
18
 
 
19
n-i-bz  Massif segfaults at exit
 
20
n-i-bz  Memcheck asserts on Altivec code
 
21
n-i-bz  fix sizeof bug in Helgrind
 
22
n-i-bz  check fd on sys_llseek
 
23
n-i-bz  update syscall lists to kernel 2.6.23.1
 
24
n-i-bz  support sys_sync_file_range
 
25
n-i-bz  handle sys_sysinfo, sys_getresuid, sys_getresgid on ppc64-linux
 
26
n-i-bz  intercept memcpy in 64-bit ld.so's
 
27
n-i-bz  Fix wrappers for sys_{futimesat,utimensat}
 
28
n-i-bz  Minor false-error avoidance fixes for Memcheck
 
29
n-i-bz  libmpiwrap.c: add a wrapper for MPI_Waitany
 
30
n-i-bz  helgrind support for glibc-2.8
 
31
n-i-bz  partial fix for mc_leakcheck.c:698 assert:
 
32
        'lc_shadows[i]->data + lc_shadows[i] ...
 
33
n-i-bz  Massif/Cachegrind output corruption when programs fork
 
34
n-i-bz  register allocator fix: handle spill stores correctly
 
35
n-i-bz  add support for PA6T PowerPC CPUs
 
36
126389  vex x86->IR: 0xF 0xAE (FXRSTOR)
 
37
158525  ==126389
 
38
152818  vex x86->IR: 0xF3 0xAC (repz lodsb) 
 
39
153196  vex x86->IR: 0xF2 0xA6 (repnz cmpsb) 
 
40
155011  vex x86->IR: 0xCF (iret)
 
41
155091  Warning [...] unhandled DW_OP_ opcode 0x23
 
42
156960  ==155901
 
43
155528  support Core2/SSSE3 insns on x86/amd64
 
44
155929  ms_print fails on massif outputs containing long lines
 
45
157665  valgrind fails on shmdt(0) after shmat to 0
 
46
157748  support x86 PUSHFW/POPFW
 
47
158212  helgrind: handle pthread_rwlock_try{rd,wr}lock.
 
48
158425  sys_poll incorrectly emulated when RES==0
 
49
158744  vex amd64->IR: 0xF0 0x41 0xF 0xC0 (xaddb)
 
50
160907  Support for a couple of recent Linux syscalls
 
51
161285  Patch -- support for eventfd() syscall
 
52
161378  illegal opcode in debug libm (FUCOMPP)
 
53
160136  ==161378
 
54
161487  number of suppressions files is limited to 10
 
55
162386  ms_print typo in milliseconds time unit for massif
 
56
161036  exp-drd: client allocated memory was never freed
 
57
162663  signalfd_wrapper fails on 64bit linux
 
58
 
 
59
(3.3.1.RC1:  2 June 2008, vex r1854, valgrind r8169).
 
60
(3.3.1:      4 June 2008, vex r1854, valgrind r8180).
 
61
 
 
62
 
 
63
 
 
64
Release 3.3.0 (7 December 2007)
 
65
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
66
3.3.0 is a feature release with many significant improvements and the
 
67
usual collection of bug fixes.  This release supports X86/Linux,
 
68
AMD64/Linux, PPC32/Linux and PPC64/Linux.  Support for recent distros
 
69
(using gcc 4.3, glibc 2.6 and 2.7) has been added.
 
70
 
 
71
The main excitement in 3.3.0 is new and improved tools.  Helgrind
 
72
works again, Massif has been completely overhauled and much improved,
 
73
Cachegrind now does branch-misprediction profiling, and a new category
 
74
of experimental tools has been created, containing two new tools:
 
75
Omega and DRD.  There are many other smaller improvements.  In detail:
 
76
 
 
77
- Helgrind has been completely overhauled and works for the first time
 
78
  since Valgrind 2.2.0.  Supported functionality is: detection of
 
79
  misuses of the POSIX PThreads API, detection of potential deadlocks
 
80
  resulting from cyclic lock dependencies, and detection of data
 
81
  races.  Compared to the 2.2.0 Helgrind, the race detection algorithm
 
82
  has some significant improvements aimed at reducing the false error
 
83
  rate.  Handling of various kinds of corner cases has been improved.
 
84
  Efforts have been made to make the error messages easier to
 
85
  understand.  Extensive documentation is provided.
 
86
 
 
87
- Massif has been completely overhauled.  Instead of measuring
 
88
  space-time usage -- which wasn't always useful and many people found
 
89
  confusing -- it now measures space usage at various points in the
 
90
  execution, including the point of peak memory allocation.  Its
 
91
  output format has also changed: instead of producing PostScript
 
92
  graphs and HTML text, it produces a single text output (via the new
 
93
  'ms_print' script) that contains both a graph and the old textual
 
94
  information, but in a more compact and readable form.  Finally, the
 
95
  new version should be more reliable than the old one, as it has been
 
96
  tested more thoroughly.
 
97
 
 
98
- Cachegrind has been extended to do branch-misprediction profiling.
 
99
  Both conditional and indirect branches are profiled.  The default
 
100
  behaviour of Cachegrind is unchanged.  To use the new functionality,
 
101
  give the option --branch-sim=yes.
 
102
 
 
103
- A new category of "experimental tools" has been created.  Such tools
 
104
  may not work as well as the standard tools, but are included because
 
105
  some people will find them useful, and because exposure to a wider
 
106
  user group provides tool authors with more end-user feedback.  These
 
107
  tools have a "exp-" prefix attached to their names to indicate their
 
108
  experimental nature.  Currently there are two experimental tools:
 
109
 
 
110
  * exp-Omega: an instantaneous leak detector.  See
 
111
    exp-omega/docs/omega_introduction.txt.
 
112
 
 
113
  * exp-DRD: a data race detector based on the happens-before
 
114
    relation.  See exp-drd/docs/README.txt.
 
115
 
 
116
- Scalability improvements for very large programs, particularly those
 
117
  which have a million or more malloc'd blocks in use at once.  These
 
118
  improvements mostly affect Memcheck.  Memcheck is also up to 10%
 
119
  faster for all programs, with x86-linux seeing the largest
 
120
  improvement.
 
121
 
 
122
- Works well on the latest Linux distros.  Has been tested on Fedora
 
123
  Core 8 (x86, amd64, ppc32, ppc64) and openSUSE 10.3.  glibc 2.6 and
 
124
  2.7 are supported.  gcc-4.3 (in its current pre-release state) is
 
125
  supported.  At the same time, 3.3.0 retains support for older
 
126
  distros.
 
127
 
 
128
- The documentation has been modestly reorganised with the aim of
 
129
  making it easier to find information on common-usage scenarios.
 
130
  Some advanced material has been moved into a new chapter in the main
 
131
  manual, so as to unclutter the main flow, and other tidying up has
 
132
  been done.
 
133
 
 
134
- There is experimental support for AIX 5.3, both 32-bit and 64-bit
 
135
  processes.  You need to be running a 64-bit kernel to use Valgrind
 
136
  on a 64-bit executable.
 
137
 
 
138
- There have been some changes to command line options, which may
 
139
  affect you:
 
140
 
 
141
  * --log-file-exactly and 
 
142
    --log-file-qualifier options have been removed.
 
143
 
 
144
    To make up for this --log-file option has been made more powerful.
 
145
    It now accepts a %p format specifier, which is replaced with the
 
146
    process ID, and a %q{FOO} format specifier, which is replaced with
 
147
    the contents of the environment variable FOO.
 
148
 
 
149
  * --child-silent-after-fork=yes|no [no]
 
150
 
 
151
    Causes Valgrind to not show any debugging or logging output for
 
152
    the child process resulting from a fork() call.  This can make the
 
153
    output less confusing (although more misleading) when dealing with
 
154
    processes that create children.
 
155
 
 
156
  * --cachegrind-out-file, --callgrind-out-file and --massif-out-file
 
157
 
 
158
    These control the names of the output files produced by
 
159
    Cachegrind, Callgrind and Massif.  They accept the same %p and %q
 
160
    format specifiers that --log-file accepts.  --callgrind-out-file
 
161
    replaces Callgrind's old --base option.
 
162
 
 
163
  * Cachegrind's 'cg_annotate' script no longer uses the --<pid>
 
164
    option to specify the output file.  Instead, the first non-option
 
165
    argument is taken to be the name of the output file, and any
 
166
    subsequent non-option arguments are taken to be the names of
 
167
    source files to be annotated.
 
168
 
 
169
  * Cachegrind and Callgrind now use directory names where possible in
 
170
    their output files.  This means that the -I option to
 
171
    'cg_annotate' and 'callgrind_annotate' should not be needed in
 
172
    most cases.  It also means they can correctly handle the case
 
173
    where two source files in different directories have the same
 
174
    name.
 
175
 
 
176
- Memcheck offers a new suppression kind: "Jump".  This is for
 
177
  suppressing jump-to-invalid-address errors.  Previously you had to
 
178
  use an "Addr1" suppression, which didn't make much sense.
 
179
 
 
180
- Memcheck has new flags --malloc-fill=<hexnum> and
 
181
  --free-fill=<hexnum> which free malloc'd / free'd areas with the
 
182
  specified byte.  This can help shake out obscure memory corruption
 
183
  problems.  The definedness and addressability of these areas is
 
184
  unchanged -- only the contents are affected.
 
185
 
 
186
- The behaviour of Memcheck's client requests VALGRIND_GET_VBITS and
 
187
  VALGRIND_SET_VBITS have changed slightly.  They no longer issue
 
188
  addressability errors -- if either array is partially unaddressable,
 
189
  they just return 3 (as before).  Also, SET_VBITS doesn't report
 
190
  definedness errors if any of the V bits are undefined.
 
191
 
 
192
- The following Memcheck client requests have been removed:
 
193
    VALGRIND_MAKE_NOACCESS
 
194
    VALGRIND_MAKE_WRITABLE
 
195
    VALGRIND_MAKE_READABLE
 
196
    VALGRIND_CHECK_WRITABLE
 
197
    VALGRIND_CHECK_READABLE
 
198
    VALGRIND_CHECK_DEFINED
 
199
  They were deprecated in 3.2.0, when equivalent but better-named client
 
200
  requests were added.  See the 3.2.0 release notes for more details.
 
201
 
 
202
- The behaviour of the tool Lackey has changed slightly.  First, the output
 
203
  from --trace-mem has been made more compact, to reduce the size of the
 
204
  traces.  Second, a new option --trace-superblocks has been added, which
 
205
  shows the addresses of superblocks (code blocks) as they are executed.
 
206
 
 
207
- The following bugs have been fixed.  Note that "n-i-bz" stands for
 
208
  "not in bugzilla" -- that is, a bug that was reported to us but
 
209
  never got a bugzilla entry.  We encourage you to file bugs in
 
210
  bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
 
211
  mailing the developers (or mailing lists) directly.
 
212
 
 
213
  n-i-bz  x86_linux_REDIR_FOR_index() broken
 
214
  n-i-bz  guest-amd64/toIR.c:2512 (dis_op2_E_G): Assertion `0' failed.
 
215
  n-i-bz  Support x86 INT insn (INT (0xCD) 0x40 - 0x43)
 
216
  n-i-bz  Add sys_utimensat system call for Linux x86 platform
 
217
   79844  Helgrind complains about race condition which does not exist
 
218
   82871  Massif output function names too short
 
219
   89061  Massif: ms_main.c:485 (get_XCon): Assertion `xpt->max_chi...'
 
220
   92615  Write output from Massif at crash
 
221
   95483  massif feature request: include peak allocation in report
 
222
  112163  MASSIF crashed with signal 7 (SIGBUS) after running 2 days
 
223
  119404  problems running setuid executables (partial fix)
 
224
  121629  add instruction-counting mode for timing
 
225
  127371  java vm giving unhandled instruction bytes: 0x26 0x2E 0x64 0x65
 
226
  129937  ==150380
 
227
  129576  Massif loses track of memory, incorrect graphs
 
228
  132132  massif --format=html output does not do html entity escaping
 
229
  132950  Heap alloc/usage summary
 
230
  133962  unhandled instruction bytes: 0xF2 0x4C 0xF 0x10
 
231
  134990  use -fno-stack-protector if possible
 
232
  136382  ==134990
 
233
  137396  I would really like helgrind to work again...
 
234
  137714  x86/amd64->IR: 0x66 0xF 0xF7 0xC6 (maskmovq, maskmovdq)
 
235
  141631  Massif: percentages don't add up correctly
 
236
  142706  massif numbers don't seem to add up
 
237
  143062  massif crashes on app exit with signal 8 SIGFPE
 
238
  144453  (get_XCon): Assertion 'xpt->max_children != 0' failed.
 
239
  145559  valgrind aborts when malloc_stats is called
 
240
  145609  valgrind aborts all runs with 'repeated section!'
 
241
  145622  --db-attach broken again on x86-64
 
242
  145837  ==149519
 
243
  145887  PPC32: getitimer() system call is not supported
 
244
  146252  ==150678
 
245
  146456  (update_XCon): Assertion 'xpt->curr_space >= -space_delta'...
 
246
  146701  ==134990
 
247
  146781  Adding support for private futexes
 
248
  147325  valgrind internal error on syscall (SYS_io_destroy, 0)
 
249
  147498  amd64->IR: 0xF0 0xF 0xB0 0xF (lock cmpxchg %cl,(%rdi))
 
250
  147545  Memcheck: mc_main.c:817 (get_sec_vbits8): Assertion 'n' failed.
 
251
  147628  SALC opcode 0xd6 unimplemented
 
252
  147825  crash on amd64-linux with gcc 4.2 and glibc 2.6 (CFI)
 
253
  148174  Incorrect type of freed_list_volume causes assertion [...]
 
254
  148447  x86_64 : new NOP codes: 66 66 66 66 2e 0f 1f
 
255
  149182  PPC Trap instructions not implemented in valgrind
 
256
  149504  Assertion hit on alloc_xpt->curr_space >= -space_delta
 
257
  149519  ppc32: V aborts with SIGSEGV on execution of a signal handler
 
258
  149892  ==137714
 
259
  150044  SEGV during stack deregister
 
260
  150380  dwarf/gcc interoperation (dwarf3 read problems)
 
261
  150408  ==148447
 
262
  150678  guest-amd64/toIR.c:3741 (dis_Grp5): Assertion `sz == 4' failed
 
263
  151209  V unable to execute programs for users with UID > 2^16
 
264
  151938  help on --db-command= misleading
 
265
  152022  subw $0x28, %%sp causes assertion failure in memcheck
 
266
  152357  inb and outb not recognized in 64-bit mode
 
267
  152501  vex x86->IR: 0x27 0x66 0x89 0x45 (daa) 
 
268
  152818  vex x86->IR: 0xF3 0xAC 0xFC 0x9C (rep lodsb)
 
269
 
 
270
Developer-visible changes:
 
271
 
 
272
- The names of some functions and types within the Vex IR have
 
273
  changed.  Run 'svn log -r1689 VEX/pub/libvex_ir.h' for full details.
 
274
  Any existing standalone tools will have to be updated to reflect
 
275
  these changes.  The new names should be clearer.  The file
 
276
  VEX/pub/libvex_ir.h is also much better commented.
 
277
 
 
278
- A number of new debugging command line options have been added.
 
279
  These are mostly of use for debugging the symbol table and line
 
280
  number readers:
 
281
 
 
282
  --trace-symtab-patt=<patt> limit debuginfo tracing to obj name <patt>
 
283
  --trace-cfi=no|yes        show call-frame-info details? [no]
 
284
  --debug-dump=syms         mimic /usr/bin/readelf --syms
 
285
  --debug-dump=line         mimic /usr/bin/readelf --debug-dump=line
 
286
  --debug-dump=frames       mimic /usr/bin/readelf --debug-dump=frames
 
287
  --sym-offsets=yes|no      show syms in form 'name+offset' ? [no]
 
288
 
 
289
- Internally, the code base has been further factorised and
 
290
  abstractified, particularly with respect to support for non-Linux
 
291
  OSs.
 
292
 
 
293
(3.3.0.RC1:  2 Dec 2007, vex r1803, valgrind r7268).
 
294
(3.3.0.RC2:  5 Dec 2007, vex r1804, valgrind r7282).
 
295
(3.3.0.RC3:  9 Dec 2007, vex r1804, valgrind r7288).
 
296
(3.3.0:     10 Dec 2007, vex r1804, valgrind r7290).
 
297
 
 
298
 
 
299
 
 
300
Release 3.2.3 (29 Jan 2007)
 
301
~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
302
Unfortunately 3.2.2 introduced a regression which can cause an
 
303
assertion failure ("vex: the `impossible' happened: eqIRConst") when
 
304
running obscure pieces of SSE code.  3.2.3 fixes this and adds one
 
305
more glibc-2.5 intercept.  In all other respects it is identical to
 
306
3.2.2.  Please do not use (or package) 3.2.2; instead use 3.2.3.
 
307
 
 
308
n-i-bz   vex: the `impossible' happened: eqIRConst
 
309
n-i-bz   Add an intercept for glibc-2.5 __stpcpy_chk
 
310
 
 
311
(3.2.3: 29 Jan 2007, vex r1732, valgrind r6560).
 
312
 
 
313
 
 
314
Release 3.2.2 (22 Jan 2007)
 
315
~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
316
3.2.2 fixes a bunch of bugs in 3.2.1, adds support for glibc-2.5 based
 
317
systems (openSUSE 10.2, Fedora Core 6), improves support for icc-9.X
 
318
compiled code, and brings modest performance improvements in some
 
319
areas, including amd64 floating point, powerpc support, and startup
 
320
responsiveness on all targets.
 
321
 
 
322
The fixed bugs are as follows.  Note that "n-i-bz" stands for "not in
 
323
bugzilla" -- that is, a bug that was reported to us but never got a
 
324
bugzilla entry.  We encourage you to file bugs in bugzilla
 
325
(http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the
 
326
developers (or mailing lists) directly.
 
327
 
 
328
129390   ppc?->IR: some kind of VMX prefetch (dstt)
 
329
129968   amd64->IR: 0xF 0xAE 0x0 (fxsave)
 
330
134319   ==129968
 
331
133054   'make install' fails with syntax errors
 
332
118903   ==133054
 
333
132998   startup fails in when running on UML
 
334
134207   pkg-config output contains @VG_PLATFORM@
 
335
134727   valgrind exits with "Value too large for defined data type"
 
336
n-i-bz   ppc32/64: support mcrfs
 
337
n-i-bz   Cachegrind/Callgrind: Update cache parameter detection
 
338
135012   x86->IR: 0xD7 0x8A 0xE0 0xD0 (xlat)
 
339
125959   ==135012
 
340
126147   x86->IR: 0xF2 0xA5 0xF 0x77 (repne movsw)
 
341
136650   amd64->IR: 0xC2 0x8 0x0
 
342
135421   x86->IR: unhandled Grp5(R) case 6
 
343
n-i-bz   Improved documentation of the IR intermediate representation
 
344
n-i-bz   jcxz (x86) (users list, 8 Nov)
 
345
n-i-bz   ExeContext hashing fix
 
346
n-i-bz   fix CFI reading failures ("Dwarf CFI 0:24 0:32 0:48 0:7")
 
347
n-i-bz   fix Cachegrind/Callgrind simulation bug
 
348
n-i-bz   libmpiwrap.c: fix handling of MPI_LONG_DOUBLE
 
349
n-i-bz   make User errors suppressible
 
350
136844   corrupted malloc line when using --gen-suppressions=yes
 
351
138507   ==136844
 
352
n-i-bz   Speed up the JIT's register allocator
 
353
n-i-bz   Fix confusing leak-checker flag hints
 
354
n-i-bz   Support recent autoswamp versions
 
355
n-i-bz   ppc32/64 dispatcher speedups
 
356
n-i-bz   ppc64 front end rld/rlw improvements
 
357
n-i-bz   ppc64 back end imm64 improvements
 
358
136300   support 64K pages on ppc64-linux
 
359
139124   == 136300
 
360
n-i-bz   fix ppc insn set tests for gcc >= 4.1
 
361
137493   x86->IR: recent binutils no-ops
 
362
137714   x86->IR: 0x66 0xF 0xF7 0xC6 (maskmovdqu)
 
363
138424   "failed in UME with error 22" (produce a better error msg)
 
364
138856   ==138424
 
365
138627   Enhancement support for prctl ioctls
 
366
138896   Add support for usb ioctls
 
367
136059   ==138896
 
368
139050   ppc32->IR: mfspr 268/269 instructions not handled
 
369
n-i-bz   ppc32->IR: lvxl/stvxl
 
370
n-i-bz   glibc-2.5 support
 
371
n-i-bz   memcheck: provide replacement for mempcpy
 
372
n-i-bz   memcheck: replace bcmp in ld.so
 
373
n-i-bz   Use 'ifndef' in VEX's Makefile correctly
 
374
n-i-bz   Suppressions for MVL 4.0.1 on ppc32-linux
 
375
n-i-bz   libmpiwrap.c: Fixes for MPICH
 
376
n-i-bz   More robust handling of hinted client mmaps
 
377
139776   Invalid read in unaligned memcpy with Intel compiler v9
 
378
n-i-bz   Generate valid XML even for very long fn names
 
379
n-i-bz   Don't prompt about suppressions for unshown reachable leaks
 
380
139910   amd64 rcl is not supported
 
381
n-i-bz   DWARF CFI reader: handle DW_CFA_undefined
 
382
n-i-bz   DWARF CFI reader: handle icc9 generated CFI info better
 
383
n-i-bz   fix false uninit-value errs in icc9 generated FP code
 
384
n-i-bz   reduce extraneous frames in libmpiwrap.c
 
385
n-i-bz   support pselect6 on amd64-linux
 
386
 
 
387
(3.2.2: 22 Jan 2007, vex r1729, valgrind r6545).
 
388
 
 
389
 
 
390
Release 3.2.1 (16 Sept 2006)
 
391
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
392
3.2.1 adds x86/amd64 support for all SSE3 instructions except monitor
 
393
and mwait, further reduces memcheck's false error rate on all
 
394
platforms, adds support for recent binutils (in OpenSUSE 10.2 and
 
395
Fedora Rawhide) and fixes a bunch of bugs in 3.2.0.  Some of the fixed
 
396
bugs were causing large programs to segfault with --tool=callgrind and
 
397
--tool=cachegrind, so an upgrade is recommended.
 
398
 
 
399
In view of the fact that any 3.3.0 release is unlikely to happen until
 
400
well into 1Q07, we intend to keep the 3.2.X line alive for a while
 
401
yet, and so we tentatively plan a 3.2.2 release sometime in December
 
402
06.
 
403
 
 
404
The fixed bugs are as follows.  Note that "n-i-bz" stands for "not in
 
405
bugzilla" -- that is, a bug that was reported to us but never got a
 
406
bugzilla entry.
 
407
 
 
408
n-i-bz   Expanding brk() into last available page asserts
 
409
n-i-bz   ppc64-linux stack RZ fast-case snafu
 
410
n-i-bz   'c' in --gen-supps=yes doesn't work
 
411
n-i-bz   VG_N_SEGMENTS too low (users, 28 June)
 
412
n-i-bz   VG_N_SEGNAMES too low (Stu Robinson)
 
413
106852   x86->IR: fisttp (SSE3)
 
414
117172   FUTEX_WAKE does not use uaddr2
 
415
124039   Lacks support for VKI_[GP]IO_UNIMAP*
 
416
127521   amd64->IR: 0xF0 0x48 0xF 0xC7 (cmpxchg8b)
 
417
128917   amd64->IR: 0x66 0xF 0xF6 0xC4 (psadbw,SSE2)
 
418
129246   JJ: ppc32/ppc64 syscalls, w/ patch
 
419
129358   x86->IR: fisttpl (SSE3)
 
420
129866   cachegrind/callgrind causes executable to die
 
421
130020   Can't stat .so/.exe error while reading symbols
 
422
130388   Valgrind aborts when process calls malloc_trim()
 
423
130638   PATCH: ppc32 missing system calls
 
424
130785   amd64->IR: unhandled instruction "pushfq"
 
425
131481:  (HINT_NOP) vex x86->IR: 0xF 0x1F 0x0 0xF
 
426
131298   ==131481
 
427
132146   Programs with long sequences of bswap[l,q]s
 
428
132918   vex amd64->IR: 0xD9 0xF8 (fprem)
 
429
132813   Assertion at priv/guest-x86/toIR.c:652 fails
 
430
133051   'cfsi->len > 0 && cfsi->len < 2000000' failed
 
431
132722   valgrind header files are not standard C
 
432
n-i-bz   Livelocks entire machine (users list, Timothy Terriberry)
 
433
n-i-bz   Alex Bennee mmap problem (9 Aug)
 
434
n-i-bz   BartV: Don't print more lines of a stack-trace than were obtained.
 
435
n-i-bz   ppc32 SuSE 10.1 redir
 
436
n-i-bz   amd64 padding suppressions
 
437
n-i-bz   amd64 insn printing fix.
 
438
n-i-bz   ppc cmp reg,reg fix
 
439
n-i-bz   x86/amd64 iropt e/rflag reduction rules
 
440
n-i-bz   SuSE 10.1 (ppc32) minor fixes
 
441
133678   amd64->IR: 0x48 0xF 0xC5 0xC0 (pextrw?)
 
442
133694   aspacem assertion: aspacem_minAddr <= holeStart
 
443
n-i-bz   callgrind: fix warning about malformed creator line 
 
444
n-i-bz   callgrind: fix annotate script for data produced with 
 
445
         --dump-instr=yes
 
446
n-i-bz   callgrind: fix failed assertion when toggling 
 
447
         instrumentation mode
 
448
n-i-bz   callgrind: fix annotate script fix warnings with
 
449
         --collect-jumps=yes
 
450
n-i-bz   docs path hardwired (Dennis Lubert)
 
451
 
 
452
The following bugs were not fixed, due primarily to lack of developer
 
453
time, and also because bug reporters did not answer requests for
 
454
feedback in time for the release:
 
455
 
 
456
129390   ppc?->IR: some kind of VMX prefetch (dstt)
 
457
129968   amd64->IR: 0xF 0xAE 0x0 (fxsave)
 
458
133054   'make install' fails with syntax errors
 
459
n-i-bz   Signal race condition (users list, 13 June, Johannes Berg)
 
460
n-i-bz   Unrecognised instruction at address 0x70198EC2 (users list,
 
461
         19 July, Bennee)
 
462
132998   startup fails in when running on UML
 
463
 
 
464
The following bug was tentatively fixed on the mainline but the fix
 
465
was considered too risky to push into 3.2.X:
 
466
 
 
467
133154   crash when using client requests to register/deregister stack
 
468
 
 
469
(3.2.1: 16 Sept 2006, vex r1658, valgrind r6070).
 
470
 
 
471
 
 
472
Release 3.2.0 (7 June 2006)
 
473
~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
474
3.2.0 is a feature release with many significant improvements and the
 
475
usual collection of bug fixes.  This release supports X86/Linux,
 
476
AMD64/Linux, PPC32/Linux and PPC64/Linux.
 
477
 
 
478
Performance, especially of Memcheck, is improved, Addrcheck has been
 
479
removed, Callgrind has been added, PPC64/Linux support has been added,
 
480
Lackey has been improved, and MPI support has been added.  In detail:
 
481
 
 
482
- Memcheck has improved speed and reduced memory use.  Run times are
 
483
  typically reduced by 15-30%, averaging about 24% for SPEC CPU2000.
 
484
  The other tools have smaller but noticeable speed improvements.  We
 
485
  are interested to hear what improvements users get.
 
486
 
 
487
  Memcheck uses less memory due to the introduction of a compressed
 
488
  representation for shadow memory.  The space overhead has been
 
489
  reduced by a factor of up to four, depending on program behaviour.
 
490
  This means you should be able to run programs that use more memory
 
491
  than before without hitting problems.
 
492
 
 
493
- Addrcheck has been removed.  It has not worked since version 2.4.0,
 
494
  and the speed and memory improvements to Memcheck make it redundant.
 
495
  If you liked using Addrcheck because it didn't give undefined value
 
496
  errors, you can use the new Memcheck option --undef-value-errors=no
 
497
  to get the same behaviour.
 
498
 
 
499
- The number of undefined-value errors incorrectly reported by
 
500
  Memcheck has been reduced (such false reports were already very
 
501
  rare).  In particular, efforts have been made to ensure Memcheck
 
502
  works really well with gcc 4.0/4.1-generated code on X86/Linux and
 
503
  AMD64/Linux.
 
504
 
 
505
- Josef Weidendorfer's popular Callgrind tool has been added.  Folding
 
506
  it in was a logical step given its popularity and usefulness, and
 
507
  makes it easier for us to ensure it works "out of the box" on all
 
508
  supported targets.  The associated KDE KCachegrind GUI remains a
 
509
  separate project.
 
510
 
 
511
- A new release of the Valkyrie GUI for Memcheck, version 1.2.0,
 
512
  accompanies this release.  Improvements over previous releases
 
513
  include improved robustness, many refinements to the user interface,
 
514
  and use of a standard autoconf/automake build system.  You can get
 
515
  it from http://www.valgrind.org/downloads/guis.html.
 
516
 
 
517
- Valgrind now works on PPC64/Linux.  As with the AMD64/Linux port,
 
518
  this supports programs using to 32G of address space.  On 64-bit
 
519
  capable PPC64/Linux setups, you get a dual architecture build so
 
520
  that both 32-bit and 64-bit executables can be run.  Linux on POWER5
 
521
  is supported, and POWER4 is also believed to work.  Both 32-bit and
 
522
  64-bit DWARF2 is supported.  This port is known to work well with
 
523
  both gcc-compiled and xlc/xlf-compiled code.
 
524
 
 
525
- Floating point accuracy has been improved for PPC32/Linux.
 
526
  Specifically, the floating point rounding mode is observed on all FP
 
527
  arithmetic operations, and multiply-accumulate instructions are
 
528
  preserved by the compilation pipeline.  This means you should get FP
 
529
  results which are bit-for-bit identical to a native run.  These
 
530
  improvements are also present in the PPC64/Linux port.
 
531
 
 
532
- Lackey, the example tool, has been improved:
 
533
 
 
534
  * It has a new option --detailed-counts (off by default) which
 
535
    causes it to print out a count of loads, stores and ALU operations
 
536
    done, and their sizes.
 
537
 
 
538
  * It has a new option --trace-mem (off by default) which causes it
 
539
    to print out a trace of all memory accesses performed by a
 
540
    program.  It's a good starting point for building Valgrind tools
 
541
    that need to track memory accesses.  Read the comments at the top
 
542
    of the file lackey/lk_main.c for details.
 
543
 
 
544
  * The original instrumentation (counting numbers of instructions,
 
545
    jumps, etc) is now controlled by a new option --basic-counts.  It
 
546
    is on by default.
 
547
 
 
548
- MPI support: partial support for debugging distributed applications
 
549
  using the MPI library specification has been added.  Valgrind is
 
550
  aware of the memory state changes caused by a subset of the MPI
 
551
  functions, and will carefully check data passed to the (P)MPI_
 
552
  interface.
 
553
 
 
554
- A new flag, --error-exitcode=, has been added.  This allows changing
 
555
  the exit code in runs where Valgrind reported errors, which is
 
556
  useful when using Valgrind as part of an automated test suite.
 
557
 
 
558
- Various segfaults when reading old-style "stabs" debug information
 
559
  have been fixed.
 
560
 
 
561
- A simple performance evaluation suite has been added.  See
 
562
  perf/README and README_DEVELOPERS for details.  There are
 
563
  various bells and whistles.
 
564
 
 
565
- New configuration flags:
 
566
    --enable-only32bit
 
567
    --enable-only64bit
 
568
  By default, on 64 bit platforms (ppc64-linux, amd64-linux) the build
 
569
  system will attempt to build a Valgrind which supports both 32-bit
 
570
  and 64-bit executables.  This may not be what you want, and you can
 
571
  override the default behaviour using these flags.
 
572
 
 
573
Please note that Helgrind is still not working.  We have made an
 
574
important step towards making it work again, however, with the
 
575
addition of function wrapping (see below).
 
576
 
 
577
Other user-visible changes:
 
578
 
 
579
- Valgrind now has the ability to intercept and wrap arbitrary
 
580
  functions.  This is a preliminary step towards making Helgrind work
 
581
  again, and was required for MPI support.
 
582
 
 
583
- There are some changes to Memcheck's client requests.  Some of them
 
584
  have changed names:
 
585
 
 
586
    MAKE_NOACCESS  --> MAKE_MEM_NOACCESS
 
587
    MAKE_WRITABLE  --> MAKE_MEM_UNDEFINED
 
588
    MAKE_READABLE  --> MAKE_MEM_DEFINED
 
589
 
 
590
    CHECK_WRITABLE --> CHECK_MEM_IS_ADDRESSABLE
 
591
    CHECK_READABLE --> CHECK_MEM_IS_DEFINED
 
592
    CHECK_DEFINED  --> CHECK_VALUE_IS_DEFINED
 
593
 
 
594
  The reason for the change is that the old names are subtly
 
595
  misleading.  The old names will still work, but they are deprecated
 
596
  and may be removed in a future release.
 
597
 
 
598
  We also added a new client request:
 
599
  
 
600
    MAKE_MEM_DEFINED_IF_ADDRESSABLE(a, len)
 
601
    
 
602
  which is like MAKE_MEM_DEFINED but only affects a byte if the byte is
 
603
  already addressable.
 
604
 
 
605
- The way client requests are encoded in the instruction stream has
 
606
  changed.  Unfortunately, this means 3.2.0 will not honour client
 
607
  requests compiled into binaries using headers from earlier versions
 
608
  of Valgrind.  We will try to keep the client request encodings more 
 
609
  stable in future.
 
610
 
 
611
BUGS FIXED:
 
612
 
 
613
108258   NPTL pthread cleanup handlers not called 
 
614
117290   valgrind is sigKILL'd on startup
 
615
117295   == 117290
 
616
118703   m_signals.c:1427 Assertion 'tst->status == VgTs_WaitSys'
 
617
118466   add %reg, %reg generates incorrect validity for bit 0
 
618
123210   New: strlen from ld-linux on amd64
 
619
123244   DWARF2 CFI reader: unhandled CFI instruction 0:18
 
620
123248   syscalls in glibc-2.4: openat, fstatat, symlinkat
 
621
123258   socketcall.recvmsg(msg.msg_iov[i] points to uninit
 
622
123535   mremap(new_addr) requires MREMAP_FIXED in 4th arg
 
623
123836   small typo in the doc
 
624
124029   ppc compile failed: `vor' gcc 3.3.5
 
625
124222   Segfault: @@don't know what type ':' is
 
626
124475   ppc32: crash (syscall?) timer_settime()
 
627
124499   amd64->IR: 0xF 0xE 0x48 0x85 (femms)
 
628
124528   FATAL: aspacem assertion failed: segment_is_sane
 
629
124697   vex x86->IR: 0xF 0x70 0xC9 0x0 (pshufw)
 
630
124892   vex x86->IR: 0xF3 0xAE (REPx SCASB)
 
631
126216   == 124892
 
632
124808   ppc32: sys_sched_getaffinity() not handled
 
633
n-i-bz   Very long stabs strings crash m_debuginfo
 
634
n-i-bz   amd64->IR: 0x66 0xF 0xF5 (pmaddwd)
 
635
125492   ppc32: support a bunch more syscalls
 
636
121617   ppc32/64: coredumping gives assertion failure
 
637
121814   Coregrind return error as exitcode patch
 
638
126517   == 121814
 
639
125607   amd64->IR: 0x66 0xF 0xA3 0x2 (btw etc)
 
640
125651   amd64->IR: 0xF8 0x49 0xFF 0xE3 (clc?)
 
641
126253   x86 movx is wrong
 
642
126451   3.2 SVN doesn't work on ppc32 CPU's without FPU
 
643
126217   increase # threads
 
644
126243   vex x86->IR: popw mem
 
645
126583   amd64->IR: 0x48 0xF 0xA4 0xC2 (shld $1,%rax,%rdx)
 
646
126668   amd64->IR: 0x1C 0xFF (sbb $0xff,%al)
 
647
126696   support for CDROMREADRAW ioctl and CDROMREADTOCENTRY fix
 
648
126722   assertion: segment_is_sane at m_aspacemgr/aspacemgr.c:1624
 
649
126938   bad checking for syscalls linkat, renameat, symlinkat
 
650
 
 
651
(3.2.0RC1: 27 May  2006, vex r1626, valgrind r5947).
 
652
(3.2.0:     7 June 2006, vex r1628, valgrind r5957).
 
653
 
 
654
 
 
655
Release 3.1.1 (15 March 2006)
 
656
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
657
3.1.1 fixes a bunch of bugs reported in 3.1.0.  There is no new
 
658
functionality.  The fixed bugs are:
 
659
 
 
660
(note: "n-i-bz" means "not in bugzilla" -- this bug does not have
 
661
 a bugzilla entry).
 
662
 
 
663
n-i-bz   ppc32: fsub 3,3,3 in dispatcher doesn't clear NaNs
 
664
n-i-bz   ppc32: __NR_{set,get}priority
 
665
117332   x86: missing line info with icc 8.1
 
666
117366   amd64: 0xDD 0x7C fnstsw
 
667
118274   == 117366
 
668
117367   amd64: 0xD9 0xF4 fxtract
 
669
117369   amd64: __NR_getpriority (140)
 
670
117419   ppc32: lfsu f5, -4(r11)
 
671
117419   ppc32: fsqrt
 
672
117936   more stabs problems (segfaults while reading debug info)
 
673
119914   == 117936
 
674
120345   == 117936
 
675
118239   amd64: 0xF 0xAE 0x3F (clflush)
 
676
118939   vm86old system call
 
677
n-i-bz   memcheck/tests/mempool reads freed memory
 
678
n-i-bz   AshleyP's custom-allocator assertion
 
679
n-i-bz   Dirk strict-aliasing stuff
 
680
n-i-bz   More space for debugger cmd line (Dan Thaler)
 
681
n-i-bz   Clarified leak checker output message
 
682
n-i-bz   AshleyP's --gen-suppressions output fix
 
683
n-i-bz   cg_annotate's --sort option broken
 
684
n-i-bz   OSet 64-bit fastcmp bug
 
685
n-i-bz   VG_(getgroups) fix (Shinichi Noda)
 
686
n-i-bz   ppc32: allocate from callee-saved FP/VMX regs
 
687
n-i-bz   misaligned path word-size bug in mc_main.c
 
688
119297   Incorrect error message for sse code
 
689
120410   x86: prefetchw (0xF 0xD 0x48 0x4)
 
690
120728   TIOCSERGETLSR, TIOCGICOUNT, HDIO_GET_DMA ioctls
 
691
120658   Build fixes for gcc 2.96
 
692
120734   x86: Support for changing EIP in signal handler
 
693
n-i-bz   memcheck/tests/zeropage de-looping fix
 
694
n-i-bz   x86: fxtract doesn't work reliably
 
695
121662   x86: lock xadd (0xF0 0xF 0xC0 0x2)
 
696
121893   calloc does not always return zeroed memory
 
697
121901   no support for syscall tkill
 
698
n-i-bz   Suppression update for Debian unstable
 
699
122067   amd64: fcmovnu (0xDB 0xD9)
 
700
n-i-bz   ppc32: broken signal handling in cpu feature detection
 
701
n-i-bz   ppc32: rounding mode problems (improved, partial fix only)
 
702
119482   ppc32: mtfsb1
 
703
n-i-bz   ppc32: mtocrf/mfocrf
 
704
 
 
705
(3.1.1:  15 March 2006, vex r1597, valgrind r5771).
 
706
 
 
707
 
 
708
Release 3.1.0 (25 November 2005)
 
709
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
710
3.1.0 is a feature release with a number of significant improvements:
 
711
AMD64 support is much improved, PPC32 support is good enough to be
 
712
usable, and the handling of memory management and address space is
 
713
much more robust.  In detail:
 
714
 
 
715
- AMD64 support is much improved.  The 64-bit vs. 32-bit issues in
 
716
  3.0.X have been resolved, and it should "just work" now in all
 
717
  cases.  On AMD64 machines both 64-bit and 32-bit versions of
 
718
  Valgrind are built.  The right version will be invoked
 
719
  automatically, even when using --trace-children and mixing execution
 
720
  between 64-bit and 32-bit executables.  Also, many more instructions
 
721
  are supported.
 
722
 
 
723
- PPC32 support is now good enough to be usable.  It should work with
 
724
  all tools, but please let us know if you have problems.  Three
 
725
  classes of CPUs are supported: integer only (no FP, no Altivec),
 
726
  which covers embedded PPC uses, integer and FP but no Altivec
 
727
  (G3-ish), and CPUs capable of Altivec too (G4, G5).
 
728
 
 
729
- Valgrind's address space management has been overhauled.  As a
 
730
  result, Valgrind should be much more robust with programs that use
 
731
  large amounts of memory.  There should be many fewer "memory
 
732
  exhausted" messages, and debug symbols should be read correctly on
 
733
  large (eg. 300MB+) executables.  On 32-bit machines the full address
 
734
  space available to user programs (usually 3GB or 4GB) can be fully
 
735
  utilised.  On 64-bit machines up to 32GB of space is usable; when
 
736
  using Memcheck that means your program can use up to about 14GB.
 
737
 
 
738
  A side effect of this change is that Valgrind is no longer protected
 
739
  against wild writes by the client.  This feature was nice but relied
 
740
  on the x86 segment registers and so wasn't portable.
 
741
 
 
742
- Most users should not notice, but as part of the address space
 
743
  manager change, the way Valgrind is built has been changed.  Each
 
744
  tool is now built as a statically linked stand-alone executable,
 
745
  rather than as a shared object that is dynamically linked with the
 
746
  core.  The "valgrind" program invokes the appropriate tool depending
 
747
  on the --tool option.  This slightly increases the amount of disk
 
748
  space used by Valgrind, but it greatly simplified many things and
 
749
  removed Valgrind's dependence on glibc.
 
750
 
 
751
Please note that Addrcheck and Helgrind are still not working.  Work
 
752
is underway to reinstate them (or equivalents).  We apologise for the
 
753
inconvenience.
 
754
 
 
755
Other user-visible changes:
 
756
 
 
757
- The --weird-hacks option has been renamed --sim-hints.
 
758
 
 
759
- The --time-stamp option no longer gives an absolute date and time.
 
760
  It now prints the time elapsed since the program began.
 
761
 
 
762
- It should build with gcc-2.96.
 
763
 
 
764
- Valgrind can now run itself (see README_DEVELOPERS for how).
 
765
  This is not much use to you, but it means the developers can now
 
766
  profile Valgrind using Cachegrind.  As a result a couple of
 
767
  performance bad cases have been fixed.
 
768
 
 
769
- The XML output format has changed slightly.  See
 
770
  docs/internals/xml-output.txt.
 
771
 
 
772
- Core dumping has been reinstated (it was disabled in 3.0.0 and 3.0.1).
 
773
  If your program crashes while running under Valgrind, a core file with
 
774
  the name "vgcore.<pid>" will be created (if your settings allow core
 
775
  file creation).  Note that the floating point information is not all
 
776
  there.  If Valgrind itself crashes, the OS will create a normal core
 
777
  file.
 
778
 
 
779
The following are some user-visible changes that occurred in earlier
 
780
versions that may not have been announced, or were announced but not
 
781
widely noticed.  So we're mentioning them now.
 
782
 
 
783
- The --tool flag is optional once again;  if you omit it, Memcheck
 
784
  is run by default.
 
785
 
 
786
- The --num-callers flag now has a default value of 12.  It was
 
787
  previously 4.
 
788
 
 
789
- The --xml=yes flag causes Valgrind's output to be produced in XML
 
790
  format.  This is designed to make it easy for other programs to
 
791
  consume Valgrind's output.  The format is described in the file
 
792
  docs/internals/xml-format.txt.
 
793
 
 
794
- The --gen-suppressions flag supports an "all" value that causes every
 
795
  suppression to be printed without asking.
 
796
 
 
797
- The --log-file option no longer puts "pid" in the filename, eg. the
 
798
  old name "foo.pid12345" is now "foo.12345".
 
799
 
 
800
- There are several graphical front-ends for Valgrind, such as Valkyrie,
 
801
  Alleyoop and Valgui.  See http://www.valgrind.org/downloads/guis.html
 
802
  for a list.
 
803
 
 
804
BUGS FIXED:
 
805
 
 
806
109861  amd64 hangs at startup
 
807
110301  ditto
 
808
111554  valgrind crashes with Cannot allocate memory
 
809
111809  Memcheck tool doesn't start java
 
810
111901  cross-platform run of cachegrind fails on opteron
 
811
113468  (vgPlain_mprotect_range): Assertion 'r != -1' failed.
 
812
 92071  Reading debugging info uses too much memory
 
813
109744  memcheck loses track of mmap from direct ld-linux.so.2
 
814
110183  tail of page with _end
 
815
 82301  FV memory layout too rigid
 
816
 98278  Infinite recursion possible when allocating memory
 
817
108994  Valgrind runs out of memory due to 133x overhead
 
818
115643  valgrind cannot allocate memory
 
819
105974  vg_hashtable.c static hash table
 
820
109323  ppc32: dispatch.S uses Altivec insn, which doesn't work on POWER. 
 
821
109345  ptrace_setregs not yet implemented for ppc
 
822
110831  Would like to be able to run against both 32 and 64 bit 
 
823
        binaries on AMD64
 
824
110829  == 110831
 
825
111781  compile of valgrind-3.0.0 fails on my linux (gcc 2.X prob)
 
826
112670  Cachegrind: cg_main.c:486 (handleOneStatement ...
 
827
112941  vex x86: 0xD9 0xF4 (fxtract)
 
828
110201  == 112941
 
829
113015  vex amd64->IR: 0xE3 0x14 0x48 0x83 (jrcxz)
 
830
113126  Crash with binaries built with -gstabs+/-ggdb
 
831
104065  == 113126
 
832
115741  == 113126
 
833
113403  Partial SSE3 support on x86
 
834
113541  vex: Grp5(x86) (alt encoding inc/dec) case 1
 
835
113642  valgrind crashes when trying to read debug information
 
836
113810  vex x86->IR: 66 0F F6 (66 + PSADBW == SSE PSADBW)
 
837
113796  read() and write() do not work if buffer is in shared memory
 
838
113851  vex x86->IR: (pmaddwd): 0x66 0xF 0xF5 0xC7
 
839
114366  vex amd64 cannnot handle __asm__( "fninit" )
 
840
114412  vex amd64->IR: 0xF 0xAD 0xC2 0xD3 (128-bit shift, shrdq?)
 
841
114455  vex amd64->IR: 0xF 0xAC 0xD0 0x1 (also shrdq)
 
842
115590: amd64->IR: 0x67 0xE3 0x9 0xEB (address size override)
 
843
115953  valgrind svn r5042 does not build with parallel make (-j3)
 
844
116057  maximum instruction size - VG_MAX_INSTR_SZB too small?
 
845
116483  shmat failes with invalid argument
 
846
102202  valgrind crashes when realloc'ing until out of memory
 
847
109487  == 102202
 
848
110536  == 102202
 
849
112687  == 102202
 
850
111724  vex amd64->IR: 0x41 0xF 0xAB (more BT{,S,R,C} fun n games)
 
851
111748  vex amd64->IR: 0xDD 0xE2 (fucom)
 
852
111785  make fails if CC contains spaces
 
853
111829  vex x86->IR: sbb AL, Ib
 
854
111851  vex x86->IR: 0x9F 0x89 (lahf/sahf)
 
855
112031  iopl on AMD64 and README_MISSING_SYSCALL_OR_IOCTL update
 
856
112152  code generation for Xin_MFence on x86 with SSE0 subarch
 
857
112167  == 112152
 
858
112789  == 112152
 
859
112199  naked ar tool is used in vex makefile
 
860
112501  vex x86->IR: movq (0xF 0x7F 0xC1 0xF) (mmx MOVQ)
 
861
113583  == 112501
 
862
112538  memalign crash
 
863
113190  Broken links in docs/html/
 
864
113230  Valgrind sys_pipe on x86-64 wrongly thinks file descriptors
 
865
        should be 64bit
 
866
113996  vex amd64->IR: fucomp (0xDD 0xE9)
 
867
114196  vex x86->IR: out %eax,(%dx) (0xEF 0xC9 0xC3 0x90)
 
868
114289  Memcheck fails to intercept malloc when used in an uclibc environment
 
869
114756  mbind syscall support
 
870
114757  Valgrind dies with assertion: Assertion 'noLargerThan > 0' failed
 
871
114563  stack tracking module not informed when valgrind switches threads
 
872
114564  clone() and stacks
 
873
114565  == 114564
 
874
115496  glibc crashes trying to use sysinfo page
 
875
116200  enable fsetxattr, fgetxattr, and fremovexattr for amd64
 
876
 
 
877
(3.1.0RC1: 20 November 2005, vex r1466, valgrind r5224).
 
878
(3.1.0:    26 November 2005, vex r1471, valgrind r5235).
 
879
 
 
880
 
 
881
Release 3.0.1 (29 August 2005)
 
882
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
883
3.0.1 fixes a bunch of bugs reported in 3.0.0.  There is no new
 
884
functionality.  Some of the fixed bugs are critical, so if you
 
885
use/distribute 3.0.0, an upgrade to 3.0.1 is recommended.  The fixed
 
886
bugs are:
 
887
 
 
888
(note: "n-i-bz" means "not in bugzilla" -- this bug does not have
 
889
 a bugzilla entry).
 
890
 
 
891
109313  (== 110505) x86 cmpxchg8b
 
892
n-i-bz  x86: track but ignore changes to %eflags.AC (alignment check)
 
893
110102  dis_op2_E_G(amd64)
 
894
110202  x86 sys_waitpid(#286)
 
895
110203  clock_getres(,0)
 
896
110208  execve fail wrong retval
 
897
110274  SSE1 now mandatory for x86
 
898
110388  amd64 0xDD 0xD1
 
899
110464  amd64 0xDC 0x1D FCOMP
 
900
110478  amd64 0xF 0xD PREFETCH
 
901
n-i-bz  XML <unique> printing wrong
 
902
n-i-bz  Dirk r4359 (amd64 syscalls from trunk)
 
903
110591  amd64 and x86: rdtsc not implemented properly
 
904
n-i-bz  Nick r4384 (stub implementations of Addrcheck and Helgrind)
 
905
110652  AMD64 valgrind crashes on cwtd instruction
 
906
110653  AMD64 valgrind crashes on sarb $0x4,foo(%rip) instruction
 
907
110656  PATH=/usr/bin::/bin valgrind foobar stats ./fooba
 
908
110657  Small test fixes
 
909
110671  vex x86->IR: unhandled instruction bytes: 0xF3 0xC3 (rep ret)
 
910
n-i-bz  Nick (Cachegrind should not assert when it encounters a client
 
911
        request.)
 
912
110685  amd64->IR: unhandled instruction bytes: 0xE1 0x56 (loope Jb)
 
913
110830  configuring with --host fails to build 32 bit on 64 bit target
 
914
110875  Assertion when execve fails
 
915
n-i-bz  Updates to Memcheck manual
 
916
n-i-bz  Fixed broken malloc_usable_size()
 
917
110898  opteron instructions missing: btq btsq btrq bsfq
 
918
110954  x86->IR: unhandled instruction bytes: 0xE2 0xF6 (loop Jb)
 
919
n-i-bz  Make suppressions work for "???" lines in stacktraces.
 
920
111006  bogus warnings from linuxthreads
 
921
111092  x86: dis_Grp2(Reg): unhandled case(x86) 
 
922
111231  sctp_getladdrs() and sctp_getpaddrs() returns uninitialized
 
923
        memory
 
924
111102  (comment #4)   Fixed 64-bit unclean "silly arg" message
 
925
n-i-bz  vex x86->IR: unhandled instruction bytes: 0x14 0x0
 
926
n-i-bz  minor umount/fcntl wrapper fixes
 
927
111090  Internal Error running Massif
 
928
101204  noisy warning
 
929
111513  Illegal opcode for SSE instruction (x86 movups)
 
930
111555  VEX/Makefile: CC is set to gcc
 
931
n-i-bz  Fix XML bugs in FAQ
 
932
 
 
933
(3.0.1: 29 August 05,
 
934
        vex/branches/VEX_3_0_BRANCH r1367,
 
935
        valgrind/branches/VALGRIND_3_0_BRANCH r4574).
 
936
 
 
937
 
 
938
 
 
939
Release 3.0.0 (3 August 2005)
 
940
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
941
3.0.0 is a major overhaul of Valgrind.  The most significant user
 
942
visible change is that Valgrind now supports architectures other than
 
943
x86.  The new architectures it supports are AMD64 and PPC32, and the
 
944
infrastructure is present for other architectures to be added later.
 
945
 
 
946
AMD64 support works well, but has some shortcomings:
 
947
 
 
948
- It generally won't be as solid as the x86 version.  For example,
 
949
  support for more obscure instructions and system calls may be missing.
 
950
  We will fix these as they arise.
 
951
 
 
952
- Address space may be limited; see the point about
 
953
  position-independent executables below.
 
954
 
 
955
- If Valgrind is built on an AMD64 machine, it will only run 64-bit
 
956
  executables.  If you want to run 32-bit x86 executables under Valgrind
 
957
  on an AMD64, you will need to build Valgrind on an x86 machine and
 
958
  copy it to the AMD64 machine.  And it probably won't work if you do
 
959
  something tricky like exec'ing a 32-bit program from a 64-bit program
 
960
  while using --trace-children=yes.  We hope to improve this situation
 
961
  in the future.
 
962
 
 
963
The PPC32 support is very basic.  It may not work reliably even for
 
964
small programs, but it's a start.  Many thanks to Paul Mackerras for
 
965
his great work that enabled this support.  We are working to make
 
966
PPC32 usable as soon as possible.
 
967
 
 
968
Other user-visible changes:
 
969
 
 
970
- Valgrind is no longer built by default as a position-independent
 
971
  executable (PIE), as this caused too many problems.
 
972
 
 
973
  Without PIE enabled, AMD64 programs will only be able to access 2GB of
 
974
  address space.  We will fix this eventually, but not for the moment.
 
975
  
 
976
  Use --enable-pie at configure-time to turn this on.
 
977
 
 
978
- Support for programs that use stack-switching has been improved.  Use
 
979
  the --max-stackframe flag for simple cases, and the
 
980
  VALGRIND_STACK_REGISTER, VALGRIND_STACK_DEREGISTER and
 
981
  VALGRIND_STACK_CHANGE client requests for trickier cases.
 
982
 
 
983
- Support for programs that use self-modifying code has been improved,
 
984
  in particular programs that put temporary code fragments on the stack.
 
985
  This helps for C programs compiled with GCC that use nested functions,
 
986
  and also Ada programs.  This is controlled with the --smc-check
 
987
  flag, although the default setting should work in most cases.
 
988
 
 
989
- Output can now be printed in XML format.  This should make it easier
 
990
  for tools such as GUI front-ends and automated error-processing
 
991
  schemes to use Valgrind output as input.  The --xml flag controls this.
 
992
  As part of this change, ELF directory information is read from executables,
 
993
  so absolute source file paths are available if needed.
 
994
 
 
995
- Programs that allocate many heap blocks may run faster, due to
 
996
  improvements in certain data structures.
 
997
 
 
998
- Addrcheck is currently not working.  We hope to get it working again
 
999
  soon.  Helgrind is still not working, as was the case for the 2.4.0
 
1000
  release.
 
1001
 
 
1002
- The JITter has been completely rewritten, and is now in a separate
 
1003
  library, called Vex.  This enabled a lot of the user-visible changes,
 
1004
  such as new architecture support.  The new JIT unfortunately translates
 
1005
  more slowly than the old one, so programs may take longer to start.
 
1006
  We believe the code quality is produces is about the same, so once
 
1007
  started, programs should run at about the same speed.  Feedback about
 
1008
  this would be useful.
 
1009
 
 
1010
  On the plus side, Vex and hence Memcheck tracks value flow properly
 
1011
  through floating point and vector registers, something the 2.X line
 
1012
  could not do.  That means that Memcheck is much more likely to be
 
1013
  usably accurate on vectorised code.
 
1014
 
 
1015
- There is a subtle change to the way exiting of threaded programs
 
1016
  is handled.  In 3.0, Valgrind's final diagnostic output (leak check,
 
1017
  etc) is not printed until the last thread exits.  If the last thread
 
1018
  to exit was not the original thread which started the program, any
 
1019
  other process wait()-ing on this one to exit may conclude it has
 
1020
  finished before the diagnostic output is printed.  This may not be
 
1021
  what you expect.  2.X had a different scheme which avoided this
 
1022
  problem, but caused deadlocks under obscure circumstances, so we
 
1023
  are trying something different for 3.0.
 
1024
 
 
1025
- Small changes in control log file naming which make it easier to
 
1026
  use valgrind for debugging MPI-based programs.  The relevant
 
1027
  new flags are --log-file-exactly= and --log-file-qualifier=.
 
1028
 
 
1029
- As part of adding AMD64 support, DWARF2 CFI-based stack unwinding
 
1030
  support was added.  In principle this means Valgrind can produce
 
1031
  meaningful backtraces on x86 code compiled with -fomit-frame-pointer
 
1032
  providing you also compile your code with -fasynchronous-unwind-tables.
 
1033
 
 
1034
- The documentation build system has been completely redone.
 
1035
  The documentation masters are now in XML format, and from that
 
1036
  HTML, PostScript and PDF documentation is generated.  As a result
 
1037
  the manual is now available in book form.  Note that the
 
1038
  documentation in the source tarballs is pre-built, so you don't need
 
1039
  any XML processing tools to build Valgrind from a tarball.
 
1040
 
 
1041
Changes that are not user-visible:
 
1042
 
 
1043
- The code has been massively overhauled in order to modularise it.
 
1044
  As a result we hope it is easier to navigate and understand.
 
1045
 
 
1046
- Lots of code has been rewritten.
 
1047
 
 
1048
BUGS FIXED:
 
1049
 
 
1050
110046  sz == 4 assertion failed 
 
1051
109810  vex amd64->IR: unhandled instruction bytes: 0xA3 0x4C 0x70 0xD7
 
1052
109802  Add a plausible_stack_size command-line parameter ?
 
1053
109783  unhandled ioctl TIOCMGET (running hw detection tool discover) 
 
1054
109780  unhandled ioctl BLKSSZGET (running fdisk -l /dev/hda)
 
1055
109718  vex x86->IR: unhandled instruction: ffreep 
 
1056
109429  AMD64 unhandled syscall: 127 (sigpending)
 
1057
109401  false positive uninit in strchr from ld-linux.so.2
 
1058
109385  "stabs" parse failure 
 
1059
109378  amd64: unhandled instruction REP NOP
 
1060
109376  amd64: unhandled instruction LOOP Jb 
 
1061
109363  AMD64 unhandled instruction bytes 
 
1062
109362  AMD64 unhandled syscall: 24 (sched_yield)
 
1063
109358  fork() won't work with valgrind-3.0 SVN
 
1064
109332  amd64 unhandled instruction: ADC Ev, Gv
 
1065
109314  Bogus memcheck report on amd64
 
1066
108883  Crash; vg_memory.c:905 (vgPlain_init_shadow_range):
 
1067
        Assertion `vgPlain_defined_init_shadow_page()' failed.
 
1068
108349  mincore syscall parameter checked incorrectly 
 
1069
108059  build infrastructure: small update
 
1070
107524  epoll_ctl event parameter checked on EPOLL_CTL_DEL
 
1071
107123  Vex dies with unhandled instructions: 0xD9 0x31 0xF 0xAE
 
1072
106841  auxmap & openGL problems
 
1073
106713  SDL_Init causes valgrind to exit
 
1074
106352  setcontext and makecontext not handled correctly 
 
1075
106293  addresses beyond initial client stack allocation 
 
1076
        not checked in VALGRIND_DO_LEAK_CHECK
 
1077
106283  PIE client programs are loaded at address 0
 
1078
105831  Assertion `vgPlain_defined_init_shadow_page()' failed.
 
1079
105039  long run-times probably due to memory manager 
 
1080
104797  valgrind needs to be aware of BLKGETSIZE64
 
1081
103594  unhandled instruction: FICOM
 
1082
103320  Valgrind 2.4.0 fails to compile with gcc 3.4.3 and -O0
 
1083
103168  potentially memory leak in coregrind/ume.c 
 
1084
102039  bad permissions for mapped region at address 0xB7C73680
 
1085
101881  weird assertion problem
 
1086
101543  Support fadvise64 syscalls
 
1087
75247   x86_64/amd64 support (the biggest "bug" we have ever fixed)
 
1088
 
 
1089
(3.0RC1: 27 July   05, vex r1303, valgrind r4283).
 
1090
(3.0.0:   3 August 05, vex r1313, valgrind r4316).
 
1091
 
 
1092
 
 
1093
 
 
1094
Stable release 2.4.1 (1 August 2005)
 
1095
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1096
(The notes for this release have been lost.  Sorry!  It would have
 
1097
contained various bug fixes but no new features.)
 
1098
 
 
1099
 
 
1100
 
 
1101
Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
 
1102
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1103
2.4.0 brings many significant changes and bug fixes.  The most
 
1104
significant user-visible change is that we no longer supply our own
 
1105
pthread implementation.  Instead, Valgrind is finally capable of
 
1106
running the native thread library, either LinuxThreads or NPTL.
 
1107
 
 
1108
This means our libpthread has gone, along with the bugs associated
 
1109
with it.  Valgrind now supports the kernel's threading syscalls, and
 
1110
lets you use your standard system libpthread.  As a result:
 
1111
 
 
1112
* There are many fewer system dependencies and strange library-related
 
1113
  bugs.  There is a small performance improvement, and a large
 
1114
  stability improvement.
 
1115
 
 
1116
* On the downside, Valgrind can no longer report misuses of the POSIX
 
1117
  PThreads API.  It also means that Helgrind currently does not work.
 
1118
  We hope to fix these problems in a future release.
 
1119
 
 
1120
Note that running the native thread libraries does not mean Valgrind
 
1121
is able to provide genuine concurrent execution on SMPs.  We still
 
1122
impose the restriction that only one thread is running at any given
 
1123
time.
 
1124
 
 
1125
There are many other significant changes too:
 
1126
 
 
1127
* Memcheck is (once again) the default tool.
 
1128
 
 
1129
* The default stack backtrace is now 12 call frames, rather than 4.
 
1130
 
 
1131
* Suppressions can have up to 25 call frame matches, rather than 4.
 
1132
 
 
1133
* Memcheck and Addrcheck use less memory.  Under some circumstances,
 
1134
  they no longer allocate shadow memory if there are large regions of
 
1135
  memory with the same A/V states - such as an mmaped file.
 
1136
 
 
1137
* The memory-leak detector in Memcheck and Addrcheck has been
 
1138
  improved.  It now reports more types of memory leak, including
 
1139
  leaked cycles.  When reporting leaked memory, it can distinguish
 
1140
  between directly leaked memory (memory with no references), and
 
1141
  indirectly leaked memory (memory only referred to by other leaked
 
1142
  memory).
 
1143
 
 
1144
* Memcheck's confusion over the effect of mprotect() has been fixed:
 
1145
  previously mprotect could erroneously mark undefined data as
 
1146
  defined.
 
1147
 
 
1148
* Signal handling is much improved and should be very close to what
 
1149
  you get when running natively.  
 
1150
 
 
1151
  One result of this is that Valgrind observes changes to sigcontexts
 
1152
  passed to signal handlers.  Such modifications will take effect when
 
1153
  the signal returns.  You will need to run with --single-step=yes to
 
1154
  make this useful.
 
1155
 
 
1156
* Valgrind is built in Position Independent Executable (PIE) format if
 
1157
  your toolchain supports it.  This allows it to take advantage of all
 
1158
  the available address space on systems with 4Gbyte user address
 
1159
  spaces.
 
1160
 
 
1161
* Valgrind can now run itself (requires PIE support).
 
1162
 
 
1163
* Syscall arguments are now checked for validity.  Previously all
 
1164
  memory used by syscalls was checked, but now the actual values
 
1165
  passed are also checked.
 
1166
 
 
1167
* Syscall wrappers are more robust against bad addresses being passed
 
1168
  to syscalls: they will fail with EFAULT rather than killing Valgrind
 
1169
  with SIGSEGV.
 
1170
 
 
1171
* Because clone() is directly supported, some non-pthread uses of it
 
1172
  will work.  Partial sharing (where some resources are shared, and
 
1173
  some are not) is not supported.
 
1174
 
 
1175
* open() and readlink() on /proc/self/exe are supported.
 
1176
 
 
1177
BUGS FIXED:
 
1178
 
 
1179
88520   pipe+fork+dup2 kills the main program
 
1180
88604   Valgrind Aborts when using $VALGRIND_OPTS and user progra...
 
1181
88614   valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt...
 
1182
88703   Stabs parser fails to handle ";"
 
1183
88886   ioctl wrappers for TIOCMBIS and TIOCMBIC
 
1184
89032   valgrind pthread_cond_timedwait fails
 
1185
89106   the 'impossible' happened
 
1186
89139   Missing sched_setaffinity & sched_getaffinity
 
1187
89198   valgrind lacks support for SIOCSPGRP and SIOCGPGRP
 
1188
89263   Missing ioctl translations for scsi-generic and CD playing
 
1189
89440   tests/deadlock.c line endings
 
1190
89481   `impossible' happened: EXEC FAILED
 
1191
89663   valgrind 2.2.0 crash on Redhat 7.2
 
1192
89792   Report pthread_mutex_lock() deadlocks instead of returnin...
 
1193
90111   statvfs64 gives invalid error/warning
 
1194
90128   crash+memory fault with stabs generated by gnat for a run...
 
1195
90778   VALGRIND_CHECK_DEFINED() not as documented in memcheck.h
 
1196
90834   cachegrind crashes at end of program without reporting re...
 
1197
91028   valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio...
 
1198
91162   valgrind crash while debugging drivel 1.2.1
 
1199
91199   Unimplemented function
 
1200
91325   Signal routing does not propagate the siginfo structure
 
1201
91599   Assertion `cv == ((void *)0)'
 
1202
91604   rw_lookup clears orig and sends the NULL value to rw_new
 
1203
91821   Small problems building valgrind with $top_builddir ne $t...
 
1204
91844   signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec...
 
1205
92264   UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared
 
1206
92331   per-target flags necessitate AM_PROG_CC_C_O
 
1207
92420   valgrind doesn't compile with linux 2.6.8.1/9
 
1208
92513   Valgrind 2.2.0 generates some warning messages
 
1209
92528   vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed.
 
1210
93096   unhandled ioctl 0x4B3A and 0x5601
 
1211
93117   Tool and core interface versions do not match
 
1212
93128   Can't run valgrind --tool=memcheck because of unimplement...
 
1213
93174   Valgrind can crash if passed bad args to certain syscalls
 
1214
93309   Stack frame in new thread is badly aligned
 
1215
93328   Wrong types used with sys_sigprocmask()
 
1216
93763   /usr/include/asm/msr.h is missing
 
1217
93776   valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser...
 
1218
93810   fcntl() argument checking a bit too strict
 
1219
94378   Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed.
 
1220
94429   valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3
 
1221
94645   Impossible happened: PINSRW mem
 
1222
94953   valgrind: the `impossible' happened: SIGSEGV
 
1223
95667   Valgrind does not work with any KDE app
 
1224
96243   Assertion 'res==0' failed
 
1225
96252   stage2 loader of valgrind fails to allocate memory
 
1226
96520   All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ...
 
1227
96660   ioctl CDROMREADTOCENTRY causes bogus warnings
 
1228
96747   After looping in a segfault handler, the impossible happens
 
1229
96923   Zero sized arrays crash valgrind trace back with SIGFPE
 
1230
96948   valgrind stops with assertion failure regarding mmap2
 
1231
96966   valgrind fails when application opens more than 16 sockets
 
1232
97398   valgrind: vg_libpthread.c:2667 Assertion failed
 
1233
97407   valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `...
 
1234
97427   "Warning: invalid file descriptor -1 in syscall close()" ...
 
1235
97785   missing backtrace
 
1236
97792   build in obj dir fails - autoconf / makefile cleanup
 
1237
97880   pthread_mutex_lock fails from shared library (special ker...
 
1238
97975   program aborts without ang VG messages
 
1239
98129   Failed when open and close file 230000 times using stdio
 
1240
98175   Crashes when using valgrind-2.2.0 with a program using al...
 
1241
98288   Massif broken
 
1242
98303   UNIMPLEMENTED FUNCTION pthread_condattr_setpshared
 
1243
98630   failed--compilation missing warnings.pm, fails to make he...
 
1244
98756   Cannot valgrind signal-heavy kdrive X server
 
1245
98966   valgrinding the JVM fails with a sanity check assertion
 
1246
99035   Valgrind crashes while profiling
 
1247
99142   loops with message "Signal 11 being dropped from thread 0...
 
1248
99195   threaded apps crash on thread start (using QThread::start...
 
1249
99348   Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off...
 
1250
99568   False negative due to mishandling of mprotect
 
1251
99738   valgrind memcheck crashes on program that uses sigitimer
 
1252
99923   0-sized allocations are reported as leaks
 
1253
99949   program seg faults after exit()
 
1254
100036  "newSuperblock's request for 1048576 bytes failed"
 
1255
100116  valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ...
 
1256
100486  memcheck reports "valgrind: the `impossible' happened: V...
 
1257
100833  second call to "mremap" fails with EINVAL
 
1258
101156  (vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1...
 
1259
101173  Assertion `recDepth >= 0 && recDepth < 500' failed
 
1260
101291  creating threads in a forked process fails
 
1261
101313  valgrind causes different behavior when resizing a window...
 
1262
101423  segfault for c++ array of floats
 
1263
101562  valgrind massif dies on SIGINT even with signal handler r...
 
1264
 
 
1265
 
 
1266
Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0
 
1267
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1268
2.2.0 brings nine months worth of improvements and bug fixes.  We
 
1269
believe it to be a worthy successor to 2.0.0.  There are literally
 
1270
hundreds of bug fixes and minor improvements.  There are also some
 
1271
fairly major user-visible changes:
 
1272
 
 
1273
* A complete overhaul of handling of system calls and signals, and 
 
1274
  their interaction with threads.  In general, the accuracy of the 
 
1275
  system call, thread and signal simulations is much improved:
 
1276
 
 
1277
  - Blocking system calls behave exactly as they do when running
 
1278
    natively (not on valgrind).  That is, if a syscall blocks only the
 
1279
    calling thread when running natively, than it behaves the same on
 
1280
    valgrind.  No more mysterious hangs because V doesn't know that some
 
1281
    syscall or other, should block only the calling thread.
 
1282
 
 
1283
  - Interrupted syscalls should now give more faithful results.
 
1284
 
 
1285
  - Signal contexts in signal handlers are supported.
 
1286
 
 
1287
* Improvements to NPTL support to the extent that V now works 
 
1288
  properly on NPTL-only setups.
 
1289
 
 
1290
* Greater isolation between Valgrind and the program being run, so
 
1291
  the program is less likely to inadvertently kill Valgrind by
 
1292
  doing wild writes.
 
1293
 
 
1294
* Massif: a new space profiling tool.  Try it!  It's cool, and it'll
 
1295
  tell you in detail where and when your C/C++ code is allocating heap.
 
1296
  Draws pretty .ps pictures of memory use against time.  A potentially
 
1297
  powerful tool for making sense of your program's space use.
 
1298
 
 
1299
* File descriptor leakage checks.  When enabled, Valgrind will print out
 
1300
  a list of open file descriptors on exit.
 
1301
 
 
1302
* Improved SSE2/SSE3 support.
 
1303
 
 
1304
* Time-stamped output; use --time-stamp=yes
 
1305
 
 
1306
 
 
1307
 
 
1308
Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.1.2
 
1309
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1310
2.2.0 is not much different from 2.1.2, released seven weeks ago.
 
1311
A number of bugs have been fixed, most notably #85658, which gave
 
1312
problems for quite a few people.  There have been many internal
 
1313
cleanups, but those are not user visible.
 
1314
 
 
1315
The following bugs have been fixed since 2.1.2:
 
1316
 
 
1317
85658   Assert in coregrind/vg_libpthread.c:2326 (open64) !=
 
1318
        (void*)0 failed
 
1319
        This bug was reported multiple times, and so the following
 
1320
        duplicates of it are also fixed: 87620, 85796, 85935, 86065, 
 
1321
        86919, 86988, 87917, 88156
 
1322
 
 
1323
80716   Semaphore mapping bug caused by unmap (sem_destroy)
 
1324
        (Was fixed prior to 2.1.2)
 
1325
 
 
1326
86987   semctl and shmctl syscalls family is not handled properly
 
1327
 
 
1328
86696   valgrind 2.1.2 + RH AS2.1 + librt
 
1329
 
 
1330
86730   valgrind locks up at end of run with assertion failure 
 
1331
        in __pthread_unwind
 
1332
 
 
1333
86641   memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1
 
1334
        (also fixes 74298, a duplicate of this)
 
1335
 
 
1336
85947   MMX/SSE unhandled instruction 'sfence'
 
1337
 
 
1338
84978   Wrong error "Conditional jump or move depends on
 
1339
        uninitialised value" resulting from "sbbl %reg, %reg"
 
1340
 
 
1341
86254   ssort() fails when signed int return type from comparison is 
 
1342
        too small to handle result of unsigned int subtraction
 
1343
 
 
1344
87089   memalign( 4, xxx) makes valgrind assert
 
1345
 
 
1346
86407   Add support for low-level parallel port driver ioctls.
 
1347
 
 
1348
70587   Add timestamps to Valgrind output? (wishlist)
 
1349
 
 
1350
84937   vg_libpthread.c:2505 (se_remap): Assertion `res == 0'
 
1351
        (fixed prior to 2.1.2)
 
1352
 
 
1353
86317   cannot load libSDL-1.2.so.0 using valgrind
 
1354
 
 
1355
86989   memcpy from mac_replace_strmem.c complains about
 
1356
        uninitialized pointers passed when length to copy is zero
 
1357
 
 
1358
85811   gnu pascal symbol causes segmentation fault; ok in 2.0.0
 
1359
 
 
1360
79138   writing to sbrk()'d memory causes segfault
 
1361
 
 
1362
77369   sched deadlock while signal received during pthread_join
 
1363
        and the joined thread exited
 
1364
 
 
1365
88115   In signal handler for SIGFPE,  siginfo->si_addr is wrong 
 
1366
        under Valgrind
 
1367
 
 
1368
78765   Massif crashes on app exit if FP exceptions are enabled
 
1369
 
 
1370
Additionally there are the following changes, which are not 
 
1371
connected to any bug report numbers, AFAICS:
 
1372
 
 
1373
* Fix scary bug causing mis-identification of SSE stores vs
 
1374
  loads and so causing memcheck to sometimes give nonsense results
 
1375
  on SSE code.
 
1376
 
 
1377
* Add support for the POSIX message queue system calls.
 
1378
 
 
1379
* Fix to allow 32-bit Valgrind to run on AMD64 boxes.  Note: this does
 
1380
  NOT allow Valgrind to work with 64-bit executables - only with 32-bit
 
1381
  executables on an AMD64 box.
 
1382
 
 
1383
* At configure time, only check whether linux/mii.h can be processed 
 
1384
  so that we don't generate ugly warnings by trying to compile it.
 
1385
 
 
1386
* Add support for POSIX clocks and timers.
 
1387
 
 
1388
 
 
1389
 
 
1390
Developer (cvs head) release 2.1.2 (18 July 2004)
 
1391
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1392
2.1.2 contains four months worth of bug fixes and refinements.
 
1393
Although officially a developer release, we believe it to be stable
 
1394
enough for widespread day-to-day use.  2.1.2 is pretty good, so try it
 
1395
first, although there is a chance it won't work.  If so then try 2.0.0
 
1396
and tell us what went wrong."  2.1.2 fixes a lot of problems present
 
1397
in 2.0.0 and is generally a much better product.
 
1398
 
 
1399
Relative to 2.1.1, a large number of minor problems with 2.1.1 have
 
1400
been fixed, and so if you use 2.1.1 you should try 2.1.2.  Users of
 
1401
the last stable release, 2.0.0, might also want to try this release.
 
1402
 
 
1403
The following bugs, and probably many more, have been fixed.  These
 
1404
are listed at http://bugs.kde.org.  Reporting a bug for valgrind in
 
1405
the http://bugs.kde.org is much more likely to get you a fix than
 
1406
mailing developers directly, so please continue to keep sending bugs
 
1407
there.
 
1408
 
 
1409
76869   Crashes when running any tool under Fedora Core 2 test1
 
1410
        This fixes the problem with returning from a signal handler 
 
1411
        when VDSOs are turned off in FC2.
 
1412
 
 
1413
69508   java 1.4.2 client fails with erroneous "stack size too small".
 
1414
        This fix makes more of the pthread stack attribute related 
 
1415
        functions work properly.  Java still doesn't work though.
 
1416
 
 
1417
71906   malloc alignment should be 8, not 4
 
1418
        All memory returned by malloc/new etc is now at least
 
1419
        8-byte aligned.
 
1420
 
 
1421
81970   vg_alloc_ThreadState: no free slots available
 
1422
        (closed because the workaround is simple: increase
 
1423
         VG_N_THREADS, rebuild and try again.)
 
1424
 
 
1425
78514   Conditional jump or move depends on uninitialized value(s)
 
1426
        (a slight mishanding of FP code in memcheck)
 
1427
 
 
1428
77952   pThread Support (crash) (due to initialisation-ordering probs)
 
1429
        (also 85118)
 
1430
 
 
1431
80942   Addrcheck wasn't doing overlap checking as it should.
 
1432
78048   return NULL on malloc/new etc failure, instead of asserting
 
1433
73655   operator new() override in user .so files often doesn't get picked up
 
1434
83060   Valgrind does not handle native kernel AIO
 
1435
69872   Create proper coredumps after fatal signals
 
1436
82026   failure with new glibc versions: __libc_* functions are not exported
 
1437
70344   UNIMPLEMENTED FUNCTION: tcdrain 
 
1438
81297   Cancellation of pthread_cond_wait does not require mutex
 
1439
82872   Using debug info from additional packages (wishlist)
 
1440
83025   Support for ioctls FIGETBSZ and FIBMAP
 
1441
83340   Support for ioctl HDIO_GET_IDENTITY
 
1442
79714   Support for the semtimedop system call.
 
1443
77022   Support for ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO
 
1444
82098   hp2ps ansification (wishlist)
 
1445
83573   Valgrind SIGSEGV on execve
 
1446
82999   show which cmdline option was erroneous (wishlist)
 
1447
83040   make valgrind VPATH and distcheck-clean (wishlist)
 
1448
83998   Assertion `newfd > vgPlain_max_fd' failed (see below)
 
1449
82722   Unchecked mmap in as_pad leads to mysterious failures later
 
1450
78958   memcheck seg faults while running Mozilla 
 
1451
85416   Arguments with colon (e.g. --logsocket) ignored
 
1452
 
 
1453
 
 
1454
Additionally there are the following changes, which are not 
 
1455
connected to any bug report numbers, AFAICS:
 
1456
 
 
1457
* Rearranged address space layout relative to 2.1.1, so that
 
1458
  Valgrind/tools will run out of memory later than currently in many
 
1459
  circumstances.  This is good news esp. for Calltree.  It should
 
1460
  be possible for client programs to allocate over 800MB of
 
1461
  memory when using memcheck now.
 
1462
 
 
1463
* Improved checking when laying out memory.  Should hopefully avoid
 
1464
  the random segmentation faults that 2.1.1 sometimes caused.
 
1465
 
 
1466
* Support for Fedora Core 2 and SuSE 9.1.  Improvements to NPTL
 
1467
  support to the extent that V now works properly on NPTL-only setups.
 
1468
 
 
1469
* Renamed the following options:
 
1470
  --logfile-fd  -->  --log-fd
 
1471
  --logfile     -->  --log-file
 
1472
  --logsocket   -->  --log-socket
 
1473
  to be consistent with each other and other options (esp. --input-fd).
 
1474
 
 
1475
* Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and
 
1476
  improve the checking of other interface related ioctls.
 
1477
 
 
1478
* Fix building with gcc-3.4.1.
 
1479
 
 
1480
* Remove limit on number of semaphores supported.
 
1481
 
 
1482
* Add support for syscalls: set_tid_address (258), acct (51).
 
1483
 
 
1484
* Support instruction "repne movs" -- not official but seems to occur.
 
1485
 
 
1486
* Implement an emulated soft limit for file descriptors in addition to
 
1487
  the current reserved area, which effectively acts as a hard limit. The
 
1488
  setrlimit system call now simply updates the emulated limits as best
 
1489
  as possible - the hard limit is not allowed to move at all and just
 
1490
  returns EPERM if you try and change it.  This should stop reductions
 
1491
  in the soft limit causing assertions when valgrind tries to allocate
 
1492
  descriptors from the reserved area.
 
1493
  (This actually came from bug #83998).
 
1494
 
 
1495
* Major overhaul of Cachegrind implementation.  First user-visible change
 
1496
  is that cachegrind.out files are now typically 90% smaller than they
 
1497
  used to be;  code annotation times are correspondingly much smaller.
 
1498
  Second user-visible change is that hit/miss counts for code that is
 
1499
  unloaded at run-time is no longer dumped into a single "discard" pile,
 
1500
  but accurately preserved.
 
1501
 
 
1502
* Client requests for telling valgrind about memory pools.
 
1503
 
 
1504
 
 
1505
 
 
1506
Developer (cvs head) release 2.1.1 (12 March 2004)
 
1507
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1508
2.1.1 contains some internal structural changes needed for V's
 
1509
long-term future.  These don't affect end-users.  Most notable
 
1510
user-visible changes are:
 
1511
 
 
1512
* Greater isolation between Valgrind and the program being run, so
 
1513
  the program is less likely to inadvertently kill Valgrind by
 
1514
  doing wild writes.
 
1515
 
 
1516
* Massif: a new space profiling tool.  Try it!  It's cool, and it'll
 
1517
  tell you in detail where and when your C/C++ code is allocating heap.
 
1518
  Draws pretty .ps pictures of memory use against time.  A potentially
 
1519
  powerful tool for making sense of your program's space use.
 
1520
 
 
1521
* Fixes for many bugs, including support for more SSE2/SSE3 instructions,
 
1522
  various signal/syscall things, and various problems with debug
 
1523
  info readers.
 
1524
 
 
1525
* Support for glibc-2.3.3 based systems.
 
1526
 
 
1527
We are now doing automatic overnight build-and-test runs on a variety
 
1528
of distros.  As a result, we believe 2.1.1 builds and runs on:
 
1529
Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9.
 
1530
 
 
1531
 
 
1532
The following bugs, and probably many more, have been fixed.  These
 
1533
are listed at http://bugs.kde.org.  Reporting a bug for valgrind in
 
1534
the http://bugs.kde.org is much more likely to get you a fix than
 
1535
mailing developers directly, so please continue to keep sending bugs
 
1536
there.
 
1537
 
 
1538
69616   glibc 2.3.2 w/NPTL is massively different than what valgrind expects 
 
1539
69856   I don't know how to instrument MMXish stuff (Helgrind)
 
1540
73892   valgrind segfaults starting with Objective-C debug info 
 
1541
        (fix for S-type stabs)
 
1542
73145   Valgrind complains too much about close(<reserved fd>) 
 
1543
73902   Shadow memory allocation seems to fail on RedHat 8.0 
 
1544
68633   VG_N_SEMAPHORES too low (V itself was leaking semaphores)
 
1545
75099   impossible to trace multiprocess programs 
 
1546
76839   the `impossible' happened: disInstr: INT but not 0x80 ! 
 
1547
76762   vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed. 
 
1548
76747   cannot include valgrind.h in c++ program 
 
1549
76223   parsing B(3,10) gave NULL type => impossible happens 
 
1550
75604   shmdt handling problem 
 
1551
76416   Problems with gcc 3.4 snap 20040225 
 
1552
75614   using -gstabs when building your programs the `impossible' happened
 
1553
75787   Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET,
 
1554
75294   gcc 3.4 snapshot's libstdc++ have unsupported instructions. 
 
1555
        (REP RET)
 
1556
73326   vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed. 
 
1557
72596   not recognizing __libc_malloc 
 
1558
69489   Would like to attach ddd to running program 
 
1559
72781   Cachegrind crashes with kde programs 
 
1560
73055   Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes)
 
1561
73026   Descriptor leak check reports port numbers wrongly 
 
1562
71705   README_MISSING_SYSCALL_OR_IOCTL out of date 
 
1563
72643   Improve support for SSE/SSE2 instructions 
 
1564
72484   valgrind leaves it's own signal mask in place when execing 
 
1565
72650   Signal Handling always seems to restart system calls 
 
1566
72006   The mmap system call turns all errors in ENOMEM 
 
1567
71781   gdb attach is pretty useless 
 
1568
71180   unhandled instruction bytes: 0xF 0xAE 0x85 0xE8 
 
1569
69886   writes to zero page cause valgrind to assert on exit 
 
1570
71791   crash when valgrinding gimp 1.3 (stabs reader problem)
 
1571
69783   unhandled syscall: 218 
 
1572
69782   unhandled instruction bytes: 0x66 0xF 0x2B 0x80 
 
1573
70385   valgrind fails if the soft file descriptor limit is less 
 
1574
        than about 828
 
1575
69529   "rep; nop" should do a yield 
 
1576
70827   programs with lots of shared libraries report "mmap failed" 
 
1577
        for some of them when reading symbols 
 
1578
71028   glibc's strnlen is optimised enough to confuse valgrind 
 
1579
 
 
1580
 
 
1581
 
 
1582
 
 
1583
Unstable (cvs head) release 2.1.0 (15 December 2003)
 
1584
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1585
For whatever it's worth, 2.1.0 actually seems pretty darn stable to me
 
1586
(Julian).  It looks eminently usable, and given that it fixes some
 
1587
significant bugs, may well be worth using on a day-to-day basis.
 
1588
2.1.0 is known to build and pass regression tests on: SuSE 9, SuSE
 
1589
8.2, RedHat 8.
 
1590
 
 
1591
2.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of
 
1592
handling of system calls and signals, and their interaction with
 
1593
threads.  In general, the accuracy of the system call, thread and
 
1594
signal simulations is much improved.  Specifically:
 
1595
 
 
1596
- Blocking system calls behave exactly as they do when running
 
1597
  natively (not on valgrind).  That is, if a syscall blocks only the
 
1598
  calling thread when running natively, than it behaves the same on
 
1599
  valgrind.  No more mysterious hangs because V doesn't know that some
 
1600
  syscall or other, should block only the calling thread.
 
1601
 
 
1602
- Interrupted syscalls should now give more faithful results.
 
1603
 
 
1604
- Finally, signal contexts in signal handlers are supported.  As a
 
1605
  result, konqueror on SuSE 9 no longer segfaults when notified of
 
1606
  file changes in directories it is watching.
 
1607
 
 
1608
Other changes:
 
1609
 
 
1610
- Robert Walsh's file descriptor leakage checks.  When enabled,
 
1611
  Valgrind will print out a list of open file descriptors on
 
1612
  exit.  Along with each file descriptor, Valgrind prints out a stack
 
1613
  backtrace of where the file was opened and any details relating to the
 
1614
  file descriptor such as the file name or socket details.
 
1615
  To use, give: --track-fds=yes
 
1616
 
 
1617
- Implemented a few more SSE/SSE2 instructions.
 
1618
 
 
1619
- Less crud on the stack when you do 'where' inside a GDB attach.
 
1620
 
 
1621
- Fixed the following bugs:
 
1622
  68360: Valgrind does not compile against 2.6.0-testX kernels
 
1623
  68525: CVS head doesn't compile on C90 compilers
 
1624
  68566: pkgconfig support (wishlist)
 
1625
  68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr)
 
1626
  69140: valgrind not able to explicitly specify a path to a binary. 
 
1627
  69432: helgrind asserts encountering a MutexErr when there are 
 
1628
         EraserErr suppressions
 
1629
 
 
1630
- Increase the max size of the translation cache from 200k average bbs
 
1631
  to 300k average bbs.  Programs on the size of OOo (680m17) are
 
1632
  thrashing the cache at the smaller size, creating large numbers of
 
1633
  retranslations and wasting significant time as a result.
 
1634
 
 
1635
 
 
1636
 
 
1637
Stable release 2.0.0 (5 Nov 2003)
 
1638
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1639
 
 
1640
2.0.0 improves SSE/SSE2 support, fixes some minor bugs, and
 
1641
improves support for SuSE 9 and the Red Hat "Severn" beta.
 
1642
 
 
1643
- Further improvements to SSE/SSE2 support.  The entire test suite of
 
1644
  the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1
 
1645
  20030307Z '-g -O -xW' now works.  I think this gives pretty good
 
1646
  coverage of SSE/SSE2 floating point instructions, or at least the
 
1647
  subset emitted by Icc.
 
1648
 
 
1649
- Also added support for the following instructions:
 
1650
    MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS
 
1651
    PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS).
 
1652
 
 
1653
- CFI support for GDB version 6.  Needed to enable newer GDBs
 
1654
  to figure out where they are when using --gdb-attach=yes.
 
1655
 
 
1656
- Fix this:
 
1657
      mc_translate.c:1091 (memcheck_instrument): Assertion
 
1658
      `u_in->size == 4 || u_in->size == 16' failed.
 
1659
 
 
1660
- Return an error rather than panicing when given a bad socketcall.
 
1661
 
 
1662
- Fix checking of syscall rt_sigtimedwait().
 
1663
 
 
1664
- Implement __NR_clock_gettime (syscall 265).  Needed on Red Hat Severn.
 
1665
 
 
1666
- Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n'
 
1667
  bytes long, when it could be shorter, which could cause false
 
1668
  positives.
 
1669
 
 
1670
- Support use of select() for very large numbers of file descriptors.
 
1671
 
 
1672
- Don't fail silently if the executable is statically linked, or is
 
1673
  setuid/setgid. Print an error message instead.
 
1674
 
 
1675
- Support for old DWARF-1 format line number info.
 
1676
 
 
1677
 
 
1678
 
 
1679
Snapshot 20031012 (12 October 2003)
 
1680
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1681
 
 
1682
Three months worth of bug fixes, roughly.  Most significant single
 
1683
change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
 
1684
 
 
1685
20031012 builds on Red Hat Fedora ("Severn") but doesn't really work
 
1686
(curiously, mozilla runs OK, but a modest "ls -l" bombs).  I hope to
 
1687
get a working version out soon.  It may or may not work ok on the
 
1688
forthcoming SuSE 9; I hear positive noises about it but haven't been
 
1689
able to verify this myself (not until I get hold of a copy of 9).
 
1690
 
 
1691
A detailed list of changes, in no particular order:
 
1692
 
 
1693
- Describe --gen-suppressions in the FAQ.
 
1694
 
 
1695
- Syscall __NR_waitpid supported.
 
1696
 
 
1697
- Minor MMX bug fix.
 
1698
 
 
1699
- -v prints program's argv[] at startup.
 
1700
 
 
1701
- More glibc-2.3 suppressions.
 
1702
 
 
1703
- Suppressions for stack underrun bug(s) in the c++ support library
 
1704
  distributed with Intel Icc 7.0.
 
1705
 
 
1706
- Fix problems reading /proc/self/maps.
 
1707
 
 
1708
- Fix a couple of messages that should have been suppressed by -q, 
 
1709
  but weren't.
 
1710
 
 
1711
- Make Addrcheck understand "Overlap" suppressions.
 
1712
 
 
1713
- At startup, check if program is statically linked and bail out if so.
 
1714
 
 
1715
- Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
 
1716
 
 
1717
- Memcheck/addrcheck: minor speed optimisations
 
1718
 
 
1719
- Handle syscall __NR_brk more correctly than before.
 
1720
 
 
1721
- Fixed incorrect allocate/free mismatch errors when using
 
1722
  operator new(unsigned, std::nothrow_t const&)
 
1723
  operator new[](unsigned, std::nothrow_t const&)
 
1724
 
 
1725
- Support POSIX pthread spinlocks.
 
1726
 
 
1727
- Fixups for clean compilation with gcc-3.3.1.
 
1728
 
 
1729
- Implemented more opcodes: 
 
1730
    - push %es
 
1731
    - push %ds
 
1732
    - pop %es
 
1733
    - pop %ds
 
1734
    - movntq
 
1735
    - sfence
 
1736
    - pshufw
 
1737
    - pavgb
 
1738
    - ucomiss
 
1739
    - enter
 
1740
    - mov imm32, %esp
 
1741
    - all "in" and "out" opcodes
 
1742
    - inc/dec %esp
 
1743
    - A whole bunch of SSE/SSE2 instructions
 
1744
 
 
1745
- Memcheck: don't bomb on SSE/SSE2 code.
 
1746
 
 
1747
 
 
1748
Snapshot 20030725 (25 July 2003)
 
1749
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1750
 
 
1751
Fixes some minor problems in 20030716.
 
1752
 
 
1753
- Fix bugs in overlap checking for strcpy/memcpy etc.
 
1754
 
 
1755
- Do overlap checking with Addrcheck as well as Memcheck.
 
1756
 
 
1757
- Fix this:
 
1758
      Memcheck: the `impossible' happened:
 
1759
      get_error_name: unexpected type
 
1760
 
 
1761
- Install headers needed to compile new skins.
 
1762
 
 
1763
- Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD
 
1764
  passed to non-traced children.
 
1765
 
 
1766
- Fix file descriptor leak in valgrind-listener.
 
1767
 
 
1768
- Fix longstanding bug in which the allocation point of a 
 
1769
  block resized by realloc was not correctly set.  This may
 
1770
  have caused confusing error messages.
 
1771
 
 
1772
 
 
1773
Snapshot 20030716 (16 July 2003)
 
1774
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1775
 
 
1776
20030716 is a snapshot of our current CVS head (development) branch.
 
1777
This is the branch which will become valgrind-2.0.  It contains
 
1778
significant enhancements over the 1.9.X branch.
 
1779
 
 
1780
Despite this being a snapshot of the CVS head, it is believed to be
 
1781
quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so
 
1782
-- and therefore suitable for widespread use.  Please let us know asap
 
1783
if it causes problems for you.
 
1784
 
 
1785
Two reasons for releasing a snapshot now are:
 
1786
 
 
1787
- It's been a while since 1.9.6, and this snapshot fixes
 
1788
  various problems that 1.9.6 has with threaded programs 
 
1789
  on glibc-2.3.X based systems.
 
1790
 
 
1791
- So as to make available improvements in the 2.0 line.
 
1792
 
 
1793
Major changes in 20030716, as compared to 1.9.6:
 
1794
 
 
1795
- More fixes to threading support on glibc-2.3.1 and 2.3.2-based
 
1796
  systems (SuSE 8.2, Red Hat 9).  If you have had problems
 
1797
  with inconsistent/illogical behaviour of errno, h_errno or the DNS
 
1798
  resolver functions in threaded programs, 20030716 should improve
 
1799
  matters.  This snapshot seems stable enough to run OpenOffice.org
 
1800
  1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big
 
1801
  threaded app if ever I saw one.
 
1802
 
 
1803
- Automatic generation of suppression records; you no longer
 
1804
  need to write them by hand.  Use --gen-suppressions=yes.
 
1805
 
 
1806
- strcpy/memcpy/etc check their arguments for overlaps, when
 
1807
  running with the Memcheck or Addrcheck skins.
 
1808
 
 
1809
- malloc_usable_size() is now supported.
 
1810
 
 
1811
- new client requests:
 
1812
    - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS: 
 
1813
      useful with regression testing
 
1814
    - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions 
 
1815
      on real CPU (use with caution!)
 
1816
 
 
1817
- The GDB attach mechanism is more flexible.  Allow the GDB to
 
1818
  be run to be specified by --gdb-path=/path/to/gdb, and specify
 
1819
  which file descriptor V will read its input from with
 
1820
  --input-fd=<number>.
 
1821
 
 
1822
- Cachegrind gives more accurate results (wasn't tracking instructions in
 
1823
  malloc() and friends previously, is now).
 
1824
 
 
1825
- Complete support for the MMX instruction set.
 
1826
 
 
1827
- Partial support for the SSE and SSE2 instruction sets.  Work for this
 
1828
  is ongoing.  About half the SSE/SSE2 instructions are done, so
 
1829
  some SSE based programs may work.  Currently you need to specify
 
1830
  --skin=addrcheck.  Basically not suitable for real use yet.
 
1831
 
 
1832
- Significant speedups (10%-20%) for standard memory checking.
 
1833
 
 
1834
- Fix assertion failure in pthread_once().
 
1835
 
 
1836
- Fix this:
 
1837
    valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select): 
 
1838
              Assertion `ms_end >= ms_now' failed.
 
1839
 
 
1840
- Implement pthread_mutexattr_setpshared.
 
1841
 
 
1842
- Understand Pentium 4 branch hints.  Also implemented a couple more
 
1843
  obscure x86 instructions.
 
1844
 
 
1845
- Lots of other minor bug fixes.
 
1846
 
 
1847
- We have a decent regression test system, for the first time.
 
1848
  This doesn't help you directly, but it does make it a lot easier
 
1849
  for us to track the quality of the system, especially across
 
1850
  multiple linux distributions.  
 
1851
 
 
1852
  You can run the regression tests with 'make regtest' after 'make
 
1853
  install' completes.  On SuSE 8.2 and Red Hat 9 I get this:
 
1854
 
 
1855
     == 84 tests, 0 stderr failures, 0 stdout failures ==
 
1856
 
 
1857
  On Red Hat 8, I get this:
 
1858
 
 
1859
     == 84 tests, 2 stderr failures, 1 stdout failure ==
 
1860
     corecheck/tests/res_search               (stdout)
 
1861
     memcheck/tests/sigaltstack               (stderr)
 
1862
 
 
1863
  sigaltstack is probably harmless.  res_search doesn't work
 
1864
  on R H 8 even running natively, so I'm not too worried.   
 
1865
 
 
1866
  On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures:
 
1867
 
 
1868
     == 84 tests, 2 stderr failures, 1 stdout failure ==
 
1869
     corecheck/tests/pth_atfork1              (stdout)
 
1870
     corecheck/tests/pth_atfork1              (stderr)
 
1871
     memcheck/tests/sigaltstack               (stderr)
 
1872
 
 
1873
  You need to run on a PII system, at least, since some tests
 
1874
  contain P6-specific instructions, and the test machine needs
 
1875
  access to the internet so that corecheck/tests/res_search
 
1876
  (a test that the DNS resolver works) can function.
 
1877
 
 
1878
As ever, thanks for the vast amount of feedback :) and bug reports :(
 
1879
We may not answer all messages, but we do at least look at all of
 
1880
them, and tend to fix the most frequently reported bugs.
 
1881
 
 
1882
 
 
1883
 
 
1884
Version 1.9.6 (7 May 2003 or thereabouts)
 
1885
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1886
 
 
1887
Major changes in 1.9.6:
 
1888
 
 
1889
- Improved threading support for glibc >= 2.3.2 (SuSE 8.2,
 
1890
  RedHat 9, to name but two ...)  It turned out that 1.9.5
 
1891
  had problems with threading support on glibc >= 2.3.2,
 
1892
  usually manifested by threaded programs deadlocking in system calls,
 
1893
  or running unbelievably slowly.  Hopefully these are fixed now.  1.9.6
 
1894
  is the first valgrind which gives reasonable support for
 
1895
  glibc-2.3.2.  Also fixed a 2.3.2 problem with pthread_atfork().
 
1896
 
 
1897
- Majorly expanded FAQ.txt.  We've added workarounds for all
 
1898
  common problems for which a workaround is known.
 
1899
 
 
1900
Minor changes in 1.9.6:
 
1901
 
 
1902
- Fix identification of the main thread's stack.  Incorrect
 
1903
  identification of it was causing some on-stack addresses to not get
 
1904
  identified as such.  This only affected the usefulness of some error
 
1905
  messages; the correctness of the checks made is unchanged.
 
1906
 
 
1907
- Support for kernels >= 2.5.68.
 
1908
 
 
1909
- Dummy implementations of __libc_current_sigrtmin, 
 
1910
  __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully
 
1911
  good enough to keep alive programs which previously died for lack of
 
1912
  them.
 
1913
 
 
1914
- Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request.
 
1915
 
 
1916
- Fix bug in the DWARF2 debug line info loader, when instructions 
 
1917
  following each other have source lines far from each other 
 
1918
  (e.g. with inlined functions).
 
1919
 
 
1920
- Debug info reading: read symbols from both "symtab" and "dynsym"
 
1921
  sections, rather than merely from the one that comes last in the
 
1922
  file.
 
1923
 
 
1924
- New syscall support: prctl(), creat(), lookup_dcookie().
 
1925
 
 
1926
- When checking calls to accept(), recvfrom(), getsocketopt(),
 
1927
  don't complain if buffer values are NULL.
 
1928
 
 
1929
- Try and avoid assertion failures in
 
1930
  mash_LD_PRELOAD_and_LD_LIBRARY_PATH.
 
1931
 
 
1932
- Minor bug fixes in cg_annotate.
 
1933
 
 
1934
 
 
1935
 
 
1936
Version 1.9.5 (7 April 2003)
 
1937
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
1938
 
 
1939
It occurs to me that it would be helpful for valgrind users to record
 
1940
in the source distribution the changes in each release.  So I now
 
1941
attempt to mend my errant ways :-)  Changes in this and future releases
 
1942
will be documented in the NEWS file in the source distribution.
 
1943
 
 
1944
Major changes in 1.9.5:
 
1945
 
 
1946
- (Critical bug fix): Fix a bug in the FPU simulation.  This was
 
1947
  causing some floating point conditional tests not to work right.
 
1948
  Several people reported this.  If you had floating point code which
 
1949
  didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5.
 
1950
 
 
1951
- Partial support for Red Hat 9.  RH9 uses the new Native Posix 
 
1952
  Threads Library (NPTL), instead of the older LinuxThreads.  
 
1953
  This potentially causes problems with V which will take some
 
1954
  time to correct.  In the meantime we have partially worked around
 
1955
  this, and so 1.9.5 works on RH9.  Threaded programs still work,
 
1956
  but they may deadlock, because some system calls (accept, read,
 
1957
  write, etc) which should be nonblocking, in fact do block.  This
 
1958
  is a known bug which we are looking into.
 
1959
 
 
1960
  If you can, your best bet (unfortunately) is to avoid using 
 
1961
  1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution.
 
1962
  If your glibc is 2.3.1 or earlier, you're almost certainly OK.
 
1963
 
 
1964
Minor changes in 1.9.5:
 
1965
 
 
1966
- Added some #errors to valgrind.h to ensure people don't include
 
1967
  it accidentally in their sources.  This is a change from 1.0.X
 
1968
  which was never properly documented.  The right thing to include
 
1969
  is now memcheck.h.  Some people reported problems and strange
 
1970
  behaviour when (incorrectly) including valgrind.h in code with 
 
1971
  1.9.1 -- 1.9.4.  This is no longer possible.
 
1972
 
 
1973
- Add some __extension__ bits and pieces so that gcc configured
 
1974
  for valgrind-checking compiles even with -Werror.  If you
 
1975
  don't understand this, ignore it.  Of interest to gcc developers
 
1976
  only.
 
1977
 
 
1978
- Removed a pointless check which caused problems interworking 
 
1979
  with Clearcase.  V would complain about shared objects whose
 
1980
  names did not end ".so", and refuse to run.  This is now fixed.
 
1981
  In fact it was fixed in 1.9.4 but not documented.
 
1982
 
 
1983
- Fixed a bug causing an assertion failure of "waiters == 1"
 
1984
  somewhere in vg_scheduler.c, when running large threaded apps,
 
1985
  notably MySQL.
 
1986
 
 
1987
- Add support for the munlock system call (124).
 
1988
 
 
1989
Some comments about future releases:
 
1990
 
 
1991
1.9.5 is, we hope, the most stable Valgrind so far.  It pretty much
 
1992
supersedes the 1.0.X branch.  If you are a valgrind packager, please
 
1993
consider making 1.9.5 available to your users.  You can regard the
 
1994
1.0.X branch as obsolete: 1.9.5 is stable and vastly superior.  There
 
1995
are no plans at all for further releases of the 1.0.X branch.
 
1996
 
 
1997
If you want a leading-edge valgrind, consider building the cvs head
 
1998
(from SourceForge), or getting a snapshot of it.  Current cool stuff
 
1999
going in includes MMX support (done); SSE/SSE2 support (in progress),
 
2000
a significant (10-20%) performance improvement (done), and the usual
 
2001
large collection of minor changes.  Hopefully we will be able to
 
2002
improve our NPTL support, but no promises.
 
2003