blob: de02d2c6cbddc9703fd389100a3755eff115824e [file] [log] [blame]
philippea501f122013-12-01 12:42:30 +00001Release 3.10.0 (?? ?????? 201?)
2~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
33.10.0 is not yet released.
4
5* ================== PLATFORM CHANGES =================
6
petarjcc4a0042014-01-17 17:41:16 +00007* Support for Android on MIPS32.
bartb1b01822013-12-01 12:59:32 +00008
philippea501f122013-12-01 12:42:30 +00009* ==================== TOOL CHANGES ====================
10
11* Helgrind:
12
philippecffe2a52014-01-11 13:56:48 +000013* Callgrind:
14 - callgrind_control now supports the --vgdb-prefix argument,
15 which is needed if valgrind was started with this same argument.
16
philippea501f122013-12-01 12:42:30 +000017* ==================== OTHER CHANGES ====================
18
philippe8587b542013-12-15 20:24:43 +000019* New and modified GDB server monitor features:
20
philippebcff2cc2013-12-16 22:52:20 +000021 - A new monitor command "v.info stats" that shows various valgrind core and
22 tool statistics.
philippe8587b542013-12-15 20:24:43 +000023
philippea501f122013-12-01 12:42:30 +000024* ==================== FIXED BUGS ====================
25
26The following bugs have been fixed or resolved. Note that "n-i-bz"
27stands for "not in bugzilla" -- that is, a bug that was reported to us
28but never got a bugzilla entry. We encourage you to file bugs in
29bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather
30than mailing the developers (or mailing lists) directly -- bugs that
31are not entered into bugzilla tend to get forgotten about or ignored.
32
33To see details of a given bug, visit
34 https://bugs.kde.org/show_bug.cgi?id=XXXXXX
35where XXXXXX is the bug number as listed below.
36
tomaa229f32014-02-09 11:41:25 +000037308729 vex x86->IR: unhandled instruction bytes 0xf 0x5 (syscall)
philippebcff2cc2013-12-16 22:52:20 +000038325714 Empty vgcore but RLIMIT_CORE is big enough (too big)
philippe3c761f02013-12-01 14:56:28 +000039326462 Refactor vgdb to isolate invoker stuff into separate module
philippe7553cde2013-12-01 12:52:00 +000040326983 Clear direction flag after tests on amd64.
41327238 Callgrind Assertion 'passed <= last_bb->cjmp_count' failed
florianfeb533c2013-12-21 17:59:50 +000042327284 s390x: Fix translation of the risbg instruction
philippe7553cde2013-12-01 12:52:00 +000043327837 dwz compressed alternate .debug_info and .debug_str not read correctly
44327916 DW_TAG_typedef may have no name
mjw7cd88482013-12-10 09:14:52 +000045328100 XABORT not implemented
philippe6d9e4232013-12-01 14:51:21 +000046328205 Implement additional Xen hypercalls
floriana9c40a32013-12-10 16:53:59 +000047328455 s390x: SIGILL after emitting wrong register pair for ldxbr
mjw4229cbd2013-12-12 21:20:48 +000048328711 valgrind.1 manpage "memcheck options" section is badly generated
tom3d241352014-01-07 22:27:57 +000049329612 Incorrect handling of AT_BASE for image execution
tom4f5be8c2014-01-30 21:47:30 +000050330459 --track-fds=yes doesn't track eventfds
tomddc4a182014-01-30 22:33:02 +000051330469 Add clock_adjtime syscall support
tomaa229f32014-02-09 11:41:25 +000052330939 Support for AMD's syscall instruction on x86
tom68f338f2014-02-09 11:10:08 +000053330941 Typo in PRE(poll) syscall wrapper
cborntra4ea8f142014-02-11 15:15:31 +000054n-i-bz Fix KVM_CREATE_IRQCHIP ioctl handling
sewardj4c7254d2013-11-29 23:08:28 +000055
56Release 3.9.0 (31 October 2013)
57~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
583.9.0 is a feature release with many improvements and the usual
59collection of bug fixes.
60
61This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux,
62PPC64/Linux, S390X/Linux, MIPS32/Linux, MIPS64/Linux, ARM/Android,
63X86/Android, X86/MacOSX 10.7 and AMD64/MacOSX 10.7. Support for
64MacOSX 10.8 is significantly improved relative to the 3.8.0 release.
philippe2d75ea22012-08-16 19:40:52 +000065
66* ================== PLATFORM CHANGES =================
67
sewardj4c7254d2013-11-29 23:08:28 +000068* Support for MIPS64 LE and BE running Linux. Valgrind has been
69 tested on MIPS64 Debian Squeeze and Debian Wheezy distributions.
petarj817232e2013-10-19 02:24:11 +000070
71* Support for MIPS DSP ASE on MIPS32 platforms.
sewardj6fd919d2013-03-04 11:27:25 +000072
sewardj4c7254d2013-11-29 23:08:28 +000073* Support for s390x Decimal Floating Point instructions on hosts that
florian0acaac32013-07-28 16:19:34 +000074 have the DFP facility installed.
75
sewardj4c7254d2013-11-29 23:08:28 +000076* Support for POWER8 (Power ISA 2.07) instructions
sewardjbf267d42013-10-18 15:13:12 +000077
sewardj4c7254d2013-11-29 23:08:28 +000078* Support for Intel AVX2 instructions. This is available only on 64
79 bit code.
sewardjbf267d42013-10-18 15:13:12 +000080
sewardj4c7254d2013-11-29 23:08:28 +000081* Initial support for Intel Transactional Synchronization Extensions,
82 both RTM and HLE.
83
84* Initial support for Hardware Transactional Memory on POWER.
85
86* Improved support for MacOSX 10.8 (64-bit only). Memcheck can now
87 run large GUI apps tolerably well.
sewardjbf267d42013-10-18 15:13:12 +000088
philippe2d75ea22012-08-16 19:40:52 +000089* ==================== TOOL CHANGES ====================
sewardj4c7254d2013-11-29 23:08:28 +000090
philippe2193a7c2012-12-08 17:54:16 +000091* Memcheck:
92
sewardj4c7254d2013-11-29 23:08:28 +000093 - Improvements in handling of vectorised code, leading to
94 significantly fewer false error reports. You need to use the flag
95 --partial-loads-ok=yes to get the benefits of these changes.
philippe2d75ea22012-08-16 19:40:52 +000096
sewardj4c7254d2013-11-29 23:08:28 +000097 - Better control over the leak checker. It is now possible to
98 specify which leak kinds (definite/indirect/possible/reachable)
99 should be displayed, which should be regarded as errors, and which
100 should be suppressed by a given leak suppression. This is done
101 using the options --show-leak-kinds=kind1,kind2,..,
102 --errors-for-leak-kinds=kind1,kind2,.. and an optional
103 "match-leak-kinds:" line in suppression entries, respectively.
philippeab1fce92013-09-29 13:47:32 +0000104
sewardj4c7254d2013-11-29 23:08:28 +0000105 Note that generated leak suppressions contain this new line and
106 are therefore more specific than in previous releases. To get the
107 same behaviour as previous releases, remove the "match-leak-kinds:"
108 line from generated suppressions before using them.
philippe8617b5b2013-01-12 19:53:08 +0000109
sewardj4c7254d2013-11-29 23:08:28 +0000110 - Reduced "possible leak" reports from the leak checker by the use
111 of better heuristics. The available heuristics provide detection
112 of valid interior pointers to std::stdstring, to new[] allocated
113 arrays with elements having destructors and to interior pointers
114 pointing to an inner part of a C++ object using multiple
115 inheritance. They can be selected individually using the
116 option --leak-check-heuristics=heur1,heur2,...
117
118 - Better control of stacktrace acquisition for heap-allocated
119 blocks. Using the --keep-stacktraces option, it is possible to
120 control independently whether a stack trace is acquired for each
121 allocation and deallocation. This can be used to create better
122 "use after free" errors or to decrease Valgrind's resource
123 consumption by recording less information.
124
125 - Better reporting of leak suppression usage. The list of used
126 suppressions (shown when the -v option is given) now shows, for
127 each leak suppressions, how many blocks and bytes it suppressed
128 during the last leak search.
129
130* Helgrind:
131
132 - False errors resulting from the use of statically initialised
133 mutexes and condition variables (PTHREAD_MUTEX_INITIALISER, etc)
134 have been removed.
135
136 - False errors resulting from the use of pthread_cond_waits that
137 timeout, have been removed.
philippe4e32d672013-10-17 22:10:41 +0000138
philippe2d75ea22012-08-16 19:40:52 +0000139* ==================== OTHER CHANGES ====================
140
sewardj4c7254d2013-11-29 23:08:28 +0000141* Some attempt to tune Valgrind's space requirements to the expected
142 capabilities of the target:
philippe8e1bee42013-10-18 00:08:20 +0000143
sewardj4c7254d2013-11-29 23:08:28 +0000144 - The default size of the translation cache has been reduced from 8
145 sectors to 6 on Android platforms, since each sector occupies
146 about 40MB when using Memcheck.
philippe46207652013-01-20 17:11:58 +0000147
sewardj4c7254d2013-11-29 23:08:28 +0000148 - The default size of the translation cache has been increased to 16
149 sectors on all other platforms, reflecting the fact that large
150 applications require instrumentation and storage of huge amounts
151 of code. For similar reasons, the number of memory mapped
152 segments that can be tracked has been increased by a factor of 6.
philippe46207652013-01-20 17:11:58 +0000153
sewardj4c7254d2013-11-29 23:08:28 +0000154 - In all cases, the maximum number of sectors in the translation
155 cache can be controlled by the new flag --num-transtab-sectors.
philippe6ec8d632013-01-23 22:10:28 +0000156
sewardj4c7254d2013-11-29 23:08:28 +0000157* Changes in how debug info (line numbers, etc) is read:
philippe02ea4132013-09-04 21:42:43 +0000158
sewardj4c7254d2013-11-29 23:08:28 +0000159 - Valgrind no longer temporarily mmaps the entire object to read
160 from it. Instead, reading is done through a small fixed sized
161 buffer. This avoids virtual memory usage spikes when Valgrind
162 reads debuginfo from large shared objects.
philippe6ec8d632013-01-23 22:10:28 +0000163
sewardj4c7254d2013-11-29 23:08:28 +0000164 - A new experimental remote debug info server. Valgrind can read
165 debug info from a different machine (typically, a build host)
166 where debuginfo objects are stored. This can save a lot of time
167 and hassle when running Valgrind on resource-constrained targets
168 (phones, tablets) when the full debuginfo objects are stored
169 somewhere else. This is enabled by the --debuginfo-server=
170 option.
philippe6ec8d632013-01-23 22:10:28 +0000171
sewardj4c7254d2013-11-29 23:08:28 +0000172 - Consistency checking between main and debug objects can be
173 disabled using the --allow-mismatched-debuginfo option.
philippe4e32d672013-10-17 22:10:41 +0000174
sewardj4c7254d2013-11-29 23:08:28 +0000175* Stack unwinding by stack scanning, on ARM. Unwinding by stack
176 scanning can recover stack traces in some cases when the normal
177 unwind mechanisms fail. Stack scanning is best described as "a
178 nasty, dangerous and misleading hack" and so is disabled by default.
179 Use --unw-stack-scan-thresh and --unw-stack-scan-frames to enable
180 and control it.
sewardj82792172013-09-19 23:04:03 +0000181
sewardj4c7254d2013-11-29 23:08:28 +0000182* Detection and merging of recursive stack frame cycles. When your
183 program has recursive algorithms, this limits the memory used by
184 Valgrind for recorded stack traces and avoids recording
185 uninteresting repeated calls. This is controlled by the command
186 line option --merge-recursive-frame and by the monitor command
187 "v.set merge-recursive-frames".
sewardj82792172013-09-19 23:04:03 +0000188
sewardj4c7254d2013-11-29 23:08:28 +0000189* File name and line numbers for used suppressions. The list of used
190 suppressions (shown when the -v option is given) now shows, for each
191 used suppression, the file name and line number where the suppression
192 is defined.
sewardj82792172013-09-19 23:04:03 +0000193
sewardj4c7254d2013-11-29 23:08:28 +0000194* New and modified GDB server monitor features:
sewardj82792172013-09-19 23:04:03 +0000195
sewardj4c7254d2013-11-29 23:08:28 +0000196 - valgrind.h has a new client request, VALGRIND_MONITOR_COMMAND,
197 that can be used to execute gdbserver monitor commands from the
198 client program.
199
200 - A new monitor command, "v.info open_fds", that gives the list of
201 open file descriptors and additional details.
202
203 - An optional message in the "v.info n_errs_found" monitor command,
204 for example "v.info n_errs_found test 1234 finished", allowing a
205 comment string to be added to the process output, perhaps for the
206 purpose of separating errors of different tests or test phases.
207
208 - A new monitor command "v.info execontext" that shows information
209 about the stack traces recorded by Valgrind.
210
211 - A new monitor command "v.do expensive_sanity_check_general" to run
212 some internal consistency checks.
213
214* New flag --sigill-diagnostics to control whether a diagnostic
215 message is printed when the JIT encounters an instruction it can't
216 translate. The actual behavior -- delivery of SIGILL to the
217 application -- is unchanged.
218
219* The maximum amount of memory that Valgrind can use on 64 bit targets
220 has been increased from 32GB to 64GB. This should make it possible
221 to run applications on Memcheck that natively require up to about 35GB.
sewardj82792172013-09-19 23:04:03 +0000222
philippe2d75ea22012-08-16 19:40:52 +0000223* ==================== FIXED BUGS ====================
224
225The following bugs have been fixed or resolved. Note that "n-i-bz"
226stands for "not in bugzilla" -- that is, a bug that was reported to us
227but never got a bugzilla entry. We encourage you to file bugs in
228bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather
229than mailing the developers (or mailing lists) directly -- bugs that
230are not entered into bugzilla tend to get forgotten about or ignored.
231
232To see details of a given bug, visit
233 https://bugs.kde.org/show_bug.cgi?id=XXXXXX
234where XXXXXX is the bug number as listed below.
235
sewardj4c7254d2013-11-29 23:08:28 +0000236123837 system call: 4th argument is optional, depending on cmd
sewardjdae2cd62013-04-02 08:24:48 +0000237135425 memcheck should tell you where Freed blocks were Mallocd
sewardj146a4352013-09-29 09:59:50 +0000238164485 VG_N_SEGNAMES and VG_N_SEGMENTS are (still) too small
sewardj4c7254d2013-11-29 23:08:28 +0000239207815 Adds some of the drm ioctls to syswrap-linux.c
240251569 vex amd64->IR: 0xF 0x1 0xF9 0xBF 0x90 0xD0 0x3 0x0 (RDTSCP)
241252955 Impossible to compile with ccache
242253519 Memcheck reports auxv pointer accesses as invalid reads.
243263034 Crash when loading some PPC64 binaries
244269599 Increase deepest backtrace
245274695 s390x: Support "compare to/from logical" instructions (z196)
246275800 s390x: Autodetect cache info (part 2)
247280271 Valgrind reports possible memory leaks on still-reachable std::string
248284540 Memcheck shouldn't count suppressions matching still-reachable [..]
sewardjbf267d42013-10-18 15:13:12 +0000249289578 Backtraces with ARM unwind tables (stack scan flags)
sewardj4c7254d2013-11-29 23:08:28 +0000250296311 Wrong stack traces due to -fomit-frame-pointer (x86)
251304832 ppc32: build failure
252305431 Use find_buildid shdr fallback for separate .debug files
253305728 Add support for AVX2 instructions
254305948 ppc64: code generation for ShlD64 / ShrD64 asserts
255306035 s390x: Fix IR generation for LAAG and friends
256306054 s390x: Condition code computation for convert-to-int/logical
257306098 s390x: alternate opcode form for convert to/from fixed
258306587 Fix cache line detection from auxiliary vector for PPC.
259306783 Mips unhandled syscall : 4025 / 4079 / 4182
260307038 DWARF2 CFI reader: unhandled DW_OP_ opcode 0x8 (DW_OP_const1u et al)
261307082 HG false positive: pthread_cond_destroy: destruction of unknown CV
262307101 sys_capget second argument can be NULL
263307103 sys_openat: If pathname is absolute, then dirfd is ignored.
264307106 amd64->IR: f0 0f c0 02 (lock xadd byte)
265307113 s390x: DFP support
266307141 valgrind does't work in mips-linux system
267307155 filter_gdb should filter out syscall-template.S T_PSEUDO
268307285 x86_amd64 feature test for avx in test suite is wrong
269307290 memcheck overlap testcase needs memcpy version filter
270307463 Please add "&limit=0" to the "all open bugs" link
271307465 --show-possibly-lost=no should reduce the error count / exit code
272307557 Leaks on Mac OS X 10.7.5 libraries at ImageLoader::recursiveInit[..]
273307729 pkgconfig support broken valgrind.pc
274307828 Memcheck false errors SSE optimized wcscpy, wcscmp, wcsrchr, wcschr
275307955 Building valgrind 3.7.0-r4 fails in Gentoo AMD64 when using clang
276308089 Unhandled syscall on ppc64: prctl
277308135 PPC32 MPC8xx has 16 bytes cache size
278308321 testsuite memcheck filter interferes with gdb_filter
279308333 == 307106
280308341 vgdb should report process exit (or fatal signal)
281308427 s390 memcheck reports tsearch cjump/cmove depends on uninit
282308495 Remove build dependency on installed Xen headers
283308573 Internal error on 64-bit instruction executed in 32-bit mode
284308626 == 308627
285308627 pmovmskb validity bit propagation is imprecise
286308644 vgdb command for having the info for the track-fds option
287308711 give more info about aspacemgr and arenas in out_of_memory
288308717 ARM: implement fixed-point VCVT.F64.[SU]32
289308718 ARM implement SMLALBB family of instructions
290308886 Missing support for PTRACE_SET/GETREGSET
291308930 syscall name_to_handle_at (303 on amd64) not handled
292309229 V-bit tester does not report number of tests generated
293309323 print unrecognized instuction on MIPS
294309425 Provide a --sigill-diagnostics flag to suppress illegal [..]
295309427 SSE optimized stpncpy trigger uninitialised value [..] errors
sewardjf15231f2013-10-22 14:46:55 +0000296309430 Self hosting ppc64 encounters a vassert error on operand type
sewardj4c7254d2013-11-29 23:08:28 +0000297309600 valgrind is a bit confused about 0-sized sections
298309823 Generate errors for still reachable blocks
299309921 PCMPISTRI validity bit propagation is imprecise
300309922 none/tests/ppc64/test_dfp5 sometimes fails
301310169 The Iop_CmpORD class of Iops is not supported by the vbit checker.
302310424 --read-var-info does not properly describe static variables
303310792 search additional path for debug symbols
304310931 s390x: Message-security assist (MSA) instruction extension [..]
305311100 PPC DFP implementation of the integer operands is inconsistent [..]
306311318 ARM: "128-bit constant is not implemented" error message
307311407 ssse3 bcopy (actually converted memcpy) causes invalid read [..]
308311690 V crashes because it redirects branches inside of a redirected function
309311880 x86_64: make regtest hangs at shell_valid1
310311922 WARNING: unhandled syscall: 170
311311933 == 251569
312312171 ppc: insn selection for DFP
313312571 Rounding mode call wrong for the DFP Iops [..]
314312620 Change to Iop_D32toD64 [..] for s390 DFP support broke ppc [..]
315312913 Dangling pointers error should also report the alloc stack trace
316312980 Building on Mountain Lion generates some compiler warnings
317313267 Adding MIPS64/Linux port to Valgrind
318313348 == 251569
319313354 == 251569
320313811 Buffer overflow in assert_fail
321314099 coverity pointed out error in VEX guest_ppc_toIR.c insn_suffix
322314269 ppc: dead code in insn selection
323314718 ARM: implement integer divide instruction (sdiv and udiv)
324315345 cl-format.xml and callgrind/dump.c don't agree on using cfl= or cfi=
325315441 sendmsg syscall should ignore unset msghdr msg_flags
326315534 msgrcv inside a thread causes valgrind to hang (block)
327315545 Assertion '(UChar*)sec->tt[tteNo].tcptr <= (UChar*)hcode' failed
328315689 disInstr(thumb): unhandled instruction: 0xF852 0x0E10 (LDRT)
329315738 disInstr(arm): unhandled instruction: 0xEEBE0BEE (vcvt.s32.f64)
330315959 valgrind man page has bogus SGCHECK (and no BBV) OPTIONS section
331316144 valgrind.1 manpage contains unknown ??? strings [..]
332316145 callgrind command line options in manpage reference (unknown) [..]
333316145 callgrind command line options in manpage reference [..]
334316181 drd: Fixed a 4x slowdown for certain applications
335316503 Valgrind does not support SSE4 "movntdqa" instruction
336316535 Use of |signed int| instead of |size_t| in valgrind messages
337316696 fluidanimate program of parsec 2.1 stuck
338316761 syscall open_by_handle_at (304 on amd64, 342 on x86) not handled
339317091 Use -Wl,-Ttext-segment when static linking if possible [..]
340317186 "Impossible happens" when occurs VCVT instruction on ARM
341317318 Support for Threading Building Blocks "scalable_malloc"
342317444 amd64->IR: 0xC4 0x41 0x2C 0xC2 0xD2 0x8 (vcmpeq_uqps)
343317461 Fix BMI assembler configure check and avx2/bmi/fma vgtest prereqs
344317463 bmi testcase IR SANITY CHECK FAILURE
345317506 memcheck/tests/vbit-test fails with unknown opcode after [..]
346318050 libmpiwrap fails to compile with out-of-source build
347318203 setsockopt handling needs to handle SOL_SOCKET/SO_ATTACH_FILTER
348318643 annotate_trace_memory tests infinite loop on arm and ppc [..]
349318773 amd64->IR: 0xF3 0x48 0x0F 0xBC 0xC2 0xC3 0x66 0x0F
350318929 Crash with: disInstr(thumb): 0xF321 0x0001 (ssat16)
351318932 Add missing PPC64 and PPC32 system call support
352319235 --db-attach=yes is broken with Yama (ptrace scoping) enabled
353319395 Crash with unhandled instruction on STRT (Thumb) instructions
354319494 VEX Makefile-gcc standalone build update after r2702
355319505 [MIPSEL] Crash: unhandled UNRAY operator.
356319858 disInstr(thumb): unhandled instruction on instruction STRBT
357319932 disInstr(thumb): unhandled instruction on instruction STRHT
358320057 Problems when we try to mmap more than 12 memory pages on MIPS32
359320063 Memory from PTRACE_GET_THREAD_AREA is reported uninitialised
360320083 disInstr(thumb): unhandled instruction on instruction LDRBT
361320116 bind on AF_BLUETOOTH produces warnings because of sockaddr_rc padding
362320131 WARNING: unhandled syscall: 369 on ARM (prlimit64)
363320211 Stack buffer overflow in ./coregrind/m_main.c with huge TMPDIR
364320661 vgModuleLocal_read_elf_debug_info(): "Assertion '!di->soname'
365320895 add fanotify support (patch included)
366320998 vex amd64->IR pcmpestri and pcmpestrm SSE4.2 instruction
367321065 Valgrind updates for Xen 4.3
368321148 Unhandled instruction: PLI (Thumb 1, 2, 3)
369321363 Unhandled instruction: SSAX (ARM + Thumb)
370321364 Unhandled instruction: SXTAB16 (ARM + Thumb)
371321466 Unhandled instruction: SHASX (ARM + Thumb)
372321467 Unhandled instruction: SHSAX (ARM + Thumb)
373321468 Unhandled instruction: SHSUB16 (ARM + Thumb)
374321619 Unhandled instruction: SHSUB8 (ARM + Thumb)
375321620 Unhandled instruction: UASX (ARM + Thumb)
376321621 Unhandled instruction: USAX (ARM + Thumb)
377321692 Unhandled instruction: UQADD16 (ARM + Thumb)
378321693 Unhandled instruction: LDRSBT (Thumb)
379321694 Unhandled instruction: UQASX (ARM + Thumb)
380321696 Unhandled instruction: UQSAX (Thumb + ARM)
381321697 Unhandled instruction: UHASX (ARM + Thumb)
382321703 Unhandled instruction: UHSAX (ARM + Thumb)
383321704 Unhandled instruction: REVSH (ARM + Thumb)
384321730 Add cg_diff and cg_merge man pages
385321738 Add vgdb and valgrind-listener man pages
386321814 == 315545
387321891 Unhandled instruction: LDRHT (Thumb)
388321960 pthread_create() then alloca() causing invalid stack write errors
389321969 ppc32 and ppc64 don't support [lf]setxattr
390322254 Show threadname together with tid if set by application
391322294 Add initial support for IBM Power ISA 2.07
392322368 Assertion failure in wqthread_hijack under OS X 10.8
393322563 vex mips->IR: 0x70 0x83 0xF0 0x3A
394322807 VALGRIND_PRINTF_BACKTRACE writes callstack to xml and text to stderr
395322851 0bXXX binary literal syntax is not standard
396323035 Unhandled instruction: LDRSHT(Thumb)
397323036 Unhandled instruction: SMMLS (ARM and Thumb)
398323116 The memcheck/tests/ppc64/power_ISA2_05.c fails to build [..]
399323175 Unhandled instruction: SMLALD (ARM + Thumb)
400323177 Unhandled instruction: SMLSLD (ARM + Thumb)
401323432 Calling pthread_cond_destroy() or pthread_mutex_destroy() [..]
402323437 Phase 2 support for IBM Power ISA 2.07
403323713 Support mmxext (integer sse) subset on i386 (athlon)
404323803 Transactional memory instructions are not supported for Power
405323893 SSE3 not available on amd cpus in valgrind
406323905 Probable false positive from Valgrind/drd on close()
407323912 valgrind.h header isn't compatible for mingw64
408324047 Valgrind doesn't support [LDR,ST]{S}[B,H]T ARM instructions
409324149 helgrind: When pthread_cond_timedwait returns ETIMEDOUT [..]
410324181 mmap does not handle MAP_32BIT
411324227 memcheck false positive leak when a thread calls exit+block [..]
412324421 Support for fanotify API on ARM architecture
413324514 gdbserver monitor cmd output behaviour consistency [..]
414324518 ppc64: Emulation of dcbt instructions does not handle [..]
415324546 none/tests/ppc32 test_isa_2_07_part2 requests -m64
416324582 When access is made to freed memory, report both allocation [..]
417324594 Fix overflow computation for Power ISA 2.06 insns: mulldo/mulldo.
418324765 ppc64: illegal instruction when executing none/tests/ppc64/jm-misc
419324816 Incorrect VEX implementation for xscvspdp/xvcvspdp for SNaN inputs
420324834 Unhandled instructions in Microsoft C run-time for x86_64
421324894 Phase 3 support for IBM Power ISA 2.07
422326091 drd: Avoid false race reports from optimized strlen() impls
423326113 valgrind libvex hwcaps error on AMD64
424n-i-bz Some wrong command line options could be ignored
425n-i-bz patch to allow fair-sched on android
426n-i-bz report error for vgdb snapshot requested before execution
427n-i-bz same as 303624 (fixed in 3.8.0), but for x86 android
428
429(3.9.0: 31 October 2013, vex r2796, valgrind r13708)
430
sewardjf15231f2013-10-22 14:46:55 +0000431
florian02a42332013-08-03 20:40:05 +0000432
sewardj328f9182012-09-18 07:03:27 +0000433Release 3.8.1 (19 September 2012)
434~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4353.8.1 is a bug fix release. It fixes some assertion failures in 3.8.0
436that occur moderately frequently in real use cases, adds support for
437some missing instructions on ARM, and fixes a deadlock condition on
438MacOSX. If you package or deliver 3.8.0 for others to use, you might
439want to consider upgrading to 3.8.1 instead.
440
441The following bugs have been fixed or resolved. Note that "n-i-bz"
442stands for "not in bugzilla" -- that is, a bug that was reported to us
443but never got a bugzilla entry. We encourage you to file bugs in
444bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather
445than mailing the developers (or mailing lists) directly -- bugs that
446are not entered into bugzilla tend to get forgotten about or ignored.
447
448To see details of a given bug, visit
449 https://bugs.kde.org/show_bug.cgi?id=XXXXXX
450where XXXXXX is the bug number as listed below.
451
452284004 == 301281
453289584 Unhandled instruction: 0xF 0x29 0xE5 (MOVAPS)
454295808 amd64->IR: 0xF3 0xF 0xBC 0xC0 (TZCNT)
455298281 wcslen causes false(?) uninitialised value warnings
456301281 valgrind hangs on OS X when the process calls system()
457304035 disInstr(arm): unhandled instruction 0xE1023053
458304867 implement MOVBE instruction in x86 mode
459304980 Assertion 'lo <= hi' failed in vgModuleLocal_find_rx_mapping
460305042 amd64: implement 0F 7F encoding of movq between two registers
461305199 ARM: implement QDADD and QDSUB
462305321 amd64->IR: 0xF 0xD 0xC (prefetchw)
463305513 killed by fatal signal: SIGSEGV
464305690 DRD reporting invalid semaphore when sem_trywait fails
465305926 Invalid alignment checks for some AVX instructions
466306297 disInstr(thumb): unhandled instruction 0xE883 0x000C
467306310 3.8.0 release tarball missing some files
468306612 RHEL 6 glibc-2.X default suppressions need /lib*/libc-*patterns
469306664 vex amd64->IR: 0x66 0xF 0x3A 0x62 0xD1 0x46 0x66 0xF
470n-i-bz shmat of a segment > 4Gb does not work
471n-i-bz simulate_control_c script wrong USR1 signal number on mips
472n-i-bz vgdb ptrace calls wrong on mips [...]
473n-i-bz Fixes for more MPI false positives
474n-i-bz exp-sgcheck's memcpy causes programs to segfault
475n-i-bz OSX build w/ clang: asserts at startup
476n-i-bz Incorrect undef'dness prop for Iop_DPBtoBCD and Iop_BCDtoDPB
477n-i-bz fix a couple of union tag-vs-field mixups
478n-i-bz OSX: use __NR_poll_nocancel rather than __NR_poll
479
480The following bugs were fixed in 3.8.0 but not listed in this NEWS
481file at the time:
482
483254088 Valgrind should know about UD2 instruction
484301280 == 254088
485301902 == 254088
486304754 NEWS blows TeX's little mind
487
sewardj4c7254d2013-11-29 23:08:28 +0000488(3.8.1: 19 September 2012, vex r2537, valgrind r12996)
sewardj81f92412012-09-17 18:20:29 +0000489
sewardj5036a7a2012-08-24 16:53:02 +0000490
florianff7efa62011-11-16 03:59:49 +0000491
sewardj1c41a1a2012-08-09 15:06:36 +0000492Release 3.8.0 (10 August 2012)
sewardj31e8f542012-08-05 14:57:38 +0000493~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sewardj8ab8a8e2012-08-07 14:54:17 +00004943.8.0 is a feature release with many improvements and the usual
495collection of bug fixes.
sewardj31e8f542012-08-05 14:57:38 +0000496
497This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux,
498PPC64/Linux, S390X/Linux, MIPS/Linux, ARM/Android, X86/Android,
499X86/MacOSX 10.6/10.7 and AMD64/MacOSX 10.6/10.7. Support for recent
500distros and toolchain components (glibc 2.16, gcc 4.7) has been added.
501There is initial support for MacOSX 10.8, but it is not usable for
502serious work at present.
sewardj7d79e0b2012-05-21 21:57:05 +0000503
florian8dc79ce2011-12-10 16:00:25 +0000504* ================== PLATFORM CHANGES =================
505
sewardj31e8f542012-08-05 14:57:38 +0000506* Support for MIPS32 platforms running Linux. Valgrind has been
507 tested on MIPS32 and MIPS32r2 platforms running different Debian
508 Squeeze and MeeGo distributions. Both little-endian and big-endian
sewardj10856a02012-08-05 15:24:12 +0000509 cores are supported. The tools Memcheck, Massif and Lackey have
510 been tested and are known to work. See README.mips for more details.
511
sewardj8ab8a8e2012-08-07 14:54:17 +0000512* Preliminary support for Android running on x86.
sewardj10856a02012-08-05 15:24:12 +0000513
514* Preliminary (as-yet largely unusable) support for MacOSX 10.8.
sewardj31e8f542012-08-05 14:57:38 +0000515
516* Support for Intel AVX instructions and for AES instructions. This
517 support is available only for 64 bit code.
518
sewardj10856a02012-08-05 15:24:12 +0000519* Support for POWER Decimal Floating Point instructions.
philippe5d5dd8e2012-08-05 00:08:25 +0000520
florian8dc79ce2011-12-10 16:00:25 +0000521* ==================== TOOL CHANGES ====================
522
sewardj10856a02012-08-05 15:24:12 +0000523* Non-libc malloc implementations are now supported. This is useful
524 for tools that replace malloc (Memcheck, Massif, DRD, Helgrind).
525 Using the new option --soname-synonyms, such tools can be informed
526 that the malloc implementation is either linked statically into the
527 executable, or is present in some other shared library different
528 from libc.so. This makes it possible to process statically linked
529 programs, and programs using other malloc libraries, for example
530 TCMalloc or JEMalloc.
531
532* For tools that provide their own replacement for malloc et al, the
533 option --redzone-size=<number> allows users to specify the size of
534 the padding blocks (redzones) added before and after each client
535 allocated block. Smaller redzones decrease the memory needed by
536 Valgrind. Bigger redzones increase the chance to detect blocks
537 overrun or underrun. Prior to this change, the redzone size was
538 hardwired to 16 bytes in Memcheck.
philippe1e470b52012-05-11 19:33:46 +0000539
philippe84234902012-01-14 13:53:13 +0000540* Memcheck:
541
542 - The leak_check GDB server monitor command now can
543 control the maximum nr of loss records to output.
544
philippe1e470b52012-05-11 19:33:46 +0000545 - Reduction of memory use for applications allocating
philippe6643e962012-01-17 21:16:30 +0000546 many blocks and/or having many partially defined bytes.
547
philippea22f59d2012-01-26 23:13:52 +0000548 - Addition of GDB server monitor command 'block_list' that lists
549 the addresses/sizes of the blocks of a leak search loss record.
550
551 - Addition of GDB server monitor command 'who_points_at' that lists
552 the locations pointing at a block.
philippe6643e962012-01-17 21:16:30 +0000553
sewardj10856a02012-08-05 15:24:12 +0000554 - If a redzone size > 0 is given, VALGRIND_MALLOCLIKE_BLOCK now will
555 detect an invalid access of these redzones, by marking them
556 noaccess. Similarly, if a redzone size is given for a memory
557 pool, VALGRIND_MEMPOOL_ALLOC will mark the redzones no access.
558 This still allows to find some bugs if the user has forgotten to
559 mark the pool superblock noaccess.
philippe11cc9ce2012-03-11 17:59:00 +0000560
sewardj10856a02012-08-05 15:24:12 +0000561 - Performance of memory leak check has been improved, especially in
562 cases where there are many leaked blocks and/or many suppression
563 rules used to suppress leak reports.
philippe57a16a22012-07-18 22:26:51 +0000564
sewardje060f6a2012-08-05 16:14:02 +0000565 - Reduced noise (false positive) level on MacOSX 10.6/10.7, due to
philippe46217292012-08-05 21:35:02 +0000566 more precise analysis, which is important for LLVM/Clang
sewardje060f6a2012-08-05 16:14:02 +0000567 generated code. This is at the cost of somewhat reduced
568 performance. Note there is no change to analysis precision or
569 costs on Linux targets.
570
bartc3009f82012-06-16 19:02:25 +0000571* DRD:
572
bartc3009f82012-06-16 19:02:25 +0000573 - Added even more facilities that can help finding the cause of a data
574 race, namely the command-line option --ptrace-addr and the macro
575 DRD_STOP_TRACING_VAR(x). More information can be found in the manual.
576
barta7a57882012-08-04 09:19:11 +0000577 - Fixed a subtle bug that could cause false positive data race reports.
578
florian8dc79ce2011-12-10 16:00:25 +0000579* ==================== OTHER CHANGES ====================
580
581* The C++ demangler has been updated so as to work well with C++
philippe172a3bb2012-03-16 15:03:08 +0000582 compiled by up to at least g++ 4.6.
florianff7efa62011-11-16 03:59:49 +0000583
bart1e451642012-07-28 13:06:45 +0000584* Tool developers can make replacement/wrapping more flexible thanks
sewardj10856a02012-08-05 15:24:12 +0000585 to the new option --soname-synonyms. This was reported above, but
586 in fact is very general and applies to all function
587 replacement/wrapping, not just to malloc-family functions.
philippe1e470b52012-05-11 19:33:46 +0000588
sewardj10856a02012-08-05 15:24:12 +0000589* Round-robin scheduling of threads can be selected, using the new
590 option --fair-sched= yes. Prior to this change, the pipe-based
591 thread serialisation mechanism (which is still the default) could
592 give very unfair scheduling. --fair-sched=yes improves
593 responsiveness of interactive multithreaded applications, and
594 improves repeatability of results from the thread checkers Helgrind
595 and DRD.
philippe236a71a2012-02-22 20:23:29 +0000596
sewardj10856a02012-08-05 15:24:12 +0000597* For tool developers: support to run Valgrind on Valgrind has been
598 improved. We can now routinely Valgrind on Helgrind or Memcheck.
philippe72faf102012-03-11 22:24:03 +0000599
philippeede2d6c2012-03-14 21:27:35 +0000600* gdbserver now shows the float shadow registers as integer
601 rather than float values, as the shadow values are mostly
602 used as bit patterns.
603
florian7711f9e2012-06-29 21:20:52 +0000604* Increased limit for the --num-callers command line flag to 500.
605
philippe02ccd562012-08-05 17:35:17 +0000606* Performance improvements for error matching when there are many
sewardj10856a02012-08-05 15:24:12 +0000607 suppression records in use.
philippecbfe62c2012-08-04 09:08:50 +0000608
sewardj10856a02012-08-05 15:24:12 +0000609* Improved support for DWARF4 debugging information (bug 284184).
sewardjd09354b2012-06-30 16:44:45 +0000610
sewardja930ef22012-08-08 20:21:29 +0000611* Initial support for DWZ compressed Dwarf debug info.
612
sewardj10856a02012-08-05 15:24:12 +0000613* Improved control over the IR optimiser's handling of the tradeoff
614 between performance and precision of exceptions. Specifically,
615 --vex-iropt-precise-memory-exns has been removed and replaced by
616 --vex-iropt-register-updates, with extended functionality. This
philippee30542d2012-08-05 17:37:39 +0000617 allows the Valgrind gdbserver to always show up to date register
sewardj10856a02012-08-05 15:24:12 +0000618 values to GDB.
619
620* Modest performance gains through the use of translation chaining for
621 JIT-generated code.
philippe0c0291a2012-08-01 22:03:12 +0000622
florianff7efa62011-11-16 03:59:49 +0000623* ==================== FIXED BUGS ====================
624
625The following bugs have been fixed or resolved. Note that "n-i-bz"
626stands for "not in bugzilla" -- that is, a bug that was reported to us
627but never got a bugzilla entry. We encourage you to file bugs in
sewardj31e8f542012-08-05 14:57:38 +0000628bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather
629than mailing the developers (or mailing lists) directly -- bugs that
630are not entered into bugzilla tend to get forgotten about or ignored.
florianff7efa62011-11-16 03:59:49 +0000631
632To see details of a given bug, visit
sewardj31e8f542012-08-05 14:57:38 +0000633 https://bugs.kde.org/show_bug.cgi?id=XXXXXX
florianff7efa62011-11-16 03:59:49 +0000634where XXXXXX is the bug number as listed below.
635
florianef0bca62012-05-06 03:37:25 +0000636197914 Building valgrind from svn now requires automake-1.10
sewardj31e8f542012-08-05 14:57:38 +0000637203877 increase to 16Mb maximum allowed alignment for memalign et al
638219156 Handle statically linked malloc or other malloc lib (e.g. tcmalloc)
philippe8f927a52011-12-23 11:42:20 +0000639247386 make perf does not run all performance tests
philippe8d674252012-03-20 19:04:39 +0000640270006 Valgrind scheduler unfair
philippeb79add82012-07-01 20:35:26 +0000641270777 Adding MIPS/Linux port to Valgrind
florian722b48e2012-01-16 17:26:48 +0000642270796 s390x: Removed broken support for the TS insn
florianfdfca222012-01-17 13:16:50 +0000643271438 Fix configure for proper SSE4.2 detection
florianda275432012-02-04 17:16:40 +0000644273114 s390x: Support TR, TRE, TROO, TROT, TRTO, and TRTT instructions
sewardj31e8f542012-08-05 14:57:38 +0000645273475 Add support for AVX instructions
philippef7c54332012-05-17 15:32:54 +0000646274078 improved configure logic for mpicc
philippe15e301e2011-12-22 13:25:58 +0000647276993 fix mremap 'no thrash checks'
sewardj5d1d88f2012-07-16 22:39:24 +0000648278313 Fedora 15/x64: err read debug info with --read-var-info=yes flag
sewardj31e8f542012-08-05 14:57:38 +0000649281482 memcheck incorrect byte allocation count in realloc() for silly argument
philippe6643e962012-01-17 21:16:30 +0000650282230 group allocator for small fixed size, use it for MC_Chunk/SEc vbit
florian8dc79ce2011-12-10 16:00:25 +0000651283413 Fix wrong sanity check
florian535bc7d2012-02-26 17:01:22 +0000652283671 Robustize alignment computation in LibVEX_Alloc
sewardjd09354b2012-06-30 16:44:45 +0000653283961 Adding support for some HCI IOCTLs
654284124 parse_type_DIE: confused by: DWARF 4
sewardj31e8f542012-08-05 14:57:38 +0000655284864 == 273475 (Add support for AVX instructions)
sewardjd09354b2012-06-30 16:44:45 +0000656285219 Too-restrictive constraints for Thumb2 "SP plus/minus register"
sewardj31e8f542012-08-05 14:57:38 +0000657285662 (MacOSX): Memcheck needs to replace memcpy/memmove
658285725 == 273475 (Add support for AVX instructions)
659286261 add wrapper for linux I2C_RDWR ioctl
philippe5eb378e2011-12-19 11:03:07 +0000660286270 vgpreload is not friendly to 64->32 bit execs, gives ld.so warnings
661286374 Running cachegrind with --branch-sim=yes on 64-bit PowerPC program fails
sewardj31e8f542012-08-05 14:57:38 +0000662286384 configure fails "checking for a supported version of gcc"
663286497 == 273475 (Add support for AVX instructions)
664286596 == 273475 (Add support for AVX instructions)
sewardj7ceb70c2012-07-11 14:28:13 +0000665286917 disInstr(arm): unhandled instruction: QADD (also QSUB)
sewardj69f799d2012-08-04 08:41:44 +0000666287175 ARM: scalar VFP fixed-point VCVT instructions not handled
floriane3c0a2a2012-01-29 02:23:07 +0000667287260 Incorrect conditional jump or move depends on uninitialised value(s)
sewardjd09354b2012-06-30 16:44:45 +0000668287301 vex amd64->IR: 0x66 0xF 0x38 0x41 0xC0 0xB8 0x0 0x0 (PHMINPOSUW)
sewardj31e8f542012-08-05 14:57:38 +0000669287307 == 273475 (Add support for AVX instructions)
florian59451642011-12-24 21:50:53 +0000670287858 VG_(strerror): unknown error
sewardj69f799d2012-08-04 08:41:44 +0000671288298 (MacOSX) unhandled syscall shm_unlink
sewardj31e8f542012-08-05 14:57:38 +0000672288995 == 273475 (Add support for AVX instructions)
sewardja1c8b4c2012-07-13 14:04:03 +0000673289470 Loading of large Mach-O thin binaries fails.
sewardj31e8f542012-08-05 14:57:38 +0000674289656 == 273475 (Add support for AVX instructions)
philippe1d76a802011-12-26 21:21:37 +0000675289699 vgdb connection in relay mode erroneously closed due to buffer overrun
sewardj31e8f542012-08-05 14:57:38 +0000676289823 == 293754 (PCMPxSTRx not implemented for 16-bit characters)
florian6746c4c2012-08-06 00:10:53 +0000677289839 s390x: Provide support for unicode conversion instructions
sewardj31e8f542012-08-05 14:57:38 +0000678289939 monitor cmd 'leak_check' with details about leaked or reachable blocks
sewardj617f1b22012-07-11 00:06:35 +0000679290006 memcheck doesn't mark %xmm as initialized after "pcmpeqw %xmm %xmm"
philippe6156b772012-02-14 21:35:46 +0000680290655 Add support for AESKEYGENASSIST instruction
philippefaa4f052012-07-01 20:06:04 +0000681290719 valgrind-3.7.0 fails with automake-1.11.2 due to"pkglibdir" usage
philippe53b0d9a2012-02-02 21:33:55 +0000682290974 vgdb must align pages to VKI_SHMLBA (16KB) on ARM
philippefaa4f052012-07-01 20:06:04 +0000683291253 ES register not initialised in valgrind simulation
684291568 Fix 3DNOW-related crashes with baseline x86_64 CPU (w patch)
floriancc58cef2012-06-06 02:27:51 +0000685291865 s390x: Support the "Compare Double and Swap" family of instructions
sewardj31e8f542012-08-05 14:57:38 +0000686292300 == 273475 (Add support for AVX instructions)
687292430 unrecognized instruction in __intel_get_new_mem_ops_cpuid
688292493 == 273475 (Add support for AVX instructions)
philippefaa4f052012-07-01 20:06:04 +0000689292626 Missing fcntl F_SETOWN_EX and F_GETOWN_EX support
690292627 Missing support for some SCSI ioctls
691292628 none/tests/x86/bug125959-x86.c triggers undefined behavior
sewardj31e8f542012-08-05 14:57:38 +0000692292841 == 273475 (Add support for AVX instructions)
philippefaa4f052012-07-01 20:06:04 +0000693292993 implement the getcpu syscall on amd64-linux
694292995 Implement the “cross memory attach” syscalls introduced in Linux 3.2
florian44587792012-02-15 04:05:52 +0000695293088 Add some VEX sanity checks for ppc64 unhandled instructions
sewardj31e8f542012-08-05 14:57:38 +0000696293751 == 290655 (Add support for AESKEYGENASSIST instruction)
philippefaa4f052012-07-01 20:06:04 +0000697293754 PCMPxSTRx not implemented for 16-bit characters
sewardj31e8f542012-08-05 14:57:38 +0000698293755 == 293754 (No tests for PCMPxSTRx on 16-bit characters)
philippefaa4f052012-07-01 20:06:04 +0000699293808 CLFLUSH not supported by latest VEX for amd64
700294047 valgrind does not correctly emulate prlimit64(..., RLIMIT_NOFILE, ...)
701294048 MPSADBW instruction not implemented
florianc6fccd62012-02-15 03:57:27 +0000702294055 regtest none/tests/shell fails when locale is not set to C
philippefaa4f052012-07-01 20:06:04 +0000703294185 INT 0x44 (and others) not supported on x86 guest, but used by Jikes RVM
philippebaf69642012-02-15 22:29:30 +0000704294190 --vgdb-error=xxx can be out of sync with errors shown to the user
sewardj31e8f542012-08-05 14:57:38 +0000705294191 amd64: fnsave/frstor and 0x66 size prefixes on FP instructions
706294260 disInstr_AMD64: disInstr miscalculated next %rip
sewardj8a91f382012-07-05 13:26:07 +0000707294523 --partial-loads-ok=yes causes false negatives
sewardj31e8f542012-08-05 14:57:38 +0000708294617 vex amd64->IR: 0x66 0xF 0x3A 0xDF 0xD1 0x1 0xE8 0x6A
709294736 vex amd64->IR: 0x48 0xF 0xD7 0xD6 0x48 0x83
philippefaa4f052012-07-01 20:06:04 +0000710294812 patch allowing to run (on x86 at least) helgrind/drd on tool.
711295089 can not annotate source for both helgrind and drd
florian2011f752012-07-01 21:55:13 +0000712295221 POWER Processor decimal floating point instruction support missing
sewardj31e8f542012-08-05 14:57:38 +0000713295427 building for i386 with clang on darwin11 requires "-new_linker linker"
florian2011f752012-07-01 21:55:13 +0000714295428 coregrind/m_main.c has incorrect x86 assembly for darwin
sewardj31e8f542012-08-05 14:57:38 +0000715295590 Helgrind: Assertion 'cvi->nWaiters > 0' failed
tomd0b8b372012-07-11 15:42:25 +0000716295617 ARM - Add some missing syscalls
sewardj31e8f542012-08-05 14:57:38 +0000717295799 Missing \n with get_vbits in gdbserver when line is % 80 [...]
sewardja1c8b4c2012-07-13 14:04:03 +0000718296229 Linux user input device ioctls missing wrappers
719296318 ELF Debug info improvements (more than one rx/rw mapping)
philippefaa4f052012-07-01 20:06:04 +0000720296422 Add translation chaining support
sewardj4a2faf12012-07-04 20:30:47 +0000721296457 vex amd64->IR: 0x66 0xF 0x3A 0xDF 0xD1 0x1 0xE8 0x6A (dup of AES)
sewardj31e8f542012-08-05 14:57:38 +0000722296792 valgrind 3.7.0: add SIOCSHWTSTAMP (0x89B0) ioctl wrapper
florian5bdb9ec2012-05-06 03:51:00 +0000723296983 Fix build issues on x86_64/ppc64 without 32-bit toolchains
sewardj31e8f542012-08-05 14:57:38 +0000724297078 gdbserver signal handling problems [..]
bartc3009f82012-06-16 19:02:25 +0000725297147 drd false positives on newly allocated memory
sewardj31e8f542012-08-05 14:57:38 +0000726297329 disallow decoding of IBM Power DFP insns on some machines
florianf5a39372012-07-02 12:14:00 +0000727297497 POWER Processor decimal floating point instruction support missing
sewardja1c8b4c2012-07-13 14:04:03 +0000728297701 Another alias for strncasecmp_l in libc-2.13.so
sewardj31e8f542012-08-05 14:57:38 +0000729297911 'invalid write' not reported when using APIs for custom mem allocators.
florian295bb7f2012-07-01 21:24:53 +0000730297976 s390x: revisit EX implementation
philippe8050bb72012-04-13 23:07:29 +0000731297991 Valgrind interferes with mmap()+ftell()
philippe8fb1b132012-04-13 17:27:40 +0000732297992 Support systems missing WIFCONTINUED (e.g. pre-2.6.10 Linux)
florianf71b35a2012-04-22 19:27:44 +0000733297993 Fix compilation of valgrind with gcc -g3.
sewardj31e8f542012-08-05 14:57:38 +0000734298080 POWER Processor DFP support missing, part 3
735298227 == 273475 (Add support for AVX instructions)
736298335 == 273475 (Add support for AVX instructions)
florianf5a39372012-07-02 12:14:00 +0000737298354 Unhandled ARM Thumb instruction 0xEB0D 0x0585 (streq)
sewardj31e8f542012-08-05 14:57:38 +0000738298394 s390x: Don't bail out on an unknown machine model. [..]
florianf5a39372012-07-02 12:14:00 +0000739298421 accept4() syscall (366) support is missing for ARM
sewardj31e8f542012-08-05 14:57:38 +0000740298718 vex amd64->IR: 0xF 0xB1 0xCB 0x9C 0x8F 0x45
florianf5a39372012-07-02 12:14:00 +0000741298732 valgrind installation problem in ubuntu with kernel version 3.x
sewardj31e8f542012-08-05 14:57:38 +0000742298862 POWER Processor DFP instruction support missing, part 4
florianf5a39372012-07-02 12:14:00 +0000743298864 DWARF reader mis-parses DW_FORM_ref_addr
sewardj31e8f542012-08-05 14:57:38 +0000744298943 massif asserts with --pages-as-heap=yes when brk is changing [..]
florianf5a39372012-07-02 12:14:00 +0000745299053 Support DWARF4 DW_AT_high_pc constant form
sewardj31e8f542012-08-05 14:57:38 +0000746299104 == 273475 (Add support for AVX instructions)
floriand7ebe552012-07-02 15:03:29 +0000747299316 Helgrind: hg_main.c:628 (map_threads_lookup): Assertion 'thr' failed.
sewardj31e8f542012-08-05 14:57:38 +0000748299629 dup3() syscall (358) support is missing for ARM
749299694 POWER Processor DFP instruction support missing, part 5
750299756 Ignore --free-fill for MEMPOOL_FREE and FREELIKE client requests
751299803 == 273475 (Add support for AVX instructions)
752299804 == 273475 (Add support for AVX instructions)
753299805 == 273475 (Add support for AVX instructions)
sewardja1c8b4c2012-07-13 14:04:03 +0000754300140 ARM - Missing (T1) SMMUL
sewardj31e8f542012-08-05 14:57:38 +0000755300195 == 296318 (ELF Debug info improvements (more than one rx/rw mapping))
756300389 Assertion `are_valid_hwcaps(VexArchAMD64, [..])' failed.
floriand7ebe552012-07-02 15:03:29 +0000757300414 FCOM and FCOMP unimplemented for amd64 guest
sewardj8a91f382012-07-05 13:26:07 +0000758301204 infinite loop in canonicaliseSymtab with ifunc symbol
sewardj31e8f542012-08-05 14:57:38 +0000759301229 == 203877 (increase to 16Mb maximum allowed alignment for memalign etc)
philippe5d5dd8e2012-08-05 00:08:25 +0000760301265 add x86 support to Android build
philippefaa4f052012-07-01 20:06:04 +0000761301984 configure script doesn't detect certain versions of clang
762302205 Fix compiler warnings for POWER VEX code and POWER test cases
sewardj5d1d88f2012-07-16 22:39:24 +0000763302287 Unhandled movbe instruction on Atom processors
sewardj31e8f542012-08-05 14:57:38 +0000764302370 PPC: fnmadd, fnmsub, fnmadds, fnmsubs insns always negate the result
floriand7ebe552012-07-02 15:03:29 +0000765302536 Fix for the POWER Valgrind regression test: memcheck-ISA2.0.
sewardj5d1d88f2012-07-16 22:39:24 +0000766302578 Unrecognized isntruction 0xc5 0x32 0xc2 0xca 0x09 vcmpngess
sewardj31e8f542012-08-05 14:57:38 +0000767302656 == 273475 (Add support for AVX instructions)
768302709 valgrind for ARM needs extra tls support for android emulator [..]
tomd0b8b372012-07-11 15:42:25 +0000769302827 add wrapper for CDROM_GET_CAPABILITY
sewardjf7450412012-07-14 10:08:40 +0000770302901 Valgrind crashes with dwz optimized debuginfo
philippeb0e5b692012-07-06 21:42:14 +0000771302918 Enable testing of the vmaddfp and vnsubfp instructions in the testsuite
philippea6be8b12012-07-06 21:59:03 +0000772303116 Add support for the POWER instruction popcntb
philippe32b4a422012-07-06 22:52:09 +0000773303127 Power test suite fixes for frsqrte, vrefp, and vrsqrtefp instructions.
sewardj31e8f542012-08-05 14:57:38 +0000774303250 Assertion `instrs_in->arr_used <= 10000' failed w/ OpenSSL code
775303466 == 273475 (Add support for AVX instructions)
776303624 segmentation fault on Android 4.1 (e.g. on Galaxy Nexus OMAP)
weidendo0ffe10e2012-07-25 12:13:29 +0000777303963 strstr() function produces wrong results under valgrind callgrind
tom0ec79a12012-08-02 09:26:38 +0000778304054 CALL_FN_xx macros need to enforce stack alignment
sewardja930ef22012-08-08 20:21:29 +0000779304561 tee system call not supported
sewardj8ab8a8e2012-08-07 14:54:17 +0000780715750 (MacOSX): Incorrect invalid-address errors near 0xFFFFxxxx (mozbug#)
sewardj31e8f542012-08-05 14:57:38 +0000781n-i-bz Add missing gdbserver xml files for shadow registers for ppc32
782n-i-bz Bypass gcc4.4/4.5 code gen bugs causing out of memory or asserts
783n-i-bz Fix assert in gdbserver for watchpoints watching the same address
784n-i-bz Fix false positive in sys_clone on amd64 when optional args [..]
785n-i-bz s390x: Shadow registers can now be examined using vgdb
786
sewardj6e374f82012-08-08 23:35:35 +0000787(3.8.0-TEST3: 9 August 2012, vex r2465, valgrind r12865)
sewardj1c41a1a2012-08-09 15:06:36 +0000788(3.8.0: 10 August 2012, vex r2465, valgrind r12866)
sewardj10856a02012-08-05 15:24:12 +0000789
sewardj31e8f542012-08-05 14:57:38 +0000790
florian295bb7f2012-07-01 21:24:53 +0000791
sewardj62b0d402011-11-09 23:42:41 +0000792Release 3.7.0 (5 November 2011)
793~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sewardj469b8362011-10-23 10:05:47 +00007943.7.0 is a feature release with many significant improvements and the
795usual collection of bug fixes.
sewardjdc873c02011-07-24 16:02:33 +0000796
sewardj469b8362011-10-23 10:05:47 +0000797This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux,
798PPC64/Linux, S390X/Linux, ARM/Android, X86/Darwin and AMD64/Darwin.
799Support for recent distros and toolchain components (glibc 2.14, gcc
8004.6, MacOSX 10.7) has been added.
801
802* ================== PLATFORM CHANGES =================
803
804* Support for IBM z/Architecture (s390x) running Linux. Valgrind can
805 analyse 64-bit programs running on z/Architecture. Most user space
806 instructions up to and including z10 are supported. Valgrind has
807 been tested extensively on z9, z10, and z196 machines running SLES
808 10/11, RedHat 5/6m, and Fedora. The Memcheck and Massif tools are
809 known to work well. Callgrind, Helgrind, and DRD work reasonably
810 well on z9 and later models. See README.s390 for more details.
811
812* Preliminary support for MacOSX 10.7 and XCode 4. Both 32- and
813 64-bit processes are supported. Some complex threaded applications
814 (Firefox) are observed to hang when run as 32 bit applications,
815 whereas 64-bit versions run OK. The cause is unknown. Memcheck
816 will likely report some false errors. In general, expect some rough
817 spots. This release also supports MacOSX 10.6, but drops support
818 for 10.5.
819
820* Preliminary support for Android (on ARM). Valgrind can now run
821 large applications (eg, Firefox) on (eg) a Samsung Nexus S. See
822 README.android for more details, plus instructions on how to get
823 started.
824
825* Support for the IBM Power ISA 2.06 (Power7 instructions)
826
827* General correctness and performance improvements for ARM/Linux, and,
828 by extension, ARM/Android.
829
sewardj3bbaf482011-10-24 08:54:56 +0000830* Further solidification of support for SSE 4.2 in 64-bit mode. AVX
sewardj469b8362011-10-23 10:05:47 +0000831 instruction set support is under development but is not available in
832 this release.
833
834* Support for AIX5 has been removed.
835
836* ==================== TOOL CHANGES ====================
837
838* Memcheck: some incremental changes:
839
840 - reduction of memory use in some circumstances
841
842 - improved handling of freed memory, which in some circumstances
843 can cause detection of use-after-free that would previously have
844 been missed
845
846 - fix of a longstanding bug that could cause false negatives (missed
847 errors) in programs doing vector saturated narrowing instructions.
848
849* Helgrind: performance improvements and major memory use reductions,
850 particularly for large, long running applications which perform many
851 synchronisation (lock, unlock, etc) events. Plus many smaller
852 changes:
853
854 - display of locksets for both threads involved in a race
855
856 - general improvements in formatting/clarity of error messages
857
858 - addition of facilities and documentation regarding annotation
859 of thread safe reference counted C++ classes
860
861 - new flag --check-stack-refs=no|yes [yes], to disable race checking
862 on thread stacks (a performance hack)
863
864 - new flag --free-is-write=no|yes [no], to enable detection of races
865 where one thread accesses heap memory but another one frees it,
866 without any coordinating synchronisation event
867
868* DRD: enabled XML output; added support for delayed thread deletion
869 in order to detect races that occur close to the end of a thread
870 (--join-list-vol); fixed a memory leak triggered by repeated client
871 memory allocatation and deallocation; improved Darwin support.
872
florian0f0ed672011-11-26 04:05:47 +0000873* exp-ptrcheck: this tool has been renamed to exp-sgcheck
874
875* exp-sgcheck: this tool has been reduced in scope so as to improve
sewardj469b8362011-10-23 10:05:47 +0000876 performance and remove checking that Memcheck does better.
877 Specifically, the ability to check for overruns for stack and global
878 arrays is unchanged, but the ability to check for overruns of heap
879 blocks has been removed. The tool has accordingly been renamed to
880 exp-sgcheck ("Stack and Global Array Checking").
881
882* ==================== OTHER CHANGES ====================
883
884* GDB server: Valgrind now has an embedded GDB server. That means it
885 is possible to control a Valgrind run from GDB, doing all the usual
886 things that GDB can do (single stepping, breakpoints, examining
887 data, etc). Tool-specific functionality is also available. For
888 example, it is possible to query the definedness state of variables
889 or memory from within GDB when running Memcheck; arbitrarily large
890 memory watchpoints are supported, etc. To use the GDB server, start
891 Valgrind with the flag --vgdb-error=0 and follow the on-screen
892 instructions.
893
894* Improved support for unfriendly self-modifying code: a new option
895 --smc-check=all-non-file is available. This adds the relevant
896 consistency checks only to code that originates in non-file-backed
897 mappings. In effect this confines the consistency checking only to
898 code that is or might be JIT generated, and avoids checks on code
899 that must have been compiled ahead of time. This significantly
900 improves performance on applications that generate code at run time.
901
902* It is now possible to build a working Valgrind using Clang-2.9 on
sewardj960eef22011-09-30 17:55:13 +0000903 Linux.
904
sewardj469b8362011-10-23 10:05:47 +0000905* new client requests VALGRIND_{DISABLE,ENABLE}_ERROR_REPORTING.
906 These enable and disable error reporting on a per-thread, and
907 nestable, basis. This is useful for hiding errors in particularly
908 troublesome pieces of code. The MPI wrapper library (libmpiwrap.c)
909 now uses this facility.
sewardj960eef22011-09-30 17:55:13 +0000910
sewardj469b8362011-10-23 10:05:47 +0000911* Added the --mod-funcname option to cg_diff.
sewardjdc873c02011-07-24 16:02:33 +0000912
sewardj469b8362011-10-23 10:05:47 +0000913* ==================== FIXED BUGS ====================
sewardj4629a732011-05-17 15:54:31 +0000914
sewardj520501d2011-10-23 09:09:54 +0000915The following bugs have been fixed or resolved. Note that "n-i-bz"
916stands for "not in bugzilla" -- that is, a bug that was reported to us
917but never got a bugzilla entry. We encourage you to file bugs in
918bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
919mailing the developers (or mailing lists) directly -- bugs that are
920not entered into bugzilla tend to get forgotten about or ignored.
sewardjffd37d62011-10-13 16:41:17 +0000921
sewardj520501d2011-10-23 09:09:54 +0000922To see details of a given bug, visit
923https://bugs.kde.org/show_bug.cgi?id=XXXXXX
924where XXXXXX is the bug number as listed below.
sewardjffd37d62011-10-13 16:41:17 +0000925
sewardj520501d2011-10-23 09:09:54 +0000926210935 port valgrind.h (not valgrind) to win32 to support client requests
927214223 valgrind SIGSEGV on startup gcc 4.4.1 ppc32 (G4) Ubuntu 9.10
sewardj7a9ff4c2011-06-13 13:36:59 +0000928243404 Port to zSeries
sewardj520501d2011-10-23 09:09:54 +0000929243935 Helgrind: incorrect handling of ANNOTATE_HAPPENS_BEFORE()/AFTER()
930247223 non-x86: Suppress warning: 'regparm' attribute directive ignored
931250101 huge "free" memory usage due to m_mallocfree.c fragmentation
932253206 Some fixes for the faultstatus testcase
933255223 capget testcase fails when running as root
934256703 xlc_dbl_u32.c testcase broken
935256726 Helgrind tests have broken inline asm
936259977 == 214223 (Valgrind segfaults doing __builtin_longjmp)
sewardj7a9ff4c2011-06-13 13:36:59 +0000937264800 testcase compile failure on zseries
sewardj520501d2011-10-23 09:09:54 +0000938265762 make public VEX headers compilable by G++ 3.x
939265771 assertion in jumps.c (r11523) fails with glibc-2.3
940266753 configure script does not give the user the option to not use QtCore
941266931 gen_insn_test.pl is broken
942266961 ld-linux.so.2 i?86-linux strlen issues
943266990 setns instruction causes false positive
944267020 Make directory for temporary files configurable at run-time.
945267342 == 267997 (segmentation fault on Mac OS 10.6)
946267383 Assertion 'vgPlain_strlen(dir) + vgPlain_strlen(file) + 1 < 256' failed
947267413 Assertion 'DRD_(g_threadinfo)[tid].synchr_nesting >= 1' failed.
948267488 regtest: darwin support for 64-bit build
949267552 SIGSEGV (misaligned_stack_error) with DRD, but not with other tools
950267630 Add support for IBM Power ISA 2.06 -- stage 1
951267769 == 267997 (Darwin: memcheck triggers segmentation fault)
952267819 Add client request for informing the core about reallocation
953267925 laog data structure quadratic for a single sequence of lock
954267968 drd: (vgDrd_thread_set_joinable): Assertion '0 <= (int)tid ..' failed
955267997 MacOSX: 64-bit V segfaults on launch when built with Xcode 4.0.1
956268513 missed optimizations in fold_Expr
957268619 s390x: fpr - gpr transfer facility
958268620 s390x: reconsider "long displacement" requirement
959268621 s390x: improve IR generation for XC
960268715 s390x: FLOGR is not universally available
961268792 == 267997 (valgrind seg faults on startup when compiled with Xcode 4)
962268930 s390x: MHY is not universally available
963269078 arm->IR: unhandled instruction SUB (SP minus immediate/register)
964269079 Support ptrace system call on ARM
965269144 missing "Bad option" error message
966269209 conditional load and store facility (z196)
967269354 Shift by zero on x86 can incorrectly clobber CC_NDEP
968269641 == 267997 (valgrind segfaults immediately (segmentation fault))
969269736 s390x: minor code generation tweaks
970269778 == 272986 (valgrind.h: swap roles of VALGRIND_DO_CLIENT_REQUEST() ..)
971269863 s390x: remove unused function parameters
972269864 s390x: tweak s390_emit_load_cc
973269884 == 250101 (overhead for huge blocks exhausts space too soon)
974270082 s390x: Make sure to point the PSW address to the next address on SIGILL
975270115 s390x: rewrite some testcases
976270309 == 267997 (valgrind crash on startup)
977270320 add support for Linux FIOQSIZE ioctl() call
978270326 segfault while trying to sanitize the environment passed to execle
979270794 IBM POWER7 support patch causes regression in none/tests
980270851 IBM POWER7 fcfidus instruction causes memcheck to fail
981270856 IBM POWER7 xsnmaddadp instruction causes memcheck to fail on 32bit app
982270925 hyper-optimized strspn() in /lib64/libc-2.13.so needs fix
983270959 s390x: invalid use of R0 as base register
984271042 VSX configure check fails when it should not
985271043 Valgrind build fails with assembler error on ppc64 with binutils 2.21
986271259 s390x: fix code confusion
987271337 == 267997 (Valgrind segfaults on MacOS X)
988271385 s390x: Implement Ist_MBE
989271501 s390x: misc cleanups
990271504 s390x: promote likely and unlikely
991271579 ppc: using wrong enum type
992271615 unhandled instruction "popcnt" (arch=amd10h)
993271730 Fix bug when checking ioctls: duplicate check
994271776 s390x: provide STFLE instruction support
995271779 s390x: provide clock instructions like STCK
996271799 Darwin: ioctls without an arg report a memory error
997271820 arm: fix type confusion
998271917 pthread_cond_timedwait failure leads to not-locked false positive
999272067 s390x: fix DISP20 macro
1000272615 A typo in debug output in mc_leakcheck.c
1001272661 callgrind_annotate chokes when run from paths containing regex chars
1002272893 amd64->IR: 0x66 0xF 0x38 0x2B 0xC1 0x66 0xF 0x7F == (closed as dup)
1003272955 Unhandled syscall error for pwrite64 on ppc64 arch
1004272967 make documentation build-system more robust
1005272986 Fix gcc-4.6 warnings with valgrind.h
1006273318 amd64->IR: 0x66 0xF 0x3A 0x61 0xC1 0x38 (missing PCMPxSTRx case)
1007273318 unhandled PCMPxSTRx case: vex amd64->IR: 0x66 0xF 0x3A 0x61 0xC1 0x38
1008273431 valgrind segfaults in evalCfiExpr (debuginfo.c:2039)
1009273465 Callgrind: jumps.c:164 (new_jcc): Assertion '(0 <= jmp) && ...'
1010273536 Build error: multiple definition of `vgDrd_pthread_cond_initializer'
1011273640 ppc64-linux: unhandled syscalls setresuid(164) and setresgid(169)
1012273729 == 283000 (Illegal opcode for SSE2 "roundsd" instruction)
1013273778 exp-ptrcheck: unhandled sysno == 259
1014274089 exp-ptrcheck: unhandled sysno == 208
1015274378 s390x: Various dispatcher tweaks
1016274447 WARNING: unhandled syscall: 340
1017274776 amd64->IR: 0x66 0xF 0x38 0x2B 0xC5 0x66
1018274784 == 267997 (valgrind ls -l results in Segmentation Fault)
1019274926 valgrind does not build against linux-3
1020275148 configure FAIL with glibc-2.14
1021275151 Fedora 15 / glibc-2.14 'make regtest' FAIL
1022275168 Make Valgrind work for MacOSX 10.7 Lion
1023275212 == 275284 (lots of false positives from __memcpy_ssse3_back et al)
1024275278 valgrind does not build on Linux kernel 3.0.* due to silly
1025275284 Valgrind memcpy/memmove redirection stopped working in glibc 2.14/x86_64
1026275308 Fix implementation for ppc64 fres instruc
1027275339 s390x: fix testcase compile warnings
1028275517 s390x: Provide support for CKSM instruction
1029275710 s390x: get rid of redundant address mode calculation
1030275815 == 247894 (Valgrind doesn't know about Linux readahead(2) syscall)
1031275852 == 250101 (valgrind uses all swap space and is killed)
1032276784 Add support for IBM Power ISA 2.06 -- stage 3
1033276987 gdbsrv: fix tests following recent commits
1034277045 Valgrind crashes with unhandled DW_OP_ opcode 0x2a
1035277199 The test_isa_2_06_part1.c in none/tests/ppc64 should be a symlink
1036277471 Unhandled syscall: 340
1037277610 valgrind crashes in VG_(lseek)(core_fd, phdrs[idx].p_offset, ...)
1038277653 ARM: support Thumb2 PLD instruction
1039277663 ARM: NEON float VMUL by scalar incorrect
1040277689 ARM: tests for VSTn with register post-index are broken
1041277694 ARM: BLX LR instruction broken in ARM mode
1042277780 ARM: VMOV.F32 (immediate) instruction is broken
1043278057 fuse filesystem syscall deadlocks
1044278078 Unimplemented syscall 280 on ppc32
1045278349 F_GETPIPE_SZ and F_SETPIPE_SZ Linux fcntl commands
1046278454 VALGRIND_STACK_DEREGISTER has wrong output type
1047278502 == 275284 (Valgrind confuses memcpy() and memmove())
sewardj3bbaf482011-10-24 08:54:56 +00001048278892 gdbsrv: factorize gdb version handling, fix doc and typos
sewardj520501d2011-10-23 09:09:54 +00001049279027 Support for MVCL and CLCL instruction
1050279027 s390x: Provide support for CLCL and MVCL instructions
1051279062 Remove a redundant check in the insn selector for ppc.
1052279071 JDK creates PTEST with redundant REX.W prefix
1053279212 gdbsrv: add monitor cmd v.info scheduler.
1054279378 exp-ptrcheck: the 'impossible' happened on mkfifo call
1055279698 memcheck discards valid-bits for packuswb
1056279795 memcheck reports uninitialised values for mincore on amd64
1057279994 Add support for IBM Power ISA 2.06 -- stage 3
1058280083 mempolicy syscall check errors
1059280290 vex amd64->IR: 0x66 0xF 0x38 0x28 0xC1 0x66 0xF 0x6F
1060280710 s390x: config files for nightly builds
1061280757 /tmp dir still used by valgrind even if TMPDIR is specified
sewardj3bbaf482011-10-24 08:54:56 +00001062280965 Valgrind breaks fcntl locks when program does mmap
sewardj520501d2011-10-23 09:09:54 +00001063281138 WARNING: unhandled syscall: 340
1064281241 == 275168 (valgrind useless on Macos 10.7.1 Lion)
1065281304 == 275168 (Darwin: dyld "cannot load inserted library")
1066281305 == 275168 (unhandled syscall: unix:357 on Darwin 11.1)
1067281468 s390x: handle do_clone and gcc clones in call traces
1068281488 ARM: VFP register corruption
1069281828 == 275284 (false memmove warning: "Source and destination overlap")
1070281883 s390x: Fix system call wrapper for "clone".
1071282105 generalise 'reclaimSuperBlock' to also reclaim splittable superblock
1072282112 Unhandled instruction bytes: 0xDE 0xD9 0x9B 0xDF (fcompp)
1073282238 SLES10: make check fails
1074282979 strcasestr needs replacement with recent(>=2.12) glibc
1075283000 vex amd64->IR: 0x66 0xF 0x3A 0xA 0xC0 0x9 0xF3 0xF
1076283243 Regression in ppc64 memcheck tests
1077283325 == 267997 (Darwin: V segfaults on startup when built with Xcode 4.0)
1078283427 re-connect epoll_pwait syscall on ARM linux
1079283600 gdbsrv: android: port vgdb.c
1080283709 none/tests/faultstatus needs to account for page size
1081284305 filter_gdb needs enhancement to work on ppc64
sewardjc2f1d962011-10-25 09:05:53 +00001082284384 clang 3.1 -Wunused-value warnings in valgrind.h, memcheck.h
sewardj520501d2011-10-23 09:09:54 +00001083284472 Thumb2 ROR.W encoding T2 not implemented
sewardj3bbaf482011-10-24 08:54:56 +00001084284621 XML-escape process command line in XML output
sewardj520501d2011-10-23 09:09:54 +00001085n-i-bz cachegrind/callgrind: handle CPUID information for Core iX Intel CPUs
1086 that have non-power-of-2 sizes (also AMDs)
1087n-i-bz don't be spooked by libraries mashed by elfhack
1088n-i-bz don't be spooked by libxul.so linked with gold
sewardj3bbaf482011-10-24 08:54:56 +00001089n-i-bz improved checking for VALGRIND_CHECK_MEM_IS_DEFINED
sewardj7a9ff4c2011-06-13 13:36:59 +00001090
sewardj62b0d402011-11-09 23:42:41 +00001091(3.7.0-TEST1: 27 October 2011, vex r2228, valgrind r12245)
1092(3.7.0.RC1: 1 November 2011, vex r2231, valgrind r12257)
1093(3.7.0: 5 November 2011, vex r2231, valgrind r12258)
sewardj469b8362011-10-23 10:05:47 +00001094
florian0c865b42011-09-30 01:27:26 +00001095
njne5930da2010-12-17 00:45:19 +00001096
sewardj4fd57292011-02-17 12:20:19 +00001097Release 3.6.1 (16 February 2011)
1098~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10993.6.1 is a bug fix release. It adds support for some SSE4
1100instructions that were omitted in 3.6.0 due to lack of time. Initial
1101support for glibc-2.13 has been added. A number of bugs causing
1102crashing or assertion failures have been fixed.
njne5930da2010-12-17 00:45:19 +00001103
sewardj4fd57292011-02-17 12:20:19 +00001104The following bugs have been fixed or resolved. Note that "n-i-bz"
1105stands for "not in bugzilla" -- that is, a bug that was reported to us
1106but never got a bugzilla entry. We encourage you to file bugs in
1107bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
1108mailing the developers (or mailing lists) directly -- bugs that are
1109not entered into bugzilla tend to get forgotten about or ignored.
bart8e0d2c12011-02-04 19:07:11 +00001110
sewardj4fd57292011-02-17 12:20:19 +00001111To see details of a given bug, visit
1112https://bugs.kde.org/show_bug.cgi?id=XXXXXX
1113where XXXXXX is the bug number as listed below.
1114
1115188572 Valgrind on Mac should suppress setenv() mem leak
1116194402 vex amd64->IR: 0x48 0xF 0xAE 0x4 (proper FX{SAVE,RSTOR} support)
1117210481 vex amd64->IR: Assertion `sz == 2 || sz == 4' failed (REX.W POPQ)
1118246152 callgrind internal error after pthread_cancel on 32 Bit Linux
1119250038 ppc64: Altivec LVSR and LVSL instructions fail their regtest
1120254420 memory pool tracking broken
1121254957 Test code failing to compile due to changes in memcheck.h
1122255009 helgrind/drd: crash on chmod with invalid parameter
1123255130 readdwarf3.c parse_type_DIE confused by GNAT Ada types
1124255355 helgrind/drd: crash on threaded programs doing fork
1125255358 == 255355
1126255418 (SSE4.x) rint call compiled with ICC
1127255822 --gen-suppressions can create invalid files: "too many callers [...]"
1128255888 closing valgrindoutput tag outputted to log-stream on error
1129255963 (SSE4.x) vex amd64->IR: 0x66 0xF 0x3A 0x9 0xDB 0x0 (ROUNDPD)
1130255966 Slowness when using mempool annotations
1131256387 vex x86->IR: 0xD4 0xA 0x2 0x7 (AAD and AAM)
1132256600 super-optimized strcasecmp() false positive
1133256669 vex amd64->IR: Unhandled LOOPNEL insn on amd64
1134256968 (SSE4.x) vex amd64->IR: 0x66 0xF 0x38 0x10 0xD3 0x66 (BLENDVPx)
1135257011 (SSE4.x) vex amd64->IR: 0x66 0xF 0x3A 0xE 0xFD 0xA0 (PBLENDW)
1136257063 (SSE4.x) vex amd64->IR: 0x66 0xF 0x3A 0x8 0xC0 0x0 (ROUNDPS)
1137257276 Missing case in memcheck --track-origins=yes
1138258870 (SSE4.x) Add support for EXTRACTPS SSE 4.1 instruction
1139261966 (SSE4.x) support for CRC32B and CRC32Q is lacking (also CRC32{W,L})
1140262985 VEX regression in valgrind 3.6.0 in handling PowerPC VMX
1141262995 (SSE4.x) crash when trying to valgrind gcc-snapshot (PCMPxSTRx $0)
1142263099 callgrind_annotate counts Ir improperly [...]
1143263877 undefined coprocessor instruction on ARMv7
1144265964 configure FAIL with glibc-2.13
1145n-i-bz Fix compile error w/ icc-12.x in guest_arm_toIR.c
1146n-i-bz Docs: fix bogus descriptions for VALGRIND_CREATE_BLOCK et al
1147n-i-bz Massif: don't assert on shmat() with --pages-as-heap=yes
1148n-i-bz Bug fixes and major speedups for the exp-DHAT space profiler
1149n-i-bz DRD: disable --free-is-write due to implementation difficulties
1150
1151(3.6.1: 16 February 2011, vex r2103, valgrind r11561).
1152
bart8e0d2c12011-02-04 19:07:11 +00001153
1154
sewardj695f13a2010-10-20 17:07:01 +00001155Release 3.6.0 (21 October 2010)
sewardj18a08922010-10-14 00:26:42 +00001156~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
11573.6.0 is a feature release with many significant improvements and the
1158usual collection of bug fixes.
sewardj00d9d1e2010-10-13 14:05:30 +00001159
sewardj18a08922010-10-14 00:26:42 +00001160This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux,
1161PPC64/Linux, X86/Darwin and AMD64/Darwin. Support for recent distros
1162and toolchain components (glibc 2.12, gcc 4.5, OSX 10.6) has been added.
sewardj00d9d1e2010-10-13 14:05:30 +00001163
sewardj18a08922010-10-14 00:26:42 +00001164 -------------------------
sewardj00d9d1e2010-10-13 14:05:30 +00001165
sewardj18a08922010-10-14 00:26:42 +00001166Here are some highlights. Details are shown further down:
njn9b919b62010-02-28 23:41:07 +00001167
sewardj18a08922010-10-14 00:26:42 +00001168* Support for ARM/Linux.
njn9b919b62010-02-28 23:41:07 +00001169
sewardj18a08922010-10-14 00:26:42 +00001170* Support for recent Linux distros: Ubuntu 10.10 and Fedora 14.
1171
1172* Support for Mac OS X 10.6, both 32- and 64-bit executables.
1173
1174* Support for the SSE4.2 instruction set.
1175
1176* Enhancements to the Callgrind profiler, including the ability to
1177 handle CPUs with three levels of cache.
1178
1179* A new experimental heap profiler, DHAT.
1180
sewardj695f13a2010-10-20 17:07:01 +00001181* A huge number of bug fixes and small enhancements.
sewardj18a08922010-10-14 00:26:42 +00001182
1183 -------------------------
1184
1185Here are details of the above changes, together with descriptions of
1186many other changes, and a list of fixed bugs.
1187
1188* ================== PLATFORM CHANGES =================
1189
1190* Support for ARM/Linux. Valgrind now runs on ARMv7 capable CPUs
1191 running Linux. It is known to work on Ubuntu 10.04, Ubuntu 10.10,
1192 and Maemo 5, so you can run Valgrind on your Nokia N900 if you want.
1193
1194 This requires a CPU capable of running the ARMv7-A instruction set
1195 (Cortex A5, A8 and A9). Valgrind provides fairly complete coverage
1196 of the user space instruction set, including ARM and Thumb integer
1197 code, VFPv3, NEON and V6 media instructions. The Memcheck,
1198 Cachegrind and Massif tools work properly; other tools work to
1199 varying degrees.
1200
1201* Support for recent Linux distros (Ubuntu 10.10 and Fedora 14), along
1202 with support for recent releases of the underlying toolchain
1203 components, notably gcc-4.5 and glibc-2.12.
1204
1205* Support for Mac OS X 10.6, both 32- and 64-bit executables. 64-bit
1206 support also works much better on OS X 10.5, and is as solid as
1207 32-bit support now.
1208
1209* Support for the SSE4.2 instruction set. SSE4.2 is supported in
1210 64-bit mode. In 32-bit mode, support is only available up to and
1211 including SSSE3. Some exceptions: SSE4.2 AES instructions are not
1212 supported in 64-bit mode, and 32-bit mode does in fact support the
sewardj695f13a2010-10-20 17:07:01 +00001213 bare minimum SSE4 instructions to needed to run programs on Mac OS X
sewardj18a08922010-10-14 00:26:42 +00001214 10.6 on 32-bit targets.
1215
1216* Support for IBM POWER6 cpus has been improved. The Power ISA up to
1217 and including version 2.05 is supported.
1218
1219* ==================== TOOL CHANGES ====================
1220
1221* Cachegrind has a new processing script, cg_diff, which finds the
1222 difference between two profiles. It's very useful for evaluating
1223 the performance effects of a change in a program.
njn69d495d2010-06-30 05:23:34 +00001224
1225 Related to this change, the meaning of cg_annotate's (rarely-used)
sewardj18a08922010-10-14 00:26:42 +00001226 --threshold option has changed; this is unlikely to affect many
1227 people, if you do use it please see the user manual for details.
njn9b919b62010-02-28 23:41:07 +00001228
sewardj18a08922010-10-14 00:26:42 +00001229* Callgrind now can do branch prediction simulation, similar to
1230 Cachegrind. In addition, it optionally can count the number of
1231 executed global bus events. Both can be used for a better
1232 approximation of a "Cycle Estimation" as derived event (you need to
1233 update the event formula in KCachegrind yourself).
njn2d853a12010-10-06 22:46:31 +00001234
sewardj18a08922010-10-14 00:26:42 +00001235* Cachegrind and Callgrind now refer to the LL (last-level) cache
1236 rather than the L2 cache. This is to accommodate machines with
1237 three levels of caches -- if Cachegrind/Callgrind auto-detects the
1238 cache configuration of such a machine it will run the simulation as
1239 if the L2 cache isn't present. This means the results are less
1240 likely to match the true result for the machine, but
1241 Cachegrind/Callgrind's results are already only approximate, and
1242 should not be considered authoritative. The results are still
1243 useful for giving a general idea about a program's locality.
njn2d853a12010-10-06 22:46:31 +00001244
sewardj695f13a2010-10-20 17:07:01 +00001245* Massif has a new option, --pages-as-heap, which is disabled by
sewardj18a08922010-10-14 00:26:42 +00001246 default. When enabled, instead of tracking allocations at the level
1247 of heap blocks (as allocated with malloc/new/new[]), it instead
1248 tracks memory allocations at the level of memory pages (as mapped by
1249 mmap, brk, etc). Each mapped page is treated as its own block.
1250 Interpreting the page-level output is harder than the heap-level
1251 output, but this option is useful if you want to account for every
1252 byte of memory used by a program.
njne323a6b2010-07-01 02:35:03 +00001253
sewardj18a08922010-10-14 00:26:42 +00001254* DRD has two new command-line options: --free-is-write and
1255 --trace-alloc. The former allows to detect reading from already freed
1256 memory, and the latter allows tracing of all memory allocations and
bart5cf4c392010-10-10 18:54:44 +00001257 deallocations.
1258
sewardj18a08922010-10-14 00:26:42 +00001259* DRD has several new annotations. Custom barrier implementations can
1260 now be annotated, as well as benign races on static variables.
bart5cf4c392010-10-10 18:54:44 +00001261
sewardj18a08922010-10-14 00:26:42 +00001262* DRD's happens before / happens after annotations have been made more
1263 powerful, so that they can now also be used to annotate e.g. a smart
bart5cf4c392010-10-10 18:54:44 +00001264 pointer implementation.
1265
sewardj18a08922010-10-14 00:26:42 +00001266* Helgrind's annotation set has also been drastically improved, so as
sewardj695f13a2010-10-20 17:07:01 +00001267 to provide to users a general set of annotations to describe locks,
sewardj18a08922010-10-14 00:26:42 +00001268 semaphores, barriers and condition variables. Annotations to
1269 describe thread-safe reference counted heap objects have also been
1270 added.
1271
1272* Memcheck has a new command-line option, --show-possibly-lost, which
1273 is enabled by default. When disabled, the leak detector will not
1274 show possibly-lost blocks.
1275
1276* A new experimental heap profiler, DHAT (Dynamic Heap Analysis Tool),
1277 has been added. DHAT keeps track of allocated heap blocks, and also
1278 inspects every memory reference to see which block (if any) is being
1279 accessed. This gives a lot of insight into block lifetimes,
1280 utilisation, turnover, liveness, and the location of hot and cold
1281 fields. You can use DHAT to do hot-field profiling.
1282
1283* ==================== OTHER CHANGES ====================
1284
1285* Improved support for unfriendly self-modifying code: the extra
1286 overhead incurred by --smc-check=all has been reduced by
1287 approximately a factor of 5 as compared with 3.5.0.
1288
1289* Ability to show directory names for source files in error messages.
sewardj695f13a2010-10-20 17:07:01 +00001290 This is combined with a flexible mechanism for specifying which
1291 parts of the paths should be shown. This is enabled by the new flag
1292 --fullpath-after.
sewardj18a08922010-10-14 00:26:42 +00001293
1294* A new flag, --require-text-symbol, which will stop the run if a
1295 specified symbol is not found it a given shared object when it is
sewardj695f13a2010-10-20 17:07:01 +00001296 loaded into the process. This makes advanced working with function
1297 intercepting and wrapping safer and more reliable.
sewardj18a08922010-10-14 00:26:42 +00001298
sewardj695f13a2010-10-20 17:07:01 +00001299* Improved support for the Valkyrie GUI, version 2.0.0. GUI output
1300 and control of Valgrind is now available for the tools Memcheck and
1301 Helgrind. XML output from Valgrind is available for Memcheck,
1302 Helgrind and exp-Ptrcheck.
sewardj18a08922010-10-14 00:26:42 +00001303
1304* More reliable stack unwinding on amd64-linux, particularly in the
1305 presence of function wrappers, and with gcc-4.5 compiled code.
1306
1307* Modest scalability (performance improvements) for massive
1308 long-running applications, particularly for those with huge amounts
1309 of code.
1310
1311* Support for analyzing programs running under Wine with has been
1312 improved. The header files <valgrind/valgrind.h>,
1313 <valgrind/memcheck.h> and <valgrind/drd.h> can now be used in
1314 Windows-programs compiled with MinGW or one of the Microsoft Visual
1315 Studio compilers.
1316
1317* A rare but serious error in the 64-bit x86 CPU simulation was fixed.
1318 The 32-bit simulator was not affected. This did not occur often,
1319 but when it did would usually crash the program under test.
1320 Bug 245925.
1321
1322* A large number of bugs were fixed. These are shown below.
1323
1324* A number of bugs were investigated, and were candidates for fixing,
1325 but are not fixed in 3.6.0, due to lack of developer time. They may
1326 get fixed in later releases. They are:
1327
1328 194402 vex amd64->IR: 0x48 0xF 0xAE 0x4 0x24 0x49 (FXSAVE64)
1329 212419 false positive "lock order violated" (A+B vs A)
1330 213685 Undefined value propagates past dependency breaking instruction
1331 216837 Incorrect instrumentation of NSOperationQueue on Darwin
1332 237920 valgrind segfault on fork failure
1333 242137 support for code compiled by LLVM-2.8
1334 242423 Another unknown Intel cache config value
1335 243232 Inconsistent Lock Orderings report with trylock
1336 243483 ppc: callgrind triggers VEX assertion failure
1337 243935 Helgrind: implementation of ANNOTATE_HAPPENS_BEFORE() is wrong
1338 244677 Helgrind crash hg_main.c:616 (map_threads_lookup): Assertion
1339 'thr' failed.
1340 246152 callgrind internal error after pthread_cancel on 32 Bit Linux
1341 249435 Analyzing wine programs with callgrind triggers a crash
1342 250038 ppc64: Altivec lvsr and lvsl instructions fail their regtest
1343 250065 Handling large allocations
1344 250101 huge "free" memory usage due to m_mallocfree.c
1345 "superblocks fragmentation"
1346 251569 vex amd64->IR: 0xF 0x1 0xF9 0x8B 0x4C 0x24 (RDTSCP)
sewardj695f13a2010-10-20 17:07:01 +00001347 252091 Callgrind on ARM does not detect function returns correctly
1348 252600 [PATCH] Allow lhs to be a pointer for shl/shr
1349 254420 memory pool tracking broken
sewardj18a08922010-10-14 00:26:42 +00001350 n-i-bz support for adding symbols for JIT generated code
1351
1352
1353The following bugs have been fixed or resolved. Note that "n-i-bz"
1354stands for "not in bugzilla" -- that is, a bug that was reported to us
1355but never got a bugzilla entry. We encourage you to file bugs in
1356bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
1357mailing the developers (or mailing lists) directly -- bugs that are
1358not entered into bugzilla tend to get forgotten about or ignored.
1359
1360To see details of a given bug, visit
1361https://bugs.kde.org/show_bug.cgi?id=XXXXXX
1362where XXXXXX is the bug number as listed below.
1363
1364135264 dcbzl instruction missing
1365142688 == 250799
1366153699 Valgrind should report unaligned reads with movdqa
1367180217 == 212335
1368190429 Valgrind reports lost of errors in ld.so
1369 with x86_64 2.9.90 glibc
1370197266 valgrind appears to choke on the xmms instruction
1371 "roundsd" on x86_64
1372197988 Crash when demangling very large symbol names
1373202315 unhandled syscall: 332 (inotify_init1)
1374203256 Add page-level profiling to Massif
1375205093 dsymutil=yes needs quotes, locking (partial fix)
1376205241 Snow Leopard 10.6 support (partial fix)
1377206600 Leak checker fails to upgrade indirect blocks when their
1378 parent becomes reachable
1379210935 port valgrind.h (not valgrind) to win32 so apps run under
1380 wine can make client requests
1381211410 vex amd64->IR: 0x15 0xFF 0xFF 0x0 0x0 0x89
1382 within Linux ip-stack checksum functions
1383212335 unhandled instruction bytes: 0xF3 0xF 0xBD 0xC0
1384 (lzcnt %eax,%eax)
1385213685 Undefined value propagates past dependency breaking instruction
1386 (partial fix)
1387215914 Valgrind inserts bogus empty environment variable
1388217863 == 197988
1389219538 adjtimex syscall wrapper wrong in readonly adjtime mode
1390222545 shmat fails under valgind on some arm targets
1391222560 ARM NEON support
1392230407 == 202315
1393231076 == 202315
1394232509 Docs build fails with formatting inside <title></title> elements
1395232793 == 202315
1396235642 [PATCH] syswrap-linux.c: support evdev EVIOCG* ioctls
1397236546 vex x86->IR: 0x66 0xF 0x3A 0xA
1398237202 vex amd64->IR: 0xF3 0xF 0xB8 0xC0 0x49 0x3B
1399237371 better support for VALGRIND_MALLOCLIKE_BLOCK
1400237485 symlink (syscall 57) is not supported on Mac OS
1401237723 sysno == 101 exp-ptrcheck: the 'impossible' happened:
1402 unhandled syscall
1403238208 is_just_below_ESP doesn't take into account red-zone
1404238345 valgrind passes wrong $0 when executing a shell script
1405238679 mq_timedreceive syscall doesn't flag the reception buffer
1406 as "defined"
1407238696 fcntl command F_DUPFD_CLOEXEC not supported
1408238713 unhandled instruction bytes: 0x66 0xF 0x29 0xC6
1409238713 unhandled instruction bytes: 0x66 0xF 0x29 0xC6
1410238745 3.5.0 Make fails on PPC Altivec opcodes, though configure
1411 says "Altivec off"
1412239992 vex amd64->IR: 0x48 0xF 0xC4 0xC1 0x0 0x48
1413240488 == 197988
1414240639 == 212335
1415241377 == 236546
1416241903 == 202315
1417241920 == 212335
1418242606 unhandled syscall: setegid (in Ptrcheck)
1419242814 Helgrind "Impossible has happened" during
1420 QApplication::initInstance();
1421243064 Valgrind attempting to read debug information from iso
1422243270 Make stack unwinding in Valgrind wrappers more reliable
1423243884 exp-ptrcheck: the 'impossible happened: unhandled syscall
1424 sysno = 277 (mq_open)
1425244009 exp-ptrcheck unknown syscalls in analyzing lighttpd
1426244493 ARM VFP d16-d31 registers support
1427244670 add support for audit_session_self syscall on Mac OS 10.6
1428244921 The xml report of helgrind tool is not well format
1429244923 In the xml report file, the <preamble> not escape the
1430 xml char, eg '<','&','>'
1431245535 print full path names in plain text reports
1432245925 x86-64 red zone handling problem
1433246258 Valgrind not catching integer underruns + new [] s
1434246311 reg/reg cmpxchg doesn't work on amd64
1435246549 unhandled syscall unix:277 while testing 32-bit Darwin app
1436246888 Improve Makefile.vex.am
1437247510 [OS X 10.6] Memcheck reports unaddressable bytes passed
1438 to [f]chmod_extended
1439247526 IBM POWER6 (ISA 2.05) support is incomplete
1440247561 Some leak testcases fails due to reachable addresses in
1441 caller save regs
1442247875 sizeofIRType to handle Ity_I128
1443247894 [PATCH] unhandled syscall sys_readahead
1444247980 Doesn't honor CFLAGS passed to configure
1445248373 darwin10.supp is empty in the trunk
1446248822 Linux FIBMAP ioctl has int parameter instead of long
1447248893 [PATCH] make readdwarf.c big endianess safe to enable
1448 unwinding on big endian systems
1449249224 Syscall 336 not supported (SYS_proc_info)
1450249359 == 245535
1451249775 Incorrect scheme for detecting NEON capabilities of host CPU
1452249943 jni JVM init fails when using valgrind
1453249991 Valgrind incorrectly declares AESKEYGENASSIST support
1454 since VEX r2011
1455249996 linux/arm: unhandled syscall: 181 (__NR_pwrite64)
1456250799 frexp$fenv_access_off function generates SIGILL
1457250998 vex x86->IR: unhandled instruction bytes: 0x66 0x66 0x66 0x2E
1458251251 support pclmulqdq insn
1459251362 valgrind: ARM: attach to debugger either fails or provokes
1460 kernel oops
1461251674 Unhandled syscall 294
sewardj695f13a2010-10-20 17:07:01 +00001462251818 == 254550
sewardj18a08922010-10-14 00:26:42 +00001463
sewardj695f13a2010-10-20 17:07:01 +00001464254257 Add support for debugfiles found by build-id
1465254550 [PATCH] Implement DW_ATE_UTF (DWARF4)
1466254646 Wrapped functions cause stack misalignment on OS X
1467 (and possibly Linux)
1468254556 ARM: valgrinding anything fails with SIGSEGV for 0xFFFF0FA0
1469
sewardje07c2b52010-10-22 06:44:59 +00001470(3.6.0: 21 October 2010, vex r2068, valgrind r11471).
sewardj18a08922010-10-14 00:26:42 +00001471
1472
njn9b919b62010-02-28 23:41:07 +00001473
sewardj6bbe0242009-08-19 11:38:54 +00001474Release 3.5.0 (19 August 2009)
1475~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sewardj570e2442009-08-14 13:42:41 +000014763.5.0 is a feature release with many significant improvements and the
1477usual collection of bug fixes. The main improvement is that Valgrind
1478now works on Mac OS X.
1479
1480This release supports X86/Linux, AMD64/Linux, PPC32/Linux, PPC64/Linux
1481and X86/Darwin. Support for recent distros and toolchain components
1482(glibc 2.10, gcc 4.5) has been added.
1483
1484 -------------------------
1485
1486Here is a short summary of the changes. Details are shown further
1487down:
1488
njnf95c30b2009-08-16 00:20:58 +00001489* Support for Mac OS X (10.5.x).
sewardj570e2442009-08-14 13:42:41 +00001490
njn78b7bb32009-08-14 22:34:30 +00001491* Improvements and simplifications to Memcheck's leak checker.
sewardj570e2442009-08-14 13:42:41 +00001492
njn78b7bb32009-08-14 22:34:30 +00001493* Clarification and simplifications in various aspects of Valgrind's
1494 text output.
sewardj570e2442009-08-14 13:42:41 +00001495
njn78b7bb32009-08-14 22:34:30 +00001496* XML output for Helgrind and Ptrcheck.
sewardj570e2442009-08-14 13:42:41 +00001497
njn78b7bb32009-08-14 22:34:30 +00001498* Performance and stability improvements for Helgrind and DRD.
sewardj570e2442009-08-14 13:42:41 +00001499
njn78b7bb32009-08-14 22:34:30 +00001500* Genuinely atomic support for x86/amd64/ppc atomic instructions.
sewardj570e2442009-08-14 13:42:41 +00001501
njn78b7bb32009-08-14 22:34:30 +00001502* A new experimental tool, BBV, useful for computer architecture
1503 research.
sewardj570e2442009-08-14 13:42:41 +00001504
njn78b7bb32009-08-14 22:34:30 +00001505* Improved Wine support, including ability to read Windows PDB
1506 debuginfo.
sewardj570e2442009-08-14 13:42:41 +00001507
1508 -------------------------
1509
sewardj9176c862009-08-18 13:47:31 +00001510Here are details of the above changes, followed by descriptions of
1511many other minor changes, and a list of fixed bugs.
sewardj570e2442009-08-14 13:42:41 +00001512
1513
1514* Valgrind now runs on Mac OS X. (Note that Mac OS X is sometimes
njnf95c30b2009-08-16 00:20:58 +00001515 called "Darwin" because that is the name of the OS core, which is the
1516 level that Valgrind works at.)
njnf76d27a2009-05-28 01:53:07 +00001517
njnf95c30b2009-08-16 00:20:58 +00001518 Supported systems:
njn6eccab92009-08-14 02:41:37 +00001519
njnf95c30b2009-08-16 00:20:58 +00001520 - It requires OS 10.5.x (Leopard). Porting to 10.4.x is not planned
1521 because it would require work and 10.4 is only becoming less common.
njn6eccab92009-08-14 02:41:37 +00001522
njnf95c30b2009-08-16 00:20:58 +00001523 - 32-bit programs on x86 and AMD64 (a.k.a x86-64) machines are supported
1524 fairly well. For 10.5.x, 32-bit programs are the default even on
1525 64-bit machines, so it handles most current programs.
1526
1527 - 64-bit programs on x86 and AMD64 (a.k.a x86-64) machines are not
1528 officially supported, but simple programs at least will probably work.
1529 However, start-up is slow.
njn6eccab92009-08-14 02:41:37 +00001530
sewardj570e2442009-08-14 13:42:41 +00001531 - PowerPC machines are not supported.
njn6eccab92009-08-14 02:41:37 +00001532
njnc6ab7b62009-06-04 22:47:21 +00001533 Things that don't work:
njn6eccab92009-08-14 02:41:37 +00001534
1535 - The Ptrcheck tool.
1536
1537 - Objective-C garbage collection.
1538
1539 - --db-attach=yes.
1540
sewardj570e2442009-08-14 13:42:41 +00001541 - If you have Rogue Amoeba's "Instant Hijack" program installed,
1542 Valgrind will fail with a SIGTRAP at start-up. See
1543 https://bugs.kde.org/show_bug.cgi?id=193917 for details and a
1544 simple work-around.
njnc6ab7b62009-06-04 22:47:21 +00001545
njn97db7612009-08-04 02:32:55 +00001546 Usage notes:
njn6eccab92009-08-14 02:41:37 +00001547
sewardj570e2442009-08-14 13:42:41 +00001548 - You will likely find --dsymutil=yes a useful option, as error
1549 messages may be imprecise without it.
njn6eccab92009-08-14 02:41:37 +00001550
sewardj570e2442009-08-14 13:42:41 +00001551 - Mac OS X support is new and therefore will be less robust than the
njn1205e022009-08-14 02:12:54 +00001552 Linux support. Please report any bugs you find.
njn97db7612009-08-04 02:32:55 +00001553
sewardj570e2442009-08-14 13:42:41 +00001554 - Threaded programs may run more slowly than on Linux.
1555
njnc6ab7b62009-06-04 22:47:21 +00001556 Many thanks to Greg Parker for developing this port over several years.
1557
sewardj570e2442009-08-14 13:42:41 +00001558
1559* Memcheck's leak checker has been improved.
1560
1561 - The results for --leak-check=summary now match the summary results
1562 for --leak-check=full. Previously they could differ because
1563 --leak-check=summary counted "indirectly lost" blocks and
1564 "suppressed" blocks as "definitely lost".
1565
1566 - Blocks that are only reachable via at least one interior-pointer,
1567 but are directly pointed to by a start-pointer, were previously
1568 marked as "still reachable". They are now correctly marked as
1569 "possibly lost".
1570
1571 - The default value for the --leak-resolution option has been
1572 changed from "low" to "high". In general, this means that more
1573 leak reports will be produced, but each leak report will describe
1574 fewer leaked blocks.
1575
1576 - With --leak-check=full, "definitely lost" and "possibly lost"
1577 leaks are now considered as proper errors, ie. they are counted
1578 for the "ERROR SUMMARY" and affect the behaviour of
1579 --error-exitcode. These leaks are not counted as errors if
1580 --leak-check=summary is specified, however.
1581
1582 - Documentation for the leak checker has been improved.
1583
njnf76d27a2009-05-28 01:53:07 +00001584
njn6eccab92009-08-14 02:41:37 +00001585* Various aspects of Valgrind's text output have changed.
njndbebecc2009-07-14 01:39:54 +00001586
njn6eccab92009-08-14 02:41:37 +00001587 - Valgrind's start-up message has changed. It is shorter but also
1588 includes the command being run, which makes it easier to use
1589 --trace-children=yes. An example:
njn53162bf2009-07-29 23:34:49 +00001590
njn6eccab92009-08-14 02:41:37 +00001591 - Valgrind's shut-down messages have also changed. This is most
sewardj570e2442009-08-14 13:42:41 +00001592 noticeable with Memcheck, where the leak summary now occurs before
1593 the error summary. This change was necessary to allow leaks to be
1594 counted as proper errors (see the description of the leak checker
1595 changes above for more details). This was also necessary to fix a
1596 longstanding bug in which uses of suppressions against leaks were
1597 not "counted", leading to difficulties in maintaining suppression
sewardj783e9d62009-08-19 22:18:35 +00001598 files (see https://bugs.kde.org/show_bug.cgi?id=186790).
njn6eccab92009-08-14 02:41:37 +00001599
sewardj570e2442009-08-14 13:42:41 +00001600 - Behavior of -v has changed. In previous versions, -v printed out
1601 a mixture of marginally-user-useful information, and tool/core
1602 statistics. The statistics printing has now been moved to its own
1603 flag, --stats=yes. This means -v is less verbose and more likely
1604 to convey useful end-user information.
njn6eccab92009-08-14 02:41:37 +00001605
sewardj570e2442009-08-14 13:42:41 +00001606 - The format of some (non-XML) stack trace entries has changed a
1607 little. Previously there were six possible forms:
njn6eccab92009-08-14 02:41:37 +00001608
1609 0x80483BF: really (a.c:20)
1610 0x80483BF: really (in /foo/a.out)
1611 0x80483BF: really
1612 0x80483BF: (within /foo/a.out)
1613 0x80483BF: ??? (a.c:20)
1614 0x80483BF: ???
1615
sewardj570e2442009-08-14 13:42:41 +00001616 The third and fourth of these forms have been made more consistent
1617 with the others. The six possible forms are now:
njn6eccab92009-08-14 02:41:37 +00001618
1619 0x80483BF: really (a.c:20)
1620 0x80483BF: really (in /foo/a.out)
1621 0x80483BF: really (in ???)
1622 0x80483BF: ??? (in /foo/a.out)
1623 0x80483BF: ??? (a.c:20)
1624 0x80483BF: ???
1625
sewardj570e2442009-08-14 13:42:41 +00001626 Stack traces produced when --xml=yes is specified are different
1627 and unchanged.
njn6eccab92009-08-14 02:41:37 +00001628
njn6eccab92009-08-14 02:41:37 +00001629
sewardj570e2442009-08-14 13:42:41 +00001630* Helgrind and Ptrcheck now support XML output, so they can be used
1631 from GUI tools. Also, the XML output mechanism has been
1632 overhauled.
njn6eccab92009-08-14 02:41:37 +00001633
njn78b7bb32009-08-14 22:34:30 +00001634 - The XML format has been overhauled and generalised, so it is more
sewardj570e2442009-08-14 13:42:41 +00001635 suitable for error reporting tools in general. The Memcheck
1636 specific aspects of it have been removed. The new format, which
1637 is an evolution of the old format, is described in
1638 docs/internals/xml-output-protocol4.txt.
njn6eccab92009-08-14 02:41:37 +00001639
sewardj570e2442009-08-14 13:42:41 +00001640 - Memcheck has been updated to use the new format.
njn6eccab92009-08-14 02:41:37 +00001641
sewardj570e2442009-08-14 13:42:41 +00001642 - Helgrind and Ptrcheck are now able to emit output in this format.
njn6eccab92009-08-14 02:41:37 +00001643
sewardj570e2442009-08-14 13:42:41 +00001644 - The XML output mechanism has been overhauled. XML is now output
1645 to its own file descriptor, which means that:
njn6eccab92009-08-14 02:41:37 +00001646
sewardj570e2442009-08-14 13:42:41 +00001647 * Valgrind can output text and XML independently.
njnb4e06872009-08-10 05:11:43 +00001648
sewardj570e2442009-08-14 13:42:41 +00001649 * The longstanding problem of XML output being corrupted by
1650 unexpected un-tagged text messages is solved.
njn8df80b22009-03-02 05:11:06 +00001651
sewardj570e2442009-08-14 13:42:41 +00001652 As before, the destination for text output is specified using
1653 --log-file=, --log-fd= or --log-socket=.
njnd55f0d92009-08-03 01:38:56 +00001654
sewardj570e2442009-08-14 13:42:41 +00001655 As before, XML output for a tool is enabled using --xml=yes.
njnc6ab7b62009-06-04 22:47:21 +00001656
sewardj570e2442009-08-14 13:42:41 +00001657 Because there's a new XML output channel, the XML output
1658 destination is now specified by --xml-file=, --xml-fd= or
1659 --xml-socket=.
njn6eccab92009-08-14 02:41:37 +00001660
sewardj570e2442009-08-14 13:42:41 +00001661 Initial feedback has shown this causes some confusion. To
1662 clarify, the two envisaged usage scenarios are:
njn6eccab92009-08-14 02:41:37 +00001663
sewardj570e2442009-08-14 13:42:41 +00001664 (1) Normal text output. In this case, do not specify --xml=yes
1665 nor any of --xml-file=, --xml-fd= or --xml-socket=.
1666
1667 (2) XML output. In this case, specify --xml=yes, and one of
1668 --xml-file=, --xml-fd= or --xml-socket= to select the XML
1669 destination, one of --log-file=, --log-fd= or --log-socket=
1670 to select the destination for any remaining text messages,
1671 and, importantly, -q.
1672
1673 -q makes Valgrind completely silent on the text channel,
1674 except in the case of critical failures, such as Valgrind
1675 itself segfaulting, or failing to read debugging information.
1676 Hence, in this scenario, it suffices to check whether or not
1677 any output appeared on the text channel. If yes, then it is
1678 likely to be a critical error which should be brought to the
1679 attention of the user. If no (the text channel produced no
1680 output) then it can be assumed that the run was successful.
1681
1682 This allows GUIs to make the critical distinction they need to
1683 make (did the run fail or not?) without having to search or
1684 filter the text output channel in any way.
1685
1686 It is also recommended to use --child-silent-after-fork=yes in
1687 scenario (2).
1688
1689
1690* Improvements and changes in Helgrind:
1691
1692 - XML output, as described above
1693
1694 - Checks for consistent association between pthread condition
1695 variables and their associated mutexes are now performed.
1696
1697 - pthread_spinlock functions are supported.
1698
1699 - Modest performance improvements.
1700
1701 - Initial (skeletal) support for describing the behaviour of
1702 non-POSIX synchronisation objects through ThreadSanitizer
1703 compatible ANNOTATE_* macros.
1704
1705 - More controllable tradeoffs between performance and the level of
1706 detail of "previous" accesses in a race. There are now three
1707 settings:
1708
1709 * --history-level=full. This is the default, and was also the
1710 default in 3.4.x. It shows both stacks involved in a race, but
1711 requires a lot of memory and can be very slow in programs that
1712 do many inter-thread synchronisation events.
1713
1714 * --history-level=none. This only shows the later stack involved
1715 in a race. This can be much faster than --history-level=full,
1716 but makes it much more difficult to find the other access
1717 involved in the race.
1718
1719 The new intermediate setting is
1720
1721 * --history-level=approx
1722
1723 For the earlier (other) access, two stacks are presented. The
1724 earlier access is guaranteed to be somewhere in between the two
1725 program points denoted by those stacks. This is not as useful
1726 as showing the exact stack for the previous access (as per
1727 --history-level=full), but it is better than nothing, and it's
1728 almost as fast as --history-level=none.
1729
njnace90d82009-04-27 01:27:58 +00001730
bart6a146fc2009-07-21 07:32:19 +00001731* New features and improvements in DRD:
njn6eccab92009-08-14 02:41:37 +00001732
sewardj570e2442009-08-14 13:42:41 +00001733 - The error messages printed by DRD are now easier to interpret.
1734 Instead of using two different numbers to identify each thread
1735 (Valgrind thread ID and DRD thread ID), DRD does now identify
1736 threads via a single number (the DRD thread ID). Furthermore
1737 "first observed at" information is now printed for all error
1738 messages related to synchronization objects.
njn6eccab92009-08-14 02:41:37 +00001739
bartfe212db2009-07-25 11:16:51 +00001740 - Added support for named semaphores (sem_open() and sem_close()).
njn6eccab92009-08-14 02:41:37 +00001741
bart6a146fc2009-07-21 07:32:19 +00001742 - Race conditions between pthread_barrier_wait() and
1743 pthread_barrier_destroy() calls are now reported.
njn6eccab92009-08-14 02:41:37 +00001744
1745 - Added support for custom allocators through the macros
sewardj570e2442009-08-14 13:42:41 +00001746 VALGRIND_MALLOCLIKE_BLOCK() VALGRIND_FREELIKE_BLOCK() (defined in
1747 in <valgrind/valgrind.h>). An alternative for these two macros is
1748 the new client request VG_USERREQ__DRD_CLEAN_MEMORY (defined in
bart6a146fc2009-07-21 07:32:19 +00001749 <valgrind/drd.h>).
njn6eccab92009-08-14 02:41:37 +00001750
sewardj570e2442009-08-14 13:42:41 +00001751 - Added support for annotating non-POSIX synchronization objects
1752 through several new ANNOTATE_*() macros.
njn6eccab92009-08-14 02:41:37 +00001753
sewardj570e2442009-08-14 13:42:41 +00001754 - OpenMP: added support for the OpenMP runtime (libgomp) included
1755 with gcc versions 4.3.0 and 4.4.0.
njn6eccab92009-08-14 02:41:37 +00001756
bart6a146fc2009-07-21 07:32:19 +00001757 - Faster operation.
njn6eccab92009-08-14 02:41:37 +00001758
1759 - Added two new command-line options (--first-race-only and
bart6a146fc2009-07-21 07:32:19 +00001760 --segment-merging-interval).
1761
njn6eccab92009-08-14 02:41:37 +00001762
sewardj570e2442009-08-14 13:42:41 +00001763* Genuinely atomic support for x86/amd64/ppc atomic instructions
1764
1765 Valgrind will now preserve (memory-access) atomicity of LOCK-
1766 prefixed x86/amd64 instructions, and any others implying a global
1767 bus lock. Ditto for PowerPC l{w,d}arx/st{w,d}cx. instructions.
1768
1769 This means that Valgrinded processes will "play nicely" in
1770 situations where communication with other processes, or the kernel,
1771 is done through shared memory and coordinated with such atomic
1772 instructions. Prior to this change, such arrangements usually
1773 resulted in hangs, races or other synchronisation failures, because
1774 Valgrind did not honour atomicity of such instructions.
1775
1776
1777* A new experimental tool, BBV, has been added. BBV generates basic
1778 block vectors for use with the SimPoint analysis tool, which allows
1779 a program's overall behaviour to be approximated by running only a
1780 fraction of it. This is useful for computer architecture
1781 researchers. You can run BBV by specifying --tool=exp-bbv (the
1782 "exp-" prefix is short for "experimental"). BBV was written by
1783 Vince Weaver.
1784
1785
1786* Modestly improved support for running Windows applications under
1787 Wine. In particular, initial support for reading Windows .PDB debug
1788 information has been added.
1789
1790
1791* A new Memcheck client request VALGRIND_COUNT_LEAK_BLOCKS has been
1792 added. It is similar to VALGRIND_COUNT_LEAKS but counts blocks
1793 instead of bytes.
1794
1795
1796* The Valgrind client requests VALGRIND_PRINTF and
1797 VALGRIND_PRINTF_BACKTRACE have been changed slightly. Previously,
1798 the string was always printed immediately on its own line. Now, the
1799 string will be added to a buffer but not printed until a newline is
1800 encountered, or other Valgrind output is printed (note that for
1801 VALGRIND_PRINTF_BACKTRACE, the back-trace itself is considered
1802 "other Valgrind output"). This allows you to use multiple
1803 VALGRIND_PRINTF calls to build up a single output line, and also to
1804 print multiple output lines with a single request (by embedding
1805 multiple newlines in the string).
1806
1807
1808* The graphs drawn by Massif's ms_print program have changed slightly:
1809
1810 - The half-height chars '.' and ',' are no longer drawn, because
1811 they are confusing. The --y option can be used if the default
1812 y-resolution is not high enough.
1813
1814 - Horizontal lines are now drawn after the top of a snapshot if
1815 there is a gap until the next snapshot. This makes it clear that
1816 the memory usage has not dropped to zero between snapshots.
1817
1818
1819* Something that happened in 3.4.0, but wasn't clearly announced: the
1820 option --read-var-info=yes can be used by some tools (Memcheck,
1821 Helgrind and DRD). When enabled, it causes Valgrind to read DWARF3
1822 variable type and location information. This makes those tools
1823 start up more slowly and increases memory consumption, but
1824 descriptions of data addresses in error messages become more
1825 detailed.
1826
1827
1828* exp-Omega, an experimental instantaneous leak-detecting tool, was
1829 disabled in 3.4.0 due to a lack of interest and maintenance,
1830 although the source code was still in the distribution. The source
1831 code has now been removed from the distribution. For anyone
1832 interested, the removal occurred in SVN revision r10247.
1833
njnacda1782009-06-04 23:11:50 +00001834
njn8b68b642009-06-24 00:37:09 +00001835* Some changes have been made to the build system.
njn6bf365c2009-02-11 00:35:45 +00001836
sewardj570e2442009-08-14 13:42:41 +00001837 - VEX/ is now integrated properly into the build system. This means
1838 that dependency tracking within VEX/ now works properly, "make
1839 install" will work without requiring "make" before it, and
1840 parallel builds (ie. 'make -j') now work (previously a
1841 .NOTPARALLEL directive was used to serialize builds, ie. 'make -j'
1842 was effectively ignored).
njn6bf365c2009-02-11 00:35:45 +00001843
sewardj570e2442009-08-14 13:42:41 +00001844 - The --with-vex configure option has been removed. It was of
1845 little use and removing it simplified the build system.
njn8b68b642009-06-24 00:37:09 +00001846
sewardj570e2442009-08-14 13:42:41 +00001847 - The location of some install files has changed. This should not
1848 affect most users. Those who might be affected:
njn8b68b642009-06-24 00:37:09 +00001849
1850 * For people who use Valgrind with MPI programs, the installed
sewardj570e2442009-08-14 13:42:41 +00001851 libmpiwrap.so library has moved from
1852 $(INSTALL)/<platform>/libmpiwrap.so to
1853 $(INSTALL)/libmpiwrap-<platform>.so.
njn8b68b642009-06-24 00:37:09 +00001854
sewardj570e2442009-08-14 13:42:41 +00001855 * For people who distribute standalone Valgrind tools, the
1856 installed libraries such as $(INSTALL)/<platform>/libcoregrind.a
1857 have moved to $(INSTALL)/libcoregrind-<platform>.a.
njn8b68b642009-06-24 00:37:09 +00001858
sewardj570e2442009-08-14 13:42:41 +00001859 These changes simplify the build system.
njn8b68b642009-06-24 00:37:09 +00001860
sewardj570e2442009-08-14 13:42:41 +00001861 - Previously, all the distributed suppression (*.supp) files were
1862 installed. Now, only default.supp is installed. This should not
1863 affect users as the other installed suppression files were not
1864 read; the fact that they were installed was a mistake.
1865
1866
1867* KNOWN LIMITATIONS:
1868
1869 - Memcheck is unusable with the Intel compiler suite version 11.1,
1870 when it generates code for SSE2-and-above capable targets. This
1871 is because of icc's use of highly optimised inlined strlen
1872 implementations. It causes Memcheck to report huge numbers of
1873 false errors even in simple programs. Helgrind and DRD may also
1874 have problems.
1875
1876 Versions 11.0 and earlier may be OK, but this has not been
1877 properly tested.
1878
1879
sewardj9176c862009-08-18 13:47:31 +00001880The following bugs have been fixed or resolved. Note that "n-i-bz"
1881stands for "not in bugzilla" -- that is, a bug that was reported to us
1882but never got a bugzilla entry. We encourage you to file bugs in
1883bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
1884mailing the developers (or mailing lists) directly -- bugs that are
1885not entered into bugzilla tend to get forgotten about or ignored.
sewardj570e2442009-08-14 13:42:41 +00001886
sewardj9176c862009-08-18 13:47:31 +00001887To see details of a given bug, visit
1888https://bugs.kde.org/show_bug.cgi?id=XXXXXX
1889where XXXXXX is the bug number as listed below.
sewardj570e2442009-08-14 13:42:41 +00001890
sewardj9176c862009-08-18 13:47:31 +0000189184303 How about a LockCheck tool?
189291633 dereference of null ptr in vgPlain_st_basetype
189397452 Valgrind doesn't report any pthreads problems
1894100628 leak-check gets assertion failure when using
1895 VALGRIND_MALLOCLIKE_BLOCK on malloc()ed memory
1896108528 NPTL pthread cleanup handlers not called
1897110126 Valgrind 2.4.1 configure.in tramples CFLAGS
1898110128 mallinfo is not implemented...
1899110770 VEX: Generated files not always updated when making valgrind
1900111102 Memcheck: problems with large (memory footprint) applications
1901115673 Vex's decoder should never assert
1902117564 False positive: Syscall param clone(child_tidptr) contains
1903 uninitialised byte(s)
1904119404 executing ssh from inside valgrind fails
1905133679 Callgrind does not write path names to sources with dwarf debug
1906 info
1907135847 configure.in problem with non gnu compilers (and possible fix)
1908136154 threads.c:273 (vgCallgrind_post_signal): Assertion
1909 '*(vgCallgrind_current_fn_stack.top) == 0' failed.
1910136230 memcheck reports "possibly lost", should be "still reachable"
1911137073 NULL arg to MALLOCLIKE_BLOCK causes crash
1912137904 Valgrind reports a memory leak when using POSIX threads,
1913 while it shouldn't
1914139076 valgrind VT_GETSTATE error
1915142228 complaint of elf_dynamic_do_rela in trivial usage
1916145347 spurious warning with USBDEVFS_REAPURB
1917148441 (wine) can't find memory leak in Wine, win32 binary
1918 executable file.
1919148742 Leak-check fails assert on exit
1920149878 add (proper) check for calloc integer overflow
1921150606 Call graph is broken when using callgrind control
1922152393 leak errors produce an exit code of 0. I need some way to
1923 cause leak errors to result in a nonzero exit code.
1924157154 documentation (leak-resolution doc speaks about num-callers
1925 def=4) + what is a loss record
1926159501 incorrect handling of ALSA ioctls
1927162020 Valgrinding an empty/zero-byte file crashes valgrind
1928162482 ppc: Valgrind crashes while reading stabs information
1929162718 x86: avoid segment selector 0 in sys_set_thread_area()
1930163253 (wine) canonicaliseSymtab forgot some fields in DiSym
1931163560 VEX/test_main.c is missing from valgrind-3.3.1
1932164353 malloc_usable_size() doesn't return a usable size
1933165468 Inconsistent formatting in memcheck manual -- please fix
1934169505 main.c:286 (endOfInstr):
1935 Assertion 'ii->cost_offset == *cost_offset' failed
1936177206 Generate default.supp during compile instead of configure
1937177209 Configure valt_load_address based on arch+os
1938177305 eventfd / syscall 323 patch lost
1939179731 Tests fail to build because of inlining of non-local asm labels
1940181394 helgrind: libhb_core.c:3762 (msm_write): Assertion
1941 'ordxx == POrd_EQ || ordxx == POrd_LT' failed.
1942181594 Bogus warning for empty text segment
1943181707 dwarf doesn't require enumerations to have name
1944185038 exp-ptrcheck: "unhandled syscall: 285" (fallocate) on x86_64
1945185050 exp-ptrcheck: sg_main.c:727 (add_block_to_GlobalTree):
1946 Assertion '!already_present' failed.
1947185359 exp-ptrcheck: unhandled syscall getresuid()
1948185794 "WARNING: unhandled syscall: 285" (fallocate) on x86_64
1949185816 Valgrind is unable to handle debug info for files with split
1950 debug info that are prelinked afterwards
1951185980 [darwin] unhandled syscall: sem_open
1952186238 bbToIR_AMD64: disInstr miscalculated next %rip
1953186507 exp-ptrcheck unhandled syscalls prctl, etc.
1954186790 Suppression pattern used for leaks are not reported
1955186796 Symbols with length>200 in suppression files are ignored
1956187048 drd: mutex PTHREAD_PROCESS_SHARED attribute missinterpretation
1957187416 exp-ptrcheck: support for __NR_{setregid,setreuid,setresuid}
1958188038 helgrind: hg_main.c:926: mk_SHVAL_fail: the 'impossible' happened
1959188046 bashisms in the configure script
1960188127 amd64->IR: unhandled instruction bytes: 0xF0 0xF 0xB0 0xA
1961188161 memcheck: --track-origins=yes asserts "mc_machine.c:672
1962 (get_otrack_shadow_offset_wrk): the 'impossible' happened."
1963188248 helgrind: pthread_cleanup_push, pthread_rwlock_unlock,
1964 assertion fail "!lock->heldBy"
1965188427 Add support for epoll_create1 (with patch)
1966188530 Support for SIOCGSTAMPNS
1967188560 Include valgrind.spec in the tarball
1968188572 Valgrind on Mac should suppress setenv() mem leak
1969189054 Valgrind fails to build because of duplicate non-local asm labels
1970189737 vex amd64->IR: unhandled instruction bytes: 0xAC
1971189762 epoll_create syscall not handled (--tool=exp-ptrcheck)
1972189763 drd assertion failure: s_threadinfo[tid].is_recording
1973190219 unhandled syscall: 328 (x86-linux)
1974190391 dup of 181394; see above
1975190429 Valgrind reports lots of errors in ld.so with x86_64 2.9.90 glibc
1976190820 No debug information on powerpc-linux
sewardj9176c862009-08-18 13:47:31 +00001977191095 PATCH: Improve usbdevfs ioctl handling
1978191182 memcheck: VALGRIND_LEAK_CHECK quadratic when big nr of chunks
1979 or big nr of errors
1980191189 --xml=yes should obey --gen-suppressions=all
1981191192 syslog() needs a suppression on macosx
1982191271 DARWIN: WARNING: unhandled syscall: 33554697 a.k.a.: 265
1983191761 getrlimit on MacOSX
1984191992 multiple --fn-skip only works sometimes; dependent on order
1985192634 V. reports "aspacem sync_check_mapping_callback:
1986 segment mismatch" on Darwin
1987192954 __extension__ missing on 2 client requests
1988194429 Crash at start-up with glibc-2.10.1 and linux-2.6.29
1989194474 "INSTALL" file has different build instructions than "README"
1990194671 Unhandled syscall (sem_wait?) from mac valgrind
1991195069 memcheck: reports leak (memory still reachable) for
1992 printf("%d', x)
1993195169 drd: (vgDrd_barrier_post_wait):
1994 Assertion 'r->sg[p->post_iteration]' failed.
1995195268 valgrind --log-file doesn't accept ~/...
1996195838 VEX abort: LibVEX_N_SPILL_BYTES too small for CPUID boilerplate
1997195860 WARNING: unhandled syscall: unix:223
1998196528 need a error suppression for pthread_rwlock_init under os x?
1999197227 Support aio_* syscalls on Darwin
2000197456 valgrind should reject --suppressions=(directory)
2001197512 DWARF2 CFI reader: unhandled CFI instruction 0:10
2002197591 unhandled syscall 27 (mincore)
2003197793 Merge DCAS branch to the trunk == 85756, 142103
2004197794 Avoid duplicate filenames in Vex
2005197898 make check fails on current SVN
2006197901 make check fails also under exp-ptrcheck in current SVN
2007197929 Make --leak-resolution=high the default
2008197930 Reduce spacing between leak reports
2009197933 Print command line of client at start-up, and shorten preamble
2010197966 unhandled syscall 205 (x86-linux, --tool=exp-ptrcheck)
2011198395 add BBV to the distribution as an experimental tool
2012198624 Missing syscalls on Darwin: 82, 167, 281, 347
2013198649 callgrind_annotate doesn't cumulate counters
2014199338 callgrind_annotate sorting/thresholds are broken for all but Ir
2015199977 Valgrind complains about an unrecognized instruction in the
2016 atomic_incs test program
2017200029 valgrind isn't able to read Fedora 12 debuginfo
2018200760 darwin unhandled syscall: unix:284
2019200827 DRD doesn't work on Mac OS X
2020200990 VG_(read_millisecond_timer)() does not work correctly
2021201016 Valgrind does not support pthread_kill() on Mac OS
2022201169 Document --read-var-info
2023201323 Pre-3.5.0 performance sanity checking
2024201384 Review user manual for the 3.5.0 release
2025201585 mfpvr not implemented on ppc
2026201708 tests failing because x86 direction flag is left set
2027201757 Valgrind doesn't handle any recent sys_futex additions
sewardj6bbe0242009-08-19 11:38:54 +00002028204377 64-bit valgrind can not start a shell script
2029 (with #!/path/to/shell) if the shell is a 32-bit executable
sewardj9176c862009-08-18 13:47:31 +00002030n-i-bz drd: fixed assertion failure triggered by mutex reinitialization.
2031n-i-bz drd: fixed a bug that caused incorrect messages to be printed
2032 about memory allocation events with memory access tracing enabled
2033n-i-bz drd: fixed a memory leak triggered by vector clock deallocation
njn254dafe2009-02-09 03:25:04 +00002034
sewardj48867fb2009-08-19 22:40:53 +00002035(3.5.0: 19 Aug 2009, vex r1913, valgrind r10846).
sewardj570e2442009-08-14 13:42:41 +00002036
njn6eccab92009-08-14 02:41:37 +00002037
njn254dafe2009-02-09 03:25:04 +00002038
njnad91a752009-03-13 19:55:36 +00002039Release 3.4.1 (28 February 2009)
2040~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20413.4.1 is a bug-fix release that fixes some regressions and assertion
2042failures in debug info reading in 3.4.0, most notably incorrect stack
2043traces on amd64-linux on older (glibc-2.3 based) systems. Various
2044other debug info problems are also fixed. A number of bugs in the
2045exp-ptrcheck tool introduced in 3.4.0 have been fixed.
2046
2047In view of the fact that 3.4.0 contains user-visible regressions
2048relative to 3.3.x, upgrading to 3.4.1 is recommended. Packagers are
2049encouraged to ship 3.4.1 in preference to 3.4.0.
2050
2051The fixed bugs are as follows. Note that "n-i-bz" stands for "not in
2052bugzilla" -- that is, a bug that was reported to us but never got a
2053bugzilla entry. We encourage you to file bugs in bugzilla
2054(http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the
2055developers (or mailing lists) directly -- bugs that are not entered
2056into bugzilla tend to get forgotten about or ignored.
2057
2058n-i-bz Fix various bugs reading icc-11 generated debug info
2059n-i-bz Fix various bugs reading gcc-4.4 generated debug info
2060n-i-bz Preliminary support for glibc-2.10 / Fedora 11
2061n-i-bz Cachegrind and Callgrind: handle non-power-of-two cache sizes,
2062 so as to support (eg) 24k Atom D1 and Core2 with 3/6/12MB L2.
2063179618 exp-ptrcheck crashed / exit prematurely
2064179624 helgrind: false positive races with pthread_create and
2065 recv/open/close/read
2066134207 pkg-config output contains @VG_PLATFORM@
2067176926 floating point exception at valgrind startup with PPC 440EPX
2068181594 Bogus warning for empty text segment
2069173751 amd64->IR: 0x48 0xF 0x6F 0x45 (even more redundant rex prefixes)
2070181707 Dwarf3 doesn't require enumerations to have name
2071185038 exp-ptrcheck: "unhandled syscall: 285" (fallocate) on x86_64
2072185050 exp-ptrcheck: sg_main.c:727 (add_block_to_GlobalTree):
2073 Assertion '!already_present' failed.
2074185359 exp-ptrcheck unhandled syscall getresuid()
2075
2076(3.4.1.RC1: 24 Feb 2008, vex r1884, valgrind r9253).
2077(3.4.1: 28 Feb 2008, vex r1884, valgrind r9293).
2078
2079
2080
sewardj565fcf12008-12-23 13:14:06 +00002081Release 3.4.0 (2 January 2009)
2082~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20833.4.0 is a feature release with many significant improvements and the
2084usual collection of bug fixes. This release supports X86/Linux,
2085AMD64/Linux, PPC32/Linux and PPC64/Linux. Support for recent distros
2086(using gcc 4.4, glibc 2.8 and 2.9) has been added.
sewardj8639f112008-12-17 12:26:24 +00002087
sewardj565fcf12008-12-23 13:14:06 +000020883.4.0 brings some significant tool improvements. Memcheck can now
2089report the origin of uninitialised values, the thread checkers
2090Helgrind and DRD are much improved, and we have a new experimental
2091tool, exp-Ptrcheck, which is able to detect overruns of stack and
2092global arrays. In detail:
sewardj8639f112008-12-17 12:26:24 +00002093
sewardj565fcf12008-12-23 13:14:06 +00002094* Memcheck is now able to track the origin of uninitialised values.
2095 When it reports an uninitialised value error, it will try to show
2096 the origin of the value, as either a heap or stack allocation.
2097 Origin tracking is expensive and so is not enabled by default. To
2098 use it, specify --track-origins=yes. Memcheck's speed will be
2099 essentially halved, and memory usage will be significantly
2100 increased. Nevertheless it can drastically reduce the effort
2101 required to identify the root cause of uninitialised value errors,
2102 and so is often a programmer productivity win, despite running more
2103 slowly.
sewardj8639f112008-12-17 12:26:24 +00002104
sewardj565fcf12008-12-23 13:14:06 +00002105* A version (1.4.0) of the Valkyrie GUI, that works with Memcheck in
sewardjb8b16642009-01-02 23:21:54 +00002106 3.4.0, will be released shortly.
sewardj8639f112008-12-17 12:26:24 +00002107
sewardj565fcf12008-12-23 13:14:06 +00002108* Helgrind's race detection algorithm has been completely redesigned
2109 and reimplemented, to address usability and scalability concerns:
sewardj8639f112008-12-17 12:26:24 +00002110
sewardj565fcf12008-12-23 13:14:06 +00002111 - The new algorithm has a lower false-error rate: it is much less
2112 likely to report races that do not really exist.
sewardj8639f112008-12-17 12:26:24 +00002113
sewardj565fcf12008-12-23 13:14:06 +00002114 - Helgrind will display full call stacks for both accesses involved
sewardjf1fa5ed2008-12-23 17:04:52 +00002115 in a race. This makes it easier to identify the root causes of
2116 races.
sewardj8639f112008-12-17 12:26:24 +00002117
sewardj565fcf12008-12-23 13:14:06 +00002118 - Limitations on the size of program that can run have been removed.
sewardj8639f112008-12-17 12:26:24 +00002119
sewardj565fcf12008-12-23 13:14:06 +00002120 - Performance has been modestly improved, although that is very
2121 workload-dependent.
sewardj8639f112008-12-17 12:26:24 +00002122
sewardj565fcf12008-12-23 13:14:06 +00002123 - Direct support for Qt4 threading has been added.
sewardj8639f112008-12-17 12:26:24 +00002124
sewardj565fcf12008-12-23 13:14:06 +00002125 - pthread_barriers are now directly supported.
njn75010ca2008-02-09 05:10:45 +00002126
sewardj565fcf12008-12-23 13:14:06 +00002127 - Helgrind works well on all supported Linux targets.
sewardj8639f112008-12-17 12:26:24 +00002128
sewardj565fcf12008-12-23 13:14:06 +00002129* The DRD thread debugging tool has seen major improvements:
sewardj8639f112008-12-17 12:26:24 +00002130
sewardj565fcf12008-12-23 13:14:06 +00002131 - Greatly improved performance and significantly reduced memory
2132 usage.
sewardj8639f112008-12-17 12:26:24 +00002133
sewardj565fcf12008-12-23 13:14:06 +00002134 - Support for several major threading libraries (Boost.Thread, Qt4,
2135 glib, OpenMP) has been added.
sewardj8639f112008-12-17 12:26:24 +00002136
sewardj565fcf12008-12-23 13:14:06 +00002137 - Support for atomic instructions, POSIX semaphores, barriers and
2138 reader-writer locks has been added.
2139
2140 - Works now on PowerPC CPUs too.
2141
2142 - Added support for printing thread stack usage at thread exit time.
2143
2144 - Added support for debugging lock contention.
2145
2146 - Added a manual for Drd.
2147
2148* A new experimental tool, exp-Ptrcheck, has been added. Ptrcheck
2149 checks for misuses of pointers. In that sense it is a bit like
2150 Memcheck. However, Ptrcheck can do things Memcheck can't: it can
2151 detect overruns of stack and global arrays, it can detect
2152 arbitrarily far out-of-bounds accesses to heap blocks, and it can
2153 detect accesses heap blocks that have been freed a very long time
2154 ago (millions of blocks in the past).
2155
2156 Ptrcheck currently works only on x86-linux and amd64-linux. To use
2157 it, use --tool=exp-ptrcheck. A simple manual is provided, as part
2158 of the main Valgrind documentation. As this is an experimental
2159 tool, we would be particularly interested in hearing about your
2160 experiences with it.
2161
sewardj974aace2008-12-24 18:40:57 +00002162* exp-Omega, an experimental instantaneous leak-detecting tool, is no
2163 longer built by default, although the code remains in the repository
2164 and the tarball. This is due to three factors: a perceived lack of
2165 users, a lack of maintenance, and concerns that it may not be
2166 possible to achieve reliable operation using the existing design.
sewardj565fcf12008-12-23 13:14:06 +00002167
2168* As usual, support for the latest Linux distros and toolchain
2169 components has been added. It should work well on Fedora Core 10,
2170 OpenSUSE 11.1 and Ubuntu 8.10. gcc-4.4 (in its current pre-release
2171 state) is supported, as is glibc-2.9. The C++ demangler has been
2172 updated so as to work well with C++ compiled by even the most recent
2173 g++'s.
2174
2175* You can now use frame-level wildcards in suppressions. This was a
2176 frequently-requested enhancement. A line "..." in a suppression now
2177 matches zero or more frames. This makes it easier to write
2178 suppressions which are precise yet insensitive to changes in
2179 inlining behaviour.
2180
2181* 3.4.0 adds support on x86/amd64 for the SSSE3 instruction set.
2182
2183* Very basic support for IBM Power6 has been added (64-bit processes only).
2184
2185* Valgrind is now cross-compilable. For example, it is possible to
2186 cross compile Valgrind on an x86/amd64-linux host, so that it runs
2187 on a ppc32/64-linux target.
2188
sewardjf1fa5ed2008-12-23 17:04:52 +00002189* You can set the main thread's stack size at startup using the
2190 new --main-stacksize= flag (subject of course to ulimit settings).
2191 This is useful for running apps that need a lot of stack space.
2192
2193* The limitation that you can't use --trace-children=yes together
2194 with --db-attach=yes has been removed.
2195
sewardj565fcf12008-12-23 13:14:06 +00002196* The following bugs have been fixed. Note that "n-i-bz" stands for
2197 "not in bugzilla" -- that is, a bug that was reported to us but
2198 never got a bugzilla entry. We encourage you to file bugs in
2199 bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
2200 mailing the developers (or mailing lists) directly.
2201
sewardjf1fa5ed2008-12-23 17:04:52 +00002202 n-i-bz Make return types for some client requests 64-bit clean
2203 n-i-bz glibc 2.9 support
2204 n-i-bz ignore unsafe .valgrindrc's (CVE-2008-4865)
2205 n-i-bz MPI_Init(0,0) is valid but libmpiwrap.c segfaults
2206 n-i-bz Building in an env without gdb gives bogus gdb attach
2207 92456 Tracing the origin of uninitialised memory
2208 106497 Valgrind does not demangle some C++ template symbols
2209 162222 ==106497
sewardjdf1fc9a2008-12-23 23:09:57 +00002210 151612 Suppression with "..." (frame-level wildcards in .supp files)
sewardjf1fa5ed2008-12-23 17:04:52 +00002211 156404 Unable to start oocalc under memcheck on openSUSE 10.3 (64-bit)
2212 159285 unhandled syscall:25 (stime, on x86-linux)
2213 159452 unhandled ioctl 0x8B01 on "valgrind iwconfig"
2214 160954 ppc build of valgrind crashes with illegal instruction (isel)
2215 160956 mallinfo implementation, w/ patch
2216 162092 Valgrind fails to start gnome-system-monitor
2217 162819 malloc_free_fill test doesn't pass on glibc2.8 x86
2218 163794 assertion failure with "--track-origins=yes"
2219 163933 sigcontext.err and .trapno must be set together
2220 163955 remove constraint !(--db-attach=yes && --trace-children=yes)
2221 164476 Missing kernel module loading system calls
2222 164669 SVN regression: mmap() drops posix file locks
2223 166581 Callgrind output corruption when program forks
2224 167288 Patch file for missing system calls on Cell BE
2225 168943 unsupported scas instruction pentium
2226 171645 Unrecognised instruction (MOVSD, non-binutils encoding)
2227 172417 x86->IR: 0x82 ...
2228 172563 amd64->IR: 0xD9 0xF5 - fprem1
2229 173099 .lds linker script generation error
2230 173177 [x86_64] syscalls: 125/126/179 (capget/capset/quotactl)
2231 173751 amd64->IR: 0x48 0xF 0x6F 0x45 (even more redundant prefixes)
2232 174532 == 173751
2233 174908 --log-file value not expanded correctly for core file
2234 175044 Add lookup_dcookie for amd64
2235 175150 x86->IR: 0xF2 0xF 0x11 0xC1 (movss non-binutils encoding)
sewardj565fcf12008-12-23 13:14:06 +00002236
2237Developer-visible changes:
2238
2239* Valgrind's debug-info reading machinery has been majorly overhauled.
2240 It can now correctly establish the addresses for ELF data symbols,
2241 which is something that has never worked properly before now.
2242
2243 Also, Valgrind can now read DWARF3 type and location information for
2244 stack and global variables. This makes it possible to use the
2245 framework to build tools that rely on knowing the type and locations
2246 of stack and global variables, for example exp-Ptrcheck.
2247
2248 Reading of such information is disabled by default, because most
2249 tools don't need it, and because it is expensive in space and time.
2250 However, you can force Valgrind to read it, using the
2251 --read-var-info=yes flag. Memcheck, Helgrind and DRD are able to
2252 make use of such information, if present, to provide source-level
2253 descriptions of data addresses in the error messages they create.
2254
sewardj974aace2008-12-24 18:40:57 +00002255(3.4.0.RC1: 24 Dec 2008, vex r1878, valgrind r8882).
sewardjb8b16642009-01-02 23:21:54 +00002256(3.4.0: 3 Jan 2009, vex r1878, valgrind r8899).