From: Paul Floyd Date: Wed, 1 Nov 2023 09:56:39 +0000 (+0100) Subject: Update version to 3.23.0.GIT, split NEWS files and create NEWS.older X-Git-Tag: VALGRIND_3_23_0~304 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2e9bda074c387c50d1b6da9d798e5ef5fe33dbf3;p=thirdparty%2Fvalgrind.git Update version to 3.23.0.GIT, split NEWS files and create NEWS.older --- diff --git a/NEWS b/NEWS index f11da4be88..14be314581 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,34 @@ +Release 3.23.0 (?? Apr 2024) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, +PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, +MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android, +X86/Solaris, AMD64/Solaris, AMD64/MacOSX 10.12, X86/FreeBSD and +AMD64/FreeBSD. There is also preliminary support for X86/macOS 10.13, +AMD64/macOS 10.13 and nanoMIPS/Linux. + +* ==================== CORE CHANGES =================== + +* ================== PLATFORM CHANGES ================= + +* ==================== TOOL CHANGES =================== + +* ==================== FIXED BUGS ==================== + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather +than mailing the developers (or mailing lists) directly -- bugs that +are not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed above. + +(3.23.0.RC1: ?? Apr 2024) + Release 3.22.0 (31 Oct 2023) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -475,4432 +506,3 @@ where XXXXXX is the bug number as listed above. (3.19.0.RC1: 02 Apr 2022) (3.19.0.RC2: 08 Apr 2022) - - -Release 3.18.0 (15 Oct 2021) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, -PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, -MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android, -X86/Solaris, AMD64/Solaris, AMD64/MacOSX 10.12, X86/FreeBSD and -AMD64/FreeBSD. There is also preliminary support for X86/macOS 10.13, -AMD64/macOS 10.13 and nanoMIPS/Linux. - -* ==================== CORE CHANGES =================== - -* The libiberty demangler has been updated, which brings support for - Rust v0 name demangling. [Update: alas, due to a bug, this support - isn't working in 3.18.0.] - -* __libc_freeres isn't called anymore after the program recieves a - fatal signal. Causing some internal glibc resources to hang around, - but preventing any crashes after the program has ended. - -* The DWARF reader is now very much faster at startup when just - --read-inline-info=yes (the default in most cases) is given. - -* glibc 2.34, which moved various functions from libpthread.so into - libc.so, is now supported. - -* ================== PLATFORM CHANGES ================= - -* arm64: - - - v8.2 scalar and vector FABD, FACGE, FACGT and FADD. - - v8.2 FP compare & conditional compare instructions. - - Zero variants of v8.2 FP compare instructions. - -* s390: - - - Support the miscellaneous-instruction-extensions facility 3 and - the vector-enhancements facility 2. This enables programs - compiled with "-march=arch13" or "-march=z15" to be executed - under Valgrind. - -* ppc64: - - - ISA 3.1 support is now complete - - ISA 3.0 support for the darn instruction added. - - ISA 3.0 support for the vector system call instruction scv added. - - ISA 3.0 support for the copy, paste and cpabort instructions added. - -* Support for X86/FreeBSD and AMD64/FreeBSD has been added. - -* ==================== OTHER CHANGES ==================== - -* Memcheck on amd64: minor fixes to remove some false positive - undef-value errors - -* ==================== FIXED BUGS ==================== - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather -than mailing the developers (or mailing lists) directly -- bugs that -are not entered into bugzilla tend to get forgotten about or ignored. - -208531 [PATCH]: FreeBSD support for valgrind -368960 WARNING: unhandled amd64-linux syscall: 163 (acct) -407589 [Linux] Add support for C11 aligned_alloc() and GNU reallocarray() -423963 Error in child thread when CLONE_PIDFD is used -426148 crash with "impossible happened" when running BPF CO-RE programs -429375 PPC ISA 3.1 support is missing, part 9 -431157 PPC_FEATURE2_SCV needs to be masked in AT_HWCAP2 -431306 Update demangler to support Rust v0 name mangling -432387 s390x: z15 instructions support -433437 FreeBSD support, part 1 -433438 FreeBSD support, part 2 -433439 FreeBSD support, part 3 -433469 FreeBSD support, part 4 -433473 FreeBSD support, part 5 -433477 FreeBSD support, part 6 -433479 FreeBSD support, part 7 -433504 FreeBSD support, part 8 -433506 FreeBSD support, part 9 -433507 FreeBSD support, part 10 -433508 FreeBSD support, part 11 -433510 FreeBSD support, part 12 -433801 PPC ISA 3.1 support is missing, part 10 (ISA 3.1 support complete) -433863 s390x: memcheck/tests/s390x/{cds,cs,csg} failures -434296 s390x: False-positive memcheck diagnostics from vector string - instructions -434840 PPC64 darn instruction not supported -435665 PPC ISA 3.0 copy, paste, cpabort instructions are not supported -435908 valgrind tries to fetch from deubginfod for files which already - have debug information -438871 unhandled instruction bytes: 0xF3 0x49 0xF 0x6F 0x9C 0x24 0x60 0x2 -439046 valgrind is unusably large when linked with lld -439090 Implement close_range(2) -439326 Valgrind 3.17.0 won't compile with Intel 2021 oneAPI compilers -439590 glibc-2.34 breaks suppressions against obj:*/lib*/libc-2.*so* -440670 unhandled ppc64le-linux syscall: 252 statfs64 and 253 fstatfs64 -440906 Fix impossible constraint issue in P10 testcase. -441512 Remove a unneeded / unnecessary prefix check. -441534 Update the expected output for test_isa_3_1_VRT. -442061 very slow execution under Fedora 34 (readdwarf3) -443031 Gcc -many change requires explicit .machine directives -443033 Add support for the ISA 3.0 mcrxrx instruction -443034 Sraw, srawi, srad, sradi, mfs -443178 Powerpc, test jm-mfspr expected output needs to be updated. -443179 Need new test for the lxvx and stxvx instructions on ISA 2.07 and - ISA 3.0 systems. -443180 The subnormal test and the ISA 3.0 test generate compiler warnings -443314 In the latest GIT version, Valgrind with "--trace-flags" crashes - at "al" register -443605 Don't call final_tidyup (__libc_freeres) on FatalSignal - -To see details of a given bug, visit - https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -(3.18.0.RC1: 12 Oct 2021) -(3.18.0: 15 Oct 2021) - - - -Release 3.17.0 (19 Mar 2021) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -3.17.0 fixes a number of bugs and adds some functional changes: support for -GCC 11, Clang 11, DWARF5 debuginfo, the 'debuginfod' debuginfo server, and -some new instructions for Arm64, S390 and POWER. There are also some tool -updates. - -This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, -PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, -MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android, -X86/Solaris, AMD64/Solaris and AMD64/MacOSX 10.12. There is also preliminary -support for X86/macOS 10.13, AMD64/macOS 10.13 and nanoMIPS/Linux. - -* ==================== CORE CHANGES =================== - -* DWARF version 5 support. Valgrind can now read DWARF version 5 debuginfo as - produced by GCC 11. - -* Valgrind now supports debuginfod, an HTTP server for distributing ELF/DWARF - debugging information. When a debuginfo file cannot be found locally, - Valgrind is able to query debuginfod servers for the file using its - build-id. See the user manual for more information about debuginfod support. - -* ================== PLATFORM CHANGES ================= - -* arm64: - - - Inaccuracies resulting from double-rounding in the simulation of - floating-point multiply-add/subtract instructions have been fixed. These - should now behave exactly as the hardware does. - - - Partial support for the ARM v8.2 instruction set. v8.2 support work is - ongoing. Support for the half-word variants of at least the following - instructions has been added: - FABS , - FABS ., . - FNEG , - FNEG ., . - FSQRT , - FSQRT ., . - FADDP - -* s390: - - - Implement the new instructions/features that were added to z/Architecture - with the vector-enhancements facility 1. Also cover the instructions from - the vector-packed-decimal facility that are defined outside the chapter - "Vector Decimal Instructions", but not the ones from that chapter itself. - - For a detailed list of newly supported instructions see the updates to - `docs/internals/s390-opcodes.csv'. - - Since the miscellaneous instruction extensions facility 2 was already - added in Valgrind 3.16.0, this completes the support necessary to run - general programs built with `--march=z14' under Valgrind. The - vector-packed-decimal facility is currently not exploited by the standard - toolchain and libraries. - -* ppc64: - - - Various bug fixes. Fix for the sync field to limit setting just two of - the two bits in the L-field. Fix the write size for the stxsibx and - stxsihx instructions. Fix the modsw and modsd instructions. - - - Partial support for ISA 3.1 has been added. Support for the VSX PCV mask - instructions, bfloat16 GER instructions, and bfloat16 to/from float 32-bit - conversion instructions are still missing. - -* ==================== TOOL CHANGES ==================== - -* General tool changes - - - All the tools and their vgpreload libraries are now installed under - libexec because they cannot be executed directly and should be run through - the valgrind executable. This should be an internal, not user visible, - change, but might impact valgrind packagers. - - - The --track-fds option now respects -q, --quiet and won't output anything - if no file descriptors are leaked. It also won't report the standard stdin - (0), stdout (1) or stderr (2) descriptors as being leaked with - --trace-fds=yes anymore. To track whether the standard file descriptors - are still open at the end of the program run use --trace-fds=all. - -* DHAT: - - - DHAT has been extended, with two new modes of operation. The new - --mode=copy flag triggers copy profiling, which records calls to memcpy, - strcpy, and similar functions. The new --mode=ad-hoc flag triggers ad hoc - profiling, which records calls to the DHAT_AD_HOC_EVENT client request in - the new dhat/dhat.h file. This is useful for learning more about hot code - paths. See the user manual for more information about the new modes. - - - Because of these changes, DHAT's file format has changed. DHAT output - files produced with earlier versions of DHAT will not work with this - version of DHAT's viewer, and DHAT output files produced with this version - of DHAT will not work with earlier versions of DHAT's viewer. - -* ==================== FIXED BUGS ==================== - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather -than mailing the developers (or mailing lists) directly -- bugs that -are not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit - https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -140178 open("/proc/self/exe", ...); doesn't quite work -140939 --track-fds reports leakage of stdout/in/err and doesn't respect -q -217695 malloc/calloc/realloc/memalign failure doesn't set errno to ENOMEM -338633 gdbserver_tests/nlcontrolc.vgtest hangs on arm64 -345077 linux syscall execveat support (linux 3.19) -361770 Missing F_ADD_SEALS -369029 handle linux syscalls sched_getattr and sched_setattr -384729 __libc_freeres inhibits cross-platform valgrind -388787 Support for C++17 new/delete -391853 Makefile.all.am:L247 and @SOLARIS_UNDEF_LARGESOURCE@ being empty -396656 Warnings while reading debug info -397605 ioctl FICLONE mishandled -401416 Compile failure with openmpi 4.0 -408663 Suppression file for musl libc -404076 s390x: z14 vector instructions not implemented -410743 shmat() calls for 32-bit programs fail when running in 64-bit valgrind - (actually affected all x86 and nanomips regardless of host bitness) -413547 regression test does not check for Arm 64 features. -414268 Enable AArch64 feature detection and decoding for v8.x instructions -415293 Incorrect call-graph tracking due to new _dl_runtime_resolve_xsave* -422174 unhandled instruction bytes: 0x48 0xE9 (REX prefixed JMP instruction) -422261 platform selection fails for unqualified client name -422623 epoll_ctl warns for uninitialized padding on non-amd64 64bit arches -423021 PPC: Add missing ISA 3.0 documentation link and HWCAPS test. -423195 PPC ISA 3.1 support is missing, part 1 -423361 Adds io_uring support on arm64/aarch64 (and all other arches) -424012 crash with readv/writev having invalid but not NULL arg2 iovec -424298 amd64: Implement RDSEED -425232 PPC ISA 3.1 support is missing, part 2 -425820 Failure to recognize vpcmpeqq as a dependency breaking idiom. -426014 arm64: implement fmadd and fmsub as Iop_MAdd/Sub -426123 PPC ISA 3.1 support is missing, part 3 -426144 Fix "condition variable has not been initialized" on Fedora 33. -427400 PPC ISA 3.1 support is missing, part 4 -427401 PPC ISA 3.1 support is missing, part 5 -427404 PPC ISA 3.1 support is missing, part 6 -427870 lmw, lswi and related PowerPC insns aren't allowed on ppc64le -427787 Support new faccessat2 linux syscall (439) -427969 debuginfo section duplicates a section in the main ELF file -428035 drd: Unbreak the musl build -428648 s390_emit_load_mem panics due to 20-bit offset for vector load -428716 cppcheck detects potential leak in VEX/useful/smchash.c -428909 helgrind: need to intercept duplicate libc definitions for Fedora 33 -429352 PPC ISA 3.1 support is missing, part 7 -429354 PPC ISA 3.1 support is missing, part 8 -429692 unhandled ppc64le-linux syscall: 147 (getsid) -429864 s390x: C++ atomic test_and_set yields false-positive memcheck - diagnostics -429952 Errors when building regtest with clang -430354 ppc stxsibx and stxsihx instructions write too much data -430429 valgrind.h doesn't compile on s390x with clang -430485 expr_is_guardable doesn't handle Iex_Qop -431556 Complete arm64 FADDP v8.2 instruction support -432102 Add support for DWARF5 as produced by GCC11 -432161 Addition of arm64 v8.2 FADDP, FNEG and FSQRT -432381 drd: Process STACK_REGISTER client requests -432552 [AArch64] invalid error emitted for pre-decremented byte/hword addresses -432672 vg_regtest: test-specific environment variables not reset between tests -432809 VEX should support REX.W + POPF -432861 PPC modsw and modsd give incorrect results for 1 mod 12 -432870 gdbserver_tests:nlcontrolc hangs with newest glibc2.33 x86-64 -432215 Add debuginfod functionality -433323 Use pkglibexecdir as vglibdir -433500 DRD regtest faulures when libstdc++ and libgcc debuginfo are installed -433629 valgrind/README has type "abd" instead of "and" -433641 Rust std::sys::unix::fs::try_statx Syscall param fstatat(file_name) -433898 arm64: Handle sp, lr, fp as DwReg in CfiExpr -434193 GCC 9+ inlined strcmp causes "Conditional jump or move [..] value" report -n-i-bz helgrind: If hg_cli__realloc fails, return NULL. -n-i-bz arm64 front end: avoid Memcheck false positives relating to CPUID - -(3.17.0.RC1: 13 Mar 2021) -(3.17.0.RC2: 17 Mar 2021) -(3.17.0: 19 Mar 2021) - - - -Release 3.16.1 (22 June 2020) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -3.16.1 fixes two critical bugs discovered after 3.16.0 was frozen. It also -fixes character encoding problems in the documentation HTML. - -422677 PPC sync instruction L field should only be 2 bits in ISA 3.0 -422715 32-bit x86: vex: the `impossible' happened: expr_is_guardable: unhandled expr - -(3.16.1, 22 June 2020, 36d6727e1d768333a536f274491e5879cab2c2f7) - - - -Release 3.16.0 (27 May 2020) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -3.16.0 is a feature release with many improvements and the usual collection of -bug fixes. - -This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, -PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, -MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android, -X86/Solaris, AMD64/Solaris and AMD64/MacOSX 10.12. There is also preliminary -support for X86/macOS 10.13, AMD64/macOS 10.13 and nanoMIPS/Linux. - -* ==================== CORE CHANGES =================== - -* It is now possible to dynamically change the value of many command line - options while your program (or its children) are running under Valgrind. - - To see the list of dynamically changeable options, run - "valgrind --help-dyn-options". - - You can change the options from the shell by using vgdb to launch - the monitor command "v.clo ...". - The same monitor command can be used from a gdb connected - to the valgrind gdbserver. - Your program can also change the dynamically changeable options using - the client request VALGRIND_CLO_CHANGE(option). - -* ================== PLATFORM CHANGES ================= - -* MIPS: preliminary support for nanoMIPS instruction set has been added. - -* ==================== TOOL CHANGES ==================== - -* DHAT: - - - The implicit memcpy done by each call to realloc now counts towards the - read and write counts of resized heap blocks, making those counts higher - and more accurate. - -* Cachegrind: - - - cg_annotate's --auto and --show-percs options now default to 'yes', because - they are usually wanted. - -* Callgrind: - - - callgrind_annotate's --auto and --show-percs options now default to 'yes', - because they are usually wanted. - - - The command option --collect-systime has been enhanced to specify - the unit used to record the elapsed time spent during system calls. - The command option now accepts the values no|yes|msec|usec|nsec, - where yes is a synonym of msec. When giving the value nsec, the - system cpu time of system calls is also recorded. - -* Memcheck: - - - Several memcheck options are now dynamically changeable. - Use valgrind --help-dyn-options to list them. - - - The release 3.15 introduced a backward incompatible change for - some suppression entries related to preadv and pwritev syscalls. - When reading a suppression entry using the unsupported 3.14 format, - valgrind will now produce a warning to say the suppression entry will not - work, and suggest the needed change. - - - Significantly fewer false positive errors on optimised code generated by - Clang and GCC. In particular, Memcheck now deals better with the - situation where the compiler will transform C-level "A && B" into "B && A" - under certain circumstances (in which the transformation is valid). - Handling of integer equality/non-equality checks on partially defined - values is also improved on some architectures. - -* exp-sgcheck: - - - The exprimental Stack and Global Array Checking tool has been removed. - It only ever worked on x86 and amd64, and even on those it had a - high false positive rate and was slow. An alternative for detecting - stack and global array overruns is using the AddressSanitizer (ASAN) - facility of the GCC and Clang compilers, which require you to rebuild - your code with -fsanitize=address. - -* ==================== OTHER CHANGES ==================== - -* New and modified GDB server monitor features: - - - Option -T tells vgdb to output a timestamp in the vgdb information messages. - - - The gdbserver monitor commands that require an address and an optional - length argument now accepts the alternate 'C like' syntax "address[length]". - For example, the memcheck command "monitor who_points_at 0x12345678 120" - can now also be given as "monitor who_points_at 0x12345678[120]". - -* ==================== FIXED BUGS ==================== - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather -than mailing the developers (or mailing lists) directly -- bugs that -are not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit - https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -343099 Linux setns syscall wrapper missing, unhandled syscall: 308 - == 368923 WARNING: unhandled arm64-linux syscall: 268 (setns) - == 369031 WARNING: unhandled amd64-linux syscall: 308 (setns) -385386 Assertion failed "szB >= CACHE_ENTRY_SIZE" at m_debuginfo/image.c:517 -400162 Patch: Guard against __GLIBC_PREREQ for musl libc -400593 In Coregrind, use statx for some internal syscalls if [f]stat[64] fail -400872 Add nanoMIPS support to Valgrind -403212 drd/tests/trylock hangs on FreeBSD -404406 s390x: z14 miscellaneous instructions not implemented -405201 Incorrect size of struct vki_siginfo on 64-bit Linux architectures -406561 mcinfcallWSRU gdbserver_test fails on ppc64 -406824 Unsupported baseline -407218 Add support for the copy_file_range syscall -407307 Intercept stpcpy also in ld.so for arm64 -407376 Update Xen support to 4.12 (4.13, actually) and add more coverage - == 390553 -407764 drd cond_post_wait gets wrong (?) condition on s390x z13 system -408009 Expose rdrand and f16c even on avx if host cpu supports them -408091 Missing pkey syscalls -408414 Add support for missing for preadv2 and pwritev2 syscalls -409141 Valgrind hangs when SIGKILLed -409206 Support for Linux PPS and PTP ioctls -409367 exit_group() after signal to thread waiting in futex() causes hangs -409429 amd64: recognize 'cmpeq' variants as a dependency breaking idiom -409780 References to non-existent configure.in -410556 Add support for BLKIO{MIN,OPT} and BLKALIGNOFF ioctls -410599 Non-deterministic behaviour of pth_self_kill_15_other test -410757 discrepancy for preadv2/pwritev2 syscalls across different versions -411134 Allow the user to change a set of command line options during execution -411451 amd64->IR of bt/btc/bts/btr with immediate clears zero flag -412344 Problem setting mips flags with specific paths -412408 unhandled arm-linux syscall: 124 - adjtime - on arm-linux -413119 Ioctl wrapper for DRM_IOCTL_I915_GEM_MMAP -413330 avx-1 test fails on AMD EPYC 7401P 24-Core Processor -413603 callgrind_annotate/cg_annotate truncate function names at '#' -414565 Specific use case bug found in SysRes VG_(do_sys_sigprocmask) -415136 ARMv8.1 Compare-and-Swap instructions are not supported -415757 vex x86->IR: 0x66 0xF 0xCE 0x4F (bswapw) -416239 valgrind crashes when handling clock_adjtime -416285 Use prlimit64 in VG_(getrlimit) and VG_(setrlimit) -416286 DRD reports "conflicting load" error on std::mutex::lock() -416301 s390x: "compare and signal" not supported -416387 finit_module and bpf syscalls are unhandled on arm64 -416464 Fix false reports for uninitialized memory for PR_CAPBSET_READ/DROP -416667 gcc10 ppc64le impossible constraint in 'asm' in test_isa. -416753 new 32bit time syscalls for 2038+ -417075 pwritev(vector[...]) suppression ignored - 417075 is not fixed, but incompatible supp entries are detected - and a warning is produced for these. -417187 [MIPS] Conditional branch problem since 'grail' changes -417238 Test memcheck/tests/vbit-test fails on mips64 BE -417266 Make memcheck/tests/linux/sigqueue usable with musl -417281 s390x: /bin/true segfaults with "grail" enabled -417427 commit to fix vki_siginfo_t definition created numerous regression - errors on ppc64 -417452 s390_insn_store_emit: dst->tag for HRcVec128 -417578 Add suppressions for glibc DTV leaks -417906 clone with CLONE_VFORK and no CLONE_VM fails -418004 Grail code additions break ppc64. -418435 s390x: spurious "Conditional jump or move depends on uninitialised [..]" -418997 s390x: Support Iex_ITE for float and vector types -419503 s390x: Avoid modifying registers returned from isel functions -421321 gcc10 arm64 build needs __getauxval for linking with libgcc -421570 std_mutex fails on Arm v8.1 h/w -434035 vgdb might crash if valgrind is killed -n-i-bz Fix minor one time leaks in dhat. -n-i-bz Add --run-cxx-freeres=no in outer args to avoid inner crashes. -n-i-bz Add support for the Linux io_uring system calls -n-i-bz sys_statx: don't complain if both |filename| and |buf| are NULL. -n-i-bz Fix non-glibc build of test suite with s390x_features -n-i-bz MinGW, include/valgrind.h: Fix detection of 64-bit mode -423195 PPC ISA 3.1 support is missing, part 1 - -(3.16.0.RC1: 18 May 2020, git 6052ee66a0cf5234e8e2a2b49a8760226bc13b92) -(3.16.0.RC2: 19 May 2020, git 940ec1ca69a09f7fdae3e800b7359f85c13c4b37) -(3.16.0: 27 May 2020, git bf5e647edb9e96cbd5c57cc944984402eeee296d) - - - -Release 3.15.0 (12 April 2019) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -3.15.0 is a feature release with many improvements and the usual collection of -bug fixes. - -This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, -PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, -MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android, -X86/Solaris, AMD64/Solaris and AMD64/MacOSX 10.12. There is also preliminary -support for X86/macOS 10.13 and AMD64/macOS 10.13. - -* ==================== CORE CHANGES =================== - -* The XTree Massif output format now makes use of the information obtained - when specifying --read-inline-info=yes. - -* amd64 (x86_64): the RDRAND and F16C insn set extensions are now supported. - -* ==================== TOOL CHANGES ==================== - -* DHAT: - - - DHAT been thoroughly overhauled, improved, and given a GUI. As a result, - it has been promoted from an experimental tool to a regular tool. Run it - with --tool=dhat instead of --tool=exp-dhat. - - - DHAT now prints only minimal data when the program ends, instead writing - the bulk of the profiling data to a file. As a result, the --show-top-n - and --sort-by options have been removed. - - - Profile results can be viewed with the new viewer, dh_view.html. When - a run ends, a short message is printed, explaining how to view the result. - - - See the documentation for more details. - -* Cachegrind: - - - cg_annotate has a new option, --show-percs, which prints percentages next - to all event counts. - -* Callgrind: - - - callgrind_annotate has a new option, --show-percs, which prints percentages - next to all event counts. - - - callgrind_annotate now inserts commas in call counts, and - sort the caller/callee lists in the call tree. - -* Massif: - - - The default value for --read-inline-info is now "yes" on - Linux/Android/Solaris. It is still "no" on other OS. - -* Memcheck: - - - The option --xtree-leak=yes (to output leak result in xtree format) - automatically activates the option --show-leak-kinds=all, as xtree - visualisation tools such as kcachegrind can in any case select what kind - of leak to visualise. - - - There has been further work to avoid false positives. In particular, - integer equality on partially defined inputs (C == and !=) is now handled - better. - -* ==================== OTHER CHANGES ==================== - -* The new option --show-error-list=no|yes displays, at the end of the run, the - list of detected errors and the used suppressions. Prior to this change, - showing this information could only be done by specifying "-v -v", but that - also produced a lot of other possibly-non-useful messages. The option -s is - equivalent to --show-error-list=yes. - -* ==================== FIXED BUGS ==================== - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather -than mailing the developers (or mailing lists) directly -- bugs that -are not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit - https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -385411 s390x: z13 vector floating-point instructions not implemented -397187 z13 vector register support for vgdb gdbserver -398183 Vex errors with _mm256_shuffle_epi8/vpshufb -398870 Please add support for instruction vcvtps2ph -399287 amd64 front end: Illegal Instruction vcmptrueps -399301 Use inlined frames in Massif XTree output. -399322 Improve callgrind_annotate output -399444 VEX/priv/guest_s390_toIR.c:17407: (style) Mismatching assignment [..] -400164 helgrind test encounters mips x-compiler warnings and assembler error -400490 s390x: VRs allocated as if separate from FPRs -400491 s390x: Operand of LOCH treated as unsigned integer -400975 Compile error: error: '-mips64r2' conflicts with the other architecture - options, which specify a mips64 processor -401112 LLVM 5.0 generates comparison against partially initialized data -401277 More bugs in z13 support -401454 Add a --show-percs option to cg_annotate and callgrind_annotate. -401578 drd: crashes sometimes on fork() -401627 memcheck errors with glibc avx2 optimized wcsncmp -401822 none/tests/ppc64/jm-vmx fails and produces assembler warnings -401827 none/tests/ppc64/test_isa_2_06_part3 failure on ppc64le (xvrsqrtesp) -401828 none/tests/ppc64/test_isa_2_06_part1 failure on ppc64le (fcfids and - fcfidus) -402006 mark helper regs defined in final_tidyup before freeres_wrapper call -402048 WARNING: unhandled ppc64[be|le]-linux syscall: 26 (ptrace) -402123 invalid assembler opcodes for mips32r2 -402134 assertion fail in mc_translate.c (noteTmpUsesIn) Iex_VECRET on arm64 -402327 Warning: DWARF2 CFI reader: unhandled DW_OP_ opcode 0x13 (DW_OP_drop) -402341 drd/tests/tsan_thread_wrappers_pthread.h:369: suspicious code ? -402351 mips64 libvexmultiarch_test fails on s390x -402369 Overhaul DHAT -402395 coregrind/vgdb-invoker-solaris.c: 2 * poor error checking -402480 Do not use %rsp in clobber list -402481 vbit-test fails on x86 for Iop_CmpEQ64 iselInt64Expr Sar64 -402515 Implement new option --show-error-list=no|yes / -s -402519 POWER 3.0 addex instruction incorrectly implemented -402781 Redo the cache used to process indirect branch targets -403123 vex amd64->IR:0xF3 0x48 0xF 0xAE 0xD3 (wrfsbase) -403552 s390x: wrong facility bit checked for vector facility -404054 memcheck powerpc subfe x, x, x initializes x to 0 or -1 based on CA -404638 Add VG_(replaceIndexXA) -404843 s390x: backtrace sometimes ends prematurely -404888 autotools cleanup series -405079 unhandled ppc64le-linux syscall: 131 (quotactl) -405182 Valgrind fails to build with Clang -405205 filter_libc: remove the line holding the futex syscall error entirely -405356 PPC64, xvcvsxdsp, xvcvuxdsp are supposed to write the 32-bit result to - the upper and lower 32-bits of the 64-bit result -405362 PPC64, vmsummbm instruction doesn't handle overflow case correctly -405363 PPC64, xvcvdpsxws, xvcvdpuxws, do not handle NaN arguments correctly. -405365 PPC64, function _get_maxmin_fp_NaN() doesn't handle QNaN, SNaN case - correctly. -405403 s390x disassembler cannot be used on x86 -405430 Use gcc -Wimplicit-fallthrough=2 by default if available -405458 MIPS mkFormVEC arguments swapped? -405716 drd: Fix an integer overflow in the stack margin calculation -405722 Support arm64 core dump -405733 PPC64, xvcvdpsp should write 32-bit result to upper and lower 32-bits - of the 64-bit destination field. -405734 PPC64, vrlwnm, vrlwmi, vrldrm, vrldmi do not work properly when me < mb -405782 "VEX temporary storage exhausted" when attempting to debug slic3r-pe -406198 none/tests/ppc64/test_isa_3_0_other test sporadically including CA - bit in output. -406256 PPC64, vector floating point instructions don't handle subnormal - according to VSCR[NJ] bit setting. -406352 cachegrind/callgrind fails ann tests because of missing a.c -406354 dhat is broken on x86 (32bit) -406355 mcsignopass, mcsigpass, mcbreak fail due to difference in gdb output -406357 gdbserver_tests fails because of gdb output change -406360 memcheck/tests/libstdc++.supp needs more supression variants -406422 none/tests/amd64-linux/map_32bits.vgtest fails too easily -406465 arm64 insn selector fails on "t0 = " where has type Ity_F16 -407340 PPC64, does not support the vlogefp, vexptefp instructions. -n-i-bz add syswrap for PTRACE_GET|SET_THREAD_AREA on amd64. -n-i-bz Fix callgrind_annotate non deterministic order for equal total -n-i-bz callgrind_annotate --threshold=100 does not print all functions. -n-i-bz callgrind_annotate Use of uninitialized value in numeric gt (>) -n-i-bz amd64 (x86_64): RDRAND and F16C insn set extensions are supported - -(3.15.0.RC1: 8 April 2019, git ce94d674de5b99df173aad4c3ee48fc2a92e5d9c) -(3.15.0.RC2: 11 April 2019, git 0c8be9bbede189ec580ec270521811766429595f) -(3.15.0: 14 April 2019, git 270037da8b508954f0f7d703a0bebf5364eec548) - - - -Release 3.14.0 (9 October 2018) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -3.14.0 is a feature release with many improvements and the usual collection of -bug fixes. - -This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, -PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, -MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android, -X86/Solaris, AMD64/Solaris and AMD64/MacOSX 10.12. There is also preliminary -support for X86/macOS 10.13, AMD64/macOS 10.13. - -* ==================== CORE CHANGES =================== - -* The new option --keep-debuginfo=no|yes (default no) can be used to retain - debug info for unloaded code. This allows saved stack traces (e.g. for - memory leaks) to include file/line info for code that has been dlclose'd (or - similar). See the user manual for more information and known limitations. - -* Ability to specify suppressions based on source file name and line number. - -* Majorly overhauled register allocator. No end-user changes, but the JIT - generates code a bit more quickly now. - -* ================== PLATFORM CHANGES ================= - -* Preliminary support for macOS 10.13 has been added. - -* mips: support for MIPS32/MIPS64 Revision 6 has been added. - -* mips: support for MIPS SIMD architecture (MSA) has been added. - -* mips: support for MIPS N32 ABI has been added. - -* s390: partial support for vector instructions (integer and string) has been - added. - -* ==================== TOOL CHANGES ==================== - -* Helgrind: Addition of a flag - --delta-stacktrace=no|yes [yes on linux amd64/x86] - which specifies how full history stack traces should be computed. - Setting this to =yes can speed up Helgrind by 25% when using - --history-level=full. - -* Memcheck: reduced false positive rate for optimised code created by Clang 6 - / LLVM 6 on x86, amd64 and arm64. In particular, Memcheck analyses code - blocks more carefully to determine where it can avoid expensive definedness - checks without loss of precision. This is controlled by the flag - --expensive-definedness-checks=no|auto|yes [auto]. - -* ==================== OTHER CHANGES ==================== - -* Valgrind is now buildable with link-time optimisation (LTO). A new - configure option --enable-lto=yes allows building Valgrind with LTO. If the - toolchain supports it, this produces a smaller/faster Valgrind (up to 10%). - Note that if you are doing Valgrind development, --enable-lto=yes massively - slows down the build process. - -* ==================== FIXED BUGS ==================== - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather -than mailing the developers (or mailing lists) directly -- bugs that -are not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit - https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -79362 Debug info is lost for .so files when they are dlclose'd -208052 strlcpy error when n = 0 -255603 exp-sgcheck Assertion '!already_present' failed -338252 building valgrind with -flto (link time optimisation) fails -345763 MIPS N32 ABI support -368913 WARNING: unhandled arm64-linux syscall: 117 (ptrace) - == 388664 unhandled arm64-linux syscall: 117 (ptrace) -372347 Replacement problem of the additional c++14/c++17 new/delete operators -373069 memcheck/tests/leak_cpp_interior fails with GCC 5.1+ -376257 helgrind history full speed up using a cached stack -379373 Fix syscall param msg->desc.port.name points to uninitialised byte(s) - on macOS 10.12 -379748 Fix missing pselect syscall (OS X 10.11) -379754 Fix missing syscall ulock_wait (OS X 10.12) -380397 s390x: __GI_strcspn() replacemenet needed -381162 possible array overrun in VEX register allocator -381272 ppc64 doesn't compile test_isa_2_06_partx.c without VSX support -381274 powerpc too chatty even with --sigill-diagnostics=no -381289 epoll_pwait can have a NULL sigmask -381553 VEX register allocator v3 -381556 arm64: Handle feature registers access on 4.11 Linux kernel or later -381769 Use ucontext_t instead of struct ucontext -381805 arm32 needs ld.so index hardwire for new glibc security fixes -382256 gz compiler flag test doesn't work for gold -382407 vg_perf needs "--terse" command line option -382515 "Assertion 'di->have_dinfo' failed." on wine's dlls/mscoree/tests/[..] -382563 MIPS MSA ASE support -382998 xml-socket doesn't work -383275 massif: m_xarray.c:162 (ensureSpaceXA): Assertion '!xa->arr' failed -383723 Fix missing kevent_qos syscall (macOS 10.11) - == 385604 illegal hardware instruction (OpenCV cv::namedWindow) -384096 Mention AddrCheck at Memcheck's command line option [..] -384230 vex x86->IR: 0x67 0xE8 0xAB 0x68 - == 384156 vex x86->IR: 0x67 0xE8 0x6B 0x6A - == 386115 vex x86->IR: 0x67 0xE8 0xD3 0x8B any program - == 388407 vex x86->IR: 0x67 0xE8 0xAB 0x29 - == 394903 vex x86->IR: 0x67 0xE8 0x1B 0xDA -384337 performance improvements to VEX register allocator v2 and v3 -384526 reduce number of spill insns generated by VEX register allocator v3 -384584 Callee saved regs listed first for AMD64, X86, and PPC architectures -384631 Sanitise client args as printed with -v -384633 Add a simple progress-reporting facility -384987 VEX regalloc: allocate caller-save registers for short lived vregs -385055 PPC VEX temporary storage exhausted -385182 PPC64 is missing support for the DSCR -385183 PPC64, Add support for xscmpeqdp, xscmpgtdp, xscmpgedp, xsmincdp -385207 PPC64, generate_store_FPRF() generates too many Iops -385208 PPC64, xxperm instruction exhausts temporary memory -385210 PPC64, vpermr instruction could exhaust temporary memory -385279 unhandled syscall: mach:43 (mach_generate_activity_id) - == 395136 valgrind: m_syswrap/syswrap-main.c:438 (Bool eq_Syscall[..] - == 387045 Valgrind crashing on High Sierra when testing any newly [..] -385334 PPC64, fix vpermr, xxperm, xxpermr mask value. -385408 s390x: z13 vector "support" instructions not implemented -385409 s390x: z13 vector integer instructions not implemented -385410 s390x: z13 vector string instructions not implemented -385412 s390x: new non-vector z13 instructions not implemented -385868 glibc ld.so _dl_runtime_resolve_avx_slow conditional jump warning. -385912 none/tests/rlimit_nofile fails on newer glibc/kernel. -385939 Optionally exit on the first error -386318 valgrind.org/info/tools.html is missing SGCheck -386425 running valgrind + wine on armv7l gives illegal opcode -386397 PPC64, valgrind truncates powerpc timebase to 32-bits. -387410 MIPSr6 support -387664 Memcheck: make expensive-definedness-checks be the default -387712 s390x cgijnl reports Conditional jump depends on uninitialised value -387766 asm shifts cause false positive "Conditional jump or move depends - on uninitialised value" -387773 .gnu_debugaltlink paths resolve relative to .debug file, not symlink -388174 valgrind with Wine quits with "Assertion 'cfsi_fits' failed" -388786 Support bpf syscall in amd64 Linux -388862 Add replacements for wmemchr and wcsnlen on Linux -389065 valgrind meets gcc flag -Wlogical-op -389373 exp-sgcheck the 'impossible' happened as Ist_LoadG is not instrumented -390471 suppression by specification of source-file line number -390723 make xtree dump files world wide readable, similar to log files -391164 constraint bug in tests/ppc64/test_isa_2_07_part1.c for mtfprwa -391861 Massif Assertion 'n_ips >= 1 && n_ips <= VG_(clo_backtrace_size)' -392118 unhandled amd64-linux syscall: 332 (statx) -392449 callgrind not clearing the number of calls properly -393017 Add missing support for xsmaxcdp instruction, bug fixes for xsmincdp, - lxssp, stxssp and stxvl instructions. -393023 callgrind_control risks using the wrong vgdb -393062 build-id ELF phdrs read causes "debuginfo reader: ensure_valid failed" -393099 posix_memalign() invalid write if alignment == 0 -393146 failing assert "is_DebugInfo_active(di)" -395709 PPC64 is missing support for the xvnegsp instruction -395682 Accept read-only PT_LOAD segments and .rodata by ld -z separate-code - == 384727 -396475 valgrind OS-X build: config.h not found (out-of-tree macOS builds) -395991 arm-linux: wine's unit tests enter a signal delivery loop [..] -396839 s390x: Trap instructions not implemented -396887 arch_prctl should return EINVAL on unknown option - == 397286 crash before launching binary (Unsupported arch_prctl option) - == 397393 valgrind: the 'impossible' happened: (Archlinux) - == 397521 valgrind: the 'impossible' happened: Unsupported [..] -396906 compile tests failure on mips32-linux: broken inline asm in tests on - mips32-linux -397012 glibc ld.so uses arch_prctl on i386 -397089 amd64: Incorrect decoding of three-register vmovss/vmovsd opcode 11h -397354 utimensat should ignore timespec tv_sec if tv_nsec is UTIME_NOW/OMIT -397424 glibc 2.27 and gdb_server tests -398028 Assertion `cfsi_fits` failing in simple C program -398066 s390x: cgijl dep1, 0 reports false unitialised values warning - -n-i-bz Fix missing workq_ops operations (macOS) -n-i-bz fix bug in strspn replacement -n-i-bz Add support for the Linux BLKFLSBUF ioctl -n-i-bz Add support for the Linux BLKREPORTZONE and BLKRESETZONE ioctls -n-i-bz Fix possible stack trashing by semctl syscall wrapping -n-i-bz Add support for the Linux membarrier() system call -n-i-bz x86 front end: recognise and handle UD2 correctly -n-i-bz Signal delivery for x86-linux: ensure that the stack pointer is - correctly aligned before entering the handler. - -(3.14.0.RC1: 30 September 2018, git c2aeea2d28acb0639bcc8cc1e4ab115067db1eae) -(3.14.0.RC2: 3 October 2018, git 3e214c4858a6fdd5697e767543a0c19e30505582) -(3.14.0: 9 October 2018, git 353a3587bb0e2757411f9138f5e936728ed6cc4f) - - - -Release 3.13.0 (15 June 2017) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -3.13.0 is a feature release with many improvements and the usual collection of -bug fixes. - -This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, -PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, -MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android, -X86/Solaris, AMD64/Solaris and AMD64/MacOSX 10.12. - -* ==================== CORE CHANGES =================== - -* The translation cache size has been increased to keep up with the demands of - large applications. The maximum number of sectors has increased from 24 to - 48. The default number of sectors has increased from 16 to 32 on all - targets except Android, where the increase is from 6 to 12. - -* The amount of memory that Valgrind can use has been increased from 64GB to - 128GB. In particular this means your application can allocate up to about - 60GB when running on Memcheck. - -* Valgrind's default load address has been changed from 0x3800'0000 to - 0x5800'0000, so as to make it possible to load larger executables. This - should make it possible to load executables of size at least 1200MB. - -* A massive spaceleak caused by reading compressed debuginfo files has been - fixed. Valgrind should now be entirely usable with gcc-7.0 "-gz" created - debuginfo. - -* The C++ demangler has been updated. - -* Support for demangling Rust symbols has been added. - -* A new representation of stack traces, the "XTree", has been added. An XTree - is a tree of stacktraces with data associated with the stacktraces. This is - used by various tools (Memcheck, Helgrind, Massif) to report on the heap - consumption of your program. Reporting is controlled by the new options - --xtree-memory=none|allocs|full and --xtree-memory-file=. - - A report can also be produced on demand using the gdbserver monitor command - 'xtmemory []>'. The XTree can be output in 2 formats: 'callgrind - format' and 'massif format. The existing visualisers for these formats (e.g. - callgrind_annotate, KCachegrind, ms_print) can be used to visualise and - analyse these reports. - - Memcheck can also produce XTree leak reports using the Callgrind file - format. For more details, see the user manual. - -* ================== PLATFORM CHANGES ================= - -* ppc64: support for ISA 3.0B and various fixes for existing 3.0 support - -* amd64: fixes for JIT failure problems on long AVX2 code blocks - -* amd64 and x86: support for CET prefixes has been added - -* arm32: a few missing ARMv8 instructions have been implemented - -* arm64, mips64, mips32: an alternative implementation of Load-Linked and - Store-Conditional instructions has been added. This is to deal with - processor implementations that implement the LL/SC specifications strictly - and as a result cause Valgrind to hang in certain situations. The - alternative implementation is automatically enabled at startup, as required. - You can use the option --sim-hints=fallback-llsc to force-enable it if you - want. - -* Support for OSX 10.12 has been improved. - -* On Linux, clone handling has been improved to honour CLONE_VFORK that - involves a child stack. Note however that CLONE_VFORK | CLONE_VM is handled - like CLONE_VFORK (by removing CLONE_VM), so applications that depend on - CLONE_VM exact semantics will (still) not work. - -* The TileGX/Linux port has been removed because it appears to be both unused - and unsupported. - -* ==================== TOOL CHANGES ==================== - -* Memcheck: - - - Memcheck should give fewer false positives when running optimised - Clang/LLVM generated code. - - - Support for --xtree-memory and 'xtmemory []>'. - - - New command line options --xtree-leak=no|yes and --xtree-leak-file= - to produce the end of execution leak report in a xtree callgrind format - file. - - - New option 'xtleak' in the memcheck leak_check monitor command, to produce - the leak report in an xtree file. - -* Massif: - - - Support for --xtree-memory and 'xtmemory []>'. - - - For some workloads (typically, for big applications), Massif memory - consumption and CPU consumption has decreased significantly. - -* Helgrind: - - - Support for --xtree-memory and 'xtmemory []>'. - - - addition of client request VALGRIND_HG_GNAT_DEPENDENT_MASTER_JOIN, useful - for Ada gnat compiled applications. - -* ==================== OTHER CHANGES ==================== - -* For Valgrind developers: in an outer/inner setup, the outer Valgrind will - append the inner guest stacktrace to the inner host stacktrace. This helps - to investigate the errors reported by the outer, when they are caused by the - inner guest program (such as an inner regtest). See README_DEVELOPERS for - more info. - -* To allow fast detection of callgrind files by desktop environments and file - managers, the format was extended to have an optional first line that - uniquely identifies the format ("# callgrind format"). Callgrind creates - this line now, as does the new xtree functionality. - -* File name template arguments (such as --log-file, --xtree-memory-file, ...) - have a new %n format letter that is replaced by a sequence number. - -* "--version -v" now shows the SVN revision numbers from which Valgrind was - built. - -* ==================== FIXED BUGS ==================== - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather -than mailing the developers (or mailing lists) directly -- bugs that -are not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit - https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -162848 --log-file output isn't split when a program forks -340777 Illegal instruction on mips (ar71xx) -341481 MIPS64: Iop_CmpNE32 triggers false warning on MIPS64 platforms -342040 Valgrind mishandles clone with CLONE_VFORK | CLONE_VM that clones - to a different stack. -344139 x86 stack-seg overrides, needed by the Wine people -344524 store conditional of guest applications always fail - observed on - Octeon3(MIPS) -348616 Wine/valgrind: noted but unhandled ioctl 0x5390 [..] (DVD_READ_STRUCT) -352395 Please provide SVN revision info in --version -v -352767 Wine/valgrind: noted but unhandled ioctl 0x5307 [..] (CDROMSTOP) -356374 Assertion 'DRD_(g_threadinfo)[tid].pt_threadid != - INVALID_POSIX_THREADID' failed -358213 helgrind/drd bar_bad testcase hangs or crashes with new glibc pthread - barrier implementation -358697 valgrind.h: Some code remains even when defining NVALGRIND -359202 Add musl libc configure/compile -360415 amd64 instructions ADCX and ADOX are not implemented in VEX - == 372828 (vex amd64->IR: 0x66 0xF 0x3A 0x62 0x4A 0x10) -360429 unhandled ioctl 0x530d with no size/direction hints (CDROMREADMODE1) -362223 assertion failed when .valgrindrc is a directory instead of a file -367543 bt/btc/btr/bts x86/x86_64 instructions are poorly-handled wrt flags -367942 Segfault vgPlain_do_sys_sigaction (m_signals.c:1138) -368507 can't malloc chunks larger than about 34GB -368529 Android arm target link error, missing atexit and pthread_atfork -368863 WARNING: unhandled arm64-linux syscall: 100 (get_robust_list) -368865 WARNING: unhandled arm64-linux syscall: 272 (kcmp) -368868 disInstr(arm64): unhandled instruction 0xD53BE000 = cntfrq_el0 (ARMv8) -368917 WARNING: unhandled arm64-linux syscall: 218 (request_key) -368918 WARNING: unhandled arm64-linux syscall: 127 (sched_rr_get_interval) -368922 WARNING: unhandled arm64-linux syscall: 161 (sethostname) -368924 WARNING: unhandled arm64-linux syscall: 84 (sync_file_range) -368925 WARNING: unhandled arm64-linux syscall: 130 (tkill) -368926 WARNING: unhandled arm64-linux syscall: 97 (unshare) -369459 valgrind on arm64 violates the ARMv8 spec (ldxr/stxr) -370028 Reduce the number of compiler warnings on MIPS platforms -370635 arm64 missing syscall getcpu -371225 Fix order of timer_{gettime,getoverrun,settime} syscalls on arm64 -371227 Clean AArch64 syscall table -371412 Rename wrap_sys_shmat to sys_shmat like other wrappers -371471 Valgrind complains about non legit memory leaks on placement new (C++) -371491 handleAddrOverrides() is [incorrect] when ASO prefix is used -371503 disInstr(arm64): unhandled instruction 0xF89F0000 -371869 support '%' in symbol Z-encoding -371916 execution tree xtree concept -372120 c++ demangler demangles symbols which are not c++ -372185 Support of valgrind on ARMv8 with 32 bit executable -372188 vex amd64->IR: 0x66 0xF 0x3A 0x62 0x4A 0x10 0x10 0x48 (PCMPxSTRx $0x10) -372195 Power PC, xxsel instruction is not always recognized. -372504 Hanging on exit_group -372600 process loops forever when fatal signals are arriving quickly -372794 LibVEX (arm32 front end): 'Assertion szBlg2 <= 3' failed -373046 Stacks registered by core are never deregistered -373069 memcheck/tests/leak_cpp_interior fails with GCC 5.1+ -373086 Implement additional Xen hypercalls -373192 Calling posix_spawn in glibc 2.24 completely broken -373488 Support for fanotify API on ARM64 architecture - == 368864 WARNING: unhandled arm64-linux syscall: 262 (fanotify_init) -373555 Rename BBPTR to GSPTR as it denotes guest state pointer only -373938 const IRExpr arguments for matchIRExpr() -374719 some spelling fixes -374963 increase valgrind's load address to prevent mmap failure -375514 valgrind_get_tls_addr() does not work in case of static TLS -375772 +1 error in get_elf_symbol_info() when computing value of 'hi' address - for ML_(find_rx_mapping)() -375806 Test helgrind/tests/tc22_exit_w_lock fails with glibc 2.24 -375839 Temporary storage exhausted, with long sequence of vfmadd231ps insns - == 377159 "vex: the `impossible' happened" still present - == 375150 Assertion 'tres.status == VexTransOK' failed - == 378068 valgrind crashes on AVX2 function in FFmpeg -376142 Segfaults on MIPS Cavium Octeon boards -376279 disInstr(arm64): unhandled instruction 0xD50320FF -376455 Solaris: unhandled syscall lgrpsys(180) -376518 Solaris: unhandled fast trap getlgrp(6) -376611 ppc64 and arm64 don't know about prlimit64 syscall -376729 PPC64, remove R2 from the clobber list - == 371668 -376956 syswrap of SNDDRV and DRM_IOCTL_VERSION causing some addresses - to be wrongly marked as addressable -377066 Some Valgrind unit tests fail to compile on Ubuntu 16.10 with - PIE enabled by default -377376 memcheck/tests/linux/getregset fails with glibc2.24 -377427 PPC64, lxv instruction failing on odd destination register -377478 PPC64: ISA 3.0 setup fixes -377698 Missing memory check for futex() uaddr arg for FUTEX_WAKE - and FUTEX_WAKE_BITSET, check only 4 args for FUTEX_WAKE_BITSET, - and 2 args for FUTEX_TRYLOCK_PI -377717 Fix massive space leak when reading compressed debuginfo sections -377891 Update Xen 4.6 domctl wrappers -377930 fcntl syscall wrapper is missing flock structure check -378524 libvexmultiarch_test regression on s390x and ppc64 -378535 Valgrind reports INTERNAL ERROR in execve syscall wrapper -378673 Update libiberty demangler -378931 Add ISA 3.0B additional isnstructions, add OV32, CA32 setting support -379039 syscall wrapper for prctl(PR_SET_NAME) must not check more than 16 bytes -379094 Valgrind reports INTERNAL ERROR in rt_sigsuspend syscall wrapper -379371 UNKNOWN task message [id 3444, to mach_task_self(), reply 0x603] - (task_register_dyld_image_infos) -379372 UNKNOWN task message [id 3447, to mach_task_self(), reply 0x603] - (task_register_dyld_shared_cache_image_info) -379390 unhandled syscall: mach:70 (host_create_mach_voucher_trap) -379473 MIPS: add support for rdhwr cycle counter register -379504 remove TileGX/Linux port -379525 Support more x86 nop opcodes -379838 disAMode(x86): not an addr! -379703 PC ISA 3.0 fixes: stxvx, stxv, xscmpexpdp instructions -379890 arm: unhandled instruction: 0xEBAD 0x1B05 (sub.w fp, sp, r5, lsl #4) -379895 clock_gettime does not execute POST syscall wrapper -379925 PPC64, mtffs does not set the FPCC and C bits in the FPSCR correctly -379966 WARNING: unhandled amd64-linux syscall: 313 (finit_module) -380200 xtree generated callgrind files refer to files without directory name -380202 Assertion failure for cache line size (cls == 64) on aarch64. -380397 s390x: __GI_strcspn() replacement needed -n-i-bz Fix pub_tool_basics.h build issue with g++ 4.4.7. - -(3.13.0.RC1: 2 June 2017, vex r3386, valgrind r16434) -(3.13.0.RC2: 9 June 2017, vex r3389, valgrind r16443) -(3.13.0: 14 June 2017, vex r3396, valgrind r16446) - - - -Release 3.12.0 (20 October 2016) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -3.12.0 is a feature release with many improvements and the usual -collection of bug fixes. - -This release supports X86/Linux, AMD64/Linux, ARM32/Linux, -ARM64/Linux, PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, -MIPS32/Linux, MIPS64/Linux, ARM/Android, ARM64/Android, -MIPS32/Android, X86/Android, X86/Solaris, AMD64/Solaris, X86/MacOSX -10.10 and AMD64/MacOSX 10.10. There is also preliminary support for -X86/MacOSX 10.11/12, AMD64/MacOSX 10.11/12 and TILEGX/Linux. - -* ================== PLATFORM CHANGES ================= - -* POWER: Support for ISA 3.0 has been added - -* mips: support for O32 FPXX ABI has been added. -* mips: improved recognition of different processors -* mips: determination of page size now done at run time - -* amd64: Partial support for AMD FMA4 instructions. - -* arm, arm64: Support for v8 crypto and CRC instructions. - -* Improvements and robustification of the Solaris port. - -* Preliminary support for MacOS 10.12 (Sierra) has been added. - -Whilst 3.12.0 continues to support the 32-bit x86 instruction set, we -would prefer users to migrate to 64-bit x86 (a.k.a amd64 or x86_64) -where possible. Valgrind's support for 32-bit x86 has stagnated in -recent years and has fallen far behind that for 64-bit x86 -instructions. By contrast 64-bit x86 is well supported, up to and -including AVX2. - -* ==================== TOOL CHANGES ==================== - -* Memcheck: - - - Added meta mempool support for describing a custom allocator which: - - Auto-frees all chunks assuming that destroying a pool destroys all - objects in the pool - - Uses itself to allocate other memory blocks - - - New flag --ignore-range-below-sp to ignore memory accesses below - the stack pointer, if you really have to. The related flag - --workaround-gcc296-bugs=yes is now deprecated. Use - --ignore-range-below-sp=1024-1 as a replacement. - -* DRD: - - - Improved thread startup time significantly on non-Linux platforms. - -* DHAT - - - Added collection of the metric "tot-blocks-allocd" - -* ==================== OTHER CHANGES ==================== - -* Replacement/wrapping of malloc/new related functions is now done not just - for system libraries by default, but for any globally defined malloc/new - related function (both in shared libraries and statically linked alternative - malloc implementations). The dynamic (runtime) linker is excluded, though. - To only intercept malloc/new related functions in - system libraries use --soname-synonyms=somalloc=nouserintercepts (where - "nouserintercepts" can be any non-existing library name). - This new functionality is not implemented for MacOS X. - -* The maximum number of callers in a suppression entry is now equal to - the maximum size for --num-callers (500). - Note that --gen-suppressions=yes|all similarly generates suppressions - containing up to --num-callers frames. - -* New and modified GDB server monitor features: - - - Valgrind's gdbserver now accepts the command 'catch syscall'. - Note that you must have GDB >= 7.11 to use 'catch syscall' with - gdbserver. - -* New option --run-cxx-freeres= can be used to change whether - __gnu_cxx::__freeres() cleanup function is called or not. Default is - 'yes'. - -* Valgrind is able to read compressed debuginfo sections in two formats: - - zlib ELF gABI format with SHF_COMPRESSED flag (gcc option -gz=zlib) - - zlib GNU format with .zdebug sections (gcc option -gz=zlib-gnu) - -* Modest JIT-cost improvements: the cost of instrumenting code blocks - for the most common use case (x86_64-linux, Memcheck) has been - reduced by 10%-15%. - -* Improved performance for programs that do a lot of discarding of - instruction address ranges of 8KB or less. - -* The C++ symbol demangler has been updated. - -* More robustness against invalid syscall parameters on Linux. - -* ==================== FIXED BUGS ==================== - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather -than mailing the developers (or mailing lists) directly -- bugs that -are not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit - https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -191069 Exiting due to signal not reported in XML output -199468 Suppressions: stack size limited to 25 - while --num-callers allows more frames -212352 vex amd64 unhandled opc_aux = 0x 2, first_opcode == 0xDC (FCOM) -278744 cvtps2pd with redundant RexW -303877 valgrind doesn't support compressed debuginfo sections. -345307 Warning about "still reachable" memory when using libstdc++ from gcc 5 -348345 Assertion fails for negative lineno -348924 MIPS: Load doubles through memory so the code compiles with the FPXX ABI -351282 V 3.10.1 MIPS softfloat build broken with GCC 4.9.3 / binutils 2.25.1 -351692 Dumps created by valgrind are not readable by gdb (mips32 specific) -351804 Crash on generating suppressions for "printf" call on OS X 10.10 -352197 mips: mmap2() not wrapped correctly for page size > 4096 -353083 arm64 doesn't implement various xattr system calls -353084 arm64 doesn't support sigpending system call -353137 www: update info for Supported Platforms -353138 www: update "The Valgrind Developers" page -353370 don't advertise RDRAND in cpuid for Core-i7-4910-like avx2 machine - == 365325 - == 357873 -353384 amd64->IR: 0x66 0xF 0x3A 0x62 0xD1 0x62 (pcmpXstrX $0x62) -353398 WARNING: unhandled amd64-solaris syscall: 207 -353660 XML in auxwhat tag not escaping reserved symbols properly -353680 s390x: Crash with certain glibc versions due to non-implemented TBEGIN -353727 amd64->IR: 0x66 0xF 0x3A 0x62 0xD1 0x72 (pcmpXstrX $0x72) -353802 ELF debug info reader confused with multiple .rodata sections -353891 Assert 'bad_scanned_addr < VG_ROUNDDN(start+len, sizeof(Addr))' failed -353917 unhandled amd64-solaris syscall fchdir(120) -353920 unhandled amd64-solaris syscall: 170 -354274 arm: unhandled instruction: 0xEBAD 0x0AC1 (sub.w sl, sp, r1, lsl #3) -354392 unhandled amd64-solaris syscall: 171 -354797 Vbit test does not include Iops for Power 8 instruction support -354883 tst->os_state.pthread - magic_delta assertion failure on OSX 10.11 - == 361351 - == 362920 - == 366222 -354933 Fix documentation of --kernel-variant=android-no-hw-tls option -355188 valgrind should intercept all malloc related global functions -355454 do not intercept malloc related symbols from the runtime linker -355455 stderr.exp of test cases wrapmalloc and wrapmallocstatic overconstrained -356044 Dwarf line info reader misinterprets is_stmt register -356112 mips: replace addi with addiu -356393 valgrind (vex) crashes because isZeroU happened - == 363497 - == 364497 -356676 arm64-linux: unhandled syscalls 125, 126 (sched_get_priority_max/min) -356678 arm64-linux: unhandled syscall 232 (mincore) -356817 valgrind.h triggers compiler errors on MSVC when defining NVALGRIND -356823 Unsupported ARM instruction: stlex -357059 x86/amd64: SSE cvtpi2ps with memory source does transition to MMX state -357338 Unhandled instruction for SHA instructions libcrypto Boring SSL -357673 crash if I try to run valgrind with a binary link with libcurl -357833 Setting RLIMIT_DATA to zero breaks with linux 4.5+ -357871 pthread_spin_destroy not properly wrapped -357887 Calls to VG_(fclose) do not close the file descriptor -357932 amd64->IR: accept redundant REX prefixes for {minsd,maxsd} m128, xmm. -358030 support direct socket calls on x86 32bit (new in linux 4.3) -358478 drd/tests/std_thread.cpp doesn't build with GCC6 -359133 Assertion 'eltSzB <= ddpa->poolSzB' failed -359181 Buffer Overflow during Demangling -359201 futex syscall "skips" argument 5 if op is FUTEX_WAIT_BITSET -359289 s390x: popcnt (B9E1) not implemented -359472 The Power PC vsubuqm instruction doesn't always give the correct result -359503 Add missing syscalls for aarch64 (arm64) -359645 "You need libc6-dbg" help message could be more helpful -359703 s390: wire up separate socketcalls system calls -359724 getsockname might crash - deref_UInt should call safe_to_deref -359733 amd64 implement ld.so strchr/index override like x86 -359767 Valgrind does not support the IBM POWER ISA 3.0 instructions, part 1/5 -359829 Power PC test suite none/tests/ppc64/test_isa_2_07.c uses - uninitialized data -359838 arm64: Unhandled instruction 0xD5033F5F (clrex) -359871 Incorrect mask handling in ppoll -359952 Unrecognised PCMPESTRM variants (0x70, 0x19) -360008 Contents of Power vr registers contents is not printed correctly when - the --vgdb-shadow-registers=yes option is used -360035 POWER PC instruction bcdadd and bcdsubtract generate result with - non-zero shadow bits -360378 arm64: Unhandled instruction 0x5E280844 (sha1h s4, s2) -360425 arm64 unsupported instruction ldpsw - == 364435 -360519 none/tests/arm64/memory.vgtest might fail with newer gcc -360571 Error about the Android Runtime reading below the stack pointer on ARM -360574 Wrong parameter type for an ashmem ioctl() call on Android and ARM64 -360749 kludge for multiple .rodata sections on Solaris no longer needed -360752 raise the number of reserved fds in m_main.c from 10 to 12 -361207 Valgrind does not support the IBM POWER ISA 3.0 instructions, part 2/5 -361226 s390x: risbgn (EC59) not implemented -361253 [s390x] ex_clone.c:42: undefined reference to `pthread_create' -361354 ppc64[le]: wire up separate socketcalls system calls -361615 Inconsistent termination for multithreaded process terminated by signal -361926 Unhandled Solaris syscall: sysfs(84) -362009 V dumps core on unimplemented functionality before threads are created -362329 Valgrind does not support the IBM POWER ISA 3.0 instructions, part 3/5 -362894 missing (broken) support for wbit field on mtfsfi instruction (ppc64) -362935 [AsusWRT] Assertion 'sizeof(TTEntryC) <= 88' failed -362953 Request for an update to the Valgrind Developers page -363680 add renameat2() support -363705 arm64 missing syscall name_to_handle_at and open_by_handle_at -363714 ppc64 missing syscalls sync, waitid and name_to/open_by_handle_at -363858 Valgrind does not support the IBM POWER ISA 3.0 instructions, part 4/5 -364058 clarify in manual limitations of array overruns detections -364413 pselect sycallwrapper mishandles NULL sigmask -364728 Power PC, missing support for several HW registers in - get_otrack_shadow_offset_wrk() -364948 Valgrind does not support the IBM POWER ISA 3.0 instructions, part 5/5 -365273 Invalid write to stack location reported after signal handler runs -365912 ppc64BE segfault during jm-insns test (RELRO) -366079 FPXX Support for MIPS32 Valgrind -366138 Fix configure errors out when using Xcode 8 (clang 8.0.0) -366344 Multiple unhandled instruction for Aarch64 - (0x0EE0E020, 0x1AC15800, 0x4E284801, 0x5E040023, 0x5E056060) -367995 Integration of memcheck with custom memory allocator -368120 x86_linux asm _start functions do not keep 16-byte aligned stack pointer -368412 False positive result for altivec capability check -368416 Add tc06_two_races_xml.exp output for ppc64 -368419 Perf Events ioctls not implemented -368461 mmapunmap test fails on ppc64 -368823 run_a_thread_NORETURN assembly code typo for VGP_arm64_linux target -369000 AMD64 fma4 instructions unsupported. -369169 ppc64 fails jm_int_isa_2_07 test -369175 jm_vec_isa_2_07 test crashes on ppc64 -369209 valgrind loops and eats up all memory if cwd doesn't exist. -369356 pre_mem_read_sockaddr syscall wrapper can crash with bad sockaddr -369359 msghdr_foreachfield can crash when handling bad iovec -369360 Bad sigprocmask old or new sets can crash valgrind -369361 vmsplice syscall wrapper crashes on bad iovec -369362 Bad sigaction arguments crash valgrind -369383 x86 sys_modify_ldt wrapper crashes on bad ptr -369402 Bad set/get_thread_area pointer crashes valgrind -369441 bad lvec argument crashes process_vm_readv/writev syscall wrappers -369446 valgrind crashes on unknown fcntl command -369439 S390x: Unhandled insns RISBLG/RISBHG and LDE/LDER -369468 Remove quadratic metapool algorithm using VG_(HT_remove_at_Iter) -370265 ISA 3.0 HW cap stuff needs updating -371128 BCD add and subtract instructions on Power BE in 32-bit mode do not work -372195 Power PC, xxsel instruction is not always recognized - -n-i-bz Fix incorrect (or infinite loop) unwind on RHEL7 x86 and amd64 -n-i-bz massif --pages-as-heap=yes does not report peak caused by mmap+munmap -n-i-bz false positive leaks due to aspacemgr merging heap & non heap segments -n-i-bz Fix ppoll_alarm exclusion on OS X -n-i-bz Document brk segment limitation, reference manual in limit reached msg. -n-i-bz Fix clobber list in none/tests/amd64/xacq_xrel.c [valgrind r15737] -n-i-bz Bump allowed shift value for "add.w reg, sp, reg, lsl #N" [vex r3206] -n-i-bz amd64: memcheck false positive with shr %edx -n-i-bz arm3: Allow early writeback of SP base register in "strd rD, [sp, #-16]" -n-i-bz ppc: Fix two cases of PPCAvFpOp vs PPCFpOp enum confusion -n-i-bz arm: Fix incorrect register-number constraint check for LDAEX{,B,H,D} -n-i-bz DHAT: added collection of the metric "tot-blocks-allocd" - -(3.12.0.RC1: 20 October 2016, vex r3282, valgrind r16094) -(3.12.0.RC2: 20 October 2016, vex r3282, valgrind r16096) -(3.12.0: 21 October 2016, vex r3282, valgrind r16098) - - - -Release 3.11.0 (22 September 2015) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -3.11.0 is a feature release with many improvements and the usual -collection of bug fixes. - -This release supports X86/Linux, AMD64/Linux, ARM32/Linux, -ARM64/Linux, PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, -MIPS32/Linux, MIPS64/Linux, ARM/Android, ARM64/Android, -MIPS32/Android, X86/Android, X86/Solaris, AMD64/Solaris, X86/MacOSX -10.10 and AMD64/MacOSX 10.10. There is also preliminary support for -X86/MacOSX 10.11, AMD64/MacOSX 10.11 and TILEGX/Linux. - -* ================== PLATFORM CHANGES ================= - -* Support for Solaris/x86 and Solaris/amd64 has been added. - -* Preliminary support for Mac OS X 10.11 (El Capitan) has been added. - -* Preliminary support for the Tilera TileGX architecture has been added. - -* s390x: It is now required for the host to have the "long displacement" - facility. The oldest supported machine model is z990. - -* x86: on an SSE2 only host, Valgrind in 32 bit mode now claims to be a - Pentium 4. 3.10.1 wrongly claimed to be a Core 2, which is SSSE3. - -* The JIT's register allocator is significantly faster, making the JIT - as a whole somewhat faster, so JIT-intensive activities, for example - program startup, are modestly faster, around 5%. - -* There have been changes to the default settings of several command - line flags, as detailed below. - -* Intel AVX2 support is more complete (64 bit targets only). On AVX2 - capable hosts, the simulated CPUID will now indicate AVX2 support. - -* ==================== TOOL CHANGES ==================== - -* Memcheck: - - - The default value for --leak-check-heuristics has been changed from - "none" to "all". This helps to reduce the number of possibly - lost blocks, in particular for C++ applications. - - - The default value for --keep-stacktraces has been changed from - "malloc-then-free" to "malloc-and-free". This has a small cost in - memory (one word per malloc-ed block) but allows Memcheck to show the - 3 stacktraces of a dangling reference: where the block was allocated, - where it was freed, and where it is acccessed after being freed. - - - The default value for --partial-loads-ok has been changed from "no" to - "yes", so as to avoid false positive errors resulting from some kinds - of vectorised loops. - - - A new monitor command 'xb ' shows the validity bits of - bytes at . The monitor command 'xb' is easier to use - than get_vbits when you need to associate byte data value with - their corresponding validity bits. - - - The 'block_list' monitor command has been enhanced: - o it can print a range of loss records - o it now accepts an optional argument 'limited ' - to control the number of blocks printed. - o if a block has been found using a heuristic, then - 'block_list' now shows the heuristic after the block size. - o the loss records/blocks to print can be limited to the blocks - found via specified heuristics. - - - The C helper functions used to instrument loads on - x86-{linux,solaris} and arm-linux (both 32-bit only) have been - replaced by handwritten assembly sequences. This gives speedups - in the region of 0% to 7% for those targets only. - - - A new command line option, --expensive-definedness-checks=yes|no, - has been added. This is useful for avoiding occasional invalid - uninitialised-value errors in optimised code. Watch out for - runtime degradation, as this can be up to 25%. As always, though, - the slowdown is highly application specific. The default setting - is "no". - -* Massif: - - - A new monitor command 'all_snapshots ' dumps all - snapshots taken so far. - -* Helgrind: - - - Significant memory reduction and moderate speedups for - --history-level=full for applications accessing a lot of memory - with many different stacktraces. - - - The default value for --conflict-cache-size=N has been doubled to - 2000000. Users that were not using the default value should - preferably also double the value they give. - - The default was changed due to the changes in the "full history" - implementation. Doubling the value gives on average a slightly more - complete history and uses similar memory (or significantly less memory - in the worst case) than the previous implementation. - - - The Helgrind monitor command 'info locks' now accepts an optional - argument 'lock_addr', which shows information about the lock at the - given address only. - - - When using --history-level=full, the new Helgrind monitor command - 'accesshistory []' will show the recorded accesses for - (or 1) bytes at . - -* ==================== OTHER CHANGES ==================== - -* The default value for the --smc-check option has been changed from - "stack" to "all-non-file" on targets that provide automatic D-I - cache coherence (x86, amd64 and s390x). The result is to provide, - by default, transparent support for JIT generated and self-modifying - code on all targets. - -* Mac OS X only: the default value for the --dsymutil option has been - changed from "no" to "yes", since any serious usage on Mac OS X - always required it to be "yes". - -* The command line options --db-attach and --db-command have been removed. - They were deprecated in 3.10.0. - -* When a process dies due to a signal, Valgrind now shows the signal - and the stacktrace at default verbosity (i.e. verbosity 1). - -* The address description logic used by Memcheck and Helgrind now - describes addresses in anonymous segments, file mmap-ed segments, - shared memory segments and the brk data segment. - -* The new option --error-markers=, can be used to mark the - begin/end of errors in textual output mode, to facilitate - searching/extracting errors in output files that mix valgrind errors - with program output. - -* The new option --max-threads= can be used to change the number - of threads valgrind can handle. The default is 500 threads which - should be more than enough for most applications. - -* The new option --valgrind-stacksize= can be used to change the - size of the private thread stacks used by Valgrind. This is useful - for reducing memory use or increasing the stack size if Valgrind - segfaults due to stack overflow. - -* The new option --avg-transtab-entry-size= can be used to specify - the expected instrumented block size, either to reduce memory use or - to avoid excessive retranslation. - -* Valgrind can be built with Intel's ICC compiler, version 14.0 or later. - -* New and modified GDB server monitor features: - - - When a signal is reported in GDB, you can now use the GDB convenience - variable $_siginfo to examine detailed signal information. - - - Valgrind's gdbserver now allows the user to change the signal - to deliver to the process. So, use 'signal SIGNAL' to continue execution - with SIGNAL instead of the signal reported to GDB. Use 'signal 0' to - continue without passing the signal to the process. - - - With GDB >= 7.10, the command 'target remote' - will automatically load the executable file of the process running - under Valgrind. This means you do not need to specify the executable - file yourself, GDB will discover it itself. See GDB documentation about - 'qXfer:exec-file:read' packet for more info. - -* ==================== FIXED BUGS ==================== - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather -than mailing the developers (or mailing lists) directly -- bugs that -are not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit - https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -116002 VG_(printf): Problems with justification of strings and integers -155125 avoid cutting away file:lineno after long function name -197259 Unsupported arch_prtctl PR_SET_GS option -201152 ppc64: Assertion in ppc32g_dirtyhelper_MFSPR_268_269 -201216 Fix Valgrind does not support pthread_sigmask() on OS X -201435 Fix Darwin: -v does not show kernel version -208217 "Warning: noted but unhandled ioctl 0x2000747b" on Mac OS X -211256 Fixed an outdated comment regarding the default platform. -211529 Incomplete call stacks for code compiled by newer versions of MSVC -211926 Avoid compilation warnings in valgrind.h with -pedantic -212291 Fix unhandled syscall: unix:132 (mkfifo) on OS X - == 263119 -226609 Crediting upstream authors in man page -231257 Valgrind omits path when executing script from shebang line -254164 OS X task_info: UNKNOWN task message [id 3405, to mach_task_self() [..] -294065 Improve the pdb file reader by avoiding hardwired absolute pathnames -269360 s390x: Fix addressing mode selection for compare-and-swap -302630 Memcheck: Assertion failed: 'sizeof(UWord) == sizeof(UInt)' - == 326797 -312989 ioctl handling needs to do POST handling on generic ioctls and [..] -319274 Fix unhandled syscall: unix:410 (sigsuspend_nocancel) on OS X -324181 mmap does not handle MAP_32BIT (handle it now, rather than fail it) -327745 Fix valgrind 3.9.0 build fails on Mac OS X 10.6.8 -330147 libmpiwrap PMPI_Get_count returns undefined value -333051 mmap of huge pages fails due to incorrect alignment - == 339163 -334802 valgrind does not always explain why a given option is bad -335618 mov.w rN, pc/sp (ARM32) -335785 amd64->IR 0xC4 0xE2 0x75 0x2F (vmaskmovpd) - == 307399 - == 343175 - == 342740 - == 346912 -335907 segfault when running wine's ddrawex/tests/surface.c under valgrind -338602 AVX2 bit in CPUID missing -338606 Strange message for scripts with invalid interpreter -338731 ppc: Fix testuite build for toolchains not supporting -maltivec -338995 shmat with hugepages (SHM_HUGETLB) fails with EINVAL -339045 Getting valgrind to compile and run on OS X Yosemite (10.10) - == 340252 -339156 gdbsrv not called for fatal signal -339215 Valgrind 3.10.0 contain 2013 in copyrights notice -339288 support Cavium Octeon MIPS specific BBIT*32 instructions -339636 Use fxsave64 and fxrstor64 mnemonics instead of old-school rex64 prefix -339442 Fix testsuite build failure on OS X 10.9 -339542 Enable compilation with Intel's ICC compiler -339563 The DVB demux DMX_STOP ioctl doesn't have a wrapper -339688 Mac-specific ASM does not support .version directive (cpuid, - tronical and pushfpopf tests) -339745 Valgrind crash when check Marmalade app (partial fix) -339755 Fix known deliberate memory leak in setenv() on Mac OS X 10.9 -339778 Linux/TileGx platform support for Valgrind -339780 Fix known uninitialised read in pthread_rwlock_init() on Mac OS X 10.9 -339789 Fix none/tests/execve test on Mac OS X 10.9 -339808 Fix none/tests/rlimit64_nofile test on Mac OS X 10.9 -339820 vex amd64->IR: 0x66 0xF 0x3A 0x63 0xA 0x42 0x74 0x9 (pcmpistri $0x42) -340115 Fix none/tests/cmdline[1|2] tests on systems which define TMPDIR -340392 Allow user to select more accurate definedness checking in memcheck - to avoid invalid complaints on optimised code -340430 Fix some grammatical weirdness in the manual. -341238 Recognize GCC5/DWARFv5 DW_LANG constants (Go, C11, C++11, C++14) -341419 Signal handler ucontext_t not filled out correctly on OS X -341539 VG_(describe_addr) should not describe address as belonging to client - segment if it is past the heap end -341613 Enable building of manythreads and thread-exits tests on Mac OS X -341615 Fix none/tests/darwin/access_extended test on Mac OS X -341698 Valgrind's AESKEYGENASSIST gives wrong result in words 0 and 2 [..] -341789 aarch64: shmat fails with valgrind on ARMv8 -341997 MIPS64: Cavium OCTEON insns - immediate operand handled incorrectly -342008 valgrind.h needs type cast [..] for clang/llvm in 64-bit mode -342038 Unhandled syscalls on aarch64 (mbind/get/set_mempolicy) -342063 wrong format specifier for test mcblocklistsearch in gdbserver_tests -342117 Hang when loading PDB file for MSVC compiled Firefox under Wine -342221 socket connect false positive uninit memory for unknown af family -342353 Allow dumping full massif output while valgrind is still running -342571 Valgrind chokes on AVX compare intrinsic with _CMP_GE_QS - == 346476 - == 348387 - == 350593 -342603 Add I2C_SMBUS ioctl support -342635 OS X 10.10 (Yosemite) - missing system calls and fcntl code -342683 Mark memory past the initial brk limit as unaddressable -342783 arm: unhandled instruction 0xEEFE1ACA = "vcvt.s32.f32 s3, s3, #12" -342795 Internal glibc __GI_mempcpy call should be intercepted -342841 s390x: Support instructions fiebr(a) and fidbr(a) -343012 Unhandled syscall 319 (memfd_create) -343069 Patch updating v4l2 API support -343173 helgrind crash during stack unwind -343219 fix GET_STARTREGS for arm -343303 Fix known deliberate memory leak in setenv() on Mac OS X 10.10 -343306 OS X 10.10: UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option -343332 Unhandled instruction 0x9E310021 (fcvtmu) on aarch64 -343335 unhandled instruction 0x1E638400 (fccmp) aarch64 -343523 OS X mach_ports_register: UNKNOWN task message [id 3403, to [..] -343525 OS X host_get_special_port: UNKNOWN host message [id 412, to [..] -343597 ppc64le: incorrect use of offseof macro -343649 OS X host_create_mach_voucher: UNKNOWN host message [id 222, to [..] -343663 OS X 10.10 Memchecj always reports a leak regardless of [..] -343732 Unhandled syscall 144 (setgid) on aarch64 -343733 Unhandled syscall 187 (msgctl and related) on aarch64 -343802 s390x: False positive "conditional jump or move depends on [..] -343902 --vgdb=yes doesn't break when --xml=yes is used -343967 Don't warn about setuid/setgid/setcap executable for directories -343978 Recognize DWARF5/GCC5 DW_LANG_Fortran 2003 and 2008 constants -344007 accept4 syscall unhandled on arm64 (242) and ppc64 (344) -344033 Helgrind on ARM32 loses track of mutex state in pthread_cond_wait -344054 www - update info for Solaris/illumos -344416 'make regtest' does not work cleanly on OS X -344235 Remove duplicate include of pub_core_aspacemgr.h -344279 syscall sendmmsg on arm64 (269) and ppc32/64 (349) unhandled -344295 syscall recvmmsg on arm64 (243) and ppc32/64 (343) unhandled -344307 2 unhandled syscalls on aarch64/arm64: umount2(39), mount (40) -344314 callgrind_annotate ... warnings about commands containing newlines -344318 socketcall should wrap recvmmsg and sendmmsg -344337 Fix unhandled syscall: mach:41 (_kernelrpc_mach_port_guard_trap) -344416 Fix 'make regtest' does not work cleanly on OS X -344499 Fix compilation for Linux kernel >= 4.0.0 -344512 OS X: unhandled syscall: unix:348 (__pthread_chdir), - unix:349 (__pthread_fchdir) -344559 Garbage collection of unused segment names in address space manager -344560 Fix stack traces missing penultimate frame on OS X -344621 Fix memcheck/tests/err_disable4 test on OS X -344686 Fix suppression for pthread_rwlock_init on OS X 10.10 -344702 Fix missing libobjc suppressions on OS X 10.10 - == 344543 -344936 Fix unhandled syscall: unix:473 (readlinkat) on OS X 10.10 -344939 Fix memcheck/tests/xml1 on OS X 10.10 -345016 helgrind/tests/locked_vs_unlocked2 is failing sometimes -345079 Fix build problems in VEX/useful/test_main.c -345126 Incorrect handling of VIDIOC_G_AUDIO and G_AUDOUT -345177 arm64: prfm (reg) not implemented -345215 Performance improvements for the register allocator -345248 add support for Solaris OS in valgrind -345338 TIOCGSERIAL and TIOCSSERIAL ioctl support on Linux -345394 Fix memcheck/tests/strchr on OS X -345637 Fix memcheck/tests/sendmsg on OS X -345695 Add POWERPC support for AT_DCACHESIZE and HWCAP2 -345824 Fix aspacem segment mismatch: seen with none/tests/bigcode -345887 Fix an assertion in the address space manager -345928 amd64: callstack only contains current function for small stacks -345984 disInstr(arm): unhandled instruction: 0xEE193F1E -345987 MIPS64: Implement cavium LHX instruction -346031 MIPS: Implement support for the CvmCount register (rhwr %0, 31) -346185 Fix typo saving altivec register v24 -346267 Compiler warnings for PPC64 code on call to LibVEX_GuestPPC64_get_XER() - and LibVEX_GuestPPC64_get_CR() -346270 Regression tests none/tests/jm_vec/isa_2_07 and - none/tests/test_isa_2_07_part2 have failures on PPC64 little endian -346307 fuse filesystem syscall deadlocks -346324 PPC64 missing support for lbarx, lharx, stbcx and sthcx instructions -346411 MIPS: SysRes::_valEx handling is incorrect -346416 Add support for LL_IOC_PATH2FID and LL_IOC_GETPARENT Lustre ioctls -346474 PPC64 Power 8, spr TEXASRU register not supported -346487 Compiler generates "note" about a future ABI change for PPC64 -346562 MIPS64: lwl/lwr instructions are performing 64bit loads - and causing spurious "invalid read of size 8" warnings -346801 Fix link error on OS X: _vgModuleLocal_sf_maybe_extend_stack -347151 Fix suppression for pthread_rwlock_init on OS X 10.8 -347233 Fix memcheck/tests/strchr on OS X 10.10 (Haswell) -347322 Power PC regression test cleanup -347379 valgrind --leak-check=full leak errors from system libs on OS X 10.8 - == 217236 -347389 unhandled syscall: 373 (Linux ARM syncfs) -347686 Patch set to cleanup PPC64 regtests -347978 Remove bash dependencies where not needed -347982 OS X: undefined symbols for architecture x86_64: "_global" [..] -347988 Memcheck: the 'impossible' happened: unexpected size for Addr (OSX/wine) - == 345929 -348102 Patch updating v4l2 API support -348247 amd64 front end: jno jumps wrongly when overflow is not set -348269 Improve mmap MAP_HUGETLB support. -348334 (ppc) valgrind does not simulate dcbfl - then my program terminates -348345 Assertion fails for negative lineno -348377 Unsupported ARM instruction: yield -348565 Fix detection of command line option availability for clang -348574 vex amd64->IR pcmpistri SSE4.2 unsupported (pcmpistri $0x18) -348728 Fix broken check for VIDIOC_G_ENC_INDEX -348748 Fix redundant condition -348890 Fix clang warning about unsupported --param inline-unit-growth=900 -348949 Bogus "ERROR: --ignore-ranges: suspiciously large range" -349034 Add Lustre ioctls LL_IOC_GROUP_LOCK and LL_IOC_GROUP_UNLOCK -349086 Fix UNKNOWN task message [id 3406, to mach_task_self(), [..] -349087 Fix UNKNOWN task message [id 3410, to mach_task_self(), [..] -349626 Implemented additional Xen hypercalls -349769 Clang/osx: ld: warning: -read_only_relocs cannot be used with x86_64 -349790 Clean up of the hardware capability checking utilities. -349828 memcpy intercepts memmove causing src/dst overlap error (ppc64 ld.so) -349874 Fix typos in source code -349879 memcheck: add handwritten assembly for helperc_LOADV* -349941 di_notify_mmap might create wrong start/size DebugInfoMapping -350062 vex x86->IR: 0x66 0xF 0x3A 0xB (ROUNDSD) on OS X -350202 Add limited param to 'monitor block_list' -350290 s390x: Support instructions fixbr(a) -350359 memcheck/tests/x86/fxsave hangs indefinetely on OS X -350809 Fix none/tests/async-sigs for Solaris -350811 Remove reference to --db-attach which has been removed. -350813 Memcheck/x86: enable handwritten assembly helpers for x86/Solaris too -350854 hard-to-understand code in VG_(load_ELF)() -351140 arm64 syscalls setuid (146) and setresgid (149) not implemented -351386 Solaris: Cannot run ld.so.1 under Valgrind -351474 Fix VG_(iseqsigset) as obvious -351531 Typo in /include/vki/vki-xen-physdev.h header guard -351756 Intercept platform_memchr$VARIANT$Haswell on OS X -351858 ldsoexec support on Solaris -351873 Newer gcc doesn't allow __builtin_tabortdc[i] in ppc32 mode -352130 helgrind reports false races for printfs using mempcpy on FILE* state -352284 s390: Conditional jump depends on uninitialised value(s) in vfprintf -352320 arm64 crash on none/tests/nestedfs -352765 Vbit test fails on Power 6 -352768 The mbar instruction is missing from the Power PC support -352769 Power PC program priority register (PPR) is not supported -n-i-bz Provide implementations of certain compiler builtins to support - compilers that may not provide those -n-i-bz Old STABS code is still being compiled, but never used. Remove it. -n-i-bz Fix compilation on distros with glibc < 2.5 -n-i-bz (vex 3098) Avoid generation of Neon insns on non-Neon hosts -n-i-bz Enable rt_sigpending syscall on ppc64 linux. -n-i-bz mremap did not work properly on shared memory -n-i-bz Fix incorrect sizeof expression in syswrap-xen.c reported by Coverity -n-i-bz In VALGRIND_PRINTF write out thread name, if any, to xml - -(3.11.0.TEST1: 8 September 2015, vex r3187, valgrind r15646) -(3.11.0.TEST2: 21 September 2015, vex r3193, valgrind r15667) -(3.11.0: 22 September 2015, vex r3195, valgrind r15674) - - - -Release 3.10.1 (25 November 2014) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.10.1 is a bug fix release. It fixes various bugs reported in 3.10.0 -and backports fixes for all reported missing AArch64 ARMv8 instructions -and syscalls from the trunk. If you package or deliver 3.10.0 for others -to use, you might want to consider upgrading to 3.10.1 instead. - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather -than mailing the developers (or mailing lists) directly -- bugs that -are not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit - https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -335440 arm64: ld1 (single structure) is not implemented -335713 arm64: unhanded instruction: prfm (immediate) -339020 ppc64: memcheck/tests/ppc64/power_ISA2_05 failing in nightly build -339182 ppc64: AvSplat ought to load destination vector register with [..] -339336 PPC64 store quad instruction (stq) is not supposed to change [..] -339433 ppc64 lxvw4x instruction uses four 32-byte loads -339645 Use correct tag names in sys_getdents/64 wrappers -339706 Fix false positive for ioctl(TIOCSIG) on linux -339721 assertion 'check_sibling == sibling' failed in readdwarf3.c ... -339853 arm64 times syscall unknown -339855 arm64 unhandled getsid/setsid syscalls -339858 arm64 dmb sy not implemented -339926 Unhandled instruction 0x1E674001 (frintx) on aarm64 -339927 Unhandled instruction 0x9E7100C6 (fcvtmu) on aarch64 -339938 disInstr(arm64): unhandled instruction 0x4F8010A4 (fmla) - == 339950 -339940 arm64: unhandled syscall: 83 (sys_fdatasync) + patch -340033 arm64: unhandled insn dmb ishld and some other isb-dmb-dsb variants -340028 unhandled syscalls for arm64 (msync, pread64, setreuid and setregid) -340036 arm64: Unhandled instruction ld4 (multiple structures, no offset) -340236 arm64: unhandled syscalls: mknodat, fchdir, chroot, fchownat -340509 arm64: unhandled instruction fcvtas -340630 arm64: fchmod (52) and fchown (55) syscalls not recognized -340632 arm64: unhandled instruction fcvtas -340722 Resolve "UNKNOWN attrlist flags 0:0x10000000" -340725 AVX2: Incorrect decoding of vpbroadcast{b,w} reg,reg forms -340788 warning: unhandled syscall: 318 (getrandom) -340807 disInstr(arm): unhandled instruction: 0xEE989B20 -340856 disInstr(arm64): unhandled instruction 0x1E634C45 (fcsel) -340922 arm64: unhandled getgroups/setgroups syscalls -350251 Fix typo in VEX utility program (test_main.c). -350407 arm64: unhandled instruction ucvtf (vector, integer) -350809 none/tests/async-sigs breaks when run under cron on Solaris -350811 update README.solaris after r15445 -350813 Use handwritten memcheck assembly helpers on x86/Solaris [..] -350854 strange code in VG_(load_ELF)() -351140 arm64 syscalls setuid (146) and setresgid (149) not implemented -n-i-bz DRD and Helgrind: Handle Imbe_CancelReservation (clrex on ARM) -n-i-bz Add missing ]] to terminate CDATA. -n-i-bz Glibc versions prior to 2.5 do not define PTRACE_GETSIGINFO -n-i-bz Enable sys_fadvise64_64 on arm32. -n-i-bz Add test cases for all remaining AArch64 SIMD, FP and memory insns. -n-i-bz Add test cases for all known arm64 load/store instructions. -n-i-bz PRE(sys_openat): when checking whether ARG1 == VKI_AT_FDCWD [..] -n-i-bz Add detection of old ppc32 magic instructions from bug 278808. -n-i-bz exp-dhat: Implement missing function "dh_malloc_usable_size". -n-i-bz arm64: Implement "fcvtpu w, s". -n-i-bz arm64: implement ADDP and various others -n-i-bz arm64: Implement {S,U}CVTF (scalar, fixedpt). -n-i-bz arm64: enable FCVT{A,N}S X,S. - -(3.10.1: 25 November 2014, vex r3026, valgrind r14785) - - - -Release 3.10.0 (10 September 2014) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -3.10.0 is a feature release with many improvements and the usual -collection of bug fixes. - -This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, -PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, -MIPS64/Linux, ARM/Android, MIPS32/Android, X86/Android, X86/MacOSX 10.9 -and AMD64/MacOSX 10.9. Support for MacOSX 10.8 and 10.9 is -significantly improved relative to the 3.9.0 release. - -* ================== PLATFORM CHANGES ================= - -* Support for the 64-bit ARM Architecture (AArch64 ARMv8). This port - is mostly complete, and is usable, but some SIMD instructions are as - yet unsupported. - -* Support for little-endian variant of the 64-bit POWER architecture. - -* Support for Android on MIPS32. - -* Support for 64bit FPU on MIPS32 platforms. - -* Both 32- and 64-bit executables are supported on MacOSX 10.8 and 10.9. - -* Configuration for and running on Android targets has changed. - See README.android in the source tree for details. - -* ================== DEPRECATED FEATURES ================= - -* --db-attach is now deprecated and will be removed in the next - valgrind feature release. The built-in GDB server capabilities are - superior and should be used instead. Learn more here: - http://valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.gdbserver - -* ==================== TOOL CHANGES ==================== - -* Memcheck: - - - Client code can now selectively disable and re-enable reporting of - invalid address errors in specific ranges using the new client - requests VALGRIND_DISABLE_ADDR_ERROR_REPORTING_IN_RANGE and - VALGRIND_ENABLE_ADDR_ERROR_REPORTING_IN_RANGE. - - - Leak checker: there is a new leak check heuristic called - "length64". This is used to detect interior pointers pointing 8 - bytes inside a block, on the assumption that the first 8 bytes - holds the value "block size - 8". This is used by - sqlite3MemMalloc, for example. - - - Checking of system call parameters: if a syscall parameter - (e.g. bind struct sockaddr, sendmsg struct msghdr, ...) has - several fields not initialised, an error is now reported for each - field. Previously, an error was reported only for the first - uninitialised field. - - - Mismatched alloc/free checking: a new flag - --show-mismatched-frees=no|yes [yes] makes it possible to turn off - such checks if necessary. - -* Helgrind: - - - Improvements to error messages: - - o Race condition error message involving heap allocated blocks also - show the thread number that allocated the raced-on block. - - o All locks referenced by an error message are now announced. - Previously, some error messages only showed the lock addresses. - - o The message indicating where a lock was first observed now also - describes the address/location of the lock. - - - Helgrind now understands the Ada task termination rules and - creates a happens-before relationship between a terminated task - and its master. This avoids some false positives and avoids a big - memory leak when a lot of Ada tasks are created and terminated. - The interceptions are only activated with forthcoming releases of - gnatpro >= 7.3.0w-20140611 and gcc >= 5.0. - - - A new GDB server monitor command "info locks" giving the list of - locks, their location, and their status. - -* Callgrind: - - - callgrind_control now supports the --vgdb-prefix argument, - which is needed if valgrind was started with this same argument. - -* ==================== OTHER CHANGES ==================== - -* Unwinding through inlined function calls. Stack unwinding can now - make use of Dwarf3 inlined-unwind information if it is available. - The practical effect is that inlined calls become visible in stack - traces. The suppression matching machinery has been adjusted - accordingly. This is controlled by the new option - --read-inline-info=yes|no. Currently this is enabled by default - only on Linux and Android targets and only for the tools Memcheck, - Helgrind and DRD. - -* Valgrind can now read EXIDX unwind information on 32-bit ARM - targets. If an object contains both CFI and EXIDX unwind - information, Valgrind will prefer the CFI over the EXIDX. This - facilitates unwinding through system libraries on arm-android - targets. - -* Address description logic has been improved and is now common - between Memcheck and Helgrind, resulting in better address - descriptions for some kinds of error messages. - -* Error messages about dubious arguments (eg, to malloc or calloc) are - output like other errors. This means that they can be suppressed - and they have a stack trace. - -* The C++ demangler has been updated for better C++11 support. - -* New and modified GDB server monitor features: - - - Thread local variables/storage (__thread) can now be displayed. - - - The GDB server monitor command "v.info location
" - displays information about an address. The information produced - depends on the tool and on the options given to valgrind. - Possibly, the following are described: global variables, local - (stack) variables, allocated or freed blocks, ... - - - The option "--vgdb-stop-at=event1,event2,..." allows the user to - ask the GDB server to stop at the start of program execution, at - the end of the program execution and on Valgrind internal errors. - - - A new monitor command "v.info stats" shows various Valgrind core - and tool statistics. - - - A new monitor command "v.set hostvisibility" allows the GDB server - to provide access to Valgrind internal host status/memory. - -* A new option "--aspace-minaddr=
" can in some situations - allow the use of more memory by decreasing the address above which - Valgrind maps memory. It can also be used to solve address - conflicts with system libraries by increasing the default value. - See user manual for details. - -* The amount of memory used by Valgrind to store debug info (unwind - info, line number information and symbol data) has been - significantly reduced, even though Valgrind now reads more - information in order to support unwinding of inlined function calls. - -* Dwarf3 handling with --read-var-info=yes has been improved: - - - Ada and C struct containing VLAs no longer cause a "bad DIE" error - - - Code compiled with - -ffunction-sections -fdata-sections -Wl,--gc-sections - no longer causes assertion failures. - -* Improved checking for the --sim-hints= and --kernel-variant= - options. Unknown strings are now detected and reported to the user - as a usage error. - -* The semantics of stack start/end boundaries in the valgrind.h - VALGRIND_STACK_REGISTER client request has been clarified and - documented. The convention is that start and end are respectively - the lowest and highest addressable bytes of the stack. - -* ==================== FIXED BUGS ==================== - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather -than mailing the developers (or mailing lists) directly -- bugs that -are not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit - https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -175819 Support for ipv6 socket reporting with --track-fds -232510 make distcheck fails -249435 Analyzing wine programs with callgrind triggers a crash -278972 support for inlined function calls in stacktraces and suppression - == 199144 -291310 FXSAVE instruction marks memory as undefined on amd64 -303536 ioctl for SIOCETHTOOL (ethtool(8)) isn't wrapped -308729 vex x86->IR: unhandled instruction bytes 0xf 0x5 (syscall) -315199 vgcore file for threaded app does not show which thread crashed -315952 tun/tap ioctls are not supported -323178 Unhandled instruction: PLDW register (ARM) -323179 Unhandled instruction: PLDW immediate (ARM) -324050 Helgrind: SEGV because of unaligned stack when using movdqa -325110 Add test-cases for Power ISA 2.06 insns: divdo/divdo. and divduo/divduo. -325124 [MIPSEL] Compilation error -325477 Phase 4 support for IBM Power ISA 2.07 -325538 cavium octeon mips64, valgrind reported "dumping core" [...] -325628 Phase 5 support for IBM Power ISA 2.07 -325714 Empty vgcore but RLIMIT_CORE is big enough (too big) -325751 Missing the two privileged Power PC Transactional Memory Instructions -325816 Phase 6 support for IBM Power ISA 2.07 -325856 Make SGCheck fail gracefully on unsupported platforms -326026 Iop names for count leading zeros/sign bits incorrectly imply [..] -326436 DRD: False positive in libstdc++ std::list::push_back -326444 Cavium MIPS Octeon Specific Load Indexed Instructions -326462 Refactor vgdb to isolate invoker stuff into separate module -326469 amd64->IR: 0x66 0xF 0x3A 0x63 0xC1 0xE (pcmpistri 0x0E) -326623 DRD: false positive conflict report in a field assignment -326724 Valgrind does not compile on OSX 1.9 Mavericks -326816 Intercept for __strncpy_sse2_unaligned missing? -326921 coregrind fails to compile m_trampoline.S with MIPS/Linux port of V -326983 Clear direction flag after tests on amd64. -327212 Do not prepend the current directory to absolute path names. -327223 Support for Cavium MIPS Octeon Atomic and Count Instructions -327238 Callgrind Assertion 'passed <= last_bb->cjmp_count' failed -327284 s390x: Fix translation of the risbg instruction -327639 vex amd64->IR pcmpestri SSE4.2 instruction is unsupported 0x34 -327837 dwz compressed alternate .debug_info and .debug_str not read correctly -327916 DW_TAG_typedef may have no name -327943 s390x: add a redirection for the 'index' function -328100 XABORT not implemented -328205 Implement additional Xen hypercalls -328454 add support Backtraces with ARM unwind tables (EXIDX) -328455 s390x: SIGILL after emitting wrong register pair for ldxbr -328711 valgrind.1 manpage "memcheck options" section is badly generated -328878 vex amd64->IR pcmpestri SSE4.2 instruction is unsupported 0x14 -329612 Incorrect handling of AT_BASE for image execution -329694 clang warns about using uninitialized variable -329956 valgrind crashes when lmw/stmw instructions are used on ppc64 -330228 mmap must align to VKI_SHMLBA on mips32 -330257 LLVM does not support `-mno-dynamic-no-pic` option -330319 amd64->IR: unhandled instruction bytes: 0xF 0x1 0xD5 (xend) -330459 --track-fds=yes doesn't track eventfds -330469 Add clock_adjtime syscall support -330594 Missing sysalls on PowerPC / uClibc -330622 Add test to regression suite for POWER instruction: dcbzl -330939 Support for AMD's syscall instruction on x86 - == 308729 -330941 Typo in PRE(poll) syscall wrapper -331057 unhandled instruction: 0xEEE01B20 (vfma.f64) (has patch) -331254 Fix expected output for memcheck/tests/dw4 -331255 Fix race condition in test none/tests/coolo_sigaction -331257 Fix type of jump buffer in test none/tests/faultstatus -331305 configure uses bash specific syntax -331337 s390x WARNING: unhandled syscall: 326 (dup3) -331380 Syscall param timer_create(evp) points to uninitialised byte(s) -331476 Patch to handle ioctl 0x5422 on Linux (x86 and amd64) -331829 Unexpected ioctl opcode sign extension -331830 ppc64: WARNING: unhandled syscall: 96/97 -331839 drd/tests/sem_open specifies invalid semaphore name -331847 outcome of drd/tests/thread_name is nondeterministic -332037 Valgrind cannot handle Thumb "add pc, reg" -332055 drd asserts on platforms with VG_STACK_REDZONE_SZB == 0 and - consistency checks enabled -332263 intercepts for pthread_rwlock_timedrdlock and - pthread_rwlock_timedwrlock are incorrect -332265 drd could do with post-rwlock_init and pre-rwlock_destroy - client requests -332276 Implement additional Xen hypercalls -332658 ldrd.w r1, r2, [PC, #imm] does not adjust for 32bit alignment -332765 Fix ms_print to create temporary files in a proper directory -333072 drd: Add semaphore annotations -333145 Tests for missaligned PC+#imm access for arm -333228 AAarch64 Missing instruction encoding: mrs %[reg], ctr_el0 -333230 AAarch64 missing instruction encodings: dc, ic, dsb. -333248 WARNING: unhandled syscall: unix:443 -333428 ldr.w pc [rD, #imm] instruction leads to assertion -333501 cachegrind: assertion: Cache set count is not a power of two. - == 336577 - == 292281 -333666 Recognize MPX instructions and bnd prefix. -333788 Valgrind does not support the CDROM_DISC_STATUS ioctl (has patch) -333817 Valgrind reports the memory areas written to by the SG_IO - ioctl as untouched -334049 lzcnt fails silently (x86_32) -334384 Valgrind does not have support Little Endian support for - IBM POWER PPC 64 -334585 recvmmsg unhandled (+patch) (arm) -334705 sendmsg and recvmsg should guard against bogus msghdr fields. -334727 Build fails with -Werror=format-security -334788 clarify doc about --log-file initial program directory -334834 PPC64 Little Endian support, patch 2 -334836 PPC64 Little Endian support, patch 3 testcase fixes -334936 patch to fix false positives on alsa SNDRV_CTL_* ioctls -335034 Unhandled ioctl: HCIGETDEVLIST -335155 vgdb, fix error print statement. -335262 arm64: movi 8bit version is not supported -335263 arm64: dmb instruction is not implemented -335441 unhandled ioctl 0x8905 (SIOCATMARK) when running wine under valgrind -335496 arm64: sbc/abc instructions are not implemented -335554 arm64: unhandled instruction: abs -335564 arm64: unhandled instruction: fcvtpu Xn, Sn -335735 arm64: unhandled instruction: cnt -335736 arm64: unhandled instruction: uaddlv -335848 arm64: unhandled instruction: {s,u}cvtf -335902 arm64: unhandled instruction: sli -335903 arm64: unhandled instruction: umull (vector) -336055 arm64: unhandled instruction: mov (element) -336062 arm64: unhandled instruction: shrn{,2} -336139 mip64: [...] valgrind hangs and spins on a single core [...] -336189 arm64: unhandled Instruction: mvn -336435 Valgrind hangs in pthread_spin_lock consuming 100% CPU -336619 valgrind --read-var-info=yes doesn't handle DW_TAG_restrict_type -336772 Make moans about unknown ioctls more informative -336957 Add a section about the Solaris/illumos port on the webpage -337094 ifunc wrapper is broken on ppc64 -337285 fcntl commands F_OFD_SETLK, F_OFD_SETLKW, and F_OFD_GETLK not supported -337528 leak check heuristic for block prefixed by length as 64bit number -337740 Implement additional Xen hypercalls -337762 guest_arm64_toIR.c:4166 (dis_ARM64_load_store): Assertion `0' failed. -337766 arm64-linux: unhandled syscalls mlock (228) and mlockall (230) -337871 deprecate --db-attach -338023 Add support for all V4L2/media ioctls -338024 inlined functions are not shown if DW_AT_ranges is used -338106 Add support for 'kcmp' syscall -338115 DRD: computed conflict set differs from actual after fork -338160 implement display of thread local storage in gdbsrv -338205 configure.ac and check for -Wno-tautological-compare -338300 coredumps are missing one byte of every segment -338445 amd64 vbit-test fails with unknown opcodes used by arm64 VEX -338499 --sim-hints parsing broken due to wrong order in tokens -338615 suppress glibc 2.20 optimized strcmp implementation for ARMv7 -338681 Unable to unwind through clone thread created on i386-linux -338698 race condition between gdbsrv and vgdb on startup -338703 helgrind on arm-linux gets false positives in dynamic loader -338791 alt dwz files can be relative of debug/main file -338878 on MacOS: assertion 'VG_IS_PAGE_ALIGNED(clstack_end+1)' failed -338932 build V-trunk with gcc-trunk -338974 glibc 2.20 changed size of struct sigaction sa_flags field on s390 -345079 Fix build problems in VEX/useful/test_main.c -n-i-bz Fix KVM_CREATE_IRQCHIP ioctl handling -n-i-bz s390x: Fix memory corruption for multithreaded applications -n-i-bz vex arm->IR: allow PC as basereg in some LDRD cases -n-i-bz internal error in Valgrind if vgdb transmit signals when ptrace invoked -n-i-bz Fix mingw64 support in valgrind.h (dev@, 9 May 2014) -n-i-bz drd manual: Document how to C++11 programs that use class "std::thread" -n-i-bz Add command-line option --default-suppressions -n-i-bz Add support for BLKDISCARDZEROES ioctl -n-i-bz ppc32/64: fix a regression with the mtfsb0/mtfsb1 instructions -n-i-bz Add support for sys_pivot_root and sys_unshare - -(3.10.0.BETA1: 2 September 2014, vex r2940, valgrind r14428) -(3.10.0.BETA2: 8 September 2014, vex r2950, valgrind r14503) -(3.10.0: 10 September 2014, vex r2950, valgrind r14514) - - - -Release 3.9.0 (31 October 2013) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.9.0 is a feature release with many improvements and the usual -collection of bug fixes. - -This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux, -PPC64/Linux, S390X/Linux, MIPS32/Linux, MIPS64/Linux, ARM/Android, -X86/Android, X86/MacOSX 10.7 and AMD64/MacOSX 10.7. Support for -MacOSX 10.8 is significantly improved relative to the 3.8.0 release. - -* ================== PLATFORM CHANGES ================= - -* Support for MIPS64 LE and BE running Linux. Valgrind has been - tested on MIPS64 Debian Squeeze and Debian Wheezy distributions. - -* Support for MIPS DSP ASE on MIPS32 platforms. - -* Support for s390x Decimal Floating Point instructions on hosts that - have the DFP facility installed. - -* Support for POWER8 (Power ISA 2.07) instructions - -* Support for Intel AVX2 instructions. This is available only on 64 - bit code. - -* Initial support for Intel Transactional Synchronization Extensions, - both RTM and HLE. - -* Initial support for Hardware Transactional Memory on POWER. - -* Improved support for MacOSX 10.8 (64-bit only). Memcheck can now - run large GUI apps tolerably well. - -* ==================== TOOL CHANGES ==================== - -* Memcheck: - - - Improvements in handling of vectorised code, leading to - significantly fewer false error reports. You need to use the flag - --partial-loads-ok=yes to get the benefits of these changes. - - - Better control over the leak checker. It is now possible to - specify which leak kinds (definite/indirect/possible/reachable) - should be displayed, which should be regarded as errors, and which - should be suppressed by a given leak suppression. This is done - using the options --show-leak-kinds=kind1,kind2,.., - --errors-for-leak-kinds=kind1,kind2,.. and an optional - "match-leak-kinds:" line in suppression entries, respectively. - - Note that generated leak suppressions contain this new line and - are therefore more specific than in previous releases. To get the - same behaviour as previous releases, remove the "match-leak-kinds:" - line from generated suppressions before using them. - - - Reduced "possible leak" reports from the leak checker by the use - of better heuristics. The available heuristics provide detection - of valid interior pointers to std::stdstring, to new[] allocated - arrays with elements having destructors and to interior pointers - pointing to an inner part of a C++ object using multiple - inheritance. They can be selected individually using the - option --leak-check-heuristics=heur1,heur2,... - - - Better control of stacktrace acquisition for heap-allocated - blocks. Using the --keep-stacktraces option, it is possible to - control independently whether a stack trace is acquired for each - allocation and deallocation. This can be used to create better - "use after free" errors or to decrease Valgrind's resource - consumption by recording less information. - - - Better reporting of leak suppression usage. The list of used - suppressions (shown when the -v option is given) now shows, for - each leak suppressions, how many blocks and bytes it suppressed - during the last leak search. - -* Helgrind: - - - False errors resulting from the use of statically initialised - mutexes and condition variables (PTHREAD_MUTEX_INITIALISER, etc) - have been removed. - - - False errors resulting from the use of pthread_cond_waits that - timeout, have been removed. - -* ==================== OTHER CHANGES ==================== - -* Some attempt to tune Valgrind's space requirements to the expected - capabilities of the target: - - - The default size of the translation cache has been reduced from 8 - sectors to 6 on Android platforms, since each sector occupies - about 40MB when using Memcheck. - - - The default size of the translation cache has been increased to 16 - sectors on all other platforms, reflecting the fact that large - applications require instrumentation and storage of huge amounts - of code. For similar reasons, the number of memory mapped - segments that can be tracked has been increased by a factor of 6. - - - In all cases, the maximum number of sectors in the translation - cache can be controlled by the new flag --num-transtab-sectors. - -* Changes in how debug info (line numbers, etc) is read: - - - Valgrind no longer temporarily mmaps the entire object to read - from it. Instead, reading is done through a small fixed sized - buffer. This avoids virtual memory usage spikes when Valgrind - reads debuginfo from large shared objects. - - - A new experimental remote debug info server. Valgrind can read - debug info from a different machine (typically, a build host) - where debuginfo objects are stored. This can save a lot of time - and hassle when running Valgrind on resource-constrained targets - (phones, tablets) when the full debuginfo objects are stored - somewhere else. This is enabled by the --debuginfo-server= - option. - - - Consistency checking between main and debug objects can be - disabled using the --allow-mismatched-debuginfo option. - -* Stack unwinding by stack scanning, on ARM. Unwinding by stack - scanning can recover stack traces in some cases when the normal - unwind mechanisms fail. Stack scanning is best described as "a - nasty, dangerous and misleading hack" and so is disabled by default. - Use --unw-stack-scan-thresh and --unw-stack-scan-frames to enable - and control it. - -* Detection and merging of recursive stack frame cycles. When your - program has recursive algorithms, this limits the memory used by - Valgrind for recorded stack traces and avoids recording - uninteresting repeated calls. This is controlled by the command - line option --merge-recursive-frame and by the monitor command - "v.set merge-recursive-frames". - -* File name and line numbers for used suppressions. The list of used - suppressions (shown when the -v option is given) now shows, for each - used suppression, the file name and line number where the suppression - is defined. - -* New and modified GDB server monitor features: - - - valgrind.h has a new client request, VALGRIND_MONITOR_COMMAND, - that can be used to execute gdbserver monitor commands from the - client program. - - - A new monitor command, "v.info open_fds", that gives the list of - open file descriptors and additional details. - - - An optional message in the "v.info n_errs_found" monitor command, - for example "v.info n_errs_found test 1234 finished", allowing a - comment string to be added to the process output, perhaps for the - purpose of separating errors of different tests or test phases. - - - A new monitor command "v.info execontext" that shows information - about the stack traces recorded by Valgrind. - - - A new monitor command "v.do expensive_sanity_check_general" to run - some internal consistency checks. - -* New flag --sigill-diagnostics to control whether a diagnostic - message is printed when the JIT encounters an instruction it can't - translate. The actual behavior -- delivery of SIGILL to the - application -- is unchanged. - -* The maximum amount of memory that Valgrind can use on 64 bit targets - has been increased from 32GB to 64GB. This should make it possible - to run applications on Memcheck that natively require up to about 35GB. - -* ==================== FIXED BUGS ==================== - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather -than mailing the developers (or mailing lists) directly -- bugs that -are not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit - https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -123837 system call: 4th argument is optional, depending on cmd -135425 memcheck should tell you where Freed blocks were Mallocd -164485 VG_N_SEGNAMES and VG_N_SEGMENTS are (still) too small -207815 Adds some of the drm ioctls to syswrap-linux.c -251569 vex amd64->IR: 0xF 0x1 0xF9 0xBF 0x90 0xD0 0x3 0x0 (RDTSCP) -252955 Impossible to compile with ccache -253519 Memcheck reports auxv pointer accesses as invalid reads. -263034 Crash when loading some PPC64 binaries -269599 Increase deepest backtrace -274695 s390x: Support "compare to/from logical" instructions (z196) -275800 s390x: Autodetect cache info (part 2) -280271 Valgrind reports possible memory leaks on still-reachable std::string -284540 Memcheck shouldn't count suppressions matching still-reachable [..] -289578 Backtraces with ARM unwind tables (stack scan flags) -296311 Wrong stack traces due to -fomit-frame-pointer (x86) -304832 ppc32: build failure -305431 Use find_buildid shdr fallback for separate .debug files -305728 Add support for AVX2 instructions -305948 ppc64: code generation for ShlD64 / ShrD64 asserts -306035 s390x: Fix IR generation for LAAG and friends -306054 s390x: Condition code computation for convert-to-int/logical -306098 s390x: alternate opcode form for convert to/from fixed -306587 Fix cache line detection from auxiliary vector for PPC. -306783 Mips unhandled syscall : 4025 / 4079 / 4182 -307038 DWARF2 CFI reader: unhandled DW_OP_ opcode 0x8 (DW_OP_const1u et al) -307082 HG false positive: pthread_cond_destroy: destruction of unknown CV -307101 sys_capget second argument can be NULL -307103 sys_openat: If pathname is absolute, then dirfd is ignored. -307106 amd64->IR: f0 0f c0 02 (lock xadd byte) -307113 s390x: DFP support -307141 valgrind does't work in mips-linux system -307155 filter_gdb should filter out syscall-template.S T_PSEUDO -307285 x86_amd64 feature test for avx in test suite is wrong -307290 memcheck overlap testcase needs memcpy version filter -307463 Please add "&limit=0" to the "all open bugs" link -307465 --show-possibly-lost=no should reduce the error count / exit code -307557 Leaks on Mac OS X 10.7.5 libraries at ImageLoader::recursiveInit[..] -307729 pkgconfig support broken valgrind.pc -307828 Memcheck false errors SSE optimized wcscpy, wcscmp, wcsrchr, wcschr -307955 Building valgrind 3.7.0-r4 fails in Gentoo AMD64 when using clang -308089 Unhandled syscall on ppc64: prctl -308135 PPC32 MPC8xx has 16 bytes cache size -308321 testsuite memcheck filter interferes with gdb_filter -308333 == 307106 -308341 vgdb should report process exit (or fatal signal) -308427 s390 memcheck reports tsearch cjump/cmove depends on uninit -308495 Remove build dependency on installed Xen headers -308573 Internal error on 64-bit instruction executed in 32-bit mode -308626 == 308627 -308627 pmovmskb validity bit propagation is imprecise -308644 vgdb command for having the info for the track-fds option -308711 give more info about aspacemgr and arenas in out_of_memory -308717 ARM: implement fixed-point VCVT.F64.[SU]32 -308718 ARM implement SMLALBB family of instructions -308886 Missing support for PTRACE_SET/GETREGSET -308930 syscall name_to_handle_at (303 on amd64) not handled -309229 V-bit tester does not report number of tests generated -309323 print unrecognized instuction on MIPS -309425 Provide a --sigill-diagnostics flag to suppress illegal [..] -309427 SSE optimized stpncpy trigger uninitialised value [..] errors -309430 Self hosting ppc64 encounters a vassert error on operand type -309600 valgrind is a bit confused about 0-sized sections -309823 Generate errors for still reachable blocks -309921 PCMPISTRI validity bit propagation is imprecise -309922 none/tests/ppc64/test_dfp5 sometimes fails -310169 The Iop_CmpORD class of Iops is not supported by the vbit checker. -310424 --read-var-info does not properly describe static variables -310792 search additional path for debug symbols -310931 s390x: Message-security assist (MSA) instruction extension [..] -311100 PPC DFP implementation of the integer operands is inconsistent [..] -311318 ARM: "128-bit constant is not implemented" error message -311407 ssse3 bcopy (actually converted memcpy) causes invalid read [..] -311690 V crashes because it redirects branches inside of a redirected function -311880 x86_64: make regtest hangs at shell_valid1 -311922 WARNING: unhandled syscall: 170 -311933 == 251569 -312171 ppc: insn selection for DFP -312571 Rounding mode call wrong for the DFP Iops [..] -312620 Change to Iop_D32toD64 [..] for s390 DFP support broke ppc [..] -312913 Dangling pointers error should also report the alloc stack trace -312980 Building on Mountain Lion generates some compiler warnings -313267 Adding MIPS64/Linux port to Valgrind -313348 == 251569 -313354 == 251569 -313811 Buffer overflow in assert_fail -314099 coverity pointed out error in VEX guest_ppc_toIR.c insn_suffix -314269 ppc: dead code in insn selection -314718 ARM: implement integer divide instruction (sdiv and udiv) -315345 cl-format.xml and callgrind/dump.c don't agree on using cfl= or cfi= -315441 sendmsg syscall should ignore unset msghdr msg_flags -315534 msgrcv inside a thread causes valgrind to hang (block) -315545 Assertion '(UChar*)sec->tt[tteNo].tcptr <= (UChar*)hcode' failed -315689 disInstr(thumb): unhandled instruction: 0xF852 0x0E10 (LDRT) -315738 disInstr(arm): unhandled instruction: 0xEEBE0BEE (vcvt.s32.f64) -315959 valgrind man page has bogus SGCHECK (and no BBV) OPTIONS section -316144 valgrind.1 manpage contains unknown ??? strings [..] -316145 callgrind command line options in manpage reference (unknown) [..] -316145 callgrind command line options in manpage reference [..] -316181 drd: Fixed a 4x slowdown for certain applications -316503 Valgrind does not support SSE4 "movntdqa" instruction -316535 Use of |signed int| instead of |size_t| in valgrind messages -316696 fluidanimate program of parsec 2.1 stuck -316761 syscall open_by_handle_at (304 on amd64, 342 on x86) not handled -317091 Use -Wl,-Ttext-segment when static linking if possible [..] -317186 "Impossible happens" when occurs VCVT instruction on ARM -317318 Support for Threading Building Blocks "scalable_malloc" -317444 amd64->IR: 0xC4 0x41 0x2C 0xC2 0xD2 0x8 (vcmpeq_uqps) -317461 Fix BMI assembler configure check and avx2/bmi/fma vgtest prereqs -317463 bmi testcase IR SANITY CHECK FAILURE -317506 memcheck/tests/vbit-test fails with unknown opcode after [..] -318050 libmpiwrap fails to compile with out-of-source build -318203 setsockopt handling needs to handle SOL_SOCKET/SO_ATTACH_FILTER -318643 annotate_trace_memory tests infinite loop on arm and ppc [..] -318773 amd64->IR: 0xF3 0x48 0x0F 0xBC 0xC2 0xC3 0x66 0x0F -318929 Crash with: disInstr(thumb): 0xF321 0x0001 (ssat16) -318932 Add missing PPC64 and PPC32 system call support -319235 --db-attach=yes is broken with Yama (ptrace scoping) enabled -319395 Crash with unhandled instruction on STRT (Thumb) instructions -319494 VEX Makefile-gcc standalone build update after r2702 -319505 [MIPSEL] Crash: unhandled UNRAY operator. -319858 disInstr(thumb): unhandled instruction on instruction STRBT -319932 disInstr(thumb): unhandled instruction on instruction STRHT -320057 Problems when we try to mmap more than 12 memory pages on MIPS32 -320063 Memory from PTRACE_GET_THREAD_AREA is reported uninitialised -320083 disInstr(thumb): unhandled instruction on instruction LDRBT -320116 bind on AF_BLUETOOTH produces warnings because of sockaddr_rc padding -320131 WARNING: unhandled syscall: 369 on ARM (prlimit64) -320211 Stack buffer overflow in ./coregrind/m_main.c with huge TMPDIR -320661 vgModuleLocal_read_elf_debug_info(): "Assertion '!di->soname' -320895 add fanotify support (patch included) -320998 vex amd64->IR pcmpestri and pcmpestrm SSE4.2 instruction -321065 Valgrind updates for Xen 4.3 -321148 Unhandled instruction: PLI (Thumb 1, 2, 3) -321363 Unhandled instruction: SSAX (ARM + Thumb) -321364 Unhandled instruction: SXTAB16 (ARM + Thumb) -321466 Unhandled instruction: SHASX (ARM + Thumb) -321467 Unhandled instruction: SHSAX (ARM + Thumb) -321468 Unhandled instruction: SHSUB16 (ARM + Thumb) -321619 Unhandled instruction: SHSUB8 (ARM + Thumb) -321620 Unhandled instruction: UASX (ARM + Thumb) -321621 Unhandled instruction: USAX (ARM + Thumb) -321692 Unhandled instruction: UQADD16 (ARM + Thumb) -321693 Unhandled instruction: LDRSBT (Thumb) -321694 Unhandled instruction: UQASX (ARM + Thumb) -321696 Unhandled instruction: UQSAX (Thumb + ARM) -321697 Unhandled instruction: UHASX (ARM + Thumb) -321703 Unhandled instruction: UHSAX (ARM + Thumb) -321704 Unhandled instruction: REVSH (ARM + Thumb) -321730 Add cg_diff and cg_merge man pages -321738 Add vgdb and valgrind-listener man pages -321814 == 315545 -321891 Unhandled instruction: LDRHT (Thumb) -321960 pthread_create() then alloca() causing invalid stack write errors -321969 ppc32 and ppc64 don't support [lf]setxattr -322254 Show threadname together with tid if set by application -322294 Add initial support for IBM Power ISA 2.07 -322368 Assertion failure in wqthread_hijack under OS X 10.8 -322563 vex mips->IR: 0x70 0x83 0xF0 0x3A -322807 VALGRIND_PRINTF_BACKTRACE writes callstack to xml and text to stderr -322851 0bXXX binary literal syntax is not standard -323035 Unhandled instruction: LDRSHT(Thumb) -323036 Unhandled instruction: SMMLS (ARM and Thumb) -323116 The memcheck/tests/ppc64/power_ISA2_05.c fails to build [..] -323175 Unhandled instruction: SMLALD (ARM + Thumb) -323177 Unhandled instruction: SMLSLD (ARM + Thumb) -323432 Calling pthread_cond_destroy() or pthread_mutex_destroy() [..] -323437 Phase 2 support for IBM Power ISA 2.07 -323713 Support mmxext (integer sse) subset on i386 (athlon) -323803 Transactional memory instructions are not supported for Power -323893 SSE3 not available on amd cpus in valgrind -323905 Probable false positive from Valgrind/drd on close() -323912 valgrind.h header isn't compatible for mingw64 -324047 Valgrind doesn't support [LDR,ST]{S}[B,H]T ARM instructions -324149 helgrind: When pthread_cond_timedwait returns ETIMEDOUT [..] -324181 mmap does not handle MAP_32BIT -324227 memcheck false positive leak when a thread calls exit+block [..] -324421 Support for fanotify API on ARM architecture -324514 gdbserver monitor cmd output behaviour consistency [..] -324518 ppc64: Emulation of dcbt instructions does not handle [..] -324546 none/tests/ppc32 test_isa_2_07_part2 requests -m64 -324582 When access is made to freed memory, report both allocation [..] -324594 Fix overflow computation for Power ISA 2.06 insns: mulldo/mulldo. -324765 ppc64: illegal instruction when executing none/tests/ppc64/jm-misc -324816 Incorrect VEX implementation for xscvspdp/xvcvspdp for SNaN inputs -324834 Unhandled instructions in Microsoft C run-time for x86_64 -324894 Phase 3 support for IBM Power ISA 2.07 -326091 drd: Avoid false race reports from optimized strlen() impls -326113 valgrind libvex hwcaps error on AMD64 -n-i-bz Some wrong command line options could be ignored -n-i-bz patch to allow fair-sched on android -n-i-bz report error for vgdb snapshot requested before execution -n-i-bz same as 303624 (fixed in 3.8.0), but for x86 android - -(3.9.0: 31 October 2013, vex r2796, valgrind r13708) - - - -Release 3.8.1 (19 September 2012) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.8.1 is a bug fix release. It fixes some assertion failures in 3.8.0 -that occur moderately frequently in real use cases, adds support for -some missing instructions on ARM, and fixes a deadlock condition on -MacOSX. If you package or deliver 3.8.0 for others to use, you might -want to consider upgrading to 3.8.1 instead. - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather -than mailing the developers (or mailing lists) directly -- bugs that -are not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit - https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -284004 == 301281 -289584 Unhandled instruction: 0xF 0x29 0xE5 (MOVAPS) -295808 amd64->IR: 0xF3 0xF 0xBC 0xC0 (TZCNT) -298281 wcslen causes false(?) uninitialised value warnings -301281 valgrind hangs on OS X when the process calls system() -304035 disInstr(arm): unhandled instruction 0xE1023053 -304867 implement MOVBE instruction in x86 mode -304980 Assertion 'lo <= hi' failed in vgModuleLocal_find_rx_mapping -305042 amd64: implement 0F 7F encoding of movq between two registers -305199 ARM: implement QDADD and QDSUB -305321 amd64->IR: 0xF 0xD 0xC (prefetchw) -305513 killed by fatal signal: SIGSEGV -305690 DRD reporting invalid semaphore when sem_trywait fails -305926 Invalid alignment checks for some AVX instructions -306297 disInstr(thumb): unhandled instruction 0xE883 0x000C -306310 3.8.0 release tarball missing some files -306612 RHEL 6 glibc-2.X default suppressions need /lib*/libc-*patterns -306664 vex amd64->IR: 0x66 0xF 0x3A 0x62 0xD1 0x46 0x66 0xF -n-i-bz shmat of a segment > 4Gb does not work -n-i-bz simulate_control_c script wrong USR1 signal number on mips -n-i-bz vgdb ptrace calls wrong on mips [...] -n-i-bz Fixes for more MPI false positives -n-i-bz exp-sgcheck's memcpy causes programs to segfault -n-i-bz OSX build w/ clang: asserts at startup -n-i-bz Incorrect undef'dness prop for Iop_DPBtoBCD and Iop_BCDtoDPB -n-i-bz fix a couple of union tag-vs-field mixups -n-i-bz OSX: use __NR_poll_nocancel rather than __NR_poll - -The following bugs were fixed in 3.8.0 but not listed in this NEWS -file at the time: - -254088 Valgrind should know about UD2 instruction -301280 == 254088 -301902 == 254088 -304754 NEWS blows TeX's little mind - -(3.8.1: 19 September 2012, vex r2537, valgrind r12996) - - - -Release 3.8.0 (10 August 2012) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.8.0 is a feature release with many improvements and the usual -collection of bug fixes. - -This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux, -PPC64/Linux, S390X/Linux, MIPS/Linux, ARM/Android, X86/Android, -X86/MacOSX 10.6/10.7 and AMD64/MacOSX 10.6/10.7. Support for recent -distros and toolchain components (glibc 2.16, gcc 4.7) has been added. -There is initial support for MacOSX 10.8, but it is not usable for -serious work at present. - -* ================== PLATFORM CHANGES ================= - -* Support for MIPS32 platforms running Linux. Valgrind has been - tested on MIPS32 and MIPS32r2 platforms running different Debian - Squeeze and MeeGo distributions. Both little-endian and big-endian - cores are supported. The tools Memcheck, Massif and Lackey have - been tested and are known to work. See README.mips for more details. - -* Preliminary support for Android running on x86. - -* Preliminary (as-yet largely unusable) support for MacOSX 10.8. - -* Support for Intel AVX instructions and for AES instructions. This - support is available only for 64 bit code. - -* Support for POWER Decimal Floating Point instructions. - -* ==================== TOOL CHANGES ==================== - -* Non-libc malloc implementations are now supported. This is useful - for tools that replace malloc (Memcheck, Massif, DRD, Helgrind). - Using the new option --soname-synonyms, such tools can be informed - that the malloc implementation is either linked statically into the - executable, or is present in some other shared library different - from libc.so. This makes it possible to process statically linked - programs, and programs using other malloc libraries, for example - TCMalloc or JEMalloc. - -* For tools that provide their own replacement for malloc et al, the - option --redzone-size= allows users to specify the size of - the padding blocks (redzones) added before and after each client - allocated block. Smaller redzones decrease the memory needed by - Valgrind. Bigger redzones increase the chance to detect blocks - overrun or underrun. Prior to this change, the redzone size was - hardwired to 16 bytes in Memcheck. - -* Memcheck: - - - The leak_check GDB server monitor command now can - control the maximum nr of loss records to output. - - - Reduction of memory use for applications allocating - many blocks and/or having many partially defined bytes. - - - Addition of GDB server monitor command 'block_list' that lists - the addresses/sizes of the blocks of a leak search loss record. - - - Addition of GDB server monitor command 'who_points_at' that lists - the locations pointing at a block. - - - If a redzone size > 0 is given, VALGRIND_MALLOCLIKE_BLOCK now will - detect an invalid access of these redzones, by marking them - noaccess. Similarly, if a redzone size is given for a memory - pool, VALGRIND_MEMPOOL_ALLOC will mark the redzones no access. - This still allows to find some bugs if the user has forgotten to - mark the pool superblock noaccess. - - - Performance of memory leak check has been improved, especially in - cases where there are many leaked blocks and/or many suppression - rules used to suppress leak reports. - - - Reduced noise (false positive) level on MacOSX 10.6/10.7, due to - more precise analysis, which is important for LLVM/Clang - generated code. This is at the cost of somewhat reduced - performance. Note there is no change to analysis precision or - costs on Linux targets. - -* DRD: - - - Added even more facilities that can help finding the cause of a data - race, namely the command-line option --ptrace-addr and the macro - DRD_STOP_TRACING_VAR(x). More information can be found in the manual. - - - Fixed a subtle bug that could cause false positive data race reports. - -* ==================== OTHER CHANGES ==================== - -* The C++ demangler has been updated so as to work well with C++ - compiled by up to at least g++ 4.6. - -* Tool developers can make replacement/wrapping more flexible thanks - to the new option --soname-synonyms. This was reported above, but - in fact is very general and applies to all function - replacement/wrapping, not just to malloc-family functions. - -* Round-robin scheduling of threads can be selected, using the new - option --fair-sched= yes. Prior to this change, the pipe-based - thread serialisation mechanism (which is still the default) could - give very unfair scheduling. --fair-sched=yes improves - responsiveness of interactive multithreaded applications, and - improves repeatability of results from the thread checkers Helgrind - and DRD. - -* For tool developers: support to run Valgrind on Valgrind has been - improved. We can now routinely Valgrind on Helgrind or Memcheck. - -* gdbserver now shows the float shadow registers as integer - rather than float values, as the shadow values are mostly - used as bit patterns. - -* Increased limit for the --num-callers command line flag to 500. - -* Performance improvements for error matching when there are many - suppression records in use. - -* Improved support for DWARF4 debugging information (bug 284184). - -* Initial support for DWZ compressed Dwarf debug info. - -* Improved control over the IR optimiser's handling of the tradeoff - between performance and precision of exceptions. Specifically, - --vex-iropt-precise-memory-exns has been removed and replaced by - --vex-iropt-register-updates, with extended functionality. This - allows the Valgrind gdbserver to always show up to date register - values to GDB. - -* Modest performance gains through the use of translation chaining for - JIT-generated code. - -* ==================== FIXED BUGS ==================== - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather -than mailing the developers (or mailing lists) directly -- bugs that -are not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit - https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -197914 Building valgrind from svn now requires automake-1.10 -203877 increase to 16Mb maximum allowed alignment for memalign et al -219156 Handle statically linked malloc or other malloc lib (e.g. tcmalloc) -247386 make perf does not run all performance tests -270006 Valgrind scheduler unfair -270777 Adding MIPS/Linux port to Valgrind -270796 s390x: Removed broken support for the TS insn -271438 Fix configure for proper SSE4.2 detection -273114 s390x: Support TR, TRE, TROO, TROT, TRTO, and TRTT instructions -273475 Add support for AVX instructions -274078 improved configure logic for mpicc -276993 fix mremap 'no thrash checks' -278313 Fedora 15/x64: err read debug info with --read-var-info=yes flag -281482 memcheck incorrect byte allocation count in realloc() for silly argument -282230 group allocator for small fixed size, use it for MC_Chunk/SEc vbit -283413 Fix wrong sanity check -283671 Robustize alignment computation in LibVEX_Alloc -283961 Adding support for some HCI IOCTLs -284124 parse_type_DIE: confused by: DWARF 4 -284864 == 273475 (Add support for AVX instructions) -285219 Too-restrictive constraints for Thumb2 "SP plus/minus register" -285662 (MacOSX): Memcheck needs to replace memcpy/memmove -285725 == 273475 (Add support for AVX instructions) -286261 add wrapper for linux I2C_RDWR ioctl -286270 vgpreload is not friendly to 64->32 bit execs, gives ld.so warnings -286374 Running cachegrind with --branch-sim=yes on 64-bit PowerPC program fails -286384 configure fails "checking for a supported version of gcc" -286497 == 273475 (Add support for AVX instructions) -286596 == 273475 (Add support for AVX instructions) -286917 disInstr(arm): unhandled instruction: QADD (also QSUB) -287175 ARM: scalar VFP fixed-point VCVT instructions not handled -287260 Incorrect conditional jump or move depends on uninitialised value(s) -287301 vex amd64->IR: 0x66 0xF 0x38 0x41 0xC0 0xB8 0x0 0x0 (PHMINPOSUW) -287307 == 273475 (Add support for AVX instructions) -287858 VG_(strerror): unknown error -288298 (MacOSX) unhandled syscall shm_unlink -288995 == 273475 (Add support for AVX instructions) -289470 Loading of large Mach-O thin binaries fails. -289656 == 273475 (Add support for AVX instructions) -289699 vgdb connection in relay mode erroneously closed due to buffer overrun -289823 == 293754 (PCMPxSTRx not implemented for 16-bit characters) -289839 s390x: Provide support for unicode conversion instructions -289939 monitor cmd 'leak_check' with details about leaked or reachable blocks -290006 memcheck doesn't mark %xmm as initialized after "pcmpeqw %xmm %xmm" -290655 Add support for AESKEYGENASSIST instruction -290719 valgrind-3.7.0 fails with automake-1.11.2 due to"pkglibdir" usage -290974 vgdb must align pages to VKI_SHMLBA (16KB) on ARM -291253 ES register not initialised in valgrind simulation -291568 Fix 3DNOW-related crashes with baseline x86_64 CPU (w patch) -291865 s390x: Support the "Compare Double and Swap" family of instructions -292300 == 273475 (Add support for AVX instructions) -292430 unrecognized instruction in __intel_get_new_mem_ops_cpuid -292493 == 273475 (Add support for AVX instructions) -292626 Missing fcntl F_SETOWN_EX and F_GETOWN_EX support -292627 Missing support for some SCSI ioctls -292628 none/tests/x86/bug125959-x86.c triggers undefined behavior -292841 == 273475 (Add support for AVX instructions) -292993 implement the getcpu syscall on amd64-linux -292995 Implement the “cross memory attach” syscalls introduced in Linux 3.2 -293088 Add some VEX sanity checks for ppc64 unhandled instructions -293751 == 290655 (Add support for AESKEYGENASSIST instruction) -293754 PCMPxSTRx not implemented for 16-bit characters -293755 == 293754 (No tests for PCMPxSTRx on 16-bit characters) -293808 CLFLUSH not supported by latest VEX for amd64 -294047 valgrind does not correctly emulate prlimit64(..., RLIMIT_NOFILE, ...) -294048 MPSADBW instruction not implemented -294055 regtest none/tests/shell fails when locale is not set to C -294185 INT 0x44 (and others) not supported on x86 guest, but used by Jikes RVM -294190 --vgdb-error=xxx can be out of sync with errors shown to the user -294191 amd64: fnsave/frstor and 0x66 size prefixes on FP instructions -294260 disInstr_AMD64: disInstr miscalculated next %rip -294523 --partial-loads-ok=yes causes false negatives -294617 vex amd64->IR: 0x66 0xF 0x3A 0xDF 0xD1 0x1 0xE8 0x6A -294736 vex amd64->IR: 0x48 0xF 0xD7 0xD6 0x48 0x83 -294812 patch allowing to run (on x86 at least) helgrind/drd on tool. -295089 can not annotate source for both helgrind and drd -295221 POWER Processor decimal floating point instruction support missing -295427 building for i386 with clang on darwin11 requires "-new_linker linker" -295428 coregrind/m_main.c has incorrect x86 assembly for darwin -295590 Helgrind: Assertion 'cvi->nWaiters > 0' failed -295617 ARM - Add some missing syscalls -295799 Missing \n with get_vbits in gdbserver when line is % 80 [...] -296229 Linux user input device ioctls missing wrappers -296318 ELF Debug info improvements (more than one rx/rw mapping) -296422 Add translation chaining support -296457 vex amd64->IR: 0x66 0xF 0x3A 0xDF 0xD1 0x1 0xE8 0x6A (dup of AES) -296792 valgrind 3.7.0: add SIOCSHWTSTAMP (0x89B0) ioctl wrapper -296983 Fix build issues on x86_64/ppc64 without 32-bit toolchains -297078 gdbserver signal handling problems [..] -297147 drd false positives on newly allocated memory -297329 disallow decoding of IBM Power DFP insns on some machines -297497 POWER Processor decimal floating point instruction support missing -297701 Another alias for strncasecmp_l in libc-2.13.so -297911 'invalid write' not reported when using APIs for custom mem allocators. -297976 s390x: revisit EX implementation -297991 Valgrind interferes with mmap()+ftell() -297992 Support systems missing WIFCONTINUED (e.g. pre-2.6.10 Linux) -297993 Fix compilation of valgrind with gcc -g3. -298080 POWER Processor DFP support missing, part 3 -298227 == 273475 (Add support for AVX instructions) -298335 == 273475 (Add support for AVX instructions) -298354 Unhandled ARM Thumb instruction 0xEB0D 0x0585 (streq) -298394 s390x: Don't bail out on an unknown machine model. [..] -298421 accept4() syscall (366) support is missing for ARM -298718 vex amd64->IR: 0xF 0xB1 0xCB 0x9C 0x8F 0x45 -298732 valgrind installation problem in ubuntu with kernel version 3.x -298862 POWER Processor DFP instruction support missing, part 4 -298864 DWARF reader mis-parses DW_FORM_ref_addr -298943 massif asserts with --pages-as-heap=yes when brk is changing [..] -299053 Support DWARF4 DW_AT_high_pc constant form -299104 == 273475 (Add support for AVX instructions) -299316 Helgrind: hg_main.c:628 (map_threads_lookup): Assertion 'thr' failed. -299629 dup3() syscall (358) support is missing for ARM -299694 POWER Processor DFP instruction support missing, part 5 -299756 Ignore --free-fill for MEMPOOL_FREE and FREELIKE client requests -299803 == 273475 (Add support for AVX instructions) -299804 == 273475 (Add support for AVX instructions) -299805 == 273475 (Add support for AVX instructions) -300140 ARM - Missing (T1) SMMUL -300195 == 296318 (ELF Debug info improvements (more than one rx/rw mapping)) -300389 Assertion `are_valid_hwcaps(VexArchAMD64, [..])' failed. -300414 FCOM and FCOMP unimplemented for amd64 guest -301204 infinite loop in canonicaliseSymtab with ifunc symbol -301229 == 203877 (increase to 16Mb maximum allowed alignment for memalign etc) -301265 add x86 support to Android build -301984 configure script doesn't detect certain versions of clang -302205 Fix compiler warnings for POWER VEX code and POWER test cases -302287 Unhandled movbe instruction on Atom processors -302370 PPC: fnmadd, fnmsub, fnmadds, fnmsubs insns always negate the result -302536 Fix for the POWER Valgrind regression test: memcheck-ISA2.0. -302578 Unrecognized isntruction 0xc5 0x32 0xc2 0xca 0x09 vcmpngess -302656 == 273475 (Add support for AVX instructions) -302709 valgrind for ARM needs extra tls support for android emulator [..] -302827 add wrapper for CDROM_GET_CAPABILITY -302901 Valgrind crashes with dwz optimized debuginfo -302918 Enable testing of the vmaddfp and vnsubfp instructions in the testsuite -303116 Add support for the POWER instruction popcntb -303127 Power test suite fixes for frsqrte, vrefp, and vrsqrtefp instructions. -303250 Assertion `instrs_in->arr_used <= 10000' failed w/ OpenSSL code -303466 == 273475 (Add support for AVX instructions) -303624 segmentation fault on Android 4.1 (e.g. on Galaxy Nexus OMAP) -303963 strstr() function produces wrong results under valgrind callgrind -304054 CALL_FN_xx macros need to enforce stack alignment -304561 tee system call not supported -715750 (MacOSX): Incorrect invalid-address errors near 0xFFFFxxxx (mozbug#) -n-i-bz Add missing gdbserver xml files for shadow registers for ppc32 -n-i-bz Bypass gcc4.4/4.5 code gen bugs causing out of memory or asserts -n-i-bz Fix assert in gdbserver for watchpoints watching the same address -n-i-bz Fix false positive in sys_clone on amd64 when optional args [..] -n-i-bz s390x: Shadow registers can now be examined using vgdb - -(3.8.0-TEST3: 9 August 2012, vex r2465, valgrind r12865) -(3.8.0: 10 August 2012, vex r2465, valgrind r12866) - - - -Release 3.7.0 (5 November 2011) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.7.0 is a feature release with many significant improvements and the -usual collection of bug fixes. - -This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux, -PPC64/Linux, S390X/Linux, ARM/Android, X86/Darwin and AMD64/Darwin. -Support for recent distros and toolchain components (glibc 2.14, gcc -4.6, MacOSX 10.7) has been added. - -* ================== PLATFORM CHANGES ================= - -* Support for IBM z/Architecture (s390x) running Linux. Valgrind can - analyse 64-bit programs running on z/Architecture. Most user space - instructions up to and including z10 are supported. Valgrind has - been tested extensively on z9, z10, and z196 machines running SLES - 10/11, RedHat 5/6m, and Fedora. The Memcheck and Massif tools are - known to work well. Callgrind, Helgrind, and DRD work reasonably - well on z9 and later models. See README.s390 for more details. - -* Preliminary support for MacOSX 10.7 and XCode 4. Both 32- and - 64-bit processes are supported. Some complex threaded applications - (Firefox) are observed to hang when run as 32 bit applications, - whereas 64-bit versions run OK. The cause is unknown. Memcheck - will likely report some false errors. In general, expect some rough - spots. This release also supports MacOSX 10.6, but drops support - for 10.5. - -* Preliminary support for Android (on ARM). Valgrind can now run - large applications (eg, Firefox) on (eg) a Samsung Nexus S. See - README.android for more details, plus instructions on how to get - started. - -* Support for the IBM Power ISA 2.06 (Power7 instructions) - -* General correctness and performance improvements for ARM/Linux, and, - by extension, ARM/Android. - -* Further solidification of support for SSE 4.2 in 64-bit mode. AVX - instruction set support is under development but is not available in - this release. - -* Support for AIX5 has been removed. - -* ==================== TOOL CHANGES ==================== - -* Memcheck: some incremental changes: - - - reduction of memory use in some circumstances - - - improved handling of freed memory, which in some circumstances - can cause detection of use-after-free that would previously have - been missed - - - fix of a longstanding bug that could cause false negatives (missed - errors) in programs doing vector saturated narrowing instructions. - -* Helgrind: performance improvements and major memory use reductions, - particularly for large, long running applications which perform many - synchronisation (lock, unlock, etc) events. Plus many smaller - changes: - - - display of locksets for both threads involved in a race - - - general improvements in formatting/clarity of error messages - - - addition of facilities and documentation regarding annotation - of thread safe reference counted C++ classes - - - new flag --check-stack-refs=no|yes [yes], to disable race checking - on thread stacks (a performance hack) - - - new flag --free-is-write=no|yes [no], to enable detection of races - where one thread accesses heap memory but another one frees it, - without any coordinating synchronisation event - -* DRD: enabled XML output; added support for delayed thread deletion - in order to detect races that occur close to the end of a thread - (--join-list-vol); fixed a memory leak triggered by repeated client - memory allocatation and deallocation; improved Darwin support. - -* exp-ptrcheck: this tool has been renamed to exp-sgcheck - -* exp-sgcheck: this tool has been reduced in scope so as to improve - performance and remove checking that Memcheck does better. - Specifically, the ability to check for overruns for stack and global - arrays is unchanged, but the ability to check for overruns of heap - blocks has been removed. The tool has accordingly been renamed to - exp-sgcheck ("Stack and Global Array Checking"). - -* ==================== OTHER CHANGES ==================== - -* GDB server: Valgrind now has an embedded GDB server. That means it - is possible to control a Valgrind run from GDB, doing all the usual - things that GDB can do (single stepping, breakpoints, examining - data, etc). Tool-specific functionality is also available. For - example, it is possible to query the definedness state of variables - or memory from within GDB when running Memcheck; arbitrarily large - memory watchpoints are supported, etc. To use the GDB server, start - Valgrind with the flag --vgdb-error=0 and follow the on-screen - instructions. - -* Improved support for unfriendly self-modifying code: a new option - --smc-check=all-non-file is available. This adds the relevant - consistency checks only to code that originates in non-file-backed - mappings. In effect this confines the consistency checking only to - code that is or might be JIT generated, and avoids checks on code - that must have been compiled ahead of time. This significantly - improves performance on applications that generate code at run time. - -* It is now possible to build a working Valgrind using Clang-2.9 on - Linux. - -* new client requests VALGRIND_{DISABLE,ENABLE}_ERROR_REPORTING. - These enable and disable error reporting on a per-thread, and - nestable, basis. This is useful for hiding errors in particularly - troublesome pieces of code. The MPI wrapper library (libmpiwrap.c) - now uses this facility. - -* Added the --mod-funcname option to cg_diff. - -* ==================== FIXED BUGS ==================== - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than -mailing the developers (or mailing lists) directly -- bugs that are -not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit -https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - - 79311 malloc silly arg warning does not give stack trace -210935 port valgrind.h (not valgrind) to win32 to support client requests -214223 valgrind SIGSEGV on startup gcc 4.4.1 ppc32 (G4) Ubuntu 9.10 -243404 Port to zSeries -243935 Helgrind: incorrect handling of ANNOTATE_HAPPENS_BEFORE()/AFTER() -247223 non-x86: Suppress warning: 'regparm' attribute directive ignored -250101 huge "free" memory usage due to m_mallocfree.c fragmentation -253206 Some fixes for the faultstatus testcase -255223 capget testcase fails when running as root -256703 xlc_dbl_u32.c testcase broken -256726 Helgrind tests have broken inline asm -259977 == 214223 (Valgrind segfaults doing __builtin_longjmp) -264800 testcase compile failure on zseries -265762 make public VEX headers compilable by G++ 3.x -265771 assertion in jumps.c (r11523) fails with glibc-2.3 -266753 configure script does not give the user the option to not use QtCore -266931 gen_insn_test.pl is broken -266961 ld-linux.so.2 i?86-linux strlen issues -266990 setns instruction causes false positive -267020 Make directory for temporary files configurable at run-time. -267342 == 267997 (segmentation fault on Mac OS 10.6) -267383 Assertion 'vgPlain_strlen(dir) + vgPlain_strlen(file) + 1 < 256' failed -267413 Assertion 'DRD_(g_threadinfo)[tid].synchr_nesting >= 1' failed. -267488 regtest: darwin support for 64-bit build -267552 SIGSEGV (misaligned_stack_error) with DRD, but not with other tools -267630 Add support for IBM Power ISA 2.06 -- stage 1 -267769 == 267997 (Darwin: memcheck triggers segmentation fault) -267819 Add client request for informing the core about reallocation -267925 laog data structure quadratic for a single sequence of lock -267968 drd: (vgDrd_thread_set_joinable): Assertion '0 <= (int)tid ..' failed -267997 MacOSX: 64-bit V segfaults on launch when built with Xcode 4.0.1 -268513 missed optimizations in fold_Expr -268619 s390x: fpr - gpr transfer facility -268620 s390x: reconsider "long displacement" requirement -268621 s390x: improve IR generation for XC -268715 s390x: FLOGR is not universally available -268792 == 267997 (valgrind seg faults on startup when compiled with Xcode 4) -268930 s390x: MHY is not universally available -269078 arm->IR: unhandled instruction SUB (SP minus immediate/register) -269079 Support ptrace system call on ARM -269144 missing "Bad option" error message -269209 conditional load and store facility (z196) -269354 Shift by zero on x86 can incorrectly clobber CC_NDEP -269641 == 267997 (valgrind segfaults immediately (segmentation fault)) -269736 s390x: minor code generation tweaks -269778 == 272986 (valgrind.h: swap roles of VALGRIND_DO_CLIENT_REQUEST() ..) -269863 s390x: remove unused function parameters -269864 s390x: tweak s390_emit_load_cc -269884 == 250101 (overhead for huge blocks exhausts space too soon) -270082 s390x: Make sure to point the PSW address to the next address on SIGILL -270115 s390x: rewrite some testcases -270309 == 267997 (valgrind crash on startup) -270320 add support for Linux FIOQSIZE ioctl() call -270326 segfault while trying to sanitize the environment passed to execle -270794 IBM POWER7 support patch causes regression in none/tests -270851 IBM POWER7 fcfidus instruction causes memcheck to fail -270856 IBM POWER7 xsnmaddadp instruction causes memcheck to fail on 32bit app -270925 hyper-optimized strspn() in /lib64/libc-2.13.so needs fix -270959 s390x: invalid use of R0 as base register -271042 VSX configure check fails when it should not -271043 Valgrind build fails with assembler error on ppc64 with binutils 2.21 -271259 s390x: fix code confusion -271337 == 267997 (Valgrind segfaults on MacOS X) -271385 s390x: Implement Ist_MBE -271501 s390x: misc cleanups -271504 s390x: promote likely and unlikely -271579 ppc: using wrong enum type -271615 unhandled instruction "popcnt" (arch=amd10h) -271730 Fix bug when checking ioctls: duplicate check -271776 s390x: provide STFLE instruction support -271779 s390x: provide clock instructions like STCK -271799 Darwin: ioctls without an arg report a memory error -271820 arm: fix type confusion -271917 pthread_cond_timedwait failure leads to not-locked false positive -272067 s390x: fix DISP20 macro -272615 A typo in debug output in mc_leakcheck.c -272661 callgrind_annotate chokes when run from paths containing regex chars -272893 amd64->IR: 0x66 0xF 0x38 0x2B 0xC1 0x66 0xF 0x7F == (closed as dup) -272955 Unhandled syscall error for pwrite64 on ppc64 arch -272967 make documentation build-system more robust -272986 Fix gcc-4.6 warnings with valgrind.h -273318 amd64->IR: 0x66 0xF 0x3A 0x61 0xC1 0x38 (missing PCMPxSTRx case) -273318 unhandled PCMPxSTRx case: vex amd64->IR: 0x66 0xF 0x3A 0x61 0xC1 0x38 -273431 valgrind segfaults in evalCfiExpr (debuginfo.c:2039) -273465 Callgrind: jumps.c:164 (new_jcc): Assertion '(0 <= jmp) && ...' -273536 Build error: multiple definition of `vgDrd_pthread_cond_initializer' -273640 ppc64-linux: unhandled syscalls setresuid(164) and setresgid(169) -273729 == 283000 (Illegal opcode for SSE2 "roundsd" instruction) -273778 exp-ptrcheck: unhandled sysno == 259 -274089 exp-ptrcheck: unhandled sysno == 208 -274378 s390x: Various dispatcher tweaks -274447 WARNING: unhandled syscall: 340 -274776 amd64->IR: 0x66 0xF 0x38 0x2B 0xC5 0x66 -274784 == 267997 (valgrind ls -l results in Segmentation Fault) -274926 valgrind does not build against linux-3 -275148 configure FAIL with glibc-2.14 -275151 Fedora 15 / glibc-2.14 'make regtest' FAIL -275168 Make Valgrind work for MacOSX 10.7 Lion -275212 == 275284 (lots of false positives from __memcpy_ssse3_back et al) -275278 valgrind does not build on Linux kernel 3.0.* due to silly -275284 Valgrind memcpy/memmove redirection stopped working in glibc 2.14/x86_64 -275308 Fix implementation for ppc64 fres instruc -275339 s390x: fix testcase compile warnings -275517 s390x: Provide support for CKSM instruction -275710 s390x: get rid of redundant address mode calculation -275815 == 247894 (Valgrind doesn't know about Linux readahead(2) syscall) -275852 == 250101 (valgrind uses all swap space and is killed) -276784 Add support for IBM Power ISA 2.06 -- stage 3 -276987 gdbsrv: fix tests following recent commits -277045 Valgrind crashes with unhandled DW_OP_ opcode 0x2a -277199 The test_isa_2_06_part1.c in none/tests/ppc64 should be a symlink -277471 Unhandled syscall: 340 -277610 valgrind crashes in VG_(lseek)(core_fd, phdrs[idx].p_offset, ...) -277653 ARM: support Thumb2 PLD instruction -277663 ARM: NEON float VMUL by scalar incorrect -277689 ARM: tests for VSTn with register post-index are broken -277694 ARM: BLX LR instruction broken in ARM mode -277780 ARM: VMOV.F32 (immediate) instruction is broken -278057 fuse filesystem syscall deadlocks -278078 Unimplemented syscall 280 on ppc32 -278349 F_GETPIPE_SZ and F_SETPIPE_SZ Linux fcntl commands -278454 VALGRIND_STACK_DEREGISTER has wrong output type -278502 == 275284 (Valgrind confuses memcpy() and memmove()) -278892 gdbsrv: factorize gdb version handling, fix doc and typos -279027 Support for MVCL and CLCL instruction -279027 s390x: Provide support for CLCL and MVCL instructions -279062 Remove a redundant check in the insn selector for ppc. -279071 JDK creates PTEST with redundant REX.W prefix -279212 gdbsrv: add monitor cmd v.info scheduler. -279378 exp-ptrcheck: the 'impossible' happened on mkfifo call -279698 memcheck discards valid-bits for packuswb -279795 memcheck reports uninitialised values for mincore on amd64 -279994 Add support for IBM Power ISA 2.06 -- stage 3 -280083 mempolicy syscall check errors -280290 vex amd64->IR: 0x66 0xF 0x38 0x28 0xC1 0x66 0xF 0x6F -280710 s390x: config files for nightly builds -280757 /tmp dir still used by valgrind even if TMPDIR is specified -280965 Valgrind breaks fcntl locks when program does mmap -281138 WARNING: unhandled syscall: 340 -281241 == 275168 (valgrind useless on Macos 10.7.1 Lion) -281304 == 275168 (Darwin: dyld "cannot load inserted library") -281305 == 275168 (unhandled syscall: unix:357 on Darwin 11.1) -281468 s390x: handle do_clone and gcc clones in call traces -281488 ARM: VFP register corruption -281828 == 275284 (false memmove warning: "Source and destination overlap") -281883 s390x: Fix system call wrapper for "clone". -282105 generalise 'reclaimSuperBlock' to also reclaim splittable superblock -282112 Unhandled instruction bytes: 0xDE 0xD9 0x9B 0xDF (fcompp) -282238 SLES10: make check fails -282979 strcasestr needs replacement with recent(>=2.12) glibc -283000 vex amd64->IR: 0x66 0xF 0x3A 0xA 0xC0 0x9 0xF3 0xF -283243 Regression in ppc64 memcheck tests -283325 == 267997 (Darwin: V segfaults on startup when built with Xcode 4.0) -283427 re-connect epoll_pwait syscall on ARM linux -283600 gdbsrv: android: port vgdb.c -283709 none/tests/faultstatus needs to account for page size -284305 filter_gdb needs enhancement to work on ppc64 -284384 clang 3.1 -Wunused-value warnings in valgrind.h, memcheck.h -284472 Thumb2 ROR.W encoding T2 not implemented -284621 XML-escape process command line in XML output -n-i-bz cachegrind/callgrind: handle CPUID information for Core iX Intel CPUs - that have non-power-of-2 sizes (also AMDs) -n-i-bz don't be spooked by libraries mashed by elfhack -n-i-bz don't be spooked by libxul.so linked with gold -n-i-bz improved checking for VALGRIND_CHECK_MEM_IS_DEFINED - -(3.7.0-TEST1: 27 October 2011, vex r2228, valgrind r12245) -(3.7.0.RC1: 1 November 2011, vex r2231, valgrind r12257) -(3.7.0: 5 November 2011, vex r2231, valgrind r12258) - - - -Release 3.6.1 (16 February 2011) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.6.1 is a bug fix release. It adds support for some SSE4 -instructions that were omitted in 3.6.0 due to lack of time. Initial -support for glibc-2.13 has been added. A number of bugs causing -crashing or assertion failures have been fixed. - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than -mailing the developers (or mailing lists) directly -- bugs that are -not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit -https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -188572 Valgrind on Mac should suppress setenv() mem leak -194402 vex amd64->IR: 0x48 0xF 0xAE 0x4 (proper FX{SAVE,RSTOR} support) -210481 vex amd64->IR: Assertion `sz == 2 || sz == 4' failed (REX.W POPQ) -246152 callgrind internal error after pthread_cancel on 32 Bit Linux -250038 ppc64: Altivec LVSR and LVSL instructions fail their regtest -254420 memory pool tracking broken -254957 Test code failing to compile due to changes in memcheck.h -255009 helgrind/drd: crash on chmod with invalid parameter -255130 readdwarf3.c parse_type_DIE confused by GNAT Ada types -255355 helgrind/drd: crash on threaded programs doing fork -255358 == 255355 -255418 (SSE4.x) rint call compiled with ICC -255822 --gen-suppressions can create invalid files: "too many callers [...]" -255888 closing valgrindoutput tag outputted to log-stream on error -255963 (SSE4.x) vex amd64->IR: 0x66 0xF 0x3A 0x9 0xDB 0x0 (ROUNDPD) -255966 Slowness when using mempool annotations -256387 vex x86->IR: 0xD4 0xA 0x2 0x7 (AAD and AAM) -256600 super-optimized strcasecmp() false positive -256669 vex amd64->IR: Unhandled LOOPNEL insn on amd64 -256968 (SSE4.x) vex amd64->IR: 0x66 0xF 0x38 0x10 0xD3 0x66 (BLENDVPx) -257011 (SSE4.x) vex amd64->IR: 0x66 0xF 0x3A 0xE 0xFD 0xA0 (PBLENDW) -257063 (SSE4.x) vex amd64->IR: 0x66 0xF 0x3A 0x8 0xC0 0x0 (ROUNDPS) -257276 Missing case in memcheck --track-origins=yes -258870 (SSE4.x) Add support for EXTRACTPS SSE 4.1 instruction -261966 (SSE4.x) support for CRC32B and CRC32Q is lacking (also CRC32{W,L}) -262985 VEX regression in valgrind 3.6.0 in handling PowerPC VMX -262995 (SSE4.x) crash when trying to valgrind gcc-snapshot (PCMPxSTRx $0) -263099 callgrind_annotate counts Ir improperly [...] -263877 undefined coprocessor instruction on ARMv7 -265964 configure FAIL with glibc-2.13 -n-i-bz Fix compile error w/ icc-12.x in guest_arm_toIR.c -n-i-bz Docs: fix bogus descriptions for VALGRIND_CREATE_BLOCK et al -n-i-bz Massif: don't assert on shmat() with --pages-as-heap=yes -n-i-bz Bug fixes and major speedups for the exp-DHAT space profiler -n-i-bz DRD: disable --free-is-write due to implementation difficulties - -(3.6.1: 16 February 2011, vex r2103, valgrind r11561). - - - -Release 3.6.0 (21 October 2010) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.6.0 is a feature release with many significant improvements and the -usual collection of bug fixes. - -This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux, -PPC64/Linux, X86/Darwin and AMD64/Darwin. Support for recent distros -and toolchain components (glibc 2.12, gcc 4.5, OSX 10.6) has been added. - - ------------------------- - -Here are some highlights. Details are shown further down: - -* Support for ARM/Linux. - -* Support for recent Linux distros: Ubuntu 10.10 and Fedora 14. - -* Support for Mac OS X 10.6, both 32- and 64-bit executables. - -* Support for the SSE4.2 instruction set. - -* Enhancements to the Callgrind profiler, including the ability to - handle CPUs with three levels of cache. - -* A new experimental heap profiler, DHAT. - -* A huge number of bug fixes and small enhancements. - - ------------------------- - -Here are details of the above changes, together with descriptions of -many other changes, and a list of fixed bugs. - -* ================== PLATFORM CHANGES ================= - -* Support for ARM/Linux. Valgrind now runs on ARMv7 capable CPUs - running Linux. It is known to work on Ubuntu 10.04, Ubuntu 10.10, - and Maemo 5, so you can run Valgrind on your Nokia N900 if you want. - - This requires a CPU capable of running the ARMv7-A instruction set - (Cortex A5, A8 and A9). Valgrind provides fairly complete coverage - of the user space instruction set, including ARM and Thumb integer - code, VFPv3, NEON and V6 media instructions. The Memcheck, - Cachegrind and Massif tools work properly; other tools work to - varying degrees. - -* Support for recent Linux distros (Ubuntu 10.10 and Fedora 14), along - with support for recent releases of the underlying toolchain - components, notably gcc-4.5 and glibc-2.12. - -* Support for Mac OS X 10.6, both 32- and 64-bit executables. 64-bit - support also works much better on OS X 10.5, and is as solid as - 32-bit support now. - -* Support for the SSE4.2 instruction set. SSE4.2 is supported in - 64-bit mode. In 32-bit mode, support is only available up to and - including SSSE3. Some exceptions: SSE4.2 AES instructions are not - supported in 64-bit mode, and 32-bit mode does in fact support the - bare minimum SSE4 instructions to needed to run programs on Mac OS X - 10.6 on 32-bit targets. - -* Support for IBM POWER6 cpus has been improved. The Power ISA up to - and including version 2.05 is supported. - -* ==================== TOOL CHANGES ==================== - -* Cachegrind has a new processing script, cg_diff, which finds the - difference between two profiles. It's very useful for evaluating - the performance effects of a change in a program. - - Related to this change, the meaning of cg_annotate's (rarely-used) - --threshold option has changed; this is unlikely to affect many - people, if you do use it please see the user manual for details. - -* Callgrind now can do branch prediction simulation, similar to - Cachegrind. In addition, it optionally can count the number of - executed global bus events. Both can be used for a better - approximation of a "Cycle Estimation" as derived event (you need to - update the event formula in KCachegrind yourself). - -* Cachegrind and Callgrind now refer to the LL (last-level) cache - rather than the L2 cache. This is to accommodate machines with - three levels of caches -- if Cachegrind/Callgrind auto-detects the - cache configuration of such a machine it will run the simulation as - if the L2 cache isn't present. This means the results are less - likely to match the true result for the machine, but - Cachegrind/Callgrind's results are already only approximate, and - should not be considered authoritative. The results are still - useful for giving a general idea about a program's locality. - -* Massif has a new option, --pages-as-heap, which is disabled by - default. When enabled, instead of tracking allocations at the level - of heap blocks (as allocated with malloc/new/new[]), it instead - tracks memory allocations at the level of memory pages (as mapped by - mmap, brk, etc). Each mapped page is treated as its own block. - Interpreting the page-level output is harder than the heap-level - output, but this option is useful if you want to account for every - byte of memory used by a program. - -* DRD has two new command-line options: --free-is-write and - --trace-alloc. The former allows to detect reading from already freed - memory, and the latter allows tracing of all memory allocations and - deallocations. - -* DRD has several new annotations. Custom barrier implementations can - now be annotated, as well as benign races on static variables. - -* DRD's happens before / happens after annotations have been made more - powerful, so that they can now also be used to annotate e.g. a smart - pointer implementation. - -* Helgrind's annotation set has also been drastically improved, so as - to provide to users a general set of annotations to describe locks, - semaphores, barriers and condition variables. Annotations to - describe thread-safe reference counted heap objects have also been - added. - -* Memcheck has a new command-line option, --show-possibly-lost, which - is enabled by default. When disabled, the leak detector will not - show possibly-lost blocks. - -* A new experimental heap profiler, DHAT (Dynamic Heap Analysis Tool), - has been added. DHAT keeps track of allocated heap blocks, and also - inspects every memory reference to see which block (if any) is being - accessed. This gives a lot of insight into block lifetimes, - utilisation, turnover, liveness, and the location of hot and cold - fields. You can use DHAT to do hot-field profiling. - -* ==================== OTHER CHANGES ==================== - -* Improved support for unfriendly self-modifying code: the extra - overhead incurred by --smc-check=all has been reduced by - approximately a factor of 5 as compared with 3.5.0. - -* Ability to show directory names for source files in error messages. - This is combined with a flexible mechanism for specifying which - parts of the paths should be shown. This is enabled by the new flag - --fullpath-after. - -* A new flag, --require-text-symbol, which will stop the run if a - specified symbol is not found it a given shared object when it is - loaded into the process. This makes advanced working with function - intercepting and wrapping safer and more reliable. - -* Improved support for the Valkyrie GUI, version 2.0.0. GUI output - and control of Valgrind is now available for the tools Memcheck and - Helgrind. XML output from Valgrind is available for Memcheck, - Helgrind and exp-Ptrcheck. - -* More reliable stack unwinding on amd64-linux, particularly in the - presence of function wrappers, and with gcc-4.5 compiled code. - -* Modest scalability (performance improvements) for massive - long-running applications, particularly for those with huge amounts - of code. - -* Support for analyzing programs running under Wine with has been - improved. The header files , - and can now be used in - Windows-programs compiled with MinGW or one of the Microsoft Visual - Studio compilers. - -* A rare but serious error in the 64-bit x86 CPU simulation was fixed. - The 32-bit simulator was not affected. This did not occur often, - but when it did would usually crash the program under test. - Bug 245925. - -* A large number of bugs were fixed. These are shown below. - -* A number of bugs were investigated, and were candidates for fixing, - but are not fixed in 3.6.0, due to lack of developer time. They may - get fixed in later releases. They are: - - 194402 vex amd64->IR: 0x48 0xF 0xAE 0x4 0x24 0x49 (FXSAVE64) - 212419 false positive "lock order violated" (A+B vs A) - 213685 Undefined value propagates past dependency breaking instruction - 216837 Incorrect instrumentation of NSOperationQueue on Darwin - 237920 valgrind segfault on fork failure - 242137 support for code compiled by LLVM-2.8 - 242423 Another unknown Intel cache config value - 243232 Inconsistent Lock Orderings report with trylock - 243483 ppc: callgrind triggers VEX assertion failure - 243935 Helgrind: implementation of ANNOTATE_HAPPENS_BEFORE() is wrong - 244677 Helgrind crash hg_main.c:616 (map_threads_lookup): Assertion - 'thr' failed. - 246152 callgrind internal error after pthread_cancel on 32 Bit Linux - 249435 Analyzing wine programs with callgrind triggers a crash - 250038 ppc64: Altivec lvsr and lvsl instructions fail their regtest - 250065 Handling large allocations - 250101 huge "free" memory usage due to m_mallocfree.c - "superblocks fragmentation" - 251569 vex amd64->IR: 0xF 0x1 0xF9 0x8B 0x4C 0x24 (RDTSCP) - 252091 Callgrind on ARM does not detect function returns correctly - 252600 [PATCH] Allow lhs to be a pointer for shl/shr - 254420 memory pool tracking broken - n-i-bz support for adding symbols for JIT generated code - - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than -mailing the developers (or mailing lists) directly -- bugs that are -not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit -https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -135264 dcbzl instruction missing -142688 == 250799 -153699 Valgrind should report unaligned reads with movdqa -180217 == 212335 -190429 Valgrind reports lost of errors in ld.so - with x86_64 2.9.90 glibc -197266 valgrind appears to choke on the xmms instruction - "roundsd" on x86_64 -197988 Crash when demangling very large symbol names -202315 unhandled syscall: 332 (inotify_init1) -203256 Add page-level profiling to Massif -205093 dsymutil=yes needs quotes, locking (partial fix) -205241 Snow Leopard 10.6 support (partial fix) -206600 Leak checker fails to upgrade indirect blocks when their - parent becomes reachable -210935 port valgrind.h (not valgrind) to win32 so apps run under - wine can make client requests -211410 vex amd64->IR: 0x15 0xFF 0xFF 0x0 0x0 0x89 - within Linux ip-stack checksum functions -212335 unhandled instruction bytes: 0xF3 0xF 0xBD 0xC0 - (lzcnt %eax,%eax) -213685 Undefined value propagates past dependency breaking instruction - (partial fix) -215914 Valgrind inserts bogus empty environment variable -217863 == 197988 -219538 adjtimex syscall wrapper wrong in readonly adjtime mode -222545 shmat fails under valgind on some arm targets -222560 ARM NEON support -230407 == 202315 -231076 == 202315 -232509 Docs build fails with formatting inside elements -232793 == 202315 -235642 [PATCH] syswrap-linux.c: support evdev EVIOCG* ioctls -236546 vex x86->IR: 0x66 0xF 0x3A 0xA -237202 vex amd64->IR: 0xF3 0xF 0xB8 0xC0 0x49 0x3B -237371 better support for VALGRIND_MALLOCLIKE_BLOCK -237485 symlink (syscall 57) is not supported on Mac OS -237723 sysno == 101 exp-ptrcheck: the 'impossible' happened: - unhandled syscall -238208 is_just_below_ESP doesn't take into account red-zone -238345 valgrind passes wrong $0 when executing a shell script -238679 mq_timedreceive syscall doesn't flag the reception buffer - as "defined" -238696 fcntl command F_DUPFD_CLOEXEC not supported -238713 unhandled instruction bytes: 0x66 0xF 0x29 0xC6 -238713 unhandled instruction bytes: 0x66 0xF 0x29 0xC6 -238745 3.5.0 Make fails on PPC Altivec opcodes, though configure - says "Altivec off" -239992 vex amd64->IR: 0x48 0xF 0xC4 0xC1 0x0 0x48 -240488 == 197988 -240639 == 212335 -241377 == 236546 -241903 == 202315 -241920 == 212335 -242606 unhandled syscall: setegid (in Ptrcheck) -242814 Helgrind "Impossible has happened" during - QApplication::initInstance(); -243064 Valgrind attempting to read debug information from iso -243270 Make stack unwinding in Valgrind wrappers more reliable -243884 exp-ptrcheck: the 'impossible happened: unhandled syscall - sysno = 277 (mq_open) -244009 exp-ptrcheck unknown syscalls in analyzing lighttpd -244493 ARM VFP d16-d31 registers support -244670 add support for audit_session_self syscall on Mac OS 10.6 -244921 The xml report of helgrind tool is not well format -244923 In the xml report file, the not escape the - xml char, eg '<','&','>' -245535 print full path names in plain text reports -245925 x86-64 red zone handling problem -246258 Valgrind not catching integer underruns + new [] s -246311 reg/reg cmpxchg doesn't work on amd64 -246549 unhandled syscall unix:277 while testing 32-bit Darwin app -246888 Improve Makefile.vex.am -247510 [OS X 10.6] Memcheck reports unaddressable bytes passed - to [f]chmod_extended -247526 IBM POWER6 (ISA 2.05) support is incomplete -247561 Some leak testcases fails due to reachable addresses in - caller save regs -247875 sizeofIRType to handle Ity_I128 -247894 [PATCH] unhandled syscall sys_readahead -247980 Doesn't honor CFLAGS passed to configure -248373 darwin10.supp is empty in the trunk -248822 Linux FIBMAP ioctl has int parameter instead of long -248893 [PATCH] make readdwarf.c big endianess safe to enable - unwinding on big endian systems -249224 Syscall 336 not supported (SYS_proc_info) -249359 == 245535 -249775 Incorrect scheme for detecting NEON capabilities of host CPU -249943 jni JVM init fails when using valgrind -249991 Valgrind incorrectly declares AESKEYGENASSIST support - since VEX r2011 -249996 linux/arm: unhandled syscall: 181 (__NR_pwrite64) -250799 frexp$fenv_access_off function generates SIGILL -250998 vex x86->IR: unhandled instruction bytes: 0x66 0x66 0x66 0x2E -251251 support pclmulqdq insn -251362 valgrind: ARM: attach to debugger either fails or provokes - kernel oops -251674 Unhandled syscall 294 -251818 == 254550 - -254257 Add support for debugfiles found by build-id -254550 [PATCH] Implement DW_ATE_UTF (DWARF4) -254646 Wrapped functions cause stack misalignment on OS X - (and possibly Linux) -254556 ARM: valgrinding anything fails with SIGSEGV for 0xFFFF0FA0 - -(3.6.0: 21 October 2010, vex r2068, valgrind r11471). - - - -Release 3.5.0 (19 August 2009) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.5.0 is a feature release with many significant improvements and the -usual collection of bug fixes. The main improvement is that Valgrind -now works on Mac OS X. - -This release supports X86/Linux, AMD64/Linux, PPC32/Linux, PPC64/Linux -and X86/Darwin. Support for recent distros and toolchain components -(glibc 2.10, gcc 4.5) has been added. - - ------------------------- - -Here is a short summary of the changes. Details are shown further -down: - -* Support for Mac OS X (10.5.x). - -* Improvements and simplifications to Memcheck's leak checker. - -* Clarification and simplifications in various aspects of Valgrind's - text output. - -* XML output for Helgrind and Ptrcheck. - -* Performance and stability improvements for Helgrind and DRD. - -* Genuinely atomic support for x86/amd64/ppc atomic instructions. - -* A new experimental tool, BBV, useful for computer architecture - research. - -* Improved Wine support, including ability to read Windows PDB - debuginfo. - - ------------------------- - -Here are details of the above changes, followed by descriptions of -many other minor changes, and a list of fixed bugs. - - -* Valgrind now runs on Mac OS X. (Note that Mac OS X is sometimes - called "Darwin" because that is the name of the OS core, which is the - level that Valgrind works at.) - - Supported systems: - - - It requires OS 10.5.x (Leopard). Porting to 10.4.x is not planned - because it would require work and 10.4 is only becoming less common. - - - 32-bit programs on x86 and AMD64 (a.k.a x86-64) machines are supported - fairly well. For 10.5.x, 32-bit programs are the default even on - 64-bit machines, so it handles most current programs. - - - 64-bit programs on x86 and AMD64 (a.k.a x86-64) machines are not - officially supported, but simple programs at least will probably work. - However, start-up is slow. - - - PowerPC machines are not supported. - - Things that don't work: - - - The Ptrcheck tool. - - - Objective-C garbage collection. - - - --db-attach=yes. - - - If you have Rogue Amoeba's "Instant Hijack" program installed, - Valgrind will fail with a SIGTRAP at start-up. See - https://bugs.kde.org/show_bug.cgi?id=193917 for details and a - simple work-around. - - Usage notes: - - - You will likely find --dsymutil=yes a useful option, as error - messages may be imprecise without it. - - - Mac OS X support is new and therefore will be less robust than the - Linux support. Please report any bugs you find. - - - Threaded programs may run more slowly than on Linux. - - Many thanks to Greg Parker for developing this port over several years. - - -* Memcheck's leak checker has been improved. - - - The results for --leak-check=summary now match the summary results - for --leak-check=full. Previously they could differ because - --leak-check=summary counted "indirectly lost" blocks and - "suppressed" blocks as "definitely lost". - - - Blocks that are only reachable via at least one interior-pointer, - but are directly pointed to by a start-pointer, were previously - marked as "still reachable". They are now correctly marked as - "possibly lost". - - - The default value for the --leak-resolution option has been - changed from "low" to "high". In general, this means that more - leak reports will be produced, but each leak report will describe - fewer leaked blocks. - - - With --leak-check=full, "definitely lost" and "possibly lost" - leaks are now considered as proper errors, ie. they are counted - for the "ERROR SUMMARY" and affect the behaviour of - --error-exitcode. These leaks are not counted as errors if - --leak-check=summary is specified, however. - - - Documentation for the leak checker has been improved. - - -* Various aspects of Valgrind's text output have changed. - - - Valgrind's start-up message has changed. It is shorter but also - includes the command being run, which makes it easier to use - --trace-children=yes. An example: - - - Valgrind's shut-down messages have also changed. This is most - noticeable with Memcheck, where the leak summary now occurs before - the error summary. This change was necessary to allow leaks to be - counted as proper errors (see the description of the leak checker - changes above for more details). This was also necessary to fix a - longstanding bug in which uses of suppressions against leaks were - not "counted", leading to difficulties in maintaining suppression - files (see https://bugs.kde.org/show_bug.cgi?id=186790). - - - Behavior of -v has changed. In previous versions, -v printed out - a mixture of marginally-user-useful information, and tool/core - statistics. The statistics printing has now been moved to its own - flag, --stats=yes. This means -v is less verbose and more likely - to convey useful end-user information. - - - The format of some (non-XML) stack trace entries has changed a - little. Previously there were six possible forms: - - 0x80483BF: really (a.c:20) - 0x80483BF: really (in /foo/a.out) - 0x80483BF: really - 0x80483BF: (within /foo/a.out) - 0x80483BF: ??? (a.c:20) - 0x80483BF: ??? - - The third and fourth of these forms have been made more consistent - with the others. The six possible forms are now: - - 0x80483BF: really (a.c:20) - 0x80483BF: really (in /foo/a.out) - 0x80483BF: really (in ???) - 0x80483BF: ??? (in /foo/a.out) - 0x80483BF: ??? (a.c:20) - 0x80483BF: ??? - - Stack traces produced when --xml=yes is specified are different - and unchanged. - - -* Helgrind and Ptrcheck now support XML output, so they can be used - from GUI tools. Also, the XML output mechanism has been - overhauled. - - - The XML format has been overhauled and generalised, so it is more - suitable for error reporting tools in general. The Memcheck - specific aspects of it have been removed. The new format, which - is an evolution of the old format, is described in - docs/internals/xml-output-protocol4.txt. - - - Memcheck has been updated to use the new format. - - - Helgrind and Ptrcheck are now able to emit output in this format. - - - The XML output mechanism has been overhauled. XML is now output - to its own file descriptor, which means that: - - * Valgrind can output text and XML independently. - - * The longstanding problem of XML output being corrupted by - unexpected un-tagged text messages is solved. - - As before, the destination for text output is specified using - --log-file=, --log-fd= or --log-socket=. - - As before, XML output for a tool is enabled using --xml=yes. - - Because there's a new XML output channel, the XML output - destination is now specified by --xml-file=, --xml-fd= or - --xml-socket=. - - Initial feedback has shown this causes some confusion. To - clarify, the two envisaged usage scenarios are: - - (1) Normal text output. In this case, do not specify --xml=yes - nor any of --xml-file=, --xml-fd= or --xml-socket=. - - (2) XML output. In this case, specify --xml=yes, and one of - --xml-file=, --xml-fd= or --xml-socket= to select the XML - destination, one of --log-file=, --log-fd= or --log-socket= - to select the destination for any remaining text messages, - and, importantly, -q. - - -q makes Valgrind completely silent on the text channel, - except in the case of critical failures, such as Valgrind - itself segfaulting, or failing to read debugging information. - Hence, in this scenario, it suffices to check whether or not - any output appeared on the text channel. If yes, then it is - likely to be a critical error which should be brought to the - attention of the user. If no (the text channel produced no - output) then it can be assumed that the run was successful. - - This allows GUIs to make the critical distinction they need to - make (did the run fail or not?) without having to search or - filter the text output channel in any way. - - It is also recommended to use --child-silent-after-fork=yes in - scenario (2). - - -* Improvements and changes in Helgrind: - - - XML output, as described above - - - Checks for consistent association between pthread condition - variables and their associated mutexes are now performed. - - - pthread_spinlock functions are supported. - - - Modest performance improvements. - - - Initial (skeletal) support for describing the behaviour of - non-POSIX synchronisation objects through ThreadSanitizer - compatible ANNOTATE_* macros. - - - More controllable tradeoffs between performance and the level of - detail of "previous" accesses in a race. There are now three - settings: - - * --history-level=full. This is the default, and was also the - default in 3.4.x. It shows both stacks involved in a race, but - requires a lot of memory and can be very slow in programs that - do many inter-thread synchronisation events. - - * --history-level=none. This only shows the later stack involved - in a race. This can be much faster than --history-level=full, - but makes it much more difficult to find the other access - involved in the race. - - The new intermediate setting is - - * --history-level=approx - - For the earlier (other) access, two stacks are presented. The - earlier access is guaranteed to be somewhere in between the two - program points denoted by those stacks. This is not as useful - as showing the exact stack for the previous access (as per - --history-level=full), but it is better than nothing, and it's - almost as fast as --history-level=none. - - -* New features and improvements in DRD: - - - The error messages printed by DRD are now easier to interpret. - Instead of using two different numbers to identify each thread - (Valgrind thread ID and DRD thread ID), DRD does now identify - threads via a single number (the DRD thread ID). Furthermore - "first observed at" information is now printed for all error - messages related to synchronization objects. - - - Added support for named semaphores (sem_open() and sem_close()). - - - Race conditions between pthread_barrier_wait() and - pthread_barrier_destroy() calls are now reported. - - - Added support for custom allocators through the macros - VALGRIND_MALLOCLIKE_BLOCK() VALGRIND_FREELIKE_BLOCK() (defined in - in ). An alternative for these two macros is - the new client request VG_USERREQ__DRD_CLEAN_MEMORY (defined in - ). - - - Added support for annotating non-POSIX synchronization objects - through several new ANNOTATE_*() macros. - - - OpenMP: added support for the OpenMP runtime (libgomp) included - with gcc versions 4.3.0 and 4.4.0. - - - Faster operation. - - - Added two new command-line options (--first-race-only and - --segment-merging-interval). - - -* Genuinely atomic support for x86/amd64/ppc atomic instructions - - Valgrind will now preserve (memory-access) atomicity of LOCK- - prefixed x86/amd64 instructions, and any others implying a global - bus lock. Ditto for PowerPC l{w,d}arx/st{w,d}cx. instructions. - - This means that Valgrinded processes will "play nicely" in - situations where communication with other processes, or the kernel, - is done through shared memory and coordinated with such atomic - instructions. Prior to this change, such arrangements usually - resulted in hangs, races or other synchronisation failures, because - Valgrind did not honour atomicity of such instructions. - - -* A new experimental tool, BBV, has been added. BBV generates basic - block vectors for use with the SimPoint analysis tool, which allows - a program's overall behaviour to be approximated by running only a - fraction of it. This is useful for computer architecture - researchers. You can run BBV by specifying --tool=exp-bbv (the - "exp-" prefix is short for "experimental"). BBV was written by - Vince Weaver. - - -* Modestly improved support for running Windows applications under - Wine. In particular, initial support for reading Windows .PDB debug - information has been added. - - -* A new Memcheck client request VALGRIND_COUNT_LEAK_BLOCKS has been - added. It is similar to VALGRIND_COUNT_LEAKS but counts blocks - instead of bytes. - - -* The Valgrind client requests VALGRIND_PRINTF and - VALGRIND_PRINTF_BACKTRACE have been changed slightly. Previously, - the string was always printed immediately on its own line. Now, the - string will be added to a buffer but not printed until a newline is - encountered, or other Valgrind output is printed (note that for - VALGRIND_PRINTF_BACKTRACE, the back-trace itself is considered - "other Valgrind output"). This allows you to use multiple - VALGRIND_PRINTF calls to build up a single output line, and also to - print multiple output lines with a single request (by embedding - multiple newlines in the string). - - -* The graphs drawn by Massif's ms_print program have changed slightly: - - - The half-height chars '.' and ',' are no longer drawn, because - they are confusing. The --y option can be used if the default - y-resolution is not high enough. - - - Horizontal lines are now drawn after the top of a snapshot if - there is a gap until the next snapshot. This makes it clear that - the memory usage has not dropped to zero between snapshots. - - -* Something that happened in 3.4.0, but wasn't clearly announced: the - option --read-var-info=yes can be used by some tools (Memcheck, - Helgrind and DRD). When enabled, it causes Valgrind to read DWARF3 - variable type and location information. This makes those tools - start up more slowly and increases memory consumption, but - descriptions of data addresses in error messages become more - detailed. - - -* exp-Omega, an experimental instantaneous leak-detecting tool, was - disabled in 3.4.0 due to a lack of interest and maintenance, - although the source code was still in the distribution. The source - code has now been removed from the distribution. For anyone - interested, the removal occurred in SVN revision r10247. - - -* Some changes have been made to the build system. - - - VEX/ is now integrated properly into the build system. This means - that dependency tracking within VEX/ now works properly, "make - install" will work without requiring "make" before it, and - parallel builds (ie. 'make -j') now work (previously a - .NOTPARALLEL directive was used to serialize builds, ie. 'make -j' - was effectively ignored). - - - The --with-vex configure option has been removed. It was of - little use and removing it simplified the build system. - - - The location of some install files has changed. This should not - affect most users. Those who might be affected: - - * For people who use Valgrind with MPI programs, the installed - libmpiwrap.so library has moved from - $(INSTALL)//libmpiwrap.so to - $(INSTALL)/libmpiwrap-.so. - - * For people who distribute standalone Valgrind tools, the - installed libraries such as $(INSTALL)//libcoregrind.a - have moved to $(INSTALL)/libcoregrind-.a. - - These changes simplify the build system. - - - Previously, all the distributed suppression (*.supp) files were - installed. Now, only default.supp is installed. This should not - affect users as the other installed suppression files were not - read; the fact that they were installed was a mistake. - - -* KNOWN LIMITATIONS: - - - Memcheck is unusable with the Intel compiler suite version 11.1, - when it generates code for SSE2-and-above capable targets. This - is because of icc's use of highly optimised inlined strlen - implementations. It causes Memcheck to report huge numbers of - false errors even in simple programs. Helgrind and DRD may also - have problems. - - Versions 11.0 and earlier may be OK, but this has not been - properly tested. - - -The following bugs have been fixed or resolved. Note that "n-i-bz" -stands for "not in bugzilla" -- that is, a bug that was reported to us -but never got a bugzilla entry. We encourage you to file bugs in -bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than -mailing the developers (or mailing lists) directly -- bugs that are -not entered into bugzilla tend to get forgotten about or ignored. - -To see details of a given bug, visit -https://bugs.kde.org/show_bug.cgi?id=XXXXXX -where XXXXXX is the bug number as listed below. - -84303 How about a LockCheck tool? -91633 dereference of null ptr in vgPlain_st_basetype -97452 Valgrind doesn't report any pthreads problems -100628 leak-check gets assertion failure when using - VALGRIND_MALLOCLIKE_BLOCK on malloc()ed memory -108528 NPTL pthread cleanup handlers not called -110126 Valgrind 2.4.1 configure.in tramples CFLAGS -110128 mallinfo is not implemented... -110770 VEX: Generated files not always updated when making valgrind -111102 Memcheck: problems with large (memory footprint) applications -115673 Vex's decoder should never assert -117564 False positive: Syscall param clone(child_tidptr) contains - uninitialised byte(s) -119404 executing ssh from inside valgrind fails -133679 Callgrind does not write path names to sources with dwarf debug - info -135847 configure.in problem with non gnu compilers (and possible fix) -136154 threads.c:273 (vgCallgrind_post_signal): Assertion - '*(vgCallgrind_current_fn_stack.top) == 0' failed. -136230 memcheck reports "possibly lost", should be "still reachable" -137073 NULL arg to MALLOCLIKE_BLOCK causes crash -137904 Valgrind reports a memory leak when using POSIX threads, - while it shouldn't -139076 valgrind VT_GETSTATE error -142228 complaint of elf_dynamic_do_rela in trivial usage -145347 spurious warning with USBDEVFS_REAPURB -148441 (wine) can't find memory leak in Wine, win32 binary - executable file. -148742 Leak-check fails assert on exit -149878 add (proper) check for calloc integer overflow -150606 Call graph is broken when using callgrind control -152393 leak errors produce an exit code of 0. I need some way to - cause leak errors to result in a nonzero exit code. -157154 documentation (leak-resolution doc speaks about num-callers - def=4) + what is a loss record -159501 incorrect handling of ALSA ioctls -162020 Valgrinding an empty/zero-byte file crashes valgrind -162482 ppc: Valgrind crashes while reading stabs information -162718 x86: avoid segment selector 0 in sys_set_thread_area() -163253 (wine) canonicaliseSymtab forgot some fields in DiSym -163560 VEX/test_main.c is missing from valgrind-3.3.1 -164353 malloc_usable_size() doesn't return a usable size -165468 Inconsistent formatting in memcheck manual -- please fix -169505 main.c:286 (endOfInstr): - Assertion 'ii->cost_offset == *cost_offset' failed -177206 Generate default.supp during compile instead of configure -177209 Configure valt_load_address based on arch+os -177305 eventfd / syscall 323 patch lost -179731 Tests fail to build because of inlining of non-local asm labels -181394 helgrind: libhb_core.c:3762 (msm_write): Assertion - 'ordxx == POrd_EQ || ordxx == POrd_LT' failed. -181594 Bogus warning for empty text segment -181707 dwarf doesn't require enumerations to have name -185038 exp-ptrcheck: "unhandled syscall: 285" (fallocate) on x86_64 -185050 exp-ptrcheck: sg_main.c:727 (add_block_to_GlobalTree): - Assertion '!already_present' failed. -185359 exp-ptrcheck: unhandled syscall getresuid() -185794 "WARNING: unhandled syscall: 285" (fallocate) on x86_64 -185816 Valgrind is unable to handle debug info for files with split - debug info that are prelinked afterwards -185980 [darwin] unhandled syscall: sem_open -186238 bbToIR_AMD64: disInstr miscalculated next %rip -186507 exp-ptrcheck unhandled syscalls prctl, etc. -186790 Suppression pattern used for leaks are not reported -186796 Symbols with length>200 in suppression files are ignored -187048 drd: mutex PTHREAD_PROCESS_SHARED attribute missinterpretation -187416 exp-ptrcheck: support for __NR_{setregid,setreuid,setresuid} -188038 helgrind: hg_main.c:926: mk_SHVAL_fail: the 'impossible' happened -188046 bashisms in the configure script -188127 amd64->IR: unhandled instruction bytes: 0xF0 0xF 0xB0 0xA -188161 memcheck: --track-origins=yes asserts "mc_machine.c:672 - (get_otrack_shadow_offset_wrk): the 'impossible' happened." -188248 helgrind: pthread_cleanup_push, pthread_rwlock_unlock, - assertion fail "!lock->heldBy" -188427 Add support for epoll_create1 (with patch) -188530 Support for SIOCGSTAMPNS -188560 Include valgrind.spec in the tarball -188572 Valgrind on Mac should suppress setenv() mem leak -189054 Valgrind fails to build because of duplicate non-local asm labels -189737 vex amd64->IR: unhandled instruction bytes: 0xAC -189762 epoll_create syscall not handled (--tool=exp-ptrcheck) -189763 drd assertion failure: s_threadinfo[tid].is_recording -190219 unhandled syscall: 328 (x86-linux) -190391 dup of 181394; see above -190429 Valgrind reports lots of errors in ld.so with x86_64 2.9.90 glibc -190820 No debug information on powerpc-linux -191095 PATCH: Improve usbdevfs ioctl handling -191182 memcheck: VALGRIND_LEAK_CHECK quadratic when big nr of chunks - or big nr of errors -191189 --xml=yes should obey --gen-suppressions=all -191192 syslog() needs a suppression on macosx -191271 DARWIN: WARNING: unhandled syscall: 33554697 a.k.a.: 265 -191761 getrlimit on MacOSX -191992 multiple --fn-skip only works sometimes; dependent on order -192634 V. reports "aspacem sync_check_mapping_callback: - segment mismatch" on Darwin -192954 __extension__ missing on 2 client requests -194429 Crash at start-up with glibc-2.10.1 and linux-2.6.29 -194474 "INSTALL" file has different build instructions than "README" -194671 Unhandled syscall (sem_wait?) from mac valgrind -195069 memcheck: reports leak (memory still reachable) for - printf("%d', x) -195169 drd: (vgDrd_barrier_post_wait): - Assertion 'r->sg[p->post_iteration]' failed. -195268 valgrind --log-file doesn't accept ~/... -195838 VEX abort: LibVEX_N_SPILL_BYTES too small for CPUID boilerplate -195860 WARNING: unhandled syscall: unix:223 -196528 need a error suppression for pthread_rwlock_init under os x? -197227 Support aio_* syscalls on Darwin -197456 valgrind should reject --suppressions=(directory) -197512 DWARF2 CFI reader: unhandled CFI instruction 0:10 -197591 unhandled syscall 27 (mincore) -197793 Merge DCAS branch to the trunk == 85756, 142103 -197794 Avoid duplicate filenames in Vex -197898 make check fails on current SVN -197901 make check fails also under exp-ptrcheck in current SVN -197929 Make --leak-resolution=high the default -197930 Reduce spacing between leak reports -197933 Print command line of client at start-up, and shorten preamble -197966 unhandled syscall 205 (x86-linux, --tool=exp-ptrcheck) -198395 add BBV to the distribution as an experimental tool -198624 Missing syscalls on Darwin: 82, 167, 281, 347 -198649 callgrind_annotate doesn't cumulate counters -199338 callgrind_annotate sorting/thresholds are broken for all but Ir -199977 Valgrind complains about an unrecognized instruction in the - atomic_incs test program -200029 valgrind isn't able to read Fedora 12 debuginfo -200760 darwin unhandled syscall: unix:284 -200827 DRD doesn't work on Mac OS X -200990 VG_(read_millisecond_timer)() does not work correctly -201016 Valgrind does not support pthread_kill() on Mac OS -201169 Document --read-var-info -201323 Pre-3.5.0 performance sanity checking -201384 Review user manual for the 3.5.0 release -201585 mfpvr not implemented on ppc -201708 tests failing because x86 direction flag is left set -201757 Valgrind doesn't handle any recent sys_futex additions -204377 64-bit valgrind can not start a shell script - (with #!/path/to/shell) if the shell is a 32-bit executable -n-i-bz drd: fixed assertion failure triggered by mutex reinitialization. -n-i-bz drd: fixed a bug that caused incorrect messages to be printed - about memory allocation events with memory access tracing enabled -n-i-bz drd: fixed a memory leak triggered by vector clock deallocation - -(3.5.0: 19 Aug 2009, vex r1913, valgrind r10846). - - - -Release 3.4.1 (28 February 2009) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.4.1 is a bug-fix release that fixes some regressions and assertion -failures in debug info reading in 3.4.0, most notably incorrect stack -traces on amd64-linux on older (glibc-2.3 based) systems. Various -other debug info problems are also fixed. A number of bugs in the -exp-ptrcheck tool introduced in 3.4.0 have been fixed. - -In view of the fact that 3.4.0 contains user-visible regressions -relative to 3.3.x, upgrading to 3.4.1 is recommended. Packagers are -encouraged to ship 3.4.1 in preference to 3.4.0. - -The fixed bugs are as follows. Note that "n-i-bz" stands for "not in -bugzilla" -- that is, a bug that was reported to us but never got a -bugzilla entry. We encourage you to file bugs in bugzilla -(http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the -developers (or mailing lists) directly -- bugs that are not entered -into bugzilla tend to get forgotten about or ignored. - -n-i-bz Fix various bugs reading icc-11 generated debug info -n-i-bz Fix various bugs reading gcc-4.4 generated debug info -n-i-bz Preliminary support for glibc-2.10 / Fedora 11 -n-i-bz Cachegrind and Callgrind: handle non-power-of-two cache sizes, - so as to support (eg) 24k Atom D1 and Core2 with 3/6/12MB L2. -179618 exp-ptrcheck crashed / exit prematurely -179624 helgrind: false positive races with pthread_create and - recv/open/close/read -134207 pkg-config output contains @VG_PLATFORM@ -176926 floating point exception at valgrind startup with PPC 440EPX -181594 Bogus warning for empty text segment -173751 amd64->IR: 0x48 0xF 0x6F 0x45 (even more redundant rex prefixes) -181707 Dwarf3 doesn't require enumerations to have name -185038 exp-ptrcheck: "unhandled syscall: 285" (fallocate) on x86_64 -185050 exp-ptrcheck: sg_main.c:727 (add_block_to_GlobalTree): - Assertion '!already_present' failed. -185359 exp-ptrcheck unhandled syscall getresuid() - -(3.4.1.RC1: 24 Feb 2008, vex r1884, valgrind r9253). -(3.4.1: 28 Feb 2008, vex r1884, valgrind r9293). - - - -Release 3.4.0 (2 January 2009) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.4.0 is a feature release with many significant improvements and the -usual collection of bug fixes. This release supports X86/Linux, -AMD64/Linux, PPC32/Linux and PPC64/Linux. Support for recent distros -(using gcc 4.4, glibc 2.8 and 2.9) has been added. - -3.4.0 brings some significant tool improvements. Memcheck can now -report the origin of uninitialised values, the thread checkers -Helgrind and DRD are much improved, and we have a new experimental -tool, exp-Ptrcheck, which is able to detect overruns of stack and -global arrays. In detail: - -* Memcheck is now able to track the origin of uninitialised values. - When it reports an uninitialised value error, it will try to show - the origin of the value, as either a heap or stack allocation. - Origin tracking is expensive and so is not enabled by default. To - use it, specify --track-origins=yes. Memcheck's speed will be - essentially halved, and memory usage will be significantly - increased. Nevertheless it can drastically reduce the effort - required to identify the root cause of uninitialised value errors, - and so is often a programmer productivity win, despite running more - slowly. - -* A version (1.4.0) of the Valkyrie GUI, that works with Memcheck in - 3.4.0, will be released shortly. - -* Helgrind's race detection algorithm has been completely redesigned - and reimplemented, to address usability and scalability concerns: - - - The new algorithm has a lower false-error rate: it is much less - likely to report races that do not really exist. - - - Helgrind will display full call stacks for both accesses involved - in a race. This makes it easier to identify the root causes of - races. - - - Limitations on the size of program that can run have been removed. - - - Performance has been modestly improved, although that is very - workload-dependent. - - - Direct support for Qt4 threading has been added. - - - pthread_barriers are now directly supported. - - - Helgrind works well on all supported Linux targets. - -* The DRD thread debugging tool has seen major improvements: - - - Greatly improved performance and significantly reduced memory - usage. - - - Support for several major threading libraries (Boost.Thread, Qt4, - glib, OpenMP) has been added. - - - Support for atomic instructions, POSIX semaphores, barriers and - reader-writer locks has been added. - - - Works now on PowerPC CPUs too. - - - Added support for printing thread stack usage at thread exit time. - - - Added support for debugging lock contention. - - - Added a manual for Drd. - -* A new experimental tool, exp-Ptrcheck, has been added. Ptrcheck - checks for misuses of pointers. In that sense it is a bit like - Memcheck. However, Ptrcheck can do things Memcheck can't: it can - detect overruns of stack and global arrays, it can detect - arbitrarily far out-of-bounds accesses to heap blocks, and it can - detect accesses heap blocks that have been freed a very long time - ago (millions of blocks in the past). - - Ptrcheck currently works only on x86-linux and amd64-linux. To use - it, use --tool=exp-ptrcheck. A simple manual is provided, as part - of the main Valgrind documentation. As this is an experimental - tool, we would be particularly interested in hearing about your - experiences with it. - -* exp-Omega, an experimental instantaneous leak-detecting tool, is no - longer built by default, although the code remains in the repository - and the tarball. This is due to three factors: a perceived lack of - users, a lack of maintenance, and concerns that it may not be - possible to achieve reliable operation using the existing design. - -* As usual, support for the latest Linux distros and toolchain - components has been added. It should work well on Fedora Core 10, - OpenSUSE 11.1 and Ubuntu 8.10. gcc-4.4 (in its current pre-release - state) is supported, as is glibc-2.9. The C++ demangler has been - updated so as to work well with C++ compiled by even the most recent - g++'s. - -* You can now use frame-level wildcards in suppressions. This was a - frequently-requested enhancement. A line "..." in a suppression now - matches zero or more frames. This makes it easier to write - suppressions which are precise yet insensitive to changes in - inlining behaviour. - -* 3.4.0 adds support on x86/amd64 for the SSSE3 instruction set. - -* Very basic support for IBM Power6 has been added (64-bit processes only). - -* Valgrind is now cross-compilable. For example, it is possible to - cross compile Valgrind on an x86/amd64-linux host, so that it runs - on a ppc32/64-linux target. - -* You can set the main thread's stack size at startup using the - new --main-stacksize= flag (subject of course to ulimit settings). - This is useful for running apps that need a lot of stack space. - -* The limitation that you can't use --trace-children=yes together - with --db-attach=yes has been removed. - -* The following bugs have been fixed. Note that "n-i-bz" stands for - "not in bugzilla" -- that is, a bug that was reported to us but - never got a bugzilla entry. We encourage you to file bugs in - bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than - mailing the developers (or mailing lists) directly. - - n-i-bz Make return types for some client requests 64-bit clean - n-i-bz glibc 2.9 support - n-i-bz ignore unsafe .valgrindrc's (CVE-2008-4865) - n-i-bz MPI_Init(0,0) is valid but libmpiwrap.c segfaults - n-i-bz Building in an env without gdb gives bogus gdb attach - 92456 Tracing the origin of uninitialised memory - 106497 Valgrind does not demangle some C++ template symbols - 162222 ==106497 - 151612 Suppression with "..." (frame-level wildcards in .supp files) - 156404 Unable to start oocalc under memcheck on openSUSE 10.3 (64-bit) - 159285 unhandled syscall:25 (stime, on x86-linux) - 159452 unhandled ioctl 0x8B01 on "valgrind iwconfig" - 160954 ppc build of valgrind crashes with illegal instruction (isel) - 160956 mallinfo implementation, w/ patch - 162092 Valgrind fails to start gnome-system-monitor - 162819 malloc_free_fill test doesn't pass on glibc2.8 x86 - 163794 assertion failure with "--track-origins=yes" - 163933 sigcontext.err and .trapno must be set together - 163955 remove constraint !(--db-attach=yes && --trace-children=yes) - 164476 Missing kernel module loading system calls - 164669 SVN regression: mmap() drops posix file locks - 166581 Callgrind output corruption when program forks - 167288 Patch file for missing system calls on Cell BE - 168943 unsupported scas instruction pentium - 171645 Unrecognised instruction (MOVSD, non-binutils encoding) - 172417 x86->IR: 0x82 ... - 172563 amd64->IR: 0xD9 0xF5 - fprem1 - 173099 .lds linker script generation error - 173177 [x86_64] syscalls: 125/126/179 (capget/capset/quotactl) - 173751 amd64->IR: 0x48 0xF 0x6F 0x45 (even more redundant prefixes) - 174532 == 173751 - 174908 --log-file value not expanded correctly for core file - 175044 Add lookup_dcookie for amd64 - 175150 x86->IR: 0xF2 0xF 0x11 0xC1 (movss non-binutils encoding) - -Developer-visible changes: - -* Valgrind's debug-info reading machinery has been majorly overhauled. - It can now correctly establish the addresses for ELF data symbols, - which is something that has never worked properly before now. - - Also, Valgrind can now read DWARF3 type and location information for - stack and global variables. This makes it possible to use the - framework to build tools that rely on knowing the type and locations - of stack and global variables, for example exp-Ptrcheck. - - Reading of such information is disabled by default, because most - tools don't need it, and because it is expensive in space and time. - However, you can force Valgrind to read it, using the - --read-var-info=yes flag. Memcheck, Helgrind and DRD are able to - make use of such information, if present, to provide source-level - descriptions of data addresses in the error messages they create. - -(3.4.0.RC1: 24 Dec 2008, vex r1878, valgrind r8882). -(3.4.0: 3 Jan 2009, vex r1878, valgrind r8899). diff --git a/NEWS.old b/NEWS.old index 38d1089444..2b43c91fad 100644 --- a/NEWS.old +++ b/NEWS.old @@ -1,2003 +1,3323 @@ -Release 3.3.1 (4 June 2008) -~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.3.1 fixes a bunch of bugs in 3.3.0, adds support for glibc-2.8 based -systems (openSUSE 11, Fedora Core 9), improves the existing glibc-2.7 -support, and adds support for the SSSE3 (Core 2) instruction set. - -3.3.1 will likely be the last release that supports some very old -systems. In particular, the next major release, 3.4.0, will drop -support for the old LinuxThreads threading library, and for gcc -versions prior to 3.0. - -The fixed bugs are as follows. Note that "n-i-bz" stands for "not in -bugzilla" -- that is, a bug that was reported to us but never got a -bugzilla entry. We encourage you to file bugs in bugzilla -(http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the -developers (or mailing lists) directly -- bugs that are not entered -into bugzilla tend to get forgotten about or ignored. - -n-i-bz Massif segfaults at exit -n-i-bz Memcheck asserts on Altivec code -n-i-bz fix sizeof bug in Helgrind -n-i-bz check fd on sys_llseek -n-i-bz update syscall lists to kernel 2.6.23.1 -n-i-bz support sys_sync_file_range -n-i-bz handle sys_sysinfo, sys_getresuid, sys_getresgid on ppc64-linux -n-i-bz intercept memcpy in 64-bit ld.so's -n-i-bz Fix wrappers for sys_{futimesat,utimensat} -n-i-bz Minor false-error avoidance fixes for Memcheck -n-i-bz libmpiwrap.c: add a wrapper for MPI_Waitany -n-i-bz helgrind support for glibc-2.8 -n-i-bz partial fix for mc_leakcheck.c:698 assert: - 'lc_shadows[i]->data + lc_shadows[i] ... -n-i-bz Massif/Cachegrind output corruption when programs fork -n-i-bz register allocator fix: handle spill stores correctly -n-i-bz add support for PA6T PowerPC CPUs -126389 vex x86->IR: 0xF 0xAE (FXRSTOR) -158525 ==126389 -152818 vex x86->IR: 0xF3 0xAC (repz lodsb) -153196 vex x86->IR: 0xF2 0xA6 (repnz cmpsb) -155011 vex x86->IR: 0xCF (iret) -155091 Warning [...] unhandled DW_OP_ opcode 0x23 -156960 ==155901 -155528 support Core2/SSSE3 insns on x86/amd64 -155929 ms_print fails on massif outputs containing long lines -157665 valgrind fails on shmdt(0) after shmat to 0 -157748 support x86 PUSHFW/POPFW -158212 helgrind: handle pthread_rwlock_try{rd,wr}lock. -158425 sys_poll incorrectly emulated when RES==0 -158744 vex amd64->IR: 0xF0 0x41 0xF 0xC0 (xaddb) -160907 Support for a couple of recent Linux syscalls -161285 Patch -- support for eventfd() syscall -161378 illegal opcode in debug libm (FUCOMPP) -160136 ==161378 -161487 number of suppressions files is limited to 10 -162386 ms_print typo in milliseconds time unit for massif -161036 exp-drd: client allocated memory was never freed -162663 signalfd_wrapper fails on 64bit linux - -(3.3.1.RC1: 2 June 2008, vex r1854, valgrind r8169). -(3.3.1: 4 June 2008, vex r1854, valgrind r8180). - - - -Release 3.3.0 (7 December 2007) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.3.0 is a feature release with many significant improvements and the -usual collection of bug fixes. This release supports X86/Linux, -AMD64/Linux, PPC32/Linux and PPC64/Linux. Support for recent distros -(using gcc 4.3, glibc 2.6 and 2.7) has been added. - -The main excitement in 3.3.0 is new and improved tools. Helgrind -works again, Massif has been completely overhauled and much improved, -Cachegrind now does branch-misprediction profiling, and a new category -of experimental tools has been created, containing two new tools: -Omega and DRD. There are many other smaller improvements. In detail: - -- Helgrind has been completely overhauled and works for the first time - since Valgrind 2.2.0. Supported functionality is: detection of - misuses of the POSIX PThreads API, detection of potential deadlocks - resulting from cyclic lock dependencies, and detection of data - races. Compared to the 2.2.0 Helgrind, the race detection algorithm - has some significant improvements aimed at reducing the false error - rate. Handling of various kinds of corner cases has been improved. - Efforts have been made to make the error messages easier to - understand. Extensive documentation is provided. - -- Massif has been completely overhauled. Instead of measuring - space-time usage -- which wasn't always useful and many people found - confusing -- it now measures space usage at various points in the - execution, including the point of peak memory allocation. Its - output format has also changed: instead of producing PostScript - graphs and HTML text, it produces a single text output (via the new - 'ms_print' script) that contains both a graph and the old textual - information, but in a more compact and readable form. Finally, the - new version should be more reliable than the old one, as it has been - tested more thoroughly. - -- Cachegrind has been extended to do branch-misprediction profiling. - Both conditional and indirect branches are profiled. The default - behaviour of Cachegrind is unchanged. To use the new functionality, - give the option --branch-sim=yes. - -- A new category of "experimental tools" has been created. Such tools - may not work as well as the standard tools, but are included because - some people will find them useful, and because exposure to a wider - user group provides tool authors with more end-user feedback. These - tools have a "exp-" prefix attached to their names to indicate their - experimental nature. Currently there are two experimental tools: - - * exp-Omega: an instantaneous leak detector. See - exp-omega/docs/omega_introduction.txt. - - * exp-DRD: a data race detector based on the happens-before - relation. See exp-drd/docs/README.txt. - -- Scalability improvements for very large programs, particularly those - which have a million or more malloc'd blocks in use at once. These - improvements mostly affect Memcheck. Memcheck is also up to 10% - faster for all programs, with x86-linux seeing the largest - improvement. - -- Works well on the latest Linux distros. Has been tested on Fedora - Core 8 (x86, amd64, ppc32, ppc64) and openSUSE 10.3. glibc 2.6 and - 2.7 are supported. gcc-4.3 (in its current pre-release state) is - supported. At the same time, 3.3.0 retains support for older - distros. - -- The documentation has been modestly reorganised with the aim of - making it easier to find information on common-usage scenarios. - Some advanced material has been moved into a new chapter in the main - manual, so as to unclutter the main flow, and other tidying up has - been done. - -- There is experimental support for AIX 5.3, both 32-bit and 64-bit - processes. You need to be running a 64-bit kernel to use Valgrind - on a 64-bit executable. - -- There have been some changes to command line options, which may - affect you: - - * --log-file-exactly and - --log-file-qualifier options have been removed. - - To make up for this --log-file option has been made more powerful. - It now accepts a %p format specifier, which is replaced with the - process ID, and a %q{FOO} format specifier, which is replaced with - the contents of the environment variable FOO. - - * --child-silent-after-fork=yes|no [no] - - Causes Valgrind to not show any debugging or logging output for - the child process resulting from a fork() call. This can make the - output less confusing (although more misleading) when dealing with - processes that create children. - - * --cachegrind-out-file, --callgrind-out-file and --massif-out-file - - These control the names of the output files produced by - Cachegrind, Callgrind and Massif. They accept the same %p and %q - format specifiers that --log-file accepts. --callgrind-out-file - replaces Callgrind's old --base option. - - * Cachegrind's 'cg_annotate' script no longer uses the -- - option to specify the output file. Instead, the first non-option - argument is taken to be the name of the output file, and any - subsequent non-option arguments are taken to be the names of - source files to be annotated. - - * Cachegrind and Callgrind now use directory names where possible in - their output files. This means that the -I option to - 'cg_annotate' and 'callgrind_annotate' should not be needed in - most cases. It also means they can correctly handle the case - where two source files in different directories have the same - name. - -- Memcheck offers a new suppression kind: "Jump". This is for - suppressing jump-to-invalid-address errors. Previously you had to - use an "Addr1" suppression, which didn't make much sense. - -- Memcheck has new flags --malloc-fill= and - --free-fill= which free malloc'd / free'd areas with the - specified byte. This can help shake out obscure memory corruption - problems. The definedness and addressability of these areas is - unchanged -- only the contents are affected. - -- The behaviour of Memcheck's client requests VALGRIND_GET_VBITS and - VALGRIND_SET_VBITS have changed slightly. They no longer issue - addressability errors -- if either array is partially unaddressable, - they just return 3 (as before). Also, SET_VBITS doesn't report - definedness errors if any of the V bits are undefined. - -- The following Memcheck client requests have been removed: - VALGRIND_MAKE_NOACCESS - VALGRIND_MAKE_WRITABLE - VALGRIND_MAKE_READABLE - VALGRIND_CHECK_WRITABLE - VALGRIND_CHECK_READABLE - VALGRIND_CHECK_DEFINED - They were deprecated in 3.2.0, when equivalent but better-named client - requests were added. See the 3.2.0 release notes for more details. - -- The behaviour of the tool Lackey has changed slightly. First, the output - from --trace-mem has been made more compact, to reduce the size of the - traces. Second, a new option --trace-superblocks has been added, which - shows the addresses of superblocks (code blocks) as they are executed. - -- The following bugs have been fixed. Note that "n-i-bz" stands for - "not in bugzilla" -- that is, a bug that was reported to us but - never got a bugzilla entry. We encourage you to file bugs in - bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than - mailing the developers (or mailing lists) directly. - - n-i-bz x86_linux_REDIR_FOR_index() broken - n-i-bz guest-amd64/toIR.c:2512 (dis_op2_E_G): Assertion `0' failed. - n-i-bz Support x86 INT insn (INT (0xCD) 0x40 - 0x43) - n-i-bz Add sys_utimensat system call for Linux x86 platform - 79844 Helgrind complains about race condition which does not exist - 82871 Massif output function names too short - 89061 Massif: ms_main.c:485 (get_XCon): Assertion `xpt->max_chi...' - 92615 Write output from Massif at crash - 95483 massif feature request: include peak allocation in report - 112163 MASSIF crashed with signal 7 (SIGBUS) after running 2 days - 119404 problems running setuid executables (partial fix) - 121629 add instruction-counting mode for timing - 127371 java vm giving unhandled instruction bytes: 0x26 0x2E 0x64 0x65 - 129937 ==150380 - 129576 Massif loses track of memory, incorrect graphs - 132132 massif --format=html output does not do html entity escaping - 132950 Heap alloc/usage summary - 133962 unhandled instruction bytes: 0xF2 0x4C 0xF 0x10 - 134990 use -fno-stack-protector if possible - 136382 ==134990 - 137396 I would really like helgrind to work again... - 137714 x86/amd64->IR: 0x66 0xF 0xF7 0xC6 (maskmovq, maskmovdq) - 141631 Massif: percentages don't add up correctly - 142706 massif numbers don't seem to add up - 143062 massif crashes on app exit with signal 8 SIGFPE - 144453 (get_XCon): Assertion 'xpt->max_children != 0' failed. - 145559 valgrind aborts when malloc_stats is called - 145609 valgrind aborts all runs with 'repeated section!' - 145622 --db-attach broken again on x86-64 - 145837 ==149519 - 145887 PPC32: getitimer() system call is not supported - 146252 ==150678 - 146456 (update_XCon): Assertion 'xpt->curr_space >= -space_delta'... - 146701 ==134990 - 146781 Adding support for private futexes - 147325 valgrind internal error on syscall (SYS_io_destroy, 0) - 147498 amd64->IR: 0xF0 0xF 0xB0 0xF (lock cmpxchg %cl,(%rdi)) - 147545 Memcheck: mc_main.c:817 (get_sec_vbits8): Assertion 'n' failed. - 147628 SALC opcode 0xd6 unimplemented - 147825 crash on amd64-linux with gcc 4.2 and glibc 2.6 (CFI) - 148174 Incorrect type of freed_list_volume causes assertion [...] - 148447 x86_64 : new NOP codes: 66 66 66 66 2e 0f 1f - 149182 PPC Trap instructions not implemented in valgrind - 149504 Assertion hit on alloc_xpt->curr_space >= -space_delta - 149519 ppc32: V aborts with SIGSEGV on execution of a signal handler - 149892 ==137714 - 150044 SEGV during stack deregister - 150380 dwarf/gcc interoperation (dwarf3 read problems) - 150408 ==148447 - 150678 guest-amd64/toIR.c:3741 (dis_Grp5): Assertion `sz == 4' failed - 151209 V unable to execute programs for users with UID > 2^16 - 151938 help on --db-command= misleading - 152022 subw $0x28, %%sp causes assertion failure in memcheck - 152357 inb and outb not recognized in 64-bit mode - 152501 vex x86->IR: 0x27 0x66 0x89 0x45 (daa) - 152818 vex x86->IR: 0xF3 0xAC 0xFC 0x9C (rep lodsb) - -Developer-visible changes: - -- The names of some functions and types within the Vex IR have - changed. Run 'svn log -r1689 VEX/pub/libvex_ir.h' for full details. - Any existing standalone tools will have to be updated to reflect - these changes. The new names should be clearer. The file - VEX/pub/libvex_ir.h is also much better commented. - -- A number of new debugging command line options have been added. - These are mostly of use for debugging the symbol table and line - number readers: - - --trace-symtab-patt= limit debuginfo tracing to obj name - --trace-cfi=no|yes show call-frame-info details? [no] - --debug-dump=syms mimic /usr/bin/readelf --syms - --debug-dump=line mimic /usr/bin/readelf --debug-dump=line - --debug-dump=frames mimic /usr/bin/readelf --debug-dump=frames - --sym-offsets=yes|no show syms in form 'name+offset' ? [no] - -- Internally, the code base has been further factorised and - abstractified, particularly with respect to support for non-Linux - OSs. - -(3.3.0.RC1: 2 Dec 2007, vex r1803, valgrind r7268). -(3.3.0.RC2: 5 Dec 2007, vex r1804, valgrind r7282). -(3.3.0.RC3: 9 Dec 2007, vex r1804, valgrind r7288). -(3.3.0: 10 Dec 2007, vex r1804, valgrind r7290). - - - -Release 3.2.3 (29 Jan 2007) -~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Unfortunately 3.2.2 introduced a regression which can cause an -assertion failure ("vex: the `impossible' happened: eqIRConst") when -running obscure pieces of SSE code. 3.2.3 fixes this and adds one -more glibc-2.5 intercept. In all other respects it is identical to -3.2.2. Please do not use (or package) 3.2.2; instead use 3.2.3. - -n-i-bz vex: the `impossible' happened: eqIRConst -n-i-bz Add an intercept for glibc-2.5 __stpcpy_chk - -(3.2.3: 29 Jan 2007, vex r1732, valgrind r6560). - - -Release 3.2.2 (22 Jan 2007) -~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.2.2 fixes a bunch of bugs in 3.2.1, adds support for glibc-2.5 based -systems (openSUSE 10.2, Fedora Core 6), improves support for icc-9.X -compiled code, and brings modest performance improvements in some -areas, including amd64 floating point, powerpc support, and startup -responsiveness on all targets. - -The fixed bugs are as follows. Note that "n-i-bz" stands for "not in -bugzilla" -- that is, a bug that was reported to us but never got a -bugzilla entry. We encourage you to file bugs in bugzilla -(http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the -developers (or mailing lists) directly. - -129390 ppc?->IR: some kind of VMX prefetch (dstt) -129968 amd64->IR: 0xF 0xAE 0x0 (fxsave) -134319 ==129968 -133054 'make install' fails with syntax errors -118903 ==133054 -132998 startup fails in when running on UML -134207 pkg-config output contains @VG_PLATFORM@ -134727 valgrind exits with "Value too large for defined data type" -n-i-bz ppc32/64: support mcrfs -n-i-bz Cachegrind/Callgrind: Update cache parameter detection -135012 x86->IR: 0xD7 0x8A 0xE0 0xD0 (xlat) -125959 ==135012 -126147 x86->IR: 0xF2 0xA5 0xF 0x77 (repne movsw) -136650 amd64->IR: 0xC2 0x8 0x0 -135421 x86->IR: unhandled Grp5(R) case 6 -n-i-bz Improved documentation of the IR intermediate representation -n-i-bz jcxz (x86) (users list, 8 Nov) -n-i-bz ExeContext hashing fix -n-i-bz fix CFI reading failures ("Dwarf CFI 0:24 0:32 0:48 0:7") -n-i-bz fix Cachegrind/Callgrind simulation bug -n-i-bz libmpiwrap.c: fix handling of MPI_LONG_DOUBLE -n-i-bz make User errors suppressible -136844 corrupted malloc line when using --gen-suppressions=yes -138507 ==136844 -n-i-bz Speed up the JIT's register allocator -n-i-bz Fix confusing leak-checker flag hints -n-i-bz Support recent autoswamp versions -n-i-bz ppc32/64 dispatcher speedups -n-i-bz ppc64 front end rld/rlw improvements -n-i-bz ppc64 back end imm64 improvements -136300 support 64K pages on ppc64-linux -139124 == 136300 -n-i-bz fix ppc insn set tests for gcc >= 4.1 -137493 x86->IR: recent binutils no-ops -137714 x86->IR: 0x66 0xF 0xF7 0xC6 (maskmovdqu) -138424 "failed in UME with error 22" (produce a better error msg) -138856 ==138424 -138627 Enhancement support for prctl ioctls -138896 Add support for usb ioctls -136059 ==138896 -139050 ppc32->IR: mfspr 268/269 instructions not handled -n-i-bz ppc32->IR: lvxl/stvxl -n-i-bz glibc-2.5 support -n-i-bz memcheck: provide replacement for mempcpy -n-i-bz memcheck: replace bcmp in ld.so -n-i-bz Use 'ifndef' in VEX's Makefile correctly -n-i-bz Suppressions for MVL 4.0.1 on ppc32-linux -n-i-bz libmpiwrap.c: Fixes for MPICH -n-i-bz More robust handling of hinted client mmaps -139776 Invalid read in unaligned memcpy with Intel compiler v9 -n-i-bz Generate valid XML even for very long fn names -n-i-bz Don't prompt about suppressions for unshown reachable leaks -139910 amd64 rcl is not supported -n-i-bz DWARF CFI reader: handle DW_CFA_undefined -n-i-bz DWARF CFI reader: handle icc9 generated CFI info better -n-i-bz fix false uninit-value errs in icc9 generated FP code -n-i-bz reduce extraneous frames in libmpiwrap.c -n-i-bz support pselect6 on amd64-linux - -(3.2.2: 22 Jan 2007, vex r1729, valgrind r6545). - - -Release 3.2.1 (16 Sept 2006) +Release 3.18.0 (15 Oct 2021) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.2.1 adds x86/amd64 support for all SSE3 instructions except monitor -and mwait, further reduces memcheck's false error rate on all -platforms, adds support for recent binutils (in OpenSUSE 10.2 and -Fedora Rawhide) and fixes a bunch of bugs in 3.2.0. Some of the fixed -bugs were causing large programs to segfault with --tool=callgrind and ---tool=cachegrind, so an upgrade is recommended. - -In view of the fact that any 3.3.0 release is unlikely to happen until -well into 1Q07, we intend to keep the 3.2.X line alive for a while -yet, and so we tentatively plan a 3.2.2 release sometime in December -06. - -The fixed bugs are as follows. Note that "n-i-bz" stands for "not in -bugzilla" -- that is, a bug that was reported to us but never got a -bugzilla entry. - -n-i-bz Expanding brk() into last available page asserts -n-i-bz ppc64-linux stack RZ fast-case snafu -n-i-bz 'c' in --gen-supps=yes doesn't work -n-i-bz VG_N_SEGMENTS too low (users, 28 June) -n-i-bz VG_N_SEGNAMES too low (Stu Robinson) -106852 x86->IR: fisttp (SSE3) -117172 FUTEX_WAKE does not use uaddr2 -124039 Lacks support for VKI_[GP]IO_UNIMAP* -127521 amd64->IR: 0xF0 0x48 0xF 0xC7 (cmpxchg8b) -128917 amd64->IR: 0x66 0xF 0xF6 0xC4 (psadbw,SSE2) -129246 JJ: ppc32/ppc64 syscalls, w/ patch -129358 x86->IR: fisttpl (SSE3) -129866 cachegrind/callgrind causes executable to die -130020 Can't stat .so/.exe error while reading symbols -130388 Valgrind aborts when process calls malloc_trim() -130638 PATCH: ppc32 missing system calls -130785 amd64->IR: unhandled instruction "pushfq" -131481: (HINT_NOP) vex x86->IR: 0xF 0x1F 0x0 0xF -131298 ==131481 -132146 Programs with long sequences of bswap[l,q]s -132918 vex amd64->IR: 0xD9 0xF8 (fprem) -132813 Assertion at priv/guest-x86/toIR.c:652 fails -133051 'cfsi->len > 0 && cfsi->len < 2000000' failed -132722 valgrind header files are not standard C -n-i-bz Livelocks entire machine (users list, Timothy Terriberry) -n-i-bz Alex Bennee mmap problem (9 Aug) -n-i-bz BartV: Don't print more lines of a stack-trace than were obtained. -n-i-bz ppc32 SuSE 10.1 redir -n-i-bz amd64 padding suppressions -n-i-bz amd64 insn printing fix. -n-i-bz ppc cmp reg,reg fix -n-i-bz x86/amd64 iropt e/rflag reduction rules -n-i-bz SuSE 10.1 (ppc32) minor fixes -133678 amd64->IR: 0x48 0xF 0xC5 0xC0 (pextrw?) -133694 aspacem assertion: aspacem_minAddr <= holeStart -n-i-bz callgrind: fix warning about malformed creator line -n-i-bz callgrind: fix annotate script for data produced with - --dump-instr=yes -n-i-bz callgrind: fix failed assertion when toggling - instrumentation mode -n-i-bz callgrind: fix annotate script fix warnings with - --collect-jumps=yes -n-i-bz docs path hardwired (Dennis Lubert) - -The following bugs were not fixed, due primarily to lack of developer -time, and also because bug reporters did not answer requests for -feedback in time for the release: - -129390 ppc?->IR: some kind of VMX prefetch (dstt) -129968 amd64->IR: 0xF 0xAE 0x0 (fxsave) -133054 'make install' fails with syntax errors -n-i-bz Signal race condition (users list, 13 June, Johannes Berg) -n-i-bz Unrecognised instruction at address 0x70198EC2 (users list, - 19 July, Bennee) -132998 startup fails in when running on UML - -The following bug was tentatively fixed on the mainline but the fix -was considered too risky to push into 3.2.X: - -133154 crash when using client requests to register/deregister stack - -(3.2.1: 16 Sept 2006, vex r1658, valgrind r6070). - - -Release 3.2.0 (7 June 2006) -~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.2.0 is a feature release with many significant improvements and the -usual collection of bug fixes. This release supports X86/Linux, -AMD64/Linux, PPC32/Linux and PPC64/Linux. - -Performance, especially of Memcheck, is improved, Addrcheck has been -removed, Callgrind has been added, PPC64/Linux support has been added, -Lackey has been improved, and MPI support has been added. In detail: - -- Memcheck has improved speed and reduced memory use. Run times are - typically reduced by 15-30%, averaging about 24% for SPEC CPU2000. - The other tools have smaller but noticeable speed improvements. We - are interested to hear what improvements users get. - - Memcheck uses less memory due to the introduction of a compressed - representation for shadow memory. The space overhead has been - reduced by a factor of up to four, depending on program behaviour. - This means you should be able to run programs that use more memory - than before without hitting problems. - -- Addrcheck has been removed. It has not worked since version 2.4.0, - and the speed and memory improvements to Memcheck make it redundant. - If you liked using Addrcheck because it didn't give undefined value - errors, you can use the new Memcheck option --undef-value-errors=no - to get the same behaviour. - -- The number of undefined-value errors incorrectly reported by - Memcheck has been reduced (such false reports were already very - rare). In particular, efforts have been made to ensure Memcheck - works really well with gcc 4.0/4.1-generated code on X86/Linux and - AMD64/Linux. - -- Josef Weidendorfer's popular Callgrind tool has been added. Folding - it in was a logical step given its popularity and usefulness, and - makes it easier for us to ensure it works "out of the box" on all - supported targets. The associated KDE KCachegrind GUI remains a - separate project. - -- A new release of the Valkyrie GUI for Memcheck, version 1.2.0, - accompanies this release. Improvements over previous releases - include improved robustness, many refinements to the user interface, - and use of a standard autoconf/automake build system. You can get - it from http://www.valgrind.org/downloads/guis.html. - -- Valgrind now works on PPC64/Linux. As with the AMD64/Linux port, - this supports programs using to 32G of address space. On 64-bit - capable PPC64/Linux setups, you get a dual architecture build so - that both 32-bit and 64-bit executables can be run. Linux on POWER5 - is supported, and POWER4 is also believed to work. Both 32-bit and - 64-bit DWARF2 is supported. This port is known to work well with - both gcc-compiled and xlc/xlf-compiled code. - -- Floating point accuracy has been improved for PPC32/Linux. - Specifically, the floating point rounding mode is observed on all FP - arithmetic operations, and multiply-accumulate instructions are - preserved by the compilation pipeline. This means you should get FP - results which are bit-for-bit identical to a native run. These - improvements are also present in the PPC64/Linux port. - -- Lackey, the example tool, has been improved: - - * It has a new option --detailed-counts (off by default) which - causes it to print out a count of loads, stores and ALU operations - done, and their sizes. - - * It has a new option --trace-mem (off by default) which causes it - to print out a trace of all memory accesses performed by a - program. It's a good starting point for building Valgrind tools - that need to track memory accesses. Read the comments at the top - of the file lackey/lk_main.c for details. - - * The original instrumentation (counting numbers of instructions, - jumps, etc) is now controlled by a new option --basic-counts. It - is on by default. - -- MPI support: partial support for debugging distributed applications - using the MPI library specification has been added. Valgrind is - aware of the memory state changes caused by a subset of the MPI - functions, and will carefully check data passed to the (P)MPI_ - interface. - -- A new flag, --error-exitcode=, has been added. This allows changing - the exit code in runs where Valgrind reported errors, which is - useful when using Valgrind as part of an automated test suite. - -- Various segfaults when reading old-style "stabs" debug information - have been fixed. - -- A simple performance evaluation suite has been added. See - perf/README and README_DEVELOPERS for details. There are - various bells and whistles. - -- New configuration flags: - --enable-only32bit - --enable-only64bit - By default, on 64 bit platforms (ppc64-linux, amd64-linux) the build - system will attempt to build a Valgrind which supports both 32-bit - and 64-bit executables. This may not be what you want, and you can - override the default behaviour using these flags. - -Please note that Helgrind is still not working. We have made an -important step towards making it work again, however, with the -addition of function wrapping (see below). - -Other user-visible changes: - -- Valgrind now has the ability to intercept and wrap arbitrary - functions. This is a preliminary step towards making Helgrind work - again, and was required for MPI support. - -- There are some changes to Memcheck's client requests. Some of them - have changed names: - - MAKE_NOACCESS --> MAKE_MEM_NOACCESS - MAKE_WRITABLE --> MAKE_MEM_UNDEFINED - MAKE_READABLE --> MAKE_MEM_DEFINED - - CHECK_WRITABLE --> CHECK_MEM_IS_ADDRESSABLE - CHECK_READABLE --> CHECK_MEM_IS_DEFINED - CHECK_DEFINED --> CHECK_VALUE_IS_DEFINED - - The reason for the change is that the old names are subtly - misleading. The old names will still work, but they are deprecated - and may be removed in a future release. - - We also added a new client request: - - MAKE_MEM_DEFINED_IF_ADDRESSABLE(a, len) - - which is like MAKE_MEM_DEFINED but only affects a byte if the byte is - already addressable. - -- The way client requests are encoded in the instruction stream has - changed. Unfortunately, this means 3.2.0 will not honour client - requests compiled into binaries using headers from earlier versions - of Valgrind. We will try to keep the client request encodings more - stable in future. - -BUGS FIXED: - -108258 NPTL pthread cleanup handlers not called -117290 valgrind is sigKILL'd on startup -117295 == 117290 -118703 m_signals.c:1427 Assertion 'tst->status == VgTs_WaitSys' -118466 add %reg, %reg generates incorrect validity for bit 0 -123210 New: strlen from ld-linux on amd64 -123244 DWARF2 CFI reader: unhandled CFI instruction 0:18 -123248 syscalls in glibc-2.4: openat, fstatat, symlinkat -123258 socketcall.recvmsg(msg.msg_iov[i] points to uninit -123535 mremap(new_addr) requires MREMAP_FIXED in 4th arg -123836 small typo in the doc -124029 ppc compile failed: `vor' gcc 3.3.5 -124222 Segfault: @@don't know what type ':' is -124475 ppc32: crash (syscall?) timer_settime() -124499 amd64->IR: 0xF 0xE 0x48 0x85 (femms) -124528 FATAL: aspacem assertion failed: segment_is_sane -124697 vex x86->IR: 0xF 0x70 0xC9 0x0 (pshufw) -124892 vex x86->IR: 0xF3 0xAE (REPx SCASB) -126216 == 124892 -124808 ppc32: sys_sched_getaffinity() not handled -n-i-bz Very long stabs strings crash m_debuginfo -n-i-bz amd64->IR: 0x66 0xF 0xF5 (pmaddwd) -125492 ppc32: support a bunch more syscalls -121617 ppc32/64: coredumping gives assertion failure -121814 Coregrind return error as exitcode patch -126517 == 121814 -125607 amd64->IR: 0x66 0xF 0xA3 0x2 (btw etc) -125651 amd64->IR: 0xF8 0x49 0xFF 0xE3 (clc?) -126253 x86 movx is wrong -126451 3.2 SVN doesn't work on ppc32 CPU's without FPU -126217 increase # threads -126243 vex x86->IR: popw mem -126583 amd64->IR: 0x48 0xF 0xA4 0xC2 (shld $1,%rax,%rdx) -126668 amd64->IR: 0x1C 0xFF (sbb $0xff,%al) -126696 support for CDROMREADRAW ioctl and CDROMREADTOCENTRY fix -126722 assertion: segment_is_sane at m_aspacemgr/aspacemgr.c:1624 -126938 bad checking for syscalls linkat, renameat, symlinkat - -(3.2.0RC1: 27 May 2006, vex r1626, valgrind r5947). -(3.2.0: 7 June 2006, vex r1628, valgrind r5957). - - -Release 3.1.1 (15 March 2006) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.1.1 fixes a bunch of bugs reported in 3.1.0. There is no new -functionality. The fixed bugs are: - -(note: "n-i-bz" means "not in bugzilla" -- this bug does not have - a bugzilla entry). - -n-i-bz ppc32: fsub 3,3,3 in dispatcher doesn't clear NaNs -n-i-bz ppc32: __NR_{set,get}priority -117332 x86: missing line info with icc 8.1 -117366 amd64: 0xDD 0x7C fnstsw -118274 == 117366 -117367 amd64: 0xD9 0xF4 fxtract -117369 amd64: __NR_getpriority (140) -117419 ppc32: lfsu f5, -4(r11) -117419 ppc32: fsqrt -117936 more stabs problems (segfaults while reading debug info) -119914 == 117936 -120345 == 117936 -118239 amd64: 0xF 0xAE 0x3F (clflush) -118939 vm86old system call -n-i-bz memcheck/tests/mempool reads freed memory -n-i-bz AshleyP's custom-allocator assertion -n-i-bz Dirk strict-aliasing stuff -n-i-bz More space for debugger cmd line (Dan Thaler) -n-i-bz Clarified leak checker output message -n-i-bz AshleyP's --gen-suppressions output fix -n-i-bz cg_annotate's --sort option broken -n-i-bz OSet 64-bit fastcmp bug -n-i-bz VG_(getgroups) fix (Shinichi Noda) -n-i-bz ppc32: allocate from callee-saved FP/VMX regs -n-i-bz misaligned path word-size bug in mc_main.c -119297 Incorrect error message for sse code -120410 x86: prefetchw (0xF 0xD 0x48 0x4) -120728 TIOCSERGETLSR, TIOCGICOUNT, HDIO_GET_DMA ioctls -120658 Build fixes for gcc 2.96 -120734 x86: Support for changing EIP in signal handler -n-i-bz memcheck/tests/zeropage de-looping fix -n-i-bz x86: fxtract doesn't work reliably -121662 x86: lock xadd (0xF0 0xF 0xC0 0x2) -121893 calloc does not always return zeroed memory -121901 no support for syscall tkill -n-i-bz Suppression update for Debian unstable -122067 amd64: fcmovnu (0xDB 0xD9) -n-i-bz ppc32: broken signal handling in cpu feature detection -n-i-bz ppc32: rounding mode problems (improved, partial fix only) -119482 ppc32: mtfsb1 -n-i-bz ppc32: mtocrf/mfocrf - -(3.1.1: 15 March 2006, vex r1597, valgrind r5771). - - -Release 3.1.0 (25 November 2005) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.1.0 is a feature release with a number of significant improvements: -AMD64 support is much improved, PPC32 support is good enough to be -usable, and the handling of memory management and address space is -much more robust. In detail: - -- AMD64 support is much improved. The 64-bit vs. 32-bit issues in - 3.0.X have been resolved, and it should "just work" now in all - cases. On AMD64 machines both 64-bit and 32-bit versions of - Valgrind are built. The right version will be invoked - automatically, even when using --trace-children and mixing execution - between 64-bit and 32-bit executables. Also, many more instructions - are supported. - -- PPC32 support is now good enough to be usable. It should work with - all tools, but please let us know if you have problems. Three - classes of CPUs are supported: integer only (no FP, no Altivec), - which covers embedded PPC uses, integer and FP but no Altivec - (G3-ish), and CPUs capable of Altivec too (G4, G5). - -- Valgrind's address space management has been overhauled. As a - result, Valgrind should be much more robust with programs that use - large amounts of memory. There should be many fewer "memory - exhausted" messages, and debug symbols should be read correctly on - large (eg. 300MB+) executables. On 32-bit machines the full address - space available to user programs (usually 3GB or 4GB) can be fully - utilised. On 64-bit machines up to 32GB of space is usable; when - using Memcheck that means your program can use up to about 14GB. - - A side effect of this change is that Valgrind is no longer protected - against wild writes by the client. This feature was nice but relied - on the x86 segment registers and so wasn't portable. - -- Most users should not notice, but as part of the address space - manager change, the way Valgrind is built has been changed. Each - tool is now built as a statically linked stand-alone executable, - rather than as a shared object that is dynamically linked with the - core. The "valgrind" program invokes the appropriate tool depending - on the --tool option. This slightly increases the amount of disk - space used by Valgrind, but it greatly simplified many things and - removed Valgrind's dependence on glibc. - -Please note that Addrcheck and Helgrind are still not working. Work -is underway to reinstate them (or equivalents). We apologise for the -inconvenience. - -Other user-visible changes: - -- The --weird-hacks option has been renamed --sim-hints. - -- The --time-stamp option no longer gives an absolute date and time. - It now prints the time elapsed since the program began. - -- It should build with gcc-2.96. - -- Valgrind can now run itself (see README_DEVELOPERS for how). - This is not much use to you, but it means the developers can now - profile Valgrind using Cachegrind. As a result a couple of - performance bad cases have been fixed. - -- The XML output format has changed slightly. See - docs/internals/xml-output.txt. - -- Core dumping has been reinstated (it was disabled in 3.0.0 and 3.0.1). - If your program crashes while running under Valgrind, a core file with - the name "vgcore." will be created (if your settings allow core - file creation). Note that the floating point information is not all - there. If Valgrind itself crashes, the OS will create a normal core - file. - -The following are some user-visible changes that occurred in earlier -versions that may not have been announced, or were announced but not -widely noticed. So we're mentioning them now. - -- The --tool flag is optional once again; if you omit it, Memcheck - is run by default. - -- The --num-callers flag now has a default value of 12. It was - previously 4. - -- The --xml=yes flag causes Valgrind's output to be produced in XML - format. This is designed to make it easy for other programs to - consume Valgrind's output. The format is described in the file - docs/internals/xml-format.txt. - -- The --gen-suppressions flag supports an "all" value that causes every - suppression to be printed without asking. - -- The --log-file option no longer puts "pid" in the filename, eg. the - old name "foo.pid12345" is now "foo.12345". - -- There are several graphical front-ends for Valgrind, such as Valkyrie, - Alleyoop and Valgui. See http://www.valgrind.org/downloads/guis.html - for a list. - -BUGS FIXED: - -109861 amd64 hangs at startup -110301 ditto -111554 valgrind crashes with Cannot allocate memory -111809 Memcheck tool doesn't start java -111901 cross-platform run of cachegrind fails on opteron -113468 (vgPlain_mprotect_range): Assertion 'r != -1' failed. - 92071 Reading debugging info uses too much memory -109744 memcheck loses track of mmap from direct ld-linux.so.2 -110183 tail of page with _end - 82301 FV memory layout too rigid - 98278 Infinite recursion possible when allocating memory -108994 Valgrind runs out of memory due to 133x overhead -115643 valgrind cannot allocate memory -105974 vg_hashtable.c static hash table -109323 ppc32: dispatch.S uses Altivec insn, which doesn't work on POWER. -109345 ptrace_setregs not yet implemented for ppc -110831 Would like to be able to run against both 32 and 64 bit - binaries on AMD64 -110829 == 110831 -111781 compile of valgrind-3.0.0 fails on my linux (gcc 2.X prob) -112670 Cachegrind: cg_main.c:486 (handleOneStatement ... -112941 vex x86: 0xD9 0xF4 (fxtract) -110201 == 112941 -113015 vex amd64->IR: 0xE3 0x14 0x48 0x83 (jrcxz) -113126 Crash with binaries built with -gstabs+/-ggdb -104065 == 113126 -115741 == 113126 -113403 Partial SSE3 support on x86 -113541 vex: Grp5(x86) (alt encoding inc/dec) case 1 -113642 valgrind crashes when trying to read debug information -113810 vex x86->IR: 66 0F F6 (66 + PSADBW == SSE PSADBW) -113796 read() and write() do not work if buffer is in shared memory -113851 vex x86->IR: (pmaddwd): 0x66 0xF 0xF5 0xC7 -114366 vex amd64 cannnot handle __asm__( "fninit" ) -114412 vex amd64->IR: 0xF 0xAD 0xC2 0xD3 (128-bit shift, shrdq?) -114455 vex amd64->IR: 0xF 0xAC 0xD0 0x1 (also shrdq) -115590: amd64->IR: 0x67 0xE3 0x9 0xEB (address size override) -115953 valgrind svn r5042 does not build with parallel make (-j3) -116057 maximum instruction size - VG_MAX_INSTR_SZB too small? -116483 shmat failes with invalid argument -102202 valgrind crashes when realloc'ing until out of memory -109487 == 102202 -110536 == 102202 -112687 == 102202 -111724 vex amd64->IR: 0x41 0xF 0xAB (more BT{,S,R,C} fun n games) -111748 vex amd64->IR: 0xDD 0xE2 (fucom) -111785 make fails if CC contains spaces -111829 vex x86->IR: sbb AL, Ib -111851 vex x86->IR: 0x9F 0x89 (lahf/sahf) -112031 iopl on AMD64 and README_MISSING_SYSCALL_OR_IOCTL update -112152 code generation for Xin_MFence on x86 with SSE0 subarch -112167 == 112152 -112789 == 112152 -112199 naked ar tool is used in vex makefile -112501 vex x86->IR: movq (0xF 0x7F 0xC1 0xF) (mmx MOVQ) -113583 == 112501 -112538 memalign crash -113190 Broken links in docs/html/ -113230 Valgrind sys_pipe on x86-64 wrongly thinks file descriptors - should be 64bit -113996 vex amd64->IR: fucomp (0xDD 0xE9) -114196 vex x86->IR: out %eax,(%dx) (0xEF 0xC9 0xC3 0x90) -114289 Memcheck fails to intercept malloc when used in an uclibc environment -114756 mbind syscall support -114757 Valgrind dies with assertion: Assertion 'noLargerThan > 0' failed -114563 stack tracking module not informed when valgrind switches threads -114564 clone() and stacks -114565 == 114564 -115496 glibc crashes trying to use sysinfo page -116200 enable fsetxattr, fgetxattr, and fremovexattr for amd64 - -(3.1.0RC1: 20 November 2005, vex r1466, valgrind r5224). -(3.1.0: 26 November 2005, vex r1471, valgrind r5235). - - -Release 3.0.1 (29 August 2005) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.0.1 fixes a bunch of bugs reported in 3.0.0. There is no new -functionality. Some of the fixed bugs are critical, so if you -use/distribute 3.0.0, an upgrade to 3.0.1 is recommended. The fixed -bugs are: - -(note: "n-i-bz" means "not in bugzilla" -- this bug does not have - a bugzilla entry). - -109313 (== 110505) x86 cmpxchg8b -n-i-bz x86: track but ignore changes to %eflags.AC (alignment check) -110102 dis_op2_E_G(amd64) -110202 x86 sys_waitpid(#286) -110203 clock_getres(,0) -110208 execve fail wrong retval -110274 SSE1 now mandatory for x86 -110388 amd64 0xDD 0xD1 -110464 amd64 0xDC 0x1D FCOMP -110478 amd64 0xF 0xD PREFETCH -n-i-bz XML printing wrong -n-i-bz Dirk r4359 (amd64 syscalls from trunk) -110591 amd64 and x86: rdtsc not implemented properly -n-i-bz Nick r4384 (stub implementations of Addrcheck and Helgrind) -110652 AMD64 valgrind crashes on cwtd instruction -110653 AMD64 valgrind crashes on sarb $0x4,foo(%rip) instruction -110656 PATH=/usr/bin::/bin valgrind foobar stats ./fooba -110657 Small test fixes -110671 vex x86->IR: unhandled instruction bytes: 0xF3 0xC3 (rep ret) -n-i-bz Nick (Cachegrind should not assert when it encounters a client - request.) -110685 amd64->IR: unhandled instruction bytes: 0xE1 0x56 (loope Jb) -110830 configuring with --host fails to build 32 bit on 64 bit target -110875 Assertion when execve fails -n-i-bz Updates to Memcheck manual -n-i-bz Fixed broken malloc_usable_size() -110898 opteron instructions missing: btq btsq btrq bsfq -110954 x86->IR: unhandled instruction bytes: 0xE2 0xF6 (loop Jb) -n-i-bz Make suppressions work for "???" lines in stacktraces. -111006 bogus warnings from linuxthreads -111092 x86: dis_Grp2(Reg): unhandled case(x86) -111231 sctp_getladdrs() and sctp_getpaddrs() returns uninitialized - memory -111102 (comment #4) Fixed 64-bit unclean "silly arg" message -n-i-bz vex x86->IR: unhandled instruction bytes: 0x14 0x0 -n-i-bz minor umount/fcntl wrapper fixes -111090 Internal Error running Massif -101204 noisy warning -111513 Illegal opcode for SSE instruction (x86 movups) -111555 VEX/Makefile: CC is set to gcc -n-i-bz Fix XML bugs in FAQ - -(3.0.1: 29 August 05, - vex/branches/VEX_3_0_BRANCH r1367, - valgrind/branches/VALGRIND_3_0_BRANCH r4574). - - - -Release 3.0.0 (3 August 2005) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -3.0.0 is a major overhaul of Valgrind. The most significant user -visible change is that Valgrind now supports architectures other than -x86. The new architectures it supports are AMD64 and PPC32, and the -infrastructure is present for other architectures to be added later. - -AMD64 support works well, but has some shortcomings: - -- It generally won't be as solid as the x86 version. For example, - support for more obscure instructions and system calls may be missing. - We will fix these as they arise. - -- Address space may be limited; see the point about - position-independent executables below. - -- If Valgrind is built on an AMD64 machine, it will only run 64-bit - executables. If you want to run 32-bit x86 executables under Valgrind - on an AMD64, you will need to build Valgrind on an x86 machine and - copy it to the AMD64 machine. And it probably won't work if you do - something tricky like exec'ing a 32-bit program from a 64-bit program - while using --trace-children=yes. We hope to improve this situation - in the future. - -The PPC32 support is very basic. It may not work reliably even for -small programs, but it's a start. Many thanks to Paul Mackerras for -his great work that enabled this support. We are working to make -PPC32 usable as soon as possible. - -Other user-visible changes: - -- Valgrind is no longer built by default as a position-independent - executable (PIE), as this caused too many problems. - - Without PIE enabled, AMD64 programs will only be able to access 2GB of - address space. We will fix this eventually, but not for the moment. - - Use --enable-pie at configure-time to turn this on. - -- Support for programs that use stack-switching has been improved. Use - the --max-stackframe flag for simple cases, and the - VALGRIND_STACK_REGISTER, VALGRIND_STACK_DEREGISTER and - VALGRIND_STACK_CHANGE client requests for trickier cases. - -- Support for programs that use self-modifying code has been improved, - in particular programs that put temporary code fragments on the stack. - This helps for C programs compiled with GCC that use nested functions, - and also Ada programs. This is controlled with the --smc-check - flag, although the default setting should work in most cases. - -- Output can now be printed in XML format. This should make it easier - for tools such as GUI front-ends and automated error-processing - schemes to use Valgrind output as input. The --xml flag controls this. - As part of this change, ELF directory information is read from executables, - so absolute source file paths are available if needed. - -- Programs that allocate many heap blocks may run faster, due to - improvements in certain data structures. - -- Addrcheck is currently not working. We hope to get it working again - soon. Helgrind is still not working, as was the case for the 2.4.0 - release. - -- The JITter has been completely rewritten, and is now in a separate - library, called Vex. This enabled a lot of the user-visible changes, - such as new architecture support. The new JIT unfortunately translates - more slowly than the old one, so programs may take longer to start. - We believe the code quality is produces is about the same, so once - started, programs should run at about the same speed. Feedback about - this would be useful. - - On the plus side, Vex and hence Memcheck tracks value flow properly - through floating point and vector registers, something the 2.X line - could not do. That means that Memcheck is much more likely to be - usably accurate on vectorised code. - -- There is a subtle change to the way exiting of threaded programs - is handled. In 3.0, Valgrind's final diagnostic output (leak check, - etc) is not printed until the last thread exits. If the last thread - to exit was not the original thread which started the program, any - other process wait()-ing on this one to exit may conclude it has - finished before the diagnostic output is printed. This may not be - what you expect. 2.X had a different scheme which avoided this - problem, but caused deadlocks under obscure circumstances, so we - are trying something different for 3.0. - -- Small changes in control log file naming which make it easier to - use valgrind for debugging MPI-based programs. The relevant - new flags are --log-file-exactly= and --log-file-qualifier=. - -- As part of adding AMD64 support, DWARF2 CFI-based stack unwinding - support was added. In principle this means Valgrind can produce - meaningful backtraces on x86 code compiled with -fomit-frame-pointer - providing you also compile your code with -fasynchronous-unwind-tables. - -- The documentation build system has been completely redone. - The documentation masters are now in XML format, and from that - HTML, PostScript and PDF documentation is generated. As a result - the manual is now available in book form. Note that the - documentation in the source tarballs is pre-built, so you don't need - any XML processing tools to build Valgrind from a tarball. - -Changes that are not user-visible: - -- The code has been massively overhauled in order to modularise it. - As a result we hope it is easier to navigate and understand. - -- Lots of code has been rewritten. - -BUGS FIXED: - -110046 sz == 4 assertion failed -109810 vex amd64->IR: unhandled instruction bytes: 0xA3 0x4C 0x70 0xD7 -109802 Add a plausible_stack_size command-line parameter ? -109783 unhandled ioctl TIOCMGET (running hw detection tool discover) -109780 unhandled ioctl BLKSSZGET (running fdisk -l /dev/hda) -109718 vex x86->IR: unhandled instruction: ffreep -109429 AMD64 unhandled syscall: 127 (sigpending) -109401 false positive uninit in strchr from ld-linux.so.2 -109385 "stabs" parse failure -109378 amd64: unhandled instruction REP NOP -109376 amd64: unhandled instruction LOOP Jb -109363 AMD64 unhandled instruction bytes -109362 AMD64 unhandled syscall: 24 (sched_yield) -109358 fork() won't work with valgrind-3.0 SVN -109332 amd64 unhandled instruction: ADC Ev, Gv -109314 Bogus memcheck report on amd64 -108883 Crash; vg_memory.c:905 (vgPlain_init_shadow_range): - Assertion `vgPlain_defined_init_shadow_page()' failed. -108349 mincore syscall parameter checked incorrectly -108059 build infrastructure: small update -107524 epoll_ctl event parameter checked on EPOLL_CTL_DEL -107123 Vex dies with unhandled instructions: 0xD9 0x31 0xF 0xAE -106841 auxmap & openGL problems -106713 SDL_Init causes valgrind to exit -106352 setcontext and makecontext not handled correctly -106293 addresses beyond initial client stack allocation - not checked in VALGRIND_DO_LEAK_CHECK -106283 PIE client programs are loaded at address 0 -105831 Assertion `vgPlain_defined_init_shadow_page()' failed. -105039 long run-times probably due to memory manager -104797 valgrind needs to be aware of BLKGETSIZE64 -103594 unhandled instruction: FICOM -103320 Valgrind 2.4.0 fails to compile with gcc 3.4.3 and -O0 -103168 potentially memory leak in coregrind/ume.c -102039 bad permissions for mapped region at address 0xB7C73680 -101881 weird assertion problem -101543 Support fadvise64 syscalls -75247 x86_64/amd64 support (the biggest "bug" we have ever fixed) - -(3.0RC1: 27 July 05, vex r1303, valgrind r4283). -(3.0.0: 3 August 05, vex r1313, valgrind r4316). - - - -Stable release 2.4.1 (1 August 2005) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -(The notes for this release have been lost. Sorry! It would have -contained various bug fixes but no new features.) - - - -Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.4.0 brings many significant changes and bug fixes. The most -significant user-visible change is that we no longer supply our own -pthread implementation. Instead, Valgrind is finally capable of -running the native thread library, either LinuxThreads or NPTL. - -This means our libpthread has gone, along with the bugs associated -with it. Valgrind now supports the kernel's threading syscalls, and -lets you use your standard system libpthread. As a result: - -* There are many fewer system dependencies and strange library-related - bugs. There is a small performance improvement, and a large - stability improvement. - -* On the downside, Valgrind can no longer report misuses of the POSIX - PThreads API. It also means that Helgrind currently does not work. - We hope to fix these problems in a future release. - -Note that running the native thread libraries does not mean Valgrind -is able to provide genuine concurrent execution on SMPs. We still -impose the restriction that only one thread is running at any given -time. - -There are many other significant changes too: - -* Memcheck is (once again) the default tool. - -* The default stack backtrace is now 12 call frames, rather than 4. - -* Suppressions can have up to 25 call frame matches, rather than 4. - -* Memcheck and Addrcheck use less memory. Under some circumstances, - they no longer allocate shadow memory if there are large regions of - memory with the same A/V states - such as an mmaped file. - -* The memory-leak detector in Memcheck and Addrcheck has been - improved. It now reports more types of memory leak, including - leaked cycles. When reporting leaked memory, it can distinguish - between directly leaked memory (memory with no references), and - indirectly leaked memory (memory only referred to by other leaked - memory). - -* Memcheck's confusion over the effect of mprotect() has been fixed: - previously mprotect could erroneously mark undefined data as - defined. - -* Signal handling is much improved and should be very close to what - you get when running natively. - - One result of this is that Valgrind observes changes to sigcontexts - passed to signal handlers. Such modifications will take effect when - the signal returns. You will need to run with --single-step=yes to - make this useful. - -* Valgrind is built in Position Independent Executable (PIE) format if - your toolchain supports it. This allows it to take advantage of all - the available address space on systems with 4Gbyte user address - spaces. - -* Valgrind can now run itself (requires PIE support). - -* Syscall arguments are now checked for validity. Previously all - memory used by syscalls was checked, but now the actual values - passed are also checked. - -* Syscall wrappers are more robust against bad addresses being passed - to syscalls: they will fail with EFAULT rather than killing Valgrind - with SIGSEGV. - -* Because clone() is directly supported, some non-pthread uses of it - will work. Partial sharing (where some resources are shared, and - some are not) is not supported. - -* open() and readlink() on /proc/self/exe are supported. - -BUGS FIXED: - -88520 pipe+fork+dup2 kills the main program -88604 Valgrind Aborts when using $VALGRIND_OPTS and user progra... -88614 valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt... -88703 Stabs parser fails to handle ";" -88886 ioctl wrappers for TIOCMBIS and TIOCMBIC -89032 valgrind pthread_cond_timedwait fails -89106 the 'impossible' happened -89139 Missing sched_setaffinity & sched_getaffinity -89198 valgrind lacks support for SIOCSPGRP and SIOCGPGRP -89263 Missing ioctl translations for scsi-generic and CD playing -89440 tests/deadlock.c line endings -89481 `impossible' happened: EXEC FAILED -89663 valgrind 2.2.0 crash on Redhat 7.2 -89792 Report pthread_mutex_lock() deadlocks instead of returnin... -90111 statvfs64 gives invalid error/warning -90128 crash+memory fault with stabs generated by gnat for a run... -90778 VALGRIND_CHECK_DEFINED() not as documented in memcheck.h -90834 cachegrind crashes at end of program without reporting re... -91028 valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio... -91162 valgrind crash while debugging drivel 1.2.1 -91199 Unimplemented function -91325 Signal routing does not propagate the siginfo structure -91599 Assertion `cv == ((void *)0)' -91604 rw_lookup clears orig and sends the NULL value to rw_new -91821 Small problems building valgrind with $top_builddir ne $t... -91844 signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec... -92264 UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared -92331 per-target flags necessitate AM_PROG_CC_C_O -92420 valgrind doesn't compile with linux 2.6.8.1/9 -92513 Valgrind 2.2.0 generates some warning messages -92528 vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed. -93096 unhandled ioctl 0x4B3A and 0x5601 -93117 Tool and core interface versions do not match -93128 Can't run valgrind --tool=memcheck because of unimplement... -93174 Valgrind can crash if passed bad args to certain syscalls -93309 Stack frame in new thread is badly aligned -93328 Wrong types used with sys_sigprocmask() -93763 /usr/include/asm/msr.h is missing -93776 valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser... -93810 fcntl() argument checking a bit too strict -94378 Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed. -94429 valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3 -94645 Impossible happened: PINSRW mem -94953 valgrind: the `impossible' happened: SIGSEGV -95667 Valgrind does not work with any KDE app -96243 Assertion 'res==0' failed -96252 stage2 loader of valgrind fails to allocate memory -96520 All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ... -96660 ioctl CDROMREADTOCENTRY causes bogus warnings -96747 After looping in a segfault handler, the impossible happens -96923 Zero sized arrays crash valgrind trace back with SIGFPE -96948 valgrind stops with assertion failure regarding mmap2 -96966 valgrind fails when application opens more than 16 sockets -97398 valgrind: vg_libpthread.c:2667 Assertion failed -97407 valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `... -97427 "Warning: invalid file descriptor -1 in syscall close()" ... -97785 missing backtrace -97792 build in obj dir fails - autoconf / makefile cleanup -97880 pthread_mutex_lock fails from shared library (special ker... -97975 program aborts without ang VG messages -98129 Failed when open and close file 230000 times using stdio -98175 Crashes when using valgrind-2.2.0 with a program using al... -98288 Massif broken -98303 UNIMPLEMENTED FUNCTION pthread_condattr_setpshared -98630 failed--compilation missing warnings.pm, fails to make he... -98756 Cannot valgrind signal-heavy kdrive X server -98966 valgrinding the JVM fails with a sanity check assertion -99035 Valgrind crashes while profiling -99142 loops with message "Signal 11 being dropped from thread 0... -99195 threaded apps crash on thread start (using QThread::start... -99348 Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off... -99568 False negative due to mishandling of mprotect -99738 valgrind memcheck crashes on program that uses sigitimer -99923 0-sized allocations are reported as leaks -99949 program seg faults after exit() -100036 "newSuperblock's request for 1048576 bytes failed" -100116 valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ... -100486 memcheck reports "valgrind: the `impossible' happened: V... -100833 second call to "mremap" fails with EINVAL -101156 (vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1... -101173 Assertion `recDepth >= 0 && recDepth < 500' failed -101291 creating threads in a forked process fails -101313 valgrind causes different behavior when resizing a window... -101423 segfault for c++ array of floats -101562 valgrind massif dies on SIGINT even with signal handler r... - - -Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.2.0 brings nine months worth of improvements and bug fixes. We -believe it to be a worthy successor to 2.0.0. There are literally -hundreds of bug fixes and minor improvements. There are also some -fairly major user-visible changes: - -* A complete overhaul of handling of system calls and signals, and - their interaction with threads. In general, the accuracy of the - system call, thread and signal simulations is much improved: - - - Blocking system calls behave exactly as they do when running - natively (not on valgrind). That is, if a syscall blocks only the - calling thread when running natively, than it behaves the same on - valgrind. No more mysterious hangs because V doesn't know that some - syscall or other, should block only the calling thread. - - - Interrupted syscalls should now give more faithful results. - - - Signal contexts in signal handlers are supported. - -* Improvements to NPTL support to the extent that V now works - properly on NPTL-only setups. - -* Greater isolation between Valgrind and the program being run, so - the program is less likely to inadvertently kill Valgrind by - doing wild writes. - -* Massif: a new space profiling tool. Try it! It's cool, and it'll - tell you in detail where and when your C/C++ code is allocating heap. - Draws pretty .ps pictures of memory use against time. A potentially - powerful tool for making sense of your program's space use. - -* File descriptor leakage checks. When enabled, Valgrind will print out - a list of open file descriptors on exit. - -* Improved SSE2/SSE3 support. - -* Time-stamped output; use --time-stamp=yes - - - -Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.1.2 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.2.0 is not much different from 2.1.2, released seven weeks ago. -A number of bugs have been fixed, most notably #85658, which gave -problems for quite a few people. There have been many internal -cleanups, but those are not user visible. - -The following bugs have been fixed since 2.1.2: -85658 Assert in coregrind/vg_libpthread.c:2326 (open64) != - (void*)0 failed - This bug was reported multiple times, and so the following - duplicates of it are also fixed: 87620, 85796, 85935, 86065, - 86919, 86988, 87917, 88156 +This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, +PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, +MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android, +X86/Solaris, AMD64/Solaris, AMD64/MacOSX 10.12, X86/FreeBSD and +AMD64/FreeBSD. There is also preliminary support for X86/macOS 10.13, +AMD64/macOS 10.13 and nanoMIPS/Linux. -80716 Semaphore mapping bug caused by unmap (sem_destroy) - (Was fixed prior to 2.1.2) +* ==================== CORE CHANGES =================== -86987 semctl and shmctl syscalls family is not handled properly +* The libiberty demangler has been updated, which brings support for + Rust v0 name demangling. [Update: alas, due to a bug, this support + isn't working in 3.18.0.] -86696 valgrind 2.1.2 + RH AS2.1 + librt +* __libc_freeres isn't called anymore after the program recieves a + fatal signal. Causing some internal glibc resources to hang around, + but preventing any crashes after the program has ended. -86730 valgrind locks up at end of run with assertion failure - in __pthread_unwind +* The DWARF reader is now very much faster at startup when just + --read-inline-info=yes (the default in most cases) is given. -86641 memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1 - (also fixes 74298, a duplicate of this) +* glibc 2.34, which moved various functions from libpthread.so into + libc.so, is now supported. -85947 MMX/SSE unhandled instruction 'sfence' +* ================== PLATFORM CHANGES ================= -84978 Wrong error "Conditional jump or move depends on - uninitialised value" resulting from "sbbl %reg, %reg" +* arm64: -86254 ssort() fails when signed int return type from comparison is - too small to handle result of unsigned int subtraction + - v8.2 scalar and vector FABD, FACGE, FACGT and FADD. + - v8.2 FP compare & conditional compare instructions. + - Zero variants of v8.2 FP compare instructions. -87089 memalign( 4, xxx) makes valgrind assert +* s390: -86407 Add support for low-level parallel port driver ioctls. + - Support the miscellaneous-instruction-extensions facility 3 and + the vector-enhancements facility 2. This enables programs + compiled with "-march=arch13" or "-march=z15" to be executed + under Valgrind. -70587 Add timestamps to Valgrind output? (wishlist) +* ppc64: -84937 vg_libpthread.c:2505 (se_remap): Assertion `res == 0' - (fixed prior to 2.1.2) + - ISA 3.1 support is now complete + - ISA 3.0 support for the darn instruction added. + - ISA 3.0 support for the vector system call instruction scv added. + - ISA 3.0 support for the copy, paste and cpabort instructions added. + +* Support for X86/FreeBSD and AMD64/FreeBSD has been added. + +* ==================== OTHER CHANGES ==================== + +* Memcheck on amd64: minor fixes to remove some false positive + undef-value errors + +* ==================== FIXED BUGS ==================== + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather +than mailing the developers (or mailing lists) directly -- bugs that +are not entered into bugzilla tend to get forgotten about or ignored. + +208531 [PATCH]: FreeBSD support for valgrind +368960 WARNING: unhandled amd64-linux syscall: 163 (acct) +407589 [Linux] Add support for C11 aligned_alloc() and GNU reallocarray() +423963 Error in child thread when CLONE_PIDFD is used +426148 crash with "impossible happened" when running BPF CO-RE programs +429375 PPC ISA 3.1 support is missing, part 9 +431157 PPC_FEATURE2_SCV needs to be masked in AT_HWCAP2 +431306 Update demangler to support Rust v0 name mangling +432387 s390x: z15 instructions support +433437 FreeBSD support, part 1 +433438 FreeBSD support, part 2 +433439 FreeBSD support, part 3 +433469 FreeBSD support, part 4 +433473 FreeBSD support, part 5 +433477 FreeBSD support, part 6 +433479 FreeBSD support, part 7 +433504 FreeBSD support, part 8 +433506 FreeBSD support, part 9 +433507 FreeBSD support, part 10 +433508 FreeBSD support, part 11 +433510 FreeBSD support, part 12 +433801 PPC ISA 3.1 support is missing, part 10 (ISA 3.1 support complete) +433863 s390x: memcheck/tests/s390x/{cds,cs,csg} failures +434296 s390x: False-positive memcheck diagnostics from vector string + instructions +434840 PPC64 darn instruction not supported +435665 PPC ISA 3.0 copy, paste, cpabort instructions are not supported +435908 valgrind tries to fetch from deubginfod for files which already + have debug information +438871 unhandled instruction bytes: 0xF3 0x49 0xF 0x6F 0x9C 0x24 0x60 0x2 +439046 valgrind is unusably large when linked with lld +439090 Implement close_range(2) +439326 Valgrind 3.17.0 won't compile with Intel 2021 oneAPI compilers +439590 glibc-2.34 breaks suppressions against obj:*/lib*/libc-2.*so* +440670 unhandled ppc64le-linux syscall: 252 statfs64 and 253 fstatfs64 +440906 Fix impossible constraint issue in P10 testcase. +441512 Remove a unneeded / unnecessary prefix check. +441534 Update the expected output for test_isa_3_1_VRT. +442061 very slow execution under Fedora 34 (readdwarf3) +443031 Gcc -many change requires explicit .machine directives +443033 Add support for the ISA 3.0 mcrxrx instruction +443034 Sraw, srawi, srad, sradi, mfs +443178 Powerpc, test jm-mfspr expected output needs to be updated. +443179 Need new test for the lxvx and stxvx instructions on ISA 2.07 and + ISA 3.0 systems. +443180 The subnormal test and the ISA 3.0 test generate compiler warnings +443314 In the latest GIT version, Valgrind with "--trace-flags" crashes + at "al" register +443605 Don't call final_tidyup (__libc_freeres) on FatalSignal + +To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +(3.18.0.RC1: 12 Oct 2021) +(3.18.0: 15 Oct 2021) + + + +Release 3.17.0 (19 Mar 2021) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -86317 cannot load libSDL-1.2.so.0 using valgrind +3.17.0 fixes a number of bugs and adds some functional changes: support for +GCC 11, Clang 11, DWARF5 debuginfo, the 'debuginfod' debuginfo server, and +some new instructions for Arm64, S390 and POWER. There are also some tool +updates. -86989 memcpy from mac_replace_strmem.c complains about - uninitialized pointers passed when length to copy is zero +This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, +PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, +MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android, +X86/Solaris, AMD64/Solaris and AMD64/MacOSX 10.12. There is also preliminary +support for X86/macOS 10.13, AMD64/macOS 10.13 and nanoMIPS/Linux. + +* ==================== CORE CHANGES =================== + +* DWARF version 5 support. Valgrind can now read DWARF version 5 debuginfo as + produced by GCC 11. + +* Valgrind now supports debuginfod, an HTTP server for distributing ELF/DWARF + debugging information. When a debuginfo file cannot be found locally, + Valgrind is able to query debuginfod servers for the file using its + build-id. See the user manual for more information about debuginfod support. + +* ================== PLATFORM CHANGES ================= + +* arm64: + + - Inaccuracies resulting from double-rounding in the simulation of + floating-point multiply-add/subtract instructions have been fixed. These + should now behave exactly as the hardware does. + + - Partial support for the ARM v8.2 instruction set. v8.2 support work is + ongoing. Support for the half-word variants of at least the following + instructions has been added: + FABS , + FABS ., . + FNEG , + FNEG ., . + FSQRT , + FSQRT ., . + FADDP + +* s390: + + - Implement the new instructions/features that were added to z/Architecture + with the vector-enhancements facility 1. Also cover the instructions from + the vector-packed-decimal facility that are defined outside the chapter + "Vector Decimal Instructions", but not the ones from that chapter itself. + + For a detailed list of newly supported instructions see the updates to + `docs/internals/s390-opcodes.csv'. + + Since the miscellaneous instruction extensions facility 2 was already + added in Valgrind 3.16.0, this completes the support necessary to run + general programs built with `--march=z14' under Valgrind. The + vector-packed-decimal facility is currently not exploited by the standard + toolchain and libraries. + +* ppc64: + + - Various bug fixes. Fix for the sync field to limit setting just two of + the two bits in the L-field. Fix the write size for the stxsibx and + stxsihx instructions. Fix the modsw and modsd instructions. + + - Partial support for ISA 3.1 has been added. Support for the VSX PCV mask + instructions, bfloat16 GER instructions, and bfloat16 to/from float 32-bit + conversion instructions are still missing. + +* ==================== TOOL CHANGES ==================== + +* General tool changes + + - All the tools and their vgpreload libraries are now installed under + libexec because they cannot be executed directly and should be run through + the valgrind executable. This should be an internal, not user visible, + change, but might impact valgrind packagers. + + - The --track-fds option now respects -q, --quiet and won't output anything + if no file descriptors are leaked. It also won't report the standard stdin + (0), stdout (1) or stderr (2) descriptors as being leaked with + --trace-fds=yes anymore. To track whether the standard file descriptors + are still open at the end of the program run use --trace-fds=all. + +* DHAT: + + - DHAT has been extended, with two new modes of operation. The new + --mode=copy flag triggers copy profiling, which records calls to memcpy, + strcpy, and similar functions. The new --mode=ad-hoc flag triggers ad hoc + profiling, which records calls to the DHAT_AD_HOC_EVENT client request in + the new dhat/dhat.h file. This is useful for learning more about hot code + paths. See the user manual for more information about the new modes. + + - Because of these changes, DHAT's file format has changed. DHAT output + files produced with earlier versions of DHAT will not work with this + version of DHAT's viewer, and DHAT output files produced with this version + of DHAT will not work with earlier versions of DHAT's viewer. + +* ==================== FIXED BUGS ==================== + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather +than mailing the developers (or mailing lists) directly -- bugs that +are not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +140178 open("/proc/self/exe", ...); doesn't quite work +140939 --track-fds reports leakage of stdout/in/err and doesn't respect -q +217695 malloc/calloc/realloc/memalign failure doesn't set errno to ENOMEM +338633 gdbserver_tests/nlcontrolc.vgtest hangs on arm64 +345077 linux syscall execveat support (linux 3.19) +361770 Missing F_ADD_SEALS +369029 handle linux syscalls sched_getattr and sched_setattr +384729 __libc_freeres inhibits cross-platform valgrind +388787 Support for C++17 new/delete +391853 Makefile.all.am:L247 and @SOLARIS_UNDEF_LARGESOURCE@ being empty +396656 Warnings while reading debug info +397605 ioctl FICLONE mishandled +401416 Compile failure with openmpi 4.0 +408663 Suppression file for musl libc +404076 s390x: z14 vector instructions not implemented +410743 shmat() calls for 32-bit programs fail when running in 64-bit valgrind + (actually affected all x86 and nanomips regardless of host bitness) +413547 regression test does not check for Arm 64 features. +414268 Enable AArch64 feature detection and decoding for v8.x instructions +415293 Incorrect call-graph tracking due to new _dl_runtime_resolve_xsave* +422174 unhandled instruction bytes: 0x48 0xE9 (REX prefixed JMP instruction) +422261 platform selection fails for unqualified client name +422623 epoll_ctl warns for uninitialized padding on non-amd64 64bit arches +423021 PPC: Add missing ISA 3.0 documentation link and HWCAPS test. +423195 PPC ISA 3.1 support is missing, part 1 +423361 Adds io_uring support on arm64/aarch64 (and all other arches) +424012 crash with readv/writev having invalid but not NULL arg2 iovec +424298 amd64: Implement RDSEED +425232 PPC ISA 3.1 support is missing, part 2 +425820 Failure to recognize vpcmpeqq as a dependency breaking idiom. +426014 arm64: implement fmadd and fmsub as Iop_MAdd/Sub +426123 PPC ISA 3.1 support is missing, part 3 +426144 Fix "condition variable has not been initialized" on Fedora 33. +427400 PPC ISA 3.1 support is missing, part 4 +427401 PPC ISA 3.1 support is missing, part 5 +427404 PPC ISA 3.1 support is missing, part 6 +427870 lmw, lswi and related PowerPC insns aren't allowed on ppc64le +427787 Support new faccessat2 linux syscall (439) +427969 debuginfo section duplicates a section in the main ELF file +428035 drd: Unbreak the musl build +428648 s390_emit_load_mem panics due to 20-bit offset for vector load +428716 cppcheck detects potential leak in VEX/useful/smchash.c +428909 helgrind: need to intercept duplicate libc definitions for Fedora 33 +429352 PPC ISA 3.1 support is missing, part 7 +429354 PPC ISA 3.1 support is missing, part 8 +429692 unhandled ppc64le-linux syscall: 147 (getsid) +429864 s390x: C++ atomic test_and_set yields false-positive memcheck + diagnostics +429952 Errors when building regtest with clang +430354 ppc stxsibx and stxsihx instructions write too much data +430429 valgrind.h doesn't compile on s390x with clang +430485 expr_is_guardable doesn't handle Iex_Qop +431556 Complete arm64 FADDP v8.2 instruction support +432102 Add support for DWARF5 as produced by GCC11 +432161 Addition of arm64 v8.2 FADDP, FNEG and FSQRT +432381 drd: Process STACK_REGISTER client requests +432552 [AArch64] invalid error emitted for pre-decremented byte/hword addresses +432672 vg_regtest: test-specific environment variables not reset between tests +432809 VEX should support REX.W + POPF +432861 PPC modsw and modsd give incorrect results for 1 mod 12 +432870 gdbserver_tests:nlcontrolc hangs with newest glibc2.33 x86-64 +432215 Add debuginfod functionality +433323 Use pkglibexecdir as vglibdir +433500 DRD regtest faulures when libstdc++ and libgcc debuginfo are installed +433629 valgrind/README has type "abd" instead of "and" +433641 Rust std::sys::unix::fs::try_statx Syscall param fstatat(file_name) +433898 arm64: Handle sp, lr, fp as DwReg in CfiExpr +434193 GCC 9+ inlined strcmp causes "Conditional jump or move [..] value" report +n-i-bz helgrind: If hg_cli__realloc fails, return NULL. +n-i-bz arm64 front end: avoid Memcheck false positives relating to CPUID + +(3.17.0.RC1: 13 Mar 2021) +(3.17.0.RC2: 17 Mar 2021) +(3.17.0: 19 Mar 2021) + + + +Release 3.16.1 (22 June 2020) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -85811 gnu pascal symbol causes segmentation fault; ok in 2.0.0 +3.16.1 fixes two critical bugs discovered after 3.16.0 was frozen. It also +fixes character encoding problems in the documentation HTML. -79138 writing to sbrk()'d memory causes segfault +422677 PPC sync instruction L field should only be 2 bits in ISA 3.0 +422715 32-bit x86: vex: the `impossible' happened: expr_is_guardable: unhandled expr -77369 sched deadlock while signal received during pthread_join - and the joined thread exited +(3.16.1, 22 June 2020, 36d6727e1d768333a536f274491e5879cab2c2f7) -88115 In signal handler for SIGFPE, siginfo->si_addr is wrong - under Valgrind -78765 Massif crashes on app exit if FP exceptions are enabled -Additionally there are the following changes, which are not -connected to any bug report numbers, AFAICS: +Release 3.16.0 (27 May 2020) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -* Fix scary bug causing mis-identification of SSE stores vs - loads and so causing memcheck to sometimes give nonsense results - on SSE code. +3.16.0 is a feature release with many improvements and the usual collection of +bug fixes. -* Add support for the POSIX message queue system calls. +This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, +PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, +MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android, +X86/Solaris, AMD64/Solaris and AMD64/MacOSX 10.12. There is also preliminary +support for X86/macOS 10.13, AMD64/macOS 10.13 and nanoMIPS/Linux. -* Fix to allow 32-bit Valgrind to run on AMD64 boxes. Note: this does - NOT allow Valgrind to work with 64-bit executables - only with 32-bit - executables on an AMD64 box. +* ==================== CORE CHANGES =================== -* At configure time, only check whether linux/mii.h can be processed - so that we don't generate ugly warnings by trying to compile it. +* It is now possible to dynamically change the value of many command line + options while your program (or its children) are running under Valgrind. -* Add support for POSIX clocks and timers. + To see the list of dynamically changeable options, run + "valgrind --help-dyn-options". + You can change the options from the shell by using vgdb to launch + the monitor command "v.clo ...". + The same monitor command can be used from a gdb connected + to the valgrind gdbserver. + Your program can also change the dynamically changeable options using + the client request VALGRIND_CLO_CHANGE(option). + +* ================== PLATFORM CHANGES ================= + +* MIPS: preliminary support for nanoMIPS instruction set has been added. + +* ==================== TOOL CHANGES ==================== + +* DHAT: + + - The implicit memcpy done by each call to realloc now counts towards the + read and write counts of resized heap blocks, making those counts higher + and more accurate. + +* Cachegrind: + + - cg_annotate's --auto and --show-percs options now default to 'yes', because + they are usually wanted. + +* Callgrind: + + - callgrind_annotate's --auto and --show-percs options now default to 'yes', + because they are usually wanted. + + - The command option --collect-systime has been enhanced to specify + the unit used to record the elapsed time spent during system calls. + The command option now accepts the values no|yes|msec|usec|nsec, + where yes is a synonym of msec. When giving the value nsec, the + system cpu time of system calls is also recorded. + +* Memcheck: + + - Several memcheck options are now dynamically changeable. + Use valgrind --help-dyn-options to list them. + + - The release 3.15 introduced a backward incompatible change for + some suppression entries related to preadv and pwritev syscalls. + When reading a suppression entry using the unsupported 3.14 format, + valgrind will now produce a warning to say the suppression entry will not + work, and suggest the needed change. + + - Significantly fewer false positive errors on optimised code generated by + Clang and GCC. In particular, Memcheck now deals better with the + situation where the compiler will transform C-level "A && B" into "B && A" + under certain circumstances (in which the transformation is valid). + Handling of integer equality/non-equality checks on partially defined + values is also improved on some architectures. + +* exp-sgcheck: + + - The exprimental Stack and Global Array Checking tool has been removed. + It only ever worked on x86 and amd64, and even on those it had a + high false positive rate and was slow. An alternative for detecting + stack and global array overruns is using the AddressSanitizer (ASAN) + facility of the GCC and Clang compilers, which require you to rebuild + your code with -fsanitize=address. + +* ==================== OTHER CHANGES ==================== + +* New and modified GDB server monitor features: + + - Option -T tells vgdb to output a timestamp in the vgdb information messages. + + - The gdbserver monitor commands that require an address and an optional + length argument now accepts the alternate 'C like' syntax "address[length]". + For example, the memcheck command "monitor who_points_at 0x12345678 120" + can now also be given as "monitor who_points_at 0x12345678[120]". + +* ==================== FIXED BUGS ==================== + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather +than mailing the developers (or mailing lists) directly -- bugs that +are not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +343099 Linux setns syscall wrapper missing, unhandled syscall: 308 + == 368923 WARNING: unhandled arm64-linux syscall: 268 (setns) + == 369031 WARNING: unhandled amd64-linux syscall: 308 (setns) +385386 Assertion failed "szB >= CACHE_ENTRY_SIZE" at m_debuginfo/image.c:517 +400162 Patch: Guard against __GLIBC_PREREQ for musl libc +400593 In Coregrind, use statx for some internal syscalls if [f]stat[64] fail +400872 Add nanoMIPS support to Valgrind +403212 drd/tests/trylock hangs on FreeBSD +404406 s390x: z14 miscellaneous instructions not implemented +405201 Incorrect size of struct vki_siginfo on 64-bit Linux architectures +406561 mcinfcallWSRU gdbserver_test fails on ppc64 +406824 Unsupported baseline +407218 Add support for the copy_file_range syscall +407307 Intercept stpcpy also in ld.so for arm64 +407376 Update Xen support to 4.12 (4.13, actually) and add more coverage + == 390553 +407764 drd cond_post_wait gets wrong (?) condition on s390x z13 system +408009 Expose rdrand and f16c even on avx if host cpu supports them +408091 Missing pkey syscalls +408414 Add support for missing for preadv2 and pwritev2 syscalls +409141 Valgrind hangs when SIGKILLed +409206 Support for Linux PPS and PTP ioctls +409367 exit_group() after signal to thread waiting in futex() causes hangs +409429 amd64: recognize 'cmpeq' variants as a dependency breaking idiom +409780 References to non-existent configure.in +410556 Add support for BLKIO{MIN,OPT} and BLKALIGNOFF ioctls +410599 Non-deterministic behaviour of pth_self_kill_15_other test +410757 discrepancy for preadv2/pwritev2 syscalls across different versions +411134 Allow the user to change a set of command line options during execution +411451 amd64->IR of bt/btc/bts/btr with immediate clears zero flag +412344 Problem setting mips flags with specific paths +412408 unhandled arm-linux syscall: 124 - adjtime - on arm-linux +413119 Ioctl wrapper for DRM_IOCTL_I915_GEM_MMAP +413330 avx-1 test fails on AMD EPYC 7401P 24-Core Processor +413603 callgrind_annotate/cg_annotate truncate function names at '#' +414565 Specific use case bug found in SysRes VG_(do_sys_sigprocmask) +415136 ARMv8.1 Compare-and-Swap instructions are not supported +415757 vex x86->IR: 0x66 0xF 0xCE 0x4F (bswapw) +416239 valgrind crashes when handling clock_adjtime +416285 Use prlimit64 in VG_(getrlimit) and VG_(setrlimit) +416286 DRD reports "conflicting load" error on std::mutex::lock() +416301 s390x: "compare and signal" not supported +416387 finit_module and bpf syscalls are unhandled on arm64 +416464 Fix false reports for uninitialized memory for PR_CAPBSET_READ/DROP +416667 gcc10 ppc64le impossible constraint in 'asm' in test_isa. +416753 new 32bit time syscalls for 2038+ +417075 pwritev(vector[...]) suppression ignored + 417075 is not fixed, but incompatible supp entries are detected + and a warning is produced for these. +417187 [MIPS] Conditional branch problem since 'grail' changes +417238 Test memcheck/tests/vbit-test fails on mips64 BE +417266 Make memcheck/tests/linux/sigqueue usable with musl +417281 s390x: /bin/true segfaults with "grail" enabled +417427 commit to fix vki_siginfo_t definition created numerous regression + errors on ppc64 +417452 s390_insn_store_emit: dst->tag for HRcVec128 +417578 Add suppressions for glibc DTV leaks +417906 clone with CLONE_VFORK and no CLONE_VM fails +418004 Grail code additions break ppc64. +418435 s390x: spurious "Conditional jump or move depends on uninitialised [..]" +418997 s390x: Support Iex_ITE for float and vector types +419503 s390x: Avoid modifying registers returned from isel functions +421321 gcc10 arm64 build needs __getauxval for linking with libgcc +421570 std_mutex fails on Arm v8.1 h/w +434035 vgdb might crash if valgrind is killed +n-i-bz Fix minor one time leaks in dhat. +n-i-bz Add --run-cxx-freeres=no in outer args to avoid inner crashes. +n-i-bz Add support for the Linux io_uring system calls +n-i-bz sys_statx: don't complain if both |filename| and |buf| are NULL. +n-i-bz Fix non-glibc build of test suite with s390x_features +n-i-bz MinGW, include/valgrind.h: Fix detection of 64-bit mode +423195 PPC ISA 3.1 support is missing, part 1 + +(3.16.0.RC1: 18 May 2020, git 6052ee66a0cf5234e8e2a2b49a8760226bc13b92) +(3.16.0.RC2: 19 May 2020, git 940ec1ca69a09f7fdae3e800b7359f85c13c4b37) +(3.16.0: 27 May 2020, git bf5e647edb9e96cbd5c57cc944984402eeee296d) + + + +Release 3.15.0 (12 April 2019) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.15.0 is a feature release with many improvements and the usual collection of +bug fixes. -Developer (cvs head) release 2.1.2 (18 July 2004) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.1.2 contains four months worth of bug fixes and refinements. -Although officially a developer release, we believe it to be stable -enough for widespread day-to-day use. 2.1.2 is pretty good, so try it -first, although there is a chance it won't work. If so then try 2.0.0 -and tell us what went wrong." 2.1.2 fixes a lot of problems present -in 2.0.0 and is generally a much better product. +This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, +PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, +MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android, +X86/Solaris, AMD64/Solaris and AMD64/MacOSX 10.12. There is also preliminary +support for X86/macOS 10.13 and AMD64/macOS 10.13. -Relative to 2.1.1, a large number of minor problems with 2.1.1 have -been fixed, and so if you use 2.1.1 you should try 2.1.2. Users of -the last stable release, 2.0.0, might also want to try this release. +* ==================== CORE CHANGES =================== -The following bugs, and probably many more, have been fixed. These -are listed at http://bugs.kde.org. Reporting a bug for valgrind in -the http://bugs.kde.org is much more likely to get you a fix than -mailing developers directly, so please continue to keep sending bugs -there. +* The XTree Massif output format now makes use of the information obtained + when specifying --read-inline-info=yes. -76869 Crashes when running any tool under Fedora Core 2 test1 - This fixes the problem with returning from a signal handler - when VDSOs are turned off in FC2. +* amd64 (x86_64): the RDRAND and F16C insn set extensions are now supported. -69508 java 1.4.2 client fails with erroneous "stack size too small". - This fix makes more of the pthread stack attribute related - functions work properly. Java still doesn't work though. +* ==================== TOOL CHANGES ==================== -71906 malloc alignment should be 8, not 4 - All memory returned by malloc/new etc is now at least - 8-byte aligned. +* DHAT: -81970 vg_alloc_ThreadState: no free slots available - (closed because the workaround is simple: increase - VG_N_THREADS, rebuild and try again.) + - DHAT been thoroughly overhauled, improved, and given a GUI. As a result, + it has been promoted from an experimental tool to a regular tool. Run it + with --tool=dhat instead of --tool=exp-dhat. -78514 Conditional jump or move depends on uninitialized value(s) - (a slight mishanding of FP code in memcheck) + - DHAT now prints only minimal data when the program ends, instead writing + the bulk of the profiling data to a file. As a result, the --show-top-n + and --sort-by options have been removed. + + - Profile results can be viewed with the new viewer, dh_view.html. When + a run ends, a short message is printed, explaining how to view the result. + + - See the documentation for more details. + +* Cachegrind: + + - cg_annotate has a new option, --show-percs, which prints percentages next + to all event counts. + +* Callgrind: + + - callgrind_annotate has a new option, --show-percs, which prints percentages + next to all event counts. + + - callgrind_annotate now inserts commas in call counts, and + sort the caller/callee lists in the call tree. + +* Massif: + + - The default value for --read-inline-info is now "yes" on + Linux/Android/Solaris. It is still "no" on other OS. + +* Memcheck: + + - The option --xtree-leak=yes (to output leak result in xtree format) + automatically activates the option --show-leak-kinds=all, as xtree + visualisation tools such as kcachegrind can in any case select what kind + of leak to visualise. + + - There has been further work to avoid false positives. In particular, + integer equality on partially defined inputs (C == and !=) is now handled + better. + +* ==================== OTHER CHANGES ==================== + +* The new option --show-error-list=no|yes displays, at the end of the run, the + list of detected errors and the used suppressions. Prior to this change, + showing this information could only be done by specifying "-v -v", but that + also produced a lot of other possibly-non-useful messages. The option -s is + equivalent to --show-error-list=yes. + +* ==================== FIXED BUGS ==================== + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather +than mailing the developers (or mailing lists) directly -- bugs that +are not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +385411 s390x: z13 vector floating-point instructions not implemented +397187 z13 vector register support for vgdb gdbserver +398183 Vex errors with _mm256_shuffle_epi8/vpshufb +398870 Please add support for instruction vcvtps2ph +399287 amd64 front end: Illegal Instruction vcmptrueps +399301 Use inlined frames in Massif XTree output. +399322 Improve callgrind_annotate output +399444 VEX/priv/guest_s390_toIR.c:17407: (style) Mismatching assignment [..] +400164 helgrind test encounters mips x-compiler warnings and assembler error +400490 s390x: VRs allocated as if separate from FPRs +400491 s390x: Operand of LOCH treated as unsigned integer +400975 Compile error: error: '-mips64r2' conflicts with the other architecture + options, which specify a mips64 processor +401112 LLVM 5.0 generates comparison against partially initialized data +401277 More bugs in z13 support +401454 Add a --show-percs option to cg_annotate and callgrind_annotate. +401578 drd: crashes sometimes on fork() +401627 memcheck errors with glibc avx2 optimized wcsncmp +401822 none/tests/ppc64/jm-vmx fails and produces assembler warnings +401827 none/tests/ppc64/test_isa_2_06_part3 failure on ppc64le (xvrsqrtesp) +401828 none/tests/ppc64/test_isa_2_06_part1 failure on ppc64le (fcfids and + fcfidus) +402006 mark helper regs defined in final_tidyup before freeres_wrapper call +402048 WARNING: unhandled ppc64[be|le]-linux syscall: 26 (ptrace) +402123 invalid assembler opcodes for mips32r2 +402134 assertion fail in mc_translate.c (noteTmpUsesIn) Iex_VECRET on arm64 +402327 Warning: DWARF2 CFI reader: unhandled DW_OP_ opcode 0x13 (DW_OP_drop) +402341 drd/tests/tsan_thread_wrappers_pthread.h:369: suspicious code ? +402351 mips64 libvexmultiarch_test fails on s390x +402369 Overhaul DHAT +402395 coregrind/vgdb-invoker-solaris.c: 2 * poor error checking +402480 Do not use %rsp in clobber list +402481 vbit-test fails on x86 for Iop_CmpEQ64 iselInt64Expr Sar64 +402515 Implement new option --show-error-list=no|yes / -s +402519 POWER 3.0 addex instruction incorrectly implemented +402781 Redo the cache used to process indirect branch targets +403123 vex amd64->IR:0xF3 0x48 0xF 0xAE 0xD3 (wrfsbase) +403552 s390x: wrong facility bit checked for vector facility +404054 memcheck powerpc subfe x, x, x initializes x to 0 or -1 based on CA +404638 Add VG_(replaceIndexXA) +404843 s390x: backtrace sometimes ends prematurely +404888 autotools cleanup series +405079 unhandled ppc64le-linux syscall: 131 (quotactl) +405182 Valgrind fails to build with Clang +405205 filter_libc: remove the line holding the futex syscall error entirely +405356 PPC64, xvcvsxdsp, xvcvuxdsp are supposed to write the 32-bit result to + the upper and lower 32-bits of the 64-bit result +405362 PPC64, vmsummbm instruction doesn't handle overflow case correctly +405363 PPC64, xvcvdpsxws, xvcvdpuxws, do not handle NaN arguments correctly. +405365 PPC64, function _get_maxmin_fp_NaN() doesn't handle QNaN, SNaN case + correctly. +405403 s390x disassembler cannot be used on x86 +405430 Use gcc -Wimplicit-fallthrough=2 by default if available +405458 MIPS mkFormVEC arguments swapped? +405716 drd: Fix an integer overflow in the stack margin calculation +405722 Support arm64 core dump +405733 PPC64, xvcvdpsp should write 32-bit result to upper and lower 32-bits + of the 64-bit destination field. +405734 PPC64, vrlwnm, vrlwmi, vrldrm, vrldmi do not work properly when me < mb +405782 "VEX temporary storage exhausted" when attempting to debug slic3r-pe +406198 none/tests/ppc64/test_isa_3_0_other test sporadically including CA + bit in output. +406256 PPC64, vector floating point instructions don't handle subnormal + according to VSCR[NJ] bit setting. +406352 cachegrind/callgrind fails ann tests because of missing a.c +406354 dhat is broken on x86 (32bit) +406355 mcsignopass, mcsigpass, mcbreak fail due to difference in gdb output +406357 gdbserver_tests fails because of gdb output change +406360 memcheck/tests/libstdc++.supp needs more supression variants +406422 none/tests/amd64-linux/map_32bits.vgtest fails too easily +406465 arm64 insn selector fails on "t0 = " where has type Ity_F16 +407340 PPC64, does not support the vlogefp, vexptefp instructions. +n-i-bz add syswrap for PTRACE_GET|SET_THREAD_AREA on amd64. +n-i-bz Fix callgrind_annotate non deterministic order for equal total +n-i-bz callgrind_annotate --threshold=100 does not print all functions. +n-i-bz callgrind_annotate Use of uninitialized value in numeric gt (>) +n-i-bz amd64 (x86_64): RDRAND and F16C insn set extensions are supported + +(3.15.0.RC1: 8 April 2019, git ce94d674de5b99df173aad4c3ee48fc2a92e5d9c) +(3.15.0.RC2: 11 April 2019, git 0c8be9bbede189ec580ec270521811766429595f) +(3.15.0: 14 April 2019, git 270037da8b508954f0f7d703a0bebf5364eec548) + + + +Release 3.14.0 (9 October 2018) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -77952 pThread Support (crash) (due to initialisation-ordering probs) - (also 85118) +3.14.0 is a feature release with many improvements and the usual collection of +bug fixes. + +This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, +PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, +MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android, +X86/Solaris, AMD64/Solaris and AMD64/MacOSX 10.12. There is also preliminary +support for X86/macOS 10.13, AMD64/macOS 10.13. + +* ==================== CORE CHANGES =================== + +* The new option --keep-debuginfo=no|yes (default no) can be used to retain + debug info for unloaded code. This allows saved stack traces (e.g. for + memory leaks) to include file/line info for code that has been dlclose'd (or + similar). See the user manual for more information and known limitations. + +* Ability to specify suppressions based on source file name and line number. + +* Majorly overhauled register allocator. No end-user changes, but the JIT + generates code a bit more quickly now. + +* ================== PLATFORM CHANGES ================= + +* Preliminary support for macOS 10.13 has been added. + +* mips: support for MIPS32/MIPS64 Revision 6 has been added. + +* mips: support for MIPS SIMD architecture (MSA) has been added. + +* mips: support for MIPS N32 ABI has been added. + +* s390: partial support for vector instructions (integer and string) has been + added. + +* ==================== TOOL CHANGES ==================== + +* Helgrind: Addition of a flag + --delta-stacktrace=no|yes [yes on linux amd64/x86] + which specifies how full history stack traces should be computed. + Setting this to =yes can speed up Helgrind by 25% when using + --history-level=full. + +* Memcheck: reduced false positive rate for optimised code created by Clang 6 + / LLVM 6 on x86, amd64 and arm64. In particular, Memcheck analyses code + blocks more carefully to determine where it can avoid expensive definedness + checks without loss of precision. This is controlled by the flag + --expensive-definedness-checks=no|auto|yes [auto]. + +* ==================== OTHER CHANGES ==================== + +* Valgrind is now buildable with link-time optimisation (LTO). A new + configure option --enable-lto=yes allows building Valgrind with LTO. If the + toolchain supports it, this produces a smaller/faster Valgrind (up to 10%). + Note that if you are doing Valgrind development, --enable-lto=yes massively + slows down the build process. + +* ==================== FIXED BUGS ==================== + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather +than mailing the developers (or mailing lists) directly -- bugs that +are not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +79362 Debug info is lost for .so files when they are dlclose'd +208052 strlcpy error when n = 0 +255603 exp-sgcheck Assertion '!already_present' failed +338252 building valgrind with -flto (link time optimisation) fails +345763 MIPS N32 ABI support +368913 WARNING: unhandled arm64-linux syscall: 117 (ptrace) + == 388664 unhandled arm64-linux syscall: 117 (ptrace) +372347 Replacement problem of the additional c++14/c++17 new/delete operators +373069 memcheck/tests/leak_cpp_interior fails with GCC 5.1+ +376257 helgrind history full speed up using a cached stack +379373 Fix syscall param msg->desc.port.name points to uninitialised byte(s) + on macOS 10.12 +379748 Fix missing pselect syscall (OS X 10.11) +379754 Fix missing syscall ulock_wait (OS X 10.12) +380397 s390x: __GI_strcspn() replacemenet needed +381162 possible array overrun in VEX register allocator +381272 ppc64 doesn't compile test_isa_2_06_partx.c without VSX support +381274 powerpc too chatty even with --sigill-diagnostics=no +381289 epoll_pwait can have a NULL sigmask +381553 VEX register allocator v3 +381556 arm64: Handle feature registers access on 4.11 Linux kernel or later +381769 Use ucontext_t instead of struct ucontext +381805 arm32 needs ld.so index hardwire for new glibc security fixes +382256 gz compiler flag test doesn't work for gold +382407 vg_perf needs "--terse" command line option +382515 "Assertion 'di->have_dinfo' failed." on wine's dlls/mscoree/tests/[..] +382563 MIPS MSA ASE support +382998 xml-socket doesn't work +383275 massif: m_xarray.c:162 (ensureSpaceXA): Assertion '!xa->arr' failed +383723 Fix missing kevent_qos syscall (macOS 10.11) + == 385604 illegal hardware instruction (OpenCV cv::namedWindow) +384096 Mention AddrCheck at Memcheck's command line option [..] +384230 vex x86->IR: 0x67 0xE8 0xAB 0x68 + == 384156 vex x86->IR: 0x67 0xE8 0x6B 0x6A + == 386115 vex x86->IR: 0x67 0xE8 0xD3 0x8B any program + == 388407 vex x86->IR: 0x67 0xE8 0xAB 0x29 + == 394903 vex x86->IR: 0x67 0xE8 0x1B 0xDA +384337 performance improvements to VEX register allocator v2 and v3 +384526 reduce number of spill insns generated by VEX register allocator v3 +384584 Callee saved regs listed first for AMD64, X86, and PPC architectures +384631 Sanitise client args as printed with -v +384633 Add a simple progress-reporting facility +384987 VEX regalloc: allocate caller-save registers for short lived vregs +385055 PPC VEX temporary storage exhausted +385182 PPC64 is missing support for the DSCR +385183 PPC64, Add support for xscmpeqdp, xscmpgtdp, xscmpgedp, xsmincdp +385207 PPC64, generate_store_FPRF() generates too many Iops +385208 PPC64, xxperm instruction exhausts temporary memory +385210 PPC64, vpermr instruction could exhaust temporary memory +385279 unhandled syscall: mach:43 (mach_generate_activity_id) + == 395136 valgrind: m_syswrap/syswrap-main.c:438 (Bool eq_Syscall[..] + == 387045 Valgrind crashing on High Sierra when testing any newly [..] +385334 PPC64, fix vpermr, xxperm, xxpermr mask value. +385408 s390x: z13 vector "support" instructions not implemented +385409 s390x: z13 vector integer instructions not implemented +385410 s390x: z13 vector string instructions not implemented +385412 s390x: new non-vector z13 instructions not implemented +385868 glibc ld.so _dl_runtime_resolve_avx_slow conditional jump warning. +385912 none/tests/rlimit_nofile fails on newer glibc/kernel. +385939 Optionally exit on the first error +386318 valgrind.org/info/tools.html is missing SGCheck +386425 running valgrind + wine on armv7l gives illegal opcode +386397 PPC64, valgrind truncates powerpc timebase to 32-bits. +387410 MIPSr6 support +387664 Memcheck: make expensive-definedness-checks be the default +387712 s390x cgijnl reports Conditional jump depends on uninitialised value +387766 asm shifts cause false positive "Conditional jump or move depends + on uninitialised value" +387773 .gnu_debugaltlink paths resolve relative to .debug file, not symlink +388174 valgrind with Wine quits with "Assertion 'cfsi_fits' failed" +388786 Support bpf syscall in amd64 Linux +388862 Add replacements for wmemchr and wcsnlen on Linux +389065 valgrind meets gcc flag -Wlogical-op +389373 exp-sgcheck the 'impossible' happened as Ist_LoadG is not instrumented +390471 suppression by specification of source-file line number +390723 make xtree dump files world wide readable, similar to log files +391164 constraint bug in tests/ppc64/test_isa_2_07_part1.c for mtfprwa +391861 Massif Assertion 'n_ips >= 1 && n_ips <= VG_(clo_backtrace_size)' +392118 unhandled amd64-linux syscall: 332 (statx) +392449 callgrind not clearing the number of calls properly +393017 Add missing support for xsmaxcdp instruction, bug fixes for xsmincdp, + lxssp, stxssp and stxvl instructions. +393023 callgrind_control risks using the wrong vgdb +393062 build-id ELF phdrs read causes "debuginfo reader: ensure_valid failed" +393099 posix_memalign() invalid write if alignment == 0 +393146 failing assert "is_DebugInfo_active(di)" +395709 PPC64 is missing support for the xvnegsp instruction +395682 Accept read-only PT_LOAD segments and .rodata by ld -z separate-code + == 384727 +396475 valgrind OS-X build: config.h not found (out-of-tree macOS builds) +395991 arm-linux: wine's unit tests enter a signal delivery loop [..] +396839 s390x: Trap instructions not implemented +396887 arch_prctl should return EINVAL on unknown option + == 397286 crash before launching binary (Unsupported arch_prctl option) + == 397393 valgrind: the 'impossible' happened: (Archlinux) + == 397521 valgrind: the 'impossible' happened: Unsupported [..] +396906 compile tests failure on mips32-linux: broken inline asm in tests on + mips32-linux +397012 glibc ld.so uses arch_prctl on i386 +397089 amd64: Incorrect decoding of three-register vmovss/vmovsd opcode 11h +397354 utimensat should ignore timespec tv_sec if tv_nsec is UTIME_NOW/OMIT +397424 glibc 2.27 and gdb_server tests +398028 Assertion `cfsi_fits` failing in simple C program +398066 s390x: cgijl dep1, 0 reports false unitialised values warning + +n-i-bz Fix missing workq_ops operations (macOS) +n-i-bz fix bug in strspn replacement +n-i-bz Add support for the Linux BLKFLSBUF ioctl +n-i-bz Add support for the Linux BLKREPORTZONE and BLKRESETZONE ioctls +n-i-bz Fix possible stack trashing by semctl syscall wrapping +n-i-bz Add support for the Linux membarrier() system call +n-i-bz x86 front end: recognise and handle UD2 correctly +n-i-bz Signal delivery for x86-linux: ensure that the stack pointer is + correctly aligned before entering the handler. + +(3.14.0.RC1: 30 September 2018, git c2aeea2d28acb0639bcc8cc1e4ab115067db1eae) +(3.14.0.RC2: 3 October 2018, git 3e214c4858a6fdd5697e767543a0c19e30505582) +(3.14.0: 9 October 2018, git 353a3587bb0e2757411f9138f5e936728ed6cc4f) + + + +Release 3.13.0 (15 June 2017) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -80942 Addrcheck wasn't doing overlap checking as it should. -78048 return NULL on malloc/new etc failure, instead of asserting -73655 operator new() override in user .so files often doesn't get picked up -83060 Valgrind does not handle native kernel AIO -69872 Create proper coredumps after fatal signals -82026 failure with new glibc versions: __libc_* functions are not exported -70344 UNIMPLEMENTED FUNCTION: tcdrain -81297 Cancellation of pthread_cond_wait does not require mutex -82872 Using debug info from additional packages (wishlist) -83025 Support for ioctls FIGETBSZ and FIBMAP -83340 Support for ioctl HDIO_GET_IDENTITY -79714 Support for the semtimedop system call. -77022 Support for ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO -82098 hp2ps ansification (wishlist) -83573 Valgrind SIGSEGV on execve -82999 show which cmdline option was erroneous (wishlist) -83040 make valgrind VPATH and distcheck-clean (wishlist) -83998 Assertion `newfd > vgPlain_max_fd' failed (see below) -82722 Unchecked mmap in as_pad leads to mysterious failures later -78958 memcheck seg faults while running Mozilla -85416 Arguments with colon (e.g. --logsocket) ignored +3.13.0 is a feature release with many improvements and the usual collection of +bug fixes. +This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, +PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, +MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android, +X86/Solaris, AMD64/Solaris and AMD64/MacOSX 10.12. -Additionally there are the following changes, which are not -connected to any bug report numbers, AFAICS: - -* Rearranged address space layout relative to 2.1.1, so that - Valgrind/tools will run out of memory later than currently in many - circumstances. This is good news esp. for Calltree. It should - be possible for client programs to allocate over 800MB of - memory when using memcheck now. - -* Improved checking when laying out memory. Should hopefully avoid - the random segmentation faults that 2.1.1 sometimes caused. - -* Support for Fedora Core 2 and SuSE 9.1. Improvements to NPTL - support to the extent that V now works properly on NPTL-only setups. - -* Renamed the following options: - --logfile-fd --> --log-fd - --logfile --> --log-file - --logsocket --> --log-socket - to be consistent with each other and other options (esp. --input-fd). - -* Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and - improve the checking of other interface related ioctls. - -* Fix building with gcc-3.4.1. - -* Remove limit on number of semaphores supported. - -* Add support for syscalls: set_tid_address (258), acct (51). - -* Support instruction "repne movs" -- not official but seems to occur. - -* Implement an emulated soft limit for file descriptors in addition to - the current reserved area, which effectively acts as a hard limit. The - setrlimit system call now simply updates the emulated limits as best - as possible - the hard limit is not allowed to move at all and just - returns EPERM if you try and change it. This should stop reductions - in the soft limit causing assertions when valgrind tries to allocate - descriptors from the reserved area. - (This actually came from bug #83998). - -* Major overhaul of Cachegrind implementation. First user-visible change - is that cachegrind.out files are now typically 90% smaller than they - used to be; code annotation times are correspondingly much smaller. - Second user-visible change is that hit/miss counts for code that is - unloaded at run-time is no longer dumped into a single "discard" pile, - but accurately preserved. - -* Client requests for telling valgrind about memory pools. - - - -Developer (cvs head) release 2.1.1 (12 March 2004) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.1.1 contains some internal structural changes needed for V's -long-term future. These don't affect end-users. Most notable -user-visible changes are: - -* Greater isolation between Valgrind and the program being run, so - the program is less likely to inadvertently kill Valgrind by - doing wild writes. - -* Massif: a new space profiling tool. Try it! It's cool, and it'll - tell you in detail where and when your C/C++ code is allocating heap. - Draws pretty .ps pictures of memory use against time. A potentially - powerful tool for making sense of your program's space use. - -* Fixes for many bugs, including support for more SSE2/SSE3 instructions, - various signal/syscall things, and various problems with debug - info readers. - -* Support for glibc-2.3.3 based systems. - -We are now doing automatic overnight build-and-test runs on a variety -of distros. As a result, we believe 2.1.1 builds and runs on: -Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9. - - -The following bugs, and probably many more, have been fixed. These -are listed at http://bugs.kde.org. Reporting a bug for valgrind in -the http://bugs.kde.org is much more likely to get you a fix than -mailing developers directly, so please continue to keep sending bugs -there. - -69616 glibc 2.3.2 w/NPTL is massively different than what valgrind expects -69856 I don't know how to instrument MMXish stuff (Helgrind) -73892 valgrind segfaults starting with Objective-C debug info - (fix for S-type stabs) -73145 Valgrind complains too much about close() -73902 Shadow memory allocation seems to fail on RedHat 8.0 -68633 VG_N_SEMAPHORES too low (V itself was leaking semaphores) -75099 impossible to trace multiprocess programs -76839 the `impossible' happened: disInstr: INT but not 0x80 ! -76762 vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed. -76747 cannot include valgrind.h in c++ program -76223 parsing B(3,10) gave NULL type => impossible happens -75604 shmdt handling problem -76416 Problems with gcc 3.4 snap 20040225 -75614 using -gstabs when building your programs the `impossible' happened -75787 Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET, -75294 gcc 3.4 snapshot's libstdc++ have unsupported instructions. - (REP RET) -73326 vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed. -72596 not recognizing __libc_malloc -69489 Would like to attach ddd to running program -72781 Cachegrind crashes with kde programs -73055 Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes) -73026 Descriptor leak check reports port numbers wrongly -71705 README_MISSING_SYSCALL_OR_IOCTL out of date -72643 Improve support for SSE/SSE2 instructions -72484 valgrind leaves it's own signal mask in place when execing -72650 Signal Handling always seems to restart system calls -72006 The mmap system call turns all errors in ENOMEM -71781 gdb attach is pretty useless -71180 unhandled instruction bytes: 0xF 0xAE 0x85 0xE8 -69886 writes to zero page cause valgrind to assert on exit -71791 crash when valgrinding gimp 1.3 (stabs reader problem) -69783 unhandled syscall: 218 -69782 unhandled instruction bytes: 0x66 0xF 0x2B 0x80 -70385 valgrind fails if the soft file descriptor limit is less - than about 828 -69529 "rep; nop" should do a yield -70827 programs with lots of shared libraries report "mmap failed" - for some of them when reading symbols -71028 glibc's strnlen is optimised enough to confuse valgrind - - - - -Unstable (cvs head) release 2.1.0 (15 December 2003) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -For whatever it's worth, 2.1.0 actually seems pretty darn stable to me -(Julian). It looks eminently usable, and given that it fixes some -significant bugs, may well be worth using on a day-to-day basis. -2.1.0 is known to build and pass regression tests on: SuSE 9, SuSE -8.2, RedHat 8. - -2.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of -handling of system calls and signals, and their interaction with -threads. In general, the accuracy of the system call, thread and -signal simulations is much improved. Specifically: - -- Blocking system calls behave exactly as they do when running - natively (not on valgrind). That is, if a syscall blocks only the - calling thread when running natively, than it behaves the same on - valgrind. No more mysterious hangs because V doesn't know that some - syscall or other, should block only the calling thread. - -- Interrupted syscalls should now give more faithful results. - -- Finally, signal contexts in signal handlers are supported. As a - result, konqueror on SuSE 9 no longer segfaults when notified of - file changes in directories it is watching. - -Other changes: - -- Robert Walsh's file descriptor leakage checks. When enabled, - Valgrind will print out a list of open file descriptors on - exit. Along with each file descriptor, Valgrind prints out a stack - backtrace of where the file was opened and any details relating to the - file descriptor such as the file name or socket details. - To use, give: --track-fds=yes - -- Implemented a few more SSE/SSE2 instructions. - -- Less crud on the stack when you do 'where' inside a GDB attach. - -- Fixed the following bugs: - 68360: Valgrind does not compile against 2.6.0-testX kernels - 68525: CVS head doesn't compile on C90 compilers - 68566: pkgconfig support (wishlist) - 68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr) - 69140: valgrind not able to explicitly specify a path to a binary. - 69432: helgrind asserts encountering a MutexErr when there are - EraserErr suppressions - -- Increase the max size of the translation cache from 200k average bbs - to 300k average bbs. Programs on the size of OOo (680m17) are - thrashing the cache at the smaller size, creating large numbers of - retranslations and wasting significant time as a result. - - - -Stable release 2.0.0 (5 Nov 2003) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -2.0.0 improves SSE/SSE2 support, fixes some minor bugs, and -improves support for SuSE 9 and the Red Hat "Severn" beta. +* ==================== CORE CHANGES =================== -- Further improvements to SSE/SSE2 support. The entire test suite of - the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1 - 20030307Z '-g -O -xW' now works. I think this gives pretty good - coverage of SSE/SSE2 floating point instructions, or at least the - subset emitted by Icc. +* The translation cache size has been increased to keep up with the demands of + large applications. The maximum number of sectors has increased from 24 to + 48. The default number of sectors has increased from 16 to 32 on all + targets except Android, where the increase is from 6 to 12. -- Also added support for the following instructions: - MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS - PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS). +* The amount of memory that Valgrind can use has been increased from 64GB to + 128GB. In particular this means your application can allocate up to about + 60GB when running on Memcheck. -- CFI support for GDB version 6. Needed to enable newer GDBs - to figure out where they are when using --gdb-attach=yes. +* Valgrind's default load address has been changed from 0x3800'0000 to + 0x5800'0000, so as to make it possible to load larger executables. This + should make it possible to load executables of size at least 1200MB. -- Fix this: - mc_translate.c:1091 (memcheck_instrument): Assertion - `u_in->size == 4 || u_in->size == 16' failed. +* A massive spaceleak caused by reading compressed debuginfo files has been + fixed. Valgrind should now be entirely usable with gcc-7.0 "-gz" created + debuginfo. -- Return an error rather than panicing when given a bad socketcall. +* The C++ demangler has been updated. -- Fix checking of syscall rt_sigtimedwait(). +* Support for demangling Rust symbols has been added. -- Implement __NR_clock_gettime (syscall 265). Needed on Red Hat Severn. +* A new representation of stack traces, the "XTree", has been added. An XTree + is a tree of stacktraces with data associated with the stacktraces. This is + used by various tools (Memcheck, Helgrind, Massif) to report on the heap + consumption of your program. Reporting is controlled by the new options + --xtree-memory=none|allocs|full and --xtree-memory-file=. -- Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n' - bytes long, when it could be shorter, which could cause false - positives. + A report can also be produced on demand using the gdbserver monitor command + 'xtmemory []>'. The XTree can be output in 2 formats: 'callgrind + format' and 'massif format. The existing visualisers for these formats (e.g. + callgrind_annotate, KCachegrind, ms_print) can be used to visualise and + analyse these reports. -- Support use of select() for very large numbers of file descriptors. + Memcheck can also produce XTree leak reports using the Callgrind file + format. For more details, see the user manual. -- Don't fail silently if the executable is statically linked, or is - setuid/setgid. Print an error message instead. +* ================== PLATFORM CHANGES ================= -- Support for old DWARF-1 format line number info. +* ppc64: support for ISA 3.0B and various fixes for existing 3.0 support +* amd64: fixes for JIT failure problems on long AVX2 code blocks +* amd64 and x86: support for CET prefixes has been added -Snapshot 20031012 (12 October 2003) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* arm32: a few missing ARMv8 instructions have been implemented -Three months worth of bug fixes, roughly. Most significant single -change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller. +* arm64, mips64, mips32: an alternative implementation of Load-Linked and + Store-Conditional instructions has been added. This is to deal with + processor implementations that implement the LL/SC specifications strictly + and as a result cause Valgrind to hang in certain situations. The + alternative implementation is automatically enabled at startup, as required. + You can use the option --sim-hints=fallback-llsc to force-enable it if you + want. -20031012 builds on Red Hat Fedora ("Severn") but doesn't really work -(curiously, mozilla runs OK, but a modest "ls -l" bombs). I hope to -get a working version out soon. It may or may not work ok on the -forthcoming SuSE 9; I hear positive noises about it but haven't been -able to verify this myself (not until I get hold of a copy of 9). +* Support for OSX 10.12 has been improved. -A detailed list of changes, in no particular order: +* On Linux, clone handling has been improved to honour CLONE_VFORK that + involves a child stack. Note however that CLONE_VFORK | CLONE_VM is handled + like CLONE_VFORK (by removing CLONE_VM), so applications that depend on + CLONE_VM exact semantics will (still) not work. + +* The TileGX/Linux port has been removed because it appears to be both unused + and unsupported. + +* ==================== TOOL CHANGES ==================== + +* Memcheck: + + - Memcheck should give fewer false positives when running optimised + Clang/LLVM generated code. + + - Support for --xtree-memory and 'xtmemory []>'. + + - New command line options --xtree-leak=no|yes and --xtree-leak-file= + to produce the end of execution leak report in a xtree callgrind format + file. + + - New option 'xtleak' in the memcheck leak_check monitor command, to produce + the leak report in an xtree file. + +* Massif: + + - Support for --xtree-memory and 'xtmemory []>'. + + - For some workloads (typically, for big applications), Massif memory + consumption and CPU consumption has decreased significantly. + +* Helgrind: + + - Support for --xtree-memory and 'xtmemory []>'. + + - addition of client request VALGRIND_HG_GNAT_DEPENDENT_MASTER_JOIN, useful + for Ada gnat compiled applications. + +* ==================== OTHER CHANGES ==================== + +* For Valgrind developers: in an outer/inner setup, the outer Valgrind will + append the inner guest stacktrace to the inner host stacktrace. This helps + to investigate the errors reported by the outer, when they are caused by the + inner guest program (such as an inner regtest). See README_DEVELOPERS for + more info. + +* To allow fast detection of callgrind files by desktop environments and file + managers, the format was extended to have an optional first line that + uniquely identifies the format ("# callgrind format"). Callgrind creates + this line now, as does the new xtree functionality. + +* File name template arguments (such as --log-file, --xtree-memory-file, ...) + have a new %n format letter that is replaced by a sequence number. + +* "--version -v" now shows the SVN revision numbers from which Valgrind was + built. + +* ==================== FIXED BUGS ==================== + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather +than mailing the developers (or mailing lists) directly -- bugs that +are not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +162848 --log-file output isn't split when a program forks +340777 Illegal instruction on mips (ar71xx) +341481 MIPS64: Iop_CmpNE32 triggers false warning on MIPS64 platforms +342040 Valgrind mishandles clone with CLONE_VFORK | CLONE_VM that clones + to a different stack. +344139 x86 stack-seg overrides, needed by the Wine people +344524 store conditional of guest applications always fail - observed on + Octeon3(MIPS) +348616 Wine/valgrind: noted but unhandled ioctl 0x5390 [..] (DVD_READ_STRUCT) +352395 Please provide SVN revision info in --version -v +352767 Wine/valgrind: noted but unhandled ioctl 0x5307 [..] (CDROMSTOP) +356374 Assertion 'DRD_(g_threadinfo)[tid].pt_threadid != + INVALID_POSIX_THREADID' failed +358213 helgrind/drd bar_bad testcase hangs or crashes with new glibc pthread + barrier implementation +358697 valgrind.h: Some code remains even when defining NVALGRIND +359202 Add musl libc configure/compile +360415 amd64 instructions ADCX and ADOX are not implemented in VEX + == 372828 (vex amd64->IR: 0x66 0xF 0x3A 0x62 0x4A 0x10) +360429 unhandled ioctl 0x530d with no size/direction hints (CDROMREADMODE1) +362223 assertion failed when .valgrindrc is a directory instead of a file +367543 bt/btc/btr/bts x86/x86_64 instructions are poorly-handled wrt flags +367942 Segfault vgPlain_do_sys_sigaction (m_signals.c:1138) +368507 can't malloc chunks larger than about 34GB +368529 Android arm target link error, missing atexit and pthread_atfork +368863 WARNING: unhandled arm64-linux syscall: 100 (get_robust_list) +368865 WARNING: unhandled arm64-linux syscall: 272 (kcmp) +368868 disInstr(arm64): unhandled instruction 0xD53BE000 = cntfrq_el0 (ARMv8) +368917 WARNING: unhandled arm64-linux syscall: 218 (request_key) +368918 WARNING: unhandled arm64-linux syscall: 127 (sched_rr_get_interval) +368922 WARNING: unhandled arm64-linux syscall: 161 (sethostname) +368924 WARNING: unhandled arm64-linux syscall: 84 (sync_file_range) +368925 WARNING: unhandled arm64-linux syscall: 130 (tkill) +368926 WARNING: unhandled arm64-linux syscall: 97 (unshare) +369459 valgrind on arm64 violates the ARMv8 spec (ldxr/stxr) +370028 Reduce the number of compiler warnings on MIPS platforms +370635 arm64 missing syscall getcpu +371225 Fix order of timer_{gettime,getoverrun,settime} syscalls on arm64 +371227 Clean AArch64 syscall table +371412 Rename wrap_sys_shmat to sys_shmat like other wrappers +371471 Valgrind complains about non legit memory leaks on placement new (C++) +371491 handleAddrOverrides() is [incorrect] when ASO prefix is used +371503 disInstr(arm64): unhandled instruction 0xF89F0000 +371869 support '%' in symbol Z-encoding +371916 execution tree xtree concept +372120 c++ demangler demangles symbols which are not c++ +372185 Support of valgrind on ARMv8 with 32 bit executable +372188 vex amd64->IR: 0x66 0xF 0x3A 0x62 0x4A 0x10 0x10 0x48 (PCMPxSTRx $0x10) +372195 Power PC, xxsel instruction is not always recognized. +372504 Hanging on exit_group +372600 process loops forever when fatal signals are arriving quickly +372794 LibVEX (arm32 front end): 'Assertion szBlg2 <= 3' failed +373046 Stacks registered by core are never deregistered +373069 memcheck/tests/leak_cpp_interior fails with GCC 5.1+ +373086 Implement additional Xen hypercalls +373192 Calling posix_spawn in glibc 2.24 completely broken +373488 Support for fanotify API on ARM64 architecture + == 368864 WARNING: unhandled arm64-linux syscall: 262 (fanotify_init) +373555 Rename BBPTR to GSPTR as it denotes guest state pointer only +373938 const IRExpr arguments for matchIRExpr() +374719 some spelling fixes +374963 increase valgrind's load address to prevent mmap failure +375514 valgrind_get_tls_addr() does not work in case of static TLS +375772 +1 error in get_elf_symbol_info() when computing value of 'hi' address + for ML_(find_rx_mapping)() +375806 Test helgrind/tests/tc22_exit_w_lock fails with glibc 2.24 +375839 Temporary storage exhausted, with long sequence of vfmadd231ps insns + == 377159 "vex: the `impossible' happened" still present + == 375150 Assertion 'tres.status == VexTransOK' failed + == 378068 valgrind crashes on AVX2 function in FFmpeg +376142 Segfaults on MIPS Cavium Octeon boards +376279 disInstr(arm64): unhandled instruction 0xD50320FF +376455 Solaris: unhandled syscall lgrpsys(180) +376518 Solaris: unhandled fast trap getlgrp(6) +376611 ppc64 and arm64 don't know about prlimit64 syscall +376729 PPC64, remove R2 from the clobber list + == 371668 +376956 syswrap of SNDDRV and DRM_IOCTL_VERSION causing some addresses + to be wrongly marked as addressable +377066 Some Valgrind unit tests fail to compile on Ubuntu 16.10 with + PIE enabled by default +377376 memcheck/tests/linux/getregset fails with glibc2.24 +377427 PPC64, lxv instruction failing on odd destination register +377478 PPC64: ISA 3.0 setup fixes +377698 Missing memory check for futex() uaddr arg for FUTEX_WAKE + and FUTEX_WAKE_BITSET, check only 4 args for FUTEX_WAKE_BITSET, + and 2 args for FUTEX_TRYLOCK_PI +377717 Fix massive space leak when reading compressed debuginfo sections +377891 Update Xen 4.6 domctl wrappers +377930 fcntl syscall wrapper is missing flock structure check +378524 libvexmultiarch_test regression on s390x and ppc64 +378535 Valgrind reports INTERNAL ERROR in execve syscall wrapper +378673 Update libiberty demangler +378931 Add ISA 3.0B additional isnstructions, add OV32, CA32 setting support +379039 syscall wrapper for prctl(PR_SET_NAME) must not check more than 16 bytes +379094 Valgrind reports INTERNAL ERROR in rt_sigsuspend syscall wrapper +379371 UNKNOWN task message [id 3444, to mach_task_self(), reply 0x603] + (task_register_dyld_image_infos) +379372 UNKNOWN task message [id 3447, to mach_task_self(), reply 0x603] + (task_register_dyld_shared_cache_image_info) +379390 unhandled syscall: mach:70 (host_create_mach_voucher_trap) +379473 MIPS: add support for rdhwr cycle counter register +379504 remove TileGX/Linux port +379525 Support more x86 nop opcodes +379838 disAMode(x86): not an addr! +379703 PC ISA 3.0 fixes: stxvx, stxv, xscmpexpdp instructions +379890 arm: unhandled instruction: 0xEBAD 0x1B05 (sub.w fp, sp, r5, lsl #4) +379895 clock_gettime does not execute POST syscall wrapper +379925 PPC64, mtffs does not set the FPCC and C bits in the FPSCR correctly +379966 WARNING: unhandled amd64-linux syscall: 313 (finit_module) +380200 xtree generated callgrind files refer to files without directory name +380202 Assertion failure for cache line size (cls == 64) on aarch64. +380397 s390x: __GI_strcspn() replacement needed +n-i-bz Fix pub_tool_basics.h build issue with g++ 4.4.7. + +(3.13.0.RC1: 2 June 2017, vex r3386, valgrind r16434) +(3.13.0.RC2: 9 June 2017, vex r3389, valgrind r16443) +(3.13.0: 14 June 2017, vex r3396, valgrind r16446) + + + +Release 3.12.0 (20 October 2016) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Describe --gen-suppressions in the FAQ. +3.12.0 is a feature release with many improvements and the usual +collection of bug fixes. -- Syscall __NR_waitpid supported. +This release supports X86/Linux, AMD64/Linux, ARM32/Linux, +ARM64/Linux, PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, +MIPS32/Linux, MIPS64/Linux, ARM/Android, ARM64/Android, +MIPS32/Android, X86/Android, X86/Solaris, AMD64/Solaris, X86/MacOSX +10.10 and AMD64/MacOSX 10.10. There is also preliminary support for +X86/MacOSX 10.11/12, AMD64/MacOSX 10.11/12 and TILEGX/Linux. -- Minor MMX bug fix. +* ================== PLATFORM CHANGES ================= -- -v prints program's argv[] at startup. +* POWER: Support for ISA 3.0 has been added -- More glibc-2.3 suppressions. +* mips: support for O32 FPXX ABI has been added. +* mips: improved recognition of different processors +* mips: determination of page size now done at run time -- Suppressions for stack underrun bug(s) in the c++ support library - distributed with Intel Icc 7.0. +* amd64: Partial support for AMD FMA4 instructions. -- Fix problems reading /proc/self/maps. +* arm, arm64: Support for v8 crypto and CRC instructions. -- Fix a couple of messages that should have been suppressed by -q, - but weren't. +* Improvements and robustification of the Solaris port. -- Make Addrcheck understand "Overlap" suppressions. +* Preliminary support for MacOS 10.12 (Sierra) has been added. -- At startup, check if program is statically linked and bail out if so. +Whilst 3.12.0 continues to support the 32-bit x86 instruction set, we +would prefer users to migrate to 64-bit x86 (a.k.a amd64 or x86_64) +where possible. Valgrind's support for 32-bit x86 has stagnated in +recent years and has fallen far behind that for 64-bit x86 +instructions. By contrast 64-bit x86 is well supported, up to and +including AVX2. -- Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah +* ==================== TOOL CHANGES ==================== + +* Memcheck: + + - Added meta mempool support for describing a custom allocator which: + - Auto-frees all chunks assuming that destroying a pool destroys all + objects in the pool + - Uses itself to allocate other memory blocks + + - New flag --ignore-range-below-sp to ignore memory accesses below + the stack pointer, if you really have to. The related flag + --workaround-gcc296-bugs=yes is now deprecated. Use + --ignore-range-below-sp=1024-1 as a replacement. + +* DRD: + + - Improved thread startup time significantly on non-Linux platforms. + +* DHAT + + - Added collection of the metric "tot-blocks-allocd" + +* ==================== OTHER CHANGES ==================== + +* Replacement/wrapping of malloc/new related functions is now done not just + for system libraries by default, but for any globally defined malloc/new + related function (both in shared libraries and statically linked alternative + malloc implementations). The dynamic (runtime) linker is excluded, though. + To only intercept malloc/new related functions in + system libraries use --soname-synonyms=somalloc=nouserintercepts (where + "nouserintercepts" can be any non-existing library name). + This new functionality is not implemented for MacOS X. + +* The maximum number of callers in a suppression entry is now equal to + the maximum size for --num-callers (500). + Note that --gen-suppressions=yes|all similarly generates suppressions + containing up to --num-callers frames. + +* New and modified GDB server monitor features: + + - Valgrind's gdbserver now accepts the command 'catch syscall'. + Note that you must have GDB >= 7.11 to use 'catch syscall' with + gdbserver. + +* New option --run-cxx-freeres= can be used to change whether + __gnu_cxx::__freeres() cleanup function is called or not. Default is + 'yes'. + +* Valgrind is able to read compressed debuginfo sections in two formats: + - zlib ELF gABI format with SHF_COMPRESSED flag (gcc option -gz=zlib) + - zlib GNU format with .zdebug sections (gcc option -gz=zlib-gnu) + +* Modest JIT-cost improvements: the cost of instrumenting code blocks + for the most common use case (x86_64-linux, Memcheck) has been + reduced by 10%-15%. + +* Improved performance for programs that do a lot of discarding of + instruction address ranges of 8KB or less. + +* The C++ symbol demangler has been updated. + +* More robustness against invalid syscall parameters on Linux. + +* ==================== FIXED BUGS ==================== + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather +than mailing the developers (or mailing lists) directly -- bugs that +are not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +191069 Exiting due to signal not reported in XML output +199468 Suppressions: stack size limited to 25 + while --num-callers allows more frames +212352 vex amd64 unhandled opc_aux = 0x 2, first_opcode == 0xDC (FCOM) +278744 cvtps2pd with redundant RexW +303877 valgrind doesn't support compressed debuginfo sections. +345307 Warning about "still reachable" memory when using libstdc++ from gcc 5 +348345 Assertion fails for negative lineno +348924 MIPS: Load doubles through memory so the code compiles with the FPXX ABI +351282 V 3.10.1 MIPS softfloat build broken with GCC 4.9.3 / binutils 2.25.1 +351692 Dumps created by valgrind are not readable by gdb (mips32 specific) +351804 Crash on generating suppressions for "printf" call on OS X 10.10 +352197 mips: mmap2() not wrapped correctly for page size > 4096 +353083 arm64 doesn't implement various xattr system calls +353084 arm64 doesn't support sigpending system call +353137 www: update info for Supported Platforms +353138 www: update "The Valgrind Developers" page +353370 don't advertise RDRAND in cpuid for Core-i7-4910-like avx2 machine + == 365325 + == 357873 +353384 amd64->IR: 0x66 0xF 0x3A 0x62 0xD1 0x62 (pcmpXstrX $0x62) +353398 WARNING: unhandled amd64-solaris syscall: 207 +353660 XML in auxwhat tag not escaping reserved symbols properly +353680 s390x: Crash with certain glibc versions due to non-implemented TBEGIN +353727 amd64->IR: 0x66 0xF 0x3A 0x62 0xD1 0x72 (pcmpXstrX $0x72) +353802 ELF debug info reader confused with multiple .rodata sections +353891 Assert 'bad_scanned_addr < VG_ROUNDDN(start+len, sizeof(Addr))' failed +353917 unhandled amd64-solaris syscall fchdir(120) +353920 unhandled amd64-solaris syscall: 170 +354274 arm: unhandled instruction: 0xEBAD 0x0AC1 (sub.w sl, sp, r1, lsl #3) +354392 unhandled amd64-solaris syscall: 171 +354797 Vbit test does not include Iops for Power 8 instruction support +354883 tst->os_state.pthread - magic_delta assertion failure on OSX 10.11 + == 361351 + == 362920 + == 366222 +354933 Fix documentation of --kernel-variant=android-no-hw-tls option +355188 valgrind should intercept all malloc related global functions +355454 do not intercept malloc related symbols from the runtime linker +355455 stderr.exp of test cases wrapmalloc and wrapmallocstatic overconstrained +356044 Dwarf line info reader misinterprets is_stmt register +356112 mips: replace addi with addiu +356393 valgrind (vex) crashes because isZeroU happened + == 363497 + == 364497 +356676 arm64-linux: unhandled syscalls 125, 126 (sched_get_priority_max/min) +356678 arm64-linux: unhandled syscall 232 (mincore) +356817 valgrind.h triggers compiler errors on MSVC when defining NVALGRIND +356823 Unsupported ARM instruction: stlex +357059 x86/amd64: SSE cvtpi2ps with memory source does transition to MMX state +357338 Unhandled instruction for SHA instructions libcrypto Boring SSL +357673 crash if I try to run valgrind with a binary link with libcurl +357833 Setting RLIMIT_DATA to zero breaks with linux 4.5+ +357871 pthread_spin_destroy not properly wrapped +357887 Calls to VG_(fclose) do not close the file descriptor +357932 amd64->IR: accept redundant REX prefixes for {minsd,maxsd} m128, xmm. +358030 support direct socket calls on x86 32bit (new in linux 4.3) +358478 drd/tests/std_thread.cpp doesn't build with GCC6 +359133 Assertion 'eltSzB <= ddpa->poolSzB' failed +359181 Buffer Overflow during Demangling +359201 futex syscall "skips" argument 5 if op is FUTEX_WAIT_BITSET +359289 s390x: popcnt (B9E1) not implemented +359472 The Power PC vsubuqm instruction doesn't always give the correct result +359503 Add missing syscalls for aarch64 (arm64) +359645 "You need libc6-dbg" help message could be more helpful +359703 s390: wire up separate socketcalls system calls +359724 getsockname might crash - deref_UInt should call safe_to_deref +359733 amd64 implement ld.so strchr/index override like x86 +359767 Valgrind does not support the IBM POWER ISA 3.0 instructions, part 1/5 +359829 Power PC test suite none/tests/ppc64/test_isa_2_07.c uses + uninitialized data +359838 arm64: Unhandled instruction 0xD5033F5F (clrex) +359871 Incorrect mask handling in ppoll +359952 Unrecognised PCMPESTRM variants (0x70, 0x19) +360008 Contents of Power vr registers contents is not printed correctly when + the --vgdb-shadow-registers=yes option is used +360035 POWER PC instruction bcdadd and bcdsubtract generate result with + non-zero shadow bits +360378 arm64: Unhandled instruction 0x5E280844 (sha1h s4, s2) +360425 arm64 unsupported instruction ldpsw + == 364435 +360519 none/tests/arm64/memory.vgtest might fail with newer gcc +360571 Error about the Android Runtime reading below the stack pointer on ARM +360574 Wrong parameter type for an ashmem ioctl() call on Android and ARM64 +360749 kludge for multiple .rodata sections on Solaris no longer needed +360752 raise the number of reserved fds in m_main.c from 10 to 12 +361207 Valgrind does not support the IBM POWER ISA 3.0 instructions, part 2/5 +361226 s390x: risbgn (EC59) not implemented +361253 [s390x] ex_clone.c:42: undefined reference to `pthread_create' +361354 ppc64[le]: wire up separate socketcalls system calls +361615 Inconsistent termination for multithreaded process terminated by signal +361926 Unhandled Solaris syscall: sysfs(84) +362009 V dumps core on unimplemented functionality before threads are created +362329 Valgrind does not support the IBM POWER ISA 3.0 instructions, part 3/5 +362894 missing (broken) support for wbit field on mtfsfi instruction (ppc64) +362935 [AsusWRT] Assertion 'sizeof(TTEntryC) <= 88' failed +362953 Request for an update to the Valgrind Developers page +363680 add renameat2() support +363705 arm64 missing syscall name_to_handle_at and open_by_handle_at +363714 ppc64 missing syscalls sync, waitid and name_to/open_by_handle_at +363858 Valgrind does not support the IBM POWER ISA 3.0 instructions, part 4/5 +364058 clarify in manual limitations of array overruns detections +364413 pselect sycallwrapper mishandles NULL sigmask +364728 Power PC, missing support for several HW registers in + get_otrack_shadow_offset_wrk() +364948 Valgrind does not support the IBM POWER ISA 3.0 instructions, part 5/5 +365273 Invalid write to stack location reported after signal handler runs +365912 ppc64BE segfault during jm-insns test (RELRO) +366079 FPXX Support for MIPS32 Valgrind +366138 Fix configure errors out when using Xcode 8 (clang 8.0.0) +366344 Multiple unhandled instruction for Aarch64 + (0x0EE0E020, 0x1AC15800, 0x4E284801, 0x5E040023, 0x5E056060) +367995 Integration of memcheck with custom memory allocator +368120 x86_linux asm _start functions do not keep 16-byte aligned stack pointer +368412 False positive result for altivec capability check +368416 Add tc06_two_races_xml.exp output for ppc64 +368419 Perf Events ioctls not implemented +368461 mmapunmap test fails on ppc64 +368823 run_a_thread_NORETURN assembly code typo for VGP_arm64_linux target +369000 AMD64 fma4 instructions unsupported. +369169 ppc64 fails jm_int_isa_2_07 test +369175 jm_vec_isa_2_07 test crashes on ppc64 +369209 valgrind loops and eats up all memory if cwd doesn't exist. +369356 pre_mem_read_sockaddr syscall wrapper can crash with bad sockaddr +369359 msghdr_foreachfield can crash when handling bad iovec +369360 Bad sigprocmask old or new sets can crash valgrind +369361 vmsplice syscall wrapper crashes on bad iovec +369362 Bad sigaction arguments crash valgrind +369383 x86 sys_modify_ldt wrapper crashes on bad ptr +369402 Bad set/get_thread_area pointer crashes valgrind +369441 bad lvec argument crashes process_vm_readv/writev syscall wrappers +369446 valgrind crashes on unknown fcntl command +369439 S390x: Unhandled insns RISBLG/RISBHG and LDE/LDER +369468 Remove quadratic metapool algorithm using VG_(HT_remove_at_Iter) +370265 ISA 3.0 HW cap stuff needs updating +371128 BCD add and subtract instructions on Power BE in 32-bit mode do not work +372195 Power PC, xxsel instruction is not always recognized + +n-i-bz Fix incorrect (or infinite loop) unwind on RHEL7 x86 and amd64 +n-i-bz massif --pages-as-heap=yes does not report peak caused by mmap+munmap +n-i-bz false positive leaks due to aspacemgr merging heap & non heap segments +n-i-bz Fix ppoll_alarm exclusion on OS X +n-i-bz Document brk segment limitation, reference manual in limit reached msg. +n-i-bz Fix clobber list in none/tests/amd64/xacq_xrel.c [valgrind r15737] +n-i-bz Bump allowed shift value for "add.w reg, sp, reg, lsl #N" [vex r3206] +n-i-bz amd64: memcheck false positive with shr %edx +n-i-bz arm3: Allow early writeback of SP base register in "strd rD, [sp, #-16]" +n-i-bz ppc: Fix two cases of PPCAvFpOp vs PPCFpOp enum confusion +n-i-bz arm: Fix incorrect register-number constraint check for LDAEX{,B,H,D} +n-i-bz DHAT: added collection of the metric "tot-blocks-allocd" + +(3.12.0.RC1: 20 October 2016, vex r3282, valgrind r16094) +(3.12.0.RC2: 20 October 2016, vex r3282, valgrind r16096) +(3.12.0: 21 October 2016, vex r3282, valgrind r16098) + + + +Release 3.11.0 (22 September 2015) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +3.11.0 is a feature release with many improvements and the usual +collection of bug fixes. + +This release supports X86/Linux, AMD64/Linux, ARM32/Linux, +ARM64/Linux, PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, +MIPS32/Linux, MIPS64/Linux, ARM/Android, ARM64/Android, +MIPS32/Android, X86/Android, X86/Solaris, AMD64/Solaris, X86/MacOSX +10.10 and AMD64/MacOSX 10.10. There is also preliminary support for +X86/MacOSX 10.11, AMD64/MacOSX 10.11 and TILEGX/Linux. + +* ================== PLATFORM CHANGES ================= + +* Support for Solaris/x86 and Solaris/amd64 has been added. + +* Preliminary support for Mac OS X 10.11 (El Capitan) has been added. + +* Preliminary support for the Tilera TileGX architecture has been added. + +* s390x: It is now required for the host to have the "long displacement" + facility. The oldest supported machine model is z990. + +* x86: on an SSE2 only host, Valgrind in 32 bit mode now claims to be a + Pentium 4. 3.10.1 wrongly claimed to be a Core 2, which is SSSE3. + +* The JIT's register allocator is significantly faster, making the JIT + as a whole somewhat faster, so JIT-intensive activities, for example + program startup, are modestly faster, around 5%. + +* There have been changes to the default settings of several command + line flags, as detailed below. + +* Intel AVX2 support is more complete (64 bit targets only). On AVX2 + capable hosts, the simulated CPUID will now indicate AVX2 support. + +* ==================== TOOL CHANGES ==================== + +* Memcheck: + + - The default value for --leak-check-heuristics has been changed from + "none" to "all". This helps to reduce the number of possibly + lost blocks, in particular for C++ applications. + + - The default value for --keep-stacktraces has been changed from + "malloc-then-free" to "malloc-and-free". This has a small cost in + memory (one word per malloc-ed block) but allows Memcheck to show the + 3 stacktraces of a dangling reference: where the block was allocated, + where it was freed, and where it is acccessed after being freed. + + - The default value for --partial-loads-ok has been changed from "no" to + "yes", so as to avoid false positive errors resulting from some kinds + of vectorised loops. + + - A new monitor command 'xb ' shows the validity bits of + bytes at . The monitor command 'xb' is easier to use + than get_vbits when you need to associate byte data value with + their corresponding validity bits. + + - The 'block_list' monitor command has been enhanced: + o it can print a range of loss records + o it now accepts an optional argument 'limited ' + to control the number of blocks printed. + o if a block has been found using a heuristic, then + 'block_list' now shows the heuristic after the block size. + o the loss records/blocks to print can be limited to the blocks + found via specified heuristics. + + - The C helper functions used to instrument loads on + x86-{linux,solaris} and arm-linux (both 32-bit only) have been + replaced by handwritten assembly sequences. This gives speedups + in the region of 0% to 7% for those targets only. -- Memcheck/addrcheck: minor speed optimisations + - A new command line option, --expensive-definedness-checks=yes|no, + has been added. This is useful for avoiding occasional invalid + uninitialised-value errors in optimised code. Watch out for + runtime degradation, as this can be up to 25%. As always, though, + the slowdown is highly application specific. The default setting + is "no". -- Handle syscall __NR_brk more correctly than before. +* Massif: -- Fixed incorrect allocate/free mismatch errors when using - operator new(unsigned, std::nothrow_t const&) - operator new[](unsigned, std::nothrow_t const&) + - A new monitor command 'all_snapshots ' dumps all + snapshots taken so far. -- Support POSIX pthread spinlocks. +* Helgrind: -- Fixups for clean compilation with gcc-3.3.1. + - Significant memory reduction and moderate speedups for + --history-level=full for applications accessing a lot of memory + with many different stacktraces. -- Implemented more opcodes: - - push %es - - push %ds - - pop %es - - pop %ds - - movntq - - sfence - - pshufw - - pavgb - - ucomiss - - enter - - mov imm32, %esp - - all "in" and "out" opcodes - - inc/dec %esp - - A whole bunch of SSE/SSE2 instructions + - The default value for --conflict-cache-size=N has been doubled to + 2000000. Users that were not using the default value should + preferably also double the value they give. -- Memcheck: don't bomb on SSE/SSE2 code. + The default was changed due to the changes in the "full history" + implementation. Doubling the value gives on average a slightly more + complete history and uses similar memory (or significantly less memory + in the worst case) than the previous implementation. + + - The Helgrind monitor command 'info locks' now accepts an optional + argument 'lock_addr', which shows information about the lock at the + given address only. + - When using --history-level=full, the new Helgrind monitor command + 'accesshistory []' will show the recorded accesses for + (or 1) bytes at . -Snapshot 20030725 (25 July 2003) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* ==================== OTHER CHANGES ==================== -Fixes some minor problems in 20030716. +* The default value for the --smc-check option has been changed from + "stack" to "all-non-file" on targets that provide automatic D-I + cache coherence (x86, amd64 and s390x). The result is to provide, + by default, transparent support for JIT generated and self-modifying + code on all targets. -- Fix bugs in overlap checking for strcpy/memcpy etc. +* Mac OS X only: the default value for the --dsymutil option has been + changed from "no" to "yes", since any serious usage on Mac OS X + always required it to be "yes". -- Do overlap checking with Addrcheck as well as Memcheck. +* The command line options --db-attach and --db-command have been removed. + They were deprecated in 3.10.0. -- Fix this: - Memcheck: the `impossible' happened: - get_error_name: unexpected type +* When a process dies due to a signal, Valgrind now shows the signal + and the stacktrace at default verbosity (i.e. verbosity 1). -- Install headers needed to compile new skins. +* The address description logic used by Memcheck and Helgrind now + describes addresses in anonymous segments, file mmap-ed segments, + shared memory segments and the brk data segment. -- Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD - passed to non-traced children. +* The new option --error-markers=, can be used to mark the + begin/end of errors in textual output mode, to facilitate + searching/extracting errors in output files that mix valgrind errors + with program output. -- Fix file descriptor leak in valgrind-listener. +* The new option --max-threads= can be used to change the number + of threads valgrind can handle. The default is 500 threads which + should be more than enough for most applications. -- Fix longstanding bug in which the allocation point of a - block resized by realloc was not correctly set. This may - have caused confusing error messages. +* The new option --valgrind-stacksize= can be used to change the + size of the private thread stacks used by Valgrind. This is useful + for reducing memory use or increasing the stack size if Valgrind + segfaults due to stack overflow. +* The new option --avg-transtab-entry-size= can be used to specify + the expected instrumented block size, either to reduce memory use or + to avoid excessive retranslation. -Snapshot 20030716 (16 July 2003) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* Valgrind can be built with Intel's ICC compiler, version 14.0 or later. + +* New and modified GDB server monitor features: -20030716 is a snapshot of our current CVS head (development) branch. -This is the branch which will become valgrind-2.0. It contains -significant enhancements over the 1.9.X branch. + - When a signal is reported in GDB, you can now use the GDB convenience + variable $_siginfo to examine detailed signal information. + + - Valgrind's gdbserver now allows the user to change the signal + to deliver to the process. So, use 'signal SIGNAL' to continue execution + with SIGNAL instead of the signal reported to GDB. Use 'signal 0' to + continue without passing the signal to the process. + + - With GDB >= 7.10, the command 'target remote' + will automatically load the executable file of the process running + under Valgrind. This means you do not need to specify the executable + file yourself, GDB will discover it itself. See GDB documentation about + 'qXfer:exec-file:read' packet for more info. + +* ==================== FIXED BUGS ==================== + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather +than mailing the developers (or mailing lists) directly -- bugs that +are not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +116002 VG_(printf): Problems with justification of strings and integers +155125 avoid cutting away file:lineno after long function name +197259 Unsupported arch_prtctl PR_SET_GS option +201152 ppc64: Assertion in ppc32g_dirtyhelper_MFSPR_268_269 +201216 Fix Valgrind does not support pthread_sigmask() on OS X +201435 Fix Darwin: -v does not show kernel version +208217 "Warning: noted but unhandled ioctl 0x2000747b" on Mac OS X +211256 Fixed an outdated comment regarding the default platform. +211529 Incomplete call stacks for code compiled by newer versions of MSVC +211926 Avoid compilation warnings in valgrind.h with -pedantic +212291 Fix unhandled syscall: unix:132 (mkfifo) on OS X + == 263119 +226609 Crediting upstream authors in man page +231257 Valgrind omits path when executing script from shebang line +254164 OS X task_info: UNKNOWN task message [id 3405, to mach_task_self() [..] +294065 Improve the pdb file reader by avoiding hardwired absolute pathnames +269360 s390x: Fix addressing mode selection for compare-and-swap +302630 Memcheck: Assertion failed: 'sizeof(UWord) == sizeof(UInt)' + == 326797 +312989 ioctl handling needs to do POST handling on generic ioctls and [..] +319274 Fix unhandled syscall: unix:410 (sigsuspend_nocancel) on OS X +324181 mmap does not handle MAP_32BIT (handle it now, rather than fail it) +327745 Fix valgrind 3.9.0 build fails on Mac OS X 10.6.8 +330147 libmpiwrap PMPI_Get_count returns undefined value +333051 mmap of huge pages fails due to incorrect alignment + == 339163 +334802 valgrind does not always explain why a given option is bad +335618 mov.w rN, pc/sp (ARM32) +335785 amd64->IR 0xC4 0xE2 0x75 0x2F (vmaskmovpd) + == 307399 + == 343175 + == 342740 + == 346912 +335907 segfault when running wine's ddrawex/tests/surface.c under valgrind +338602 AVX2 bit in CPUID missing +338606 Strange message for scripts with invalid interpreter +338731 ppc: Fix testuite build for toolchains not supporting -maltivec +338995 shmat with hugepages (SHM_HUGETLB) fails with EINVAL +339045 Getting valgrind to compile and run on OS X Yosemite (10.10) + == 340252 +339156 gdbsrv not called for fatal signal +339215 Valgrind 3.10.0 contain 2013 in copyrights notice +339288 support Cavium Octeon MIPS specific BBIT*32 instructions +339636 Use fxsave64 and fxrstor64 mnemonics instead of old-school rex64 prefix +339442 Fix testsuite build failure on OS X 10.9 +339542 Enable compilation with Intel's ICC compiler +339563 The DVB demux DMX_STOP ioctl doesn't have a wrapper +339688 Mac-specific ASM does not support .version directive (cpuid, + tronical and pushfpopf tests) +339745 Valgrind crash when check Marmalade app (partial fix) +339755 Fix known deliberate memory leak in setenv() on Mac OS X 10.9 +339778 Linux/TileGx platform support for Valgrind +339780 Fix known uninitialised read in pthread_rwlock_init() on Mac OS X 10.9 +339789 Fix none/tests/execve test on Mac OS X 10.9 +339808 Fix none/tests/rlimit64_nofile test on Mac OS X 10.9 +339820 vex amd64->IR: 0x66 0xF 0x3A 0x63 0xA 0x42 0x74 0x9 (pcmpistri $0x42) +340115 Fix none/tests/cmdline[1|2] tests on systems which define TMPDIR +340392 Allow user to select more accurate definedness checking in memcheck + to avoid invalid complaints on optimised code +340430 Fix some grammatical weirdness in the manual. +341238 Recognize GCC5/DWARFv5 DW_LANG constants (Go, C11, C++11, C++14) +341419 Signal handler ucontext_t not filled out correctly on OS X +341539 VG_(describe_addr) should not describe address as belonging to client + segment if it is past the heap end +341613 Enable building of manythreads and thread-exits tests on Mac OS X +341615 Fix none/tests/darwin/access_extended test on Mac OS X +341698 Valgrind's AESKEYGENASSIST gives wrong result in words 0 and 2 [..] +341789 aarch64: shmat fails with valgrind on ARMv8 +341997 MIPS64: Cavium OCTEON insns - immediate operand handled incorrectly +342008 valgrind.h needs type cast [..] for clang/llvm in 64-bit mode +342038 Unhandled syscalls on aarch64 (mbind/get/set_mempolicy) +342063 wrong format specifier for test mcblocklistsearch in gdbserver_tests +342117 Hang when loading PDB file for MSVC compiled Firefox under Wine +342221 socket connect false positive uninit memory for unknown af family +342353 Allow dumping full massif output while valgrind is still running +342571 Valgrind chokes on AVX compare intrinsic with _CMP_GE_QS + == 346476 + == 348387 + == 350593 +342603 Add I2C_SMBUS ioctl support +342635 OS X 10.10 (Yosemite) - missing system calls and fcntl code +342683 Mark memory past the initial brk limit as unaddressable +342783 arm: unhandled instruction 0xEEFE1ACA = "vcvt.s32.f32 s3, s3, #12" +342795 Internal glibc __GI_mempcpy call should be intercepted +342841 s390x: Support instructions fiebr(a) and fidbr(a) +343012 Unhandled syscall 319 (memfd_create) +343069 Patch updating v4l2 API support +343173 helgrind crash during stack unwind +343219 fix GET_STARTREGS for arm +343303 Fix known deliberate memory leak in setenv() on Mac OS X 10.10 +343306 OS X 10.10: UNKNOWN mach_msg unhandled MACH_SEND_TRAILER option +343332 Unhandled instruction 0x9E310021 (fcvtmu) on aarch64 +343335 unhandled instruction 0x1E638400 (fccmp) aarch64 +343523 OS X mach_ports_register: UNKNOWN task message [id 3403, to [..] +343525 OS X host_get_special_port: UNKNOWN host message [id 412, to [..] +343597 ppc64le: incorrect use of offseof macro +343649 OS X host_create_mach_voucher: UNKNOWN host message [id 222, to [..] +343663 OS X 10.10 Memchecj always reports a leak regardless of [..] +343732 Unhandled syscall 144 (setgid) on aarch64 +343733 Unhandled syscall 187 (msgctl and related) on aarch64 +343802 s390x: False positive "conditional jump or move depends on [..] +343902 --vgdb=yes doesn't break when --xml=yes is used +343967 Don't warn about setuid/setgid/setcap executable for directories +343978 Recognize DWARF5/GCC5 DW_LANG_Fortran 2003 and 2008 constants +344007 accept4 syscall unhandled on arm64 (242) and ppc64 (344) +344033 Helgrind on ARM32 loses track of mutex state in pthread_cond_wait +344054 www - update info for Solaris/illumos +344416 'make regtest' does not work cleanly on OS X +344235 Remove duplicate include of pub_core_aspacemgr.h +344279 syscall sendmmsg on arm64 (269) and ppc32/64 (349) unhandled +344295 syscall recvmmsg on arm64 (243) and ppc32/64 (343) unhandled +344307 2 unhandled syscalls on aarch64/arm64: umount2(39), mount (40) +344314 callgrind_annotate ... warnings about commands containing newlines +344318 socketcall should wrap recvmmsg and sendmmsg +344337 Fix unhandled syscall: mach:41 (_kernelrpc_mach_port_guard_trap) +344416 Fix 'make regtest' does not work cleanly on OS X +344499 Fix compilation for Linux kernel >= 4.0.0 +344512 OS X: unhandled syscall: unix:348 (__pthread_chdir), + unix:349 (__pthread_fchdir) +344559 Garbage collection of unused segment names in address space manager +344560 Fix stack traces missing penultimate frame on OS X +344621 Fix memcheck/tests/err_disable4 test on OS X +344686 Fix suppression for pthread_rwlock_init on OS X 10.10 +344702 Fix missing libobjc suppressions on OS X 10.10 + == 344543 +344936 Fix unhandled syscall: unix:473 (readlinkat) on OS X 10.10 +344939 Fix memcheck/tests/xml1 on OS X 10.10 +345016 helgrind/tests/locked_vs_unlocked2 is failing sometimes +345079 Fix build problems in VEX/useful/test_main.c +345126 Incorrect handling of VIDIOC_G_AUDIO and G_AUDOUT +345177 arm64: prfm (reg) not implemented +345215 Performance improvements for the register allocator +345248 add support for Solaris OS in valgrind +345338 TIOCGSERIAL and TIOCSSERIAL ioctl support on Linux +345394 Fix memcheck/tests/strchr on OS X +345637 Fix memcheck/tests/sendmsg on OS X +345695 Add POWERPC support for AT_DCACHESIZE and HWCAP2 +345824 Fix aspacem segment mismatch: seen with none/tests/bigcode +345887 Fix an assertion in the address space manager +345928 amd64: callstack only contains current function for small stacks +345984 disInstr(arm): unhandled instruction: 0xEE193F1E +345987 MIPS64: Implement cavium LHX instruction +346031 MIPS: Implement support for the CvmCount register (rhwr %0, 31) +346185 Fix typo saving altivec register v24 +346267 Compiler warnings for PPC64 code on call to LibVEX_GuestPPC64_get_XER() + and LibVEX_GuestPPC64_get_CR() +346270 Regression tests none/tests/jm_vec/isa_2_07 and + none/tests/test_isa_2_07_part2 have failures on PPC64 little endian +346307 fuse filesystem syscall deadlocks +346324 PPC64 missing support for lbarx, lharx, stbcx and sthcx instructions +346411 MIPS: SysRes::_valEx handling is incorrect +346416 Add support for LL_IOC_PATH2FID and LL_IOC_GETPARENT Lustre ioctls +346474 PPC64 Power 8, spr TEXASRU register not supported +346487 Compiler generates "note" about a future ABI change for PPC64 +346562 MIPS64: lwl/lwr instructions are performing 64bit loads + and causing spurious "invalid read of size 8" warnings +346801 Fix link error on OS X: _vgModuleLocal_sf_maybe_extend_stack +347151 Fix suppression for pthread_rwlock_init on OS X 10.8 +347233 Fix memcheck/tests/strchr on OS X 10.10 (Haswell) +347322 Power PC regression test cleanup +347379 valgrind --leak-check=full leak errors from system libs on OS X 10.8 + == 217236 +347389 unhandled syscall: 373 (Linux ARM syncfs) +347686 Patch set to cleanup PPC64 regtests +347978 Remove bash dependencies where not needed +347982 OS X: undefined symbols for architecture x86_64: "_global" [..] +347988 Memcheck: the 'impossible' happened: unexpected size for Addr (OSX/wine) + == 345929 +348102 Patch updating v4l2 API support +348247 amd64 front end: jno jumps wrongly when overflow is not set +348269 Improve mmap MAP_HUGETLB support. +348334 (ppc) valgrind does not simulate dcbfl - then my program terminates +348345 Assertion fails for negative lineno +348377 Unsupported ARM instruction: yield +348565 Fix detection of command line option availability for clang +348574 vex amd64->IR pcmpistri SSE4.2 unsupported (pcmpistri $0x18) +348728 Fix broken check for VIDIOC_G_ENC_INDEX +348748 Fix redundant condition +348890 Fix clang warning about unsupported --param inline-unit-growth=900 +348949 Bogus "ERROR: --ignore-ranges: suspiciously large range" +349034 Add Lustre ioctls LL_IOC_GROUP_LOCK and LL_IOC_GROUP_UNLOCK +349086 Fix UNKNOWN task message [id 3406, to mach_task_self(), [..] +349087 Fix UNKNOWN task message [id 3410, to mach_task_self(), [..] +349626 Implemented additional Xen hypercalls +349769 Clang/osx: ld: warning: -read_only_relocs cannot be used with x86_64 +349790 Clean up of the hardware capability checking utilities. +349828 memcpy intercepts memmove causing src/dst overlap error (ppc64 ld.so) +349874 Fix typos in source code +349879 memcheck: add handwritten assembly for helperc_LOADV* +349941 di_notify_mmap might create wrong start/size DebugInfoMapping +350062 vex x86->IR: 0x66 0xF 0x3A 0xB (ROUNDSD) on OS X +350202 Add limited param to 'monitor block_list' +350290 s390x: Support instructions fixbr(a) +350359 memcheck/tests/x86/fxsave hangs indefinetely on OS X +350809 Fix none/tests/async-sigs for Solaris +350811 Remove reference to --db-attach which has been removed. +350813 Memcheck/x86: enable handwritten assembly helpers for x86/Solaris too +350854 hard-to-understand code in VG_(load_ELF)() +351140 arm64 syscalls setuid (146) and setresgid (149) not implemented +351386 Solaris: Cannot run ld.so.1 under Valgrind +351474 Fix VG_(iseqsigset) as obvious +351531 Typo in /include/vki/vki-xen-physdev.h header guard +351756 Intercept platform_memchr$VARIANT$Haswell on OS X +351858 ldsoexec support on Solaris +351873 Newer gcc doesn't allow __builtin_tabortdc[i] in ppc32 mode +352130 helgrind reports false races for printfs using mempcpy on FILE* state +352284 s390: Conditional jump depends on uninitialised value(s) in vfprintf +352320 arm64 crash on none/tests/nestedfs +352765 Vbit test fails on Power 6 +352768 The mbar instruction is missing from the Power PC support +352769 Power PC program priority register (PPR) is not supported +n-i-bz Provide implementations of certain compiler builtins to support + compilers that may not provide those +n-i-bz Old STABS code is still being compiled, but never used. Remove it. +n-i-bz Fix compilation on distros with glibc < 2.5 +n-i-bz (vex 3098) Avoid generation of Neon insns on non-Neon hosts +n-i-bz Enable rt_sigpending syscall on ppc64 linux. +n-i-bz mremap did not work properly on shared memory +n-i-bz Fix incorrect sizeof expression in syswrap-xen.c reported by Coverity +n-i-bz In VALGRIND_PRINTF write out thread name, if any, to xml + +(3.11.0.TEST1: 8 September 2015, vex r3187, valgrind r15646) +(3.11.0.TEST2: 21 September 2015, vex r3193, valgrind r15667) +(3.11.0: 22 September 2015, vex r3195, valgrind r15674) + + + +Release 3.10.1 (25 November 2014) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.10.1 is a bug fix release. It fixes various bugs reported in 3.10.0 +and backports fixes for all reported missing AArch64 ARMv8 instructions +and syscalls from the trunk. If you package or deliver 3.10.0 for others +to use, you might want to consider upgrading to 3.10.1 instead. + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather +than mailing the developers (or mailing lists) directly -- bugs that +are not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +335440 arm64: ld1 (single structure) is not implemented +335713 arm64: unhanded instruction: prfm (immediate) +339020 ppc64: memcheck/tests/ppc64/power_ISA2_05 failing in nightly build +339182 ppc64: AvSplat ought to load destination vector register with [..] +339336 PPC64 store quad instruction (stq) is not supposed to change [..] +339433 ppc64 lxvw4x instruction uses four 32-byte loads +339645 Use correct tag names in sys_getdents/64 wrappers +339706 Fix false positive for ioctl(TIOCSIG) on linux +339721 assertion 'check_sibling == sibling' failed in readdwarf3.c ... +339853 arm64 times syscall unknown +339855 arm64 unhandled getsid/setsid syscalls +339858 arm64 dmb sy not implemented +339926 Unhandled instruction 0x1E674001 (frintx) on aarm64 +339927 Unhandled instruction 0x9E7100C6 (fcvtmu) on aarch64 +339938 disInstr(arm64): unhandled instruction 0x4F8010A4 (fmla) + == 339950 +339940 arm64: unhandled syscall: 83 (sys_fdatasync) + patch +340033 arm64: unhandled insn dmb ishld and some other isb-dmb-dsb variants +340028 unhandled syscalls for arm64 (msync, pread64, setreuid and setregid) +340036 arm64: Unhandled instruction ld4 (multiple structures, no offset) +340236 arm64: unhandled syscalls: mknodat, fchdir, chroot, fchownat +340509 arm64: unhandled instruction fcvtas +340630 arm64: fchmod (52) and fchown (55) syscalls not recognized +340632 arm64: unhandled instruction fcvtas +340722 Resolve "UNKNOWN attrlist flags 0:0x10000000" +340725 AVX2: Incorrect decoding of vpbroadcast{b,w} reg,reg forms +340788 warning: unhandled syscall: 318 (getrandom) +340807 disInstr(arm): unhandled instruction: 0xEE989B20 +340856 disInstr(arm64): unhandled instruction 0x1E634C45 (fcsel) +340922 arm64: unhandled getgroups/setgroups syscalls +350251 Fix typo in VEX utility program (test_main.c). +350407 arm64: unhandled instruction ucvtf (vector, integer) +350809 none/tests/async-sigs breaks when run under cron on Solaris +350811 update README.solaris after r15445 +350813 Use handwritten memcheck assembly helpers on x86/Solaris [..] +350854 strange code in VG_(load_ELF)() +351140 arm64 syscalls setuid (146) and setresgid (149) not implemented +n-i-bz DRD and Helgrind: Handle Imbe_CancelReservation (clrex on ARM) +n-i-bz Add missing ]] to terminate CDATA. +n-i-bz Glibc versions prior to 2.5 do not define PTRACE_GETSIGINFO +n-i-bz Enable sys_fadvise64_64 on arm32. +n-i-bz Add test cases for all remaining AArch64 SIMD, FP and memory insns. +n-i-bz Add test cases for all known arm64 load/store instructions. +n-i-bz PRE(sys_openat): when checking whether ARG1 == VKI_AT_FDCWD [..] +n-i-bz Add detection of old ppc32 magic instructions from bug 278808. +n-i-bz exp-dhat: Implement missing function "dh_malloc_usable_size". +n-i-bz arm64: Implement "fcvtpu w, s". +n-i-bz arm64: implement ADDP and various others +n-i-bz arm64: Implement {S,U}CVTF (scalar, fixedpt). +n-i-bz arm64: enable FCVT{A,N}S X,S. + +(3.10.1: 25 November 2014, vex r3026, valgrind r14785) + + + +Release 3.10.0 (10 September 2014) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +3.10.0 is a feature release with many improvements and the usual +collection of bug fixes. + +This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux, +PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, +MIPS64/Linux, ARM/Android, MIPS32/Android, X86/Android, X86/MacOSX 10.9 +and AMD64/MacOSX 10.9. Support for MacOSX 10.8 and 10.9 is +significantly improved relative to the 3.9.0 release. + +* ================== PLATFORM CHANGES ================= + +* Support for the 64-bit ARM Architecture (AArch64 ARMv8). This port + is mostly complete, and is usable, but some SIMD instructions are as + yet unsupported. + +* Support for little-endian variant of the 64-bit POWER architecture. + +* Support for Android on MIPS32. + +* Support for 64bit FPU on MIPS32 platforms. + +* Both 32- and 64-bit executables are supported on MacOSX 10.8 and 10.9. + +* Configuration for and running on Android targets has changed. + See README.android in the source tree for details. + +* ================== DEPRECATED FEATURES ================= + +* --db-attach is now deprecated and will be removed in the next + valgrind feature release. The built-in GDB server capabilities are + superior and should be used instead. Learn more here: + http://valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.gdbserver + +* ==================== TOOL CHANGES ==================== + +* Memcheck: + + - Client code can now selectively disable and re-enable reporting of + invalid address errors in specific ranges using the new client + requests VALGRIND_DISABLE_ADDR_ERROR_REPORTING_IN_RANGE and + VALGRIND_ENABLE_ADDR_ERROR_REPORTING_IN_RANGE. + + - Leak checker: there is a new leak check heuristic called + "length64". This is used to detect interior pointers pointing 8 + bytes inside a block, on the assumption that the first 8 bytes + holds the value "block size - 8". This is used by + sqlite3MemMalloc, for example. + + - Checking of system call parameters: if a syscall parameter + (e.g. bind struct sockaddr, sendmsg struct msghdr, ...) has + several fields not initialised, an error is now reported for each + field. Previously, an error was reported only for the first + uninitialised field. + + - Mismatched alloc/free checking: a new flag + --show-mismatched-frees=no|yes [yes] makes it possible to turn off + such checks if necessary. + +* Helgrind: + + - Improvements to error messages: -Despite this being a snapshot of the CVS head, it is believed to be -quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so --- and therefore suitable for widespread use. Please let us know asap -if it causes problems for you. + o Race condition error message involving heap allocated blocks also + show the thread number that allocated the raced-on block. -Two reasons for releasing a snapshot now are: + o All locks referenced by an error message are now announced. + Previously, some error messages only showed the lock addresses. -- It's been a while since 1.9.6, and this snapshot fixes - various problems that 1.9.6 has with threaded programs - on glibc-2.3.X based systems. + o The message indicating where a lock was first observed now also + describes the address/location of the lock. -- So as to make available improvements in the 2.0 line. + - Helgrind now understands the Ada task termination rules and + creates a happens-before relationship between a terminated task + and its master. This avoids some false positives and avoids a big + memory leak when a lot of Ada tasks are created and terminated. + The interceptions are only activated with forthcoming releases of + gnatpro >= 7.3.0w-20140611 and gcc >= 5.0. -Major changes in 20030716, as compared to 1.9.6: + - A new GDB server monitor command "info locks" giving the list of + locks, their location, and their status. -- More fixes to threading support on glibc-2.3.1 and 2.3.2-based - systems (SuSE 8.2, Red Hat 9). If you have had problems - with inconsistent/illogical behaviour of errno, h_errno or the DNS - resolver functions in threaded programs, 20030716 should improve - matters. This snapshot seems stable enough to run OpenOffice.org - 1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big - threaded app if ever I saw one. +* Callgrind: -- Automatic generation of suppression records; you no longer - need to write them by hand. Use --gen-suppressions=yes. + - callgrind_control now supports the --vgdb-prefix argument, + which is needed if valgrind was started with this same argument. -- strcpy/memcpy/etc check their arguments for overlaps, when - running with the Memcheck or Addrcheck skins. +* ==================== OTHER CHANGES ==================== -- malloc_usable_size() is now supported. +* Unwinding through inlined function calls. Stack unwinding can now + make use of Dwarf3 inlined-unwind information if it is available. + The practical effect is that inlined calls become visible in stack + traces. The suppression matching machinery has been adjusted + accordingly. This is controlled by the new option + --read-inline-info=yes|no. Currently this is enabled by default + only on Linux and Android targets and only for the tools Memcheck, + Helgrind and DRD. -- new client requests: - - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS: - useful with regression testing - - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions - on real CPU (use with caution!) +* Valgrind can now read EXIDX unwind information on 32-bit ARM + targets. If an object contains both CFI and EXIDX unwind + information, Valgrind will prefer the CFI over the EXIDX. This + facilitates unwinding through system libraries on arm-android + targets. + +* Address description logic has been improved and is now common + between Memcheck and Helgrind, resulting in better address + descriptions for some kinds of error messages. + +* Error messages about dubious arguments (eg, to malloc or calloc) are + output like other errors. This means that they can be suppressed + and they have a stack trace. + +* The C++ demangler has been updated for better C++11 support. + +* New and modified GDB server monitor features: + + - Thread local variables/storage (__thread) can now be displayed. + + - The GDB server monitor command "v.info location
" + displays information about an address. The information produced + depends on the tool and on the options given to valgrind. + Possibly, the following are described: global variables, local + (stack) variables, allocated or freed blocks, ... + + - The option "--vgdb-stop-at=event1,event2,..." allows the user to + ask the GDB server to stop at the start of program execution, at + the end of the program execution and on Valgrind internal errors. + + - A new monitor command "v.info stats" shows various Valgrind core + and tool statistics. + + - A new monitor command "v.set hostvisibility" allows the GDB server + to provide access to Valgrind internal host status/memory. + +* A new option "--aspace-minaddr=
" can in some situations + allow the use of more memory by decreasing the address above which + Valgrind maps memory. It can also be used to solve address + conflicts with system libraries by increasing the default value. + See user manual for details. + +* The amount of memory used by Valgrind to store debug info (unwind + info, line number information and symbol data) has been + significantly reduced, even though Valgrind now reads more + information in order to support unwinding of inlined function calls. + +* Dwarf3 handling with --read-var-info=yes has been improved: + + - Ada and C struct containing VLAs no longer cause a "bad DIE" error + + - Code compiled with + -ffunction-sections -fdata-sections -Wl,--gc-sections + no longer causes assertion failures. + +* Improved checking for the --sim-hints= and --kernel-variant= + options. Unknown strings are now detected and reported to the user + as a usage error. + +* The semantics of stack start/end boundaries in the valgrind.h + VALGRIND_STACK_REGISTER client request has been clarified and + documented. The convention is that start and end are respectively + the lowest and highest addressable bytes of the stack. + +* ==================== FIXED BUGS ==================== + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather +than mailing the developers (or mailing lists) directly -- bugs that +are not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +175819 Support for ipv6 socket reporting with --track-fds +232510 make distcheck fails +249435 Analyzing wine programs with callgrind triggers a crash +278972 support for inlined function calls in stacktraces and suppression + == 199144 +291310 FXSAVE instruction marks memory as undefined on amd64 +303536 ioctl for SIOCETHTOOL (ethtool(8)) isn't wrapped +308729 vex x86->IR: unhandled instruction bytes 0xf 0x5 (syscall) +315199 vgcore file for threaded app does not show which thread crashed +315952 tun/tap ioctls are not supported +323178 Unhandled instruction: PLDW register (ARM) +323179 Unhandled instruction: PLDW immediate (ARM) +324050 Helgrind: SEGV because of unaligned stack when using movdqa +325110 Add test-cases for Power ISA 2.06 insns: divdo/divdo. and divduo/divduo. +325124 [MIPSEL] Compilation error +325477 Phase 4 support for IBM Power ISA 2.07 +325538 cavium octeon mips64, valgrind reported "dumping core" [...] +325628 Phase 5 support for IBM Power ISA 2.07 +325714 Empty vgcore but RLIMIT_CORE is big enough (too big) +325751 Missing the two privileged Power PC Transactional Memory Instructions +325816 Phase 6 support for IBM Power ISA 2.07 +325856 Make SGCheck fail gracefully on unsupported platforms +326026 Iop names for count leading zeros/sign bits incorrectly imply [..] +326436 DRD: False positive in libstdc++ std::list::push_back +326444 Cavium MIPS Octeon Specific Load Indexed Instructions +326462 Refactor vgdb to isolate invoker stuff into separate module +326469 amd64->IR: 0x66 0xF 0x3A 0x63 0xC1 0xE (pcmpistri 0x0E) +326623 DRD: false positive conflict report in a field assignment +326724 Valgrind does not compile on OSX 1.9 Mavericks +326816 Intercept for __strncpy_sse2_unaligned missing? +326921 coregrind fails to compile m_trampoline.S with MIPS/Linux port of V +326983 Clear direction flag after tests on amd64. +327212 Do not prepend the current directory to absolute path names. +327223 Support for Cavium MIPS Octeon Atomic and Count Instructions +327238 Callgrind Assertion 'passed <= last_bb->cjmp_count' failed +327284 s390x: Fix translation of the risbg instruction +327639 vex amd64->IR pcmpestri SSE4.2 instruction is unsupported 0x34 +327837 dwz compressed alternate .debug_info and .debug_str not read correctly +327916 DW_TAG_typedef may have no name +327943 s390x: add a redirection for the 'index' function +328100 XABORT not implemented +328205 Implement additional Xen hypercalls +328454 add support Backtraces with ARM unwind tables (EXIDX) +328455 s390x: SIGILL after emitting wrong register pair for ldxbr +328711 valgrind.1 manpage "memcheck options" section is badly generated +328878 vex amd64->IR pcmpestri SSE4.2 instruction is unsupported 0x14 +329612 Incorrect handling of AT_BASE for image execution +329694 clang warns about using uninitialized variable +329956 valgrind crashes when lmw/stmw instructions are used on ppc64 +330228 mmap must align to VKI_SHMLBA on mips32 +330257 LLVM does not support `-mno-dynamic-no-pic` option +330319 amd64->IR: unhandled instruction bytes: 0xF 0x1 0xD5 (xend) +330459 --track-fds=yes doesn't track eventfds +330469 Add clock_adjtime syscall support +330594 Missing sysalls on PowerPC / uClibc +330622 Add test to regression suite for POWER instruction: dcbzl +330939 Support for AMD's syscall instruction on x86 + == 308729 +330941 Typo in PRE(poll) syscall wrapper +331057 unhandled instruction: 0xEEE01B20 (vfma.f64) (has patch) +331254 Fix expected output for memcheck/tests/dw4 +331255 Fix race condition in test none/tests/coolo_sigaction +331257 Fix type of jump buffer in test none/tests/faultstatus +331305 configure uses bash specific syntax +331337 s390x WARNING: unhandled syscall: 326 (dup3) +331380 Syscall param timer_create(evp) points to uninitialised byte(s) +331476 Patch to handle ioctl 0x5422 on Linux (x86 and amd64) +331829 Unexpected ioctl opcode sign extension +331830 ppc64: WARNING: unhandled syscall: 96/97 +331839 drd/tests/sem_open specifies invalid semaphore name +331847 outcome of drd/tests/thread_name is nondeterministic +332037 Valgrind cannot handle Thumb "add pc, reg" +332055 drd asserts on platforms with VG_STACK_REDZONE_SZB == 0 and + consistency checks enabled +332263 intercepts for pthread_rwlock_timedrdlock and + pthread_rwlock_timedwrlock are incorrect +332265 drd could do with post-rwlock_init and pre-rwlock_destroy + client requests +332276 Implement additional Xen hypercalls +332658 ldrd.w r1, r2, [PC, #imm] does not adjust for 32bit alignment +332765 Fix ms_print to create temporary files in a proper directory +333072 drd: Add semaphore annotations +333145 Tests for missaligned PC+#imm access for arm +333228 AAarch64 Missing instruction encoding: mrs %[reg], ctr_el0 +333230 AAarch64 missing instruction encodings: dc, ic, dsb. +333248 WARNING: unhandled syscall: unix:443 +333428 ldr.w pc [rD, #imm] instruction leads to assertion +333501 cachegrind: assertion: Cache set count is not a power of two. + == 336577 + == 292281 +333666 Recognize MPX instructions and bnd prefix. +333788 Valgrind does not support the CDROM_DISC_STATUS ioctl (has patch) +333817 Valgrind reports the memory areas written to by the SG_IO + ioctl as untouched +334049 lzcnt fails silently (x86_32) +334384 Valgrind does not have support Little Endian support for + IBM POWER PPC 64 +334585 recvmmsg unhandled (+patch) (arm) +334705 sendmsg and recvmsg should guard against bogus msghdr fields. +334727 Build fails with -Werror=format-security +334788 clarify doc about --log-file initial program directory +334834 PPC64 Little Endian support, patch 2 +334836 PPC64 Little Endian support, patch 3 testcase fixes +334936 patch to fix false positives on alsa SNDRV_CTL_* ioctls +335034 Unhandled ioctl: HCIGETDEVLIST +335155 vgdb, fix error print statement. +335262 arm64: movi 8bit version is not supported +335263 arm64: dmb instruction is not implemented +335441 unhandled ioctl 0x8905 (SIOCATMARK) when running wine under valgrind +335496 arm64: sbc/abc instructions are not implemented +335554 arm64: unhandled instruction: abs +335564 arm64: unhandled instruction: fcvtpu Xn, Sn +335735 arm64: unhandled instruction: cnt +335736 arm64: unhandled instruction: uaddlv +335848 arm64: unhandled instruction: {s,u}cvtf +335902 arm64: unhandled instruction: sli +335903 arm64: unhandled instruction: umull (vector) +336055 arm64: unhandled instruction: mov (element) +336062 arm64: unhandled instruction: shrn{,2} +336139 mip64: [...] valgrind hangs and spins on a single core [...] +336189 arm64: unhandled Instruction: mvn +336435 Valgrind hangs in pthread_spin_lock consuming 100% CPU +336619 valgrind --read-var-info=yes doesn't handle DW_TAG_restrict_type +336772 Make moans about unknown ioctls more informative +336957 Add a section about the Solaris/illumos port on the webpage +337094 ifunc wrapper is broken on ppc64 +337285 fcntl commands F_OFD_SETLK, F_OFD_SETLKW, and F_OFD_GETLK not supported +337528 leak check heuristic for block prefixed by length as 64bit number +337740 Implement additional Xen hypercalls +337762 guest_arm64_toIR.c:4166 (dis_ARM64_load_store): Assertion `0' failed. +337766 arm64-linux: unhandled syscalls mlock (228) and mlockall (230) +337871 deprecate --db-attach +338023 Add support for all V4L2/media ioctls +338024 inlined functions are not shown if DW_AT_ranges is used +338106 Add support for 'kcmp' syscall +338115 DRD: computed conflict set differs from actual after fork +338160 implement display of thread local storage in gdbsrv +338205 configure.ac and check for -Wno-tautological-compare +338300 coredumps are missing one byte of every segment +338445 amd64 vbit-test fails with unknown opcodes used by arm64 VEX +338499 --sim-hints parsing broken due to wrong order in tokens +338615 suppress glibc 2.20 optimized strcmp implementation for ARMv7 +338681 Unable to unwind through clone thread created on i386-linux +338698 race condition between gdbsrv and vgdb on startup +338703 helgrind on arm-linux gets false positives in dynamic loader +338791 alt dwz files can be relative of debug/main file +338878 on MacOS: assertion 'VG_IS_PAGE_ALIGNED(clstack_end+1)' failed +338932 build V-trunk with gcc-trunk +338974 glibc 2.20 changed size of struct sigaction sa_flags field on s390 +345079 Fix build problems in VEX/useful/test_main.c +n-i-bz Fix KVM_CREATE_IRQCHIP ioctl handling +n-i-bz s390x: Fix memory corruption for multithreaded applications +n-i-bz vex arm->IR: allow PC as basereg in some LDRD cases +n-i-bz internal error in Valgrind if vgdb transmit signals when ptrace invoked +n-i-bz Fix mingw64 support in valgrind.h (dev@, 9 May 2014) +n-i-bz drd manual: Document how to C++11 programs that use class "std::thread" +n-i-bz Add command-line option --default-suppressions +n-i-bz Add support for BLKDISCARDZEROES ioctl +n-i-bz ppc32/64: fix a regression with the mtfsb0/mtfsb1 instructions +n-i-bz Add support for sys_pivot_root and sys_unshare + +(3.10.0.BETA1: 2 September 2014, vex r2940, valgrind r14428) +(3.10.0.BETA2: 8 September 2014, vex r2950, valgrind r14503) +(3.10.0: 10 September 2014, vex r2950, valgrind r14514) + + + +Release 3.9.0 (31 October 2013) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.9.0 is a feature release with many improvements and the usual +collection of bug fixes. -- The GDB attach mechanism is more flexible. Allow the GDB to - be run to be specified by --gdb-path=/path/to/gdb, and specify - which file descriptor V will read its input from with - --input-fd=. +This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux, +PPC64/Linux, S390X/Linux, MIPS32/Linux, MIPS64/Linux, ARM/Android, +X86/Android, X86/MacOSX 10.7 and AMD64/MacOSX 10.7. Support for +MacOSX 10.8 is significantly improved relative to the 3.8.0 release. -- Cachegrind gives more accurate results (wasn't tracking instructions in - malloc() and friends previously, is now). +* ================== PLATFORM CHANGES ================= -- Complete support for the MMX instruction set. +* Support for MIPS64 LE and BE running Linux. Valgrind has been + tested on MIPS64 Debian Squeeze and Debian Wheezy distributions. -- Partial support for the SSE and SSE2 instruction sets. Work for this - is ongoing. About half the SSE/SSE2 instructions are done, so - some SSE based programs may work. Currently you need to specify - --skin=addrcheck. Basically not suitable for real use yet. +* Support for MIPS DSP ASE on MIPS32 platforms. -- Significant speedups (10%-20%) for standard memory checking. +* Support for s390x Decimal Floating Point instructions on hosts that + have the DFP facility installed. -- Fix assertion failure in pthread_once(). +* Support for POWER8 (Power ISA 2.07) instructions -- Fix this: - valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select): - Assertion `ms_end >= ms_now' failed. +* Support for Intel AVX2 instructions. This is available only on 64 + bit code. -- Implement pthread_mutexattr_setpshared. +* Initial support for Intel Transactional Synchronization Extensions, + both RTM and HLE. -- Understand Pentium 4 branch hints. Also implemented a couple more - obscure x86 instructions. +* Initial support for Hardware Transactional Memory on POWER. -- Lots of other minor bug fixes. +* Improved support for MacOSX 10.8 (64-bit only). Memcheck can now + run large GUI apps tolerably well. -- We have a decent regression test system, for the first time. - This doesn't help you directly, but it does make it a lot easier - for us to track the quality of the system, especially across - multiple linux distributions. +* ==================== TOOL CHANGES ==================== - You can run the regression tests with 'make regtest' after 'make - install' completes. On SuSE 8.2 and Red Hat 9 I get this: - - == 84 tests, 0 stderr failures, 0 stdout failures == +* Memcheck: - On Red Hat 8, I get this: + - Improvements in handling of vectorised code, leading to + significantly fewer false error reports. You need to use the flag + --partial-loads-ok=yes to get the benefits of these changes. - == 84 tests, 2 stderr failures, 1 stdout failure == - corecheck/tests/res_search (stdout) - memcheck/tests/sigaltstack (stderr) + - Better control over the leak checker. It is now possible to + specify which leak kinds (definite/indirect/possible/reachable) + should be displayed, which should be regarded as errors, and which + should be suppressed by a given leak suppression. This is done + using the options --show-leak-kinds=kind1,kind2,.., + --errors-for-leak-kinds=kind1,kind2,.. and an optional + "match-leak-kinds:" line in suppression entries, respectively. - sigaltstack is probably harmless. res_search doesn't work - on R H 8 even running natively, so I'm not too worried. + Note that generated leak suppressions contain this new line and + are therefore more specific than in previous releases. To get the + same behaviour as previous releases, remove the "match-leak-kinds:" + line from generated suppressions before using them. - On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures: + - Reduced "possible leak" reports from the leak checker by the use + of better heuristics. The available heuristics provide detection + of valid interior pointers to std::stdstring, to new[] allocated + arrays with elements having destructors and to interior pointers + pointing to an inner part of a C++ object using multiple + inheritance. They can be selected individually using the + option --leak-check-heuristics=heur1,heur2,... - == 84 tests, 2 stderr failures, 1 stdout failure == - corecheck/tests/pth_atfork1 (stdout) - corecheck/tests/pth_atfork1 (stderr) - memcheck/tests/sigaltstack (stderr) + - Better control of stacktrace acquisition for heap-allocated + blocks. Using the --keep-stacktraces option, it is possible to + control independently whether a stack trace is acquired for each + allocation and deallocation. This can be used to create better + "use after free" errors or to decrease Valgrind's resource + consumption by recording less information. - You need to run on a PII system, at least, since some tests - contain P6-specific instructions, and the test machine needs - access to the internet so that corecheck/tests/res_search - (a test that the DNS resolver works) can function. + - Better reporting of leak suppression usage. The list of used + suppressions (shown when the -v option is given) now shows, for + each leak suppressions, how many blocks and bytes it suppressed + during the last leak search. -As ever, thanks for the vast amount of feedback :) and bug reports :( -We may not answer all messages, but we do at least look at all of -them, and tend to fix the most frequently reported bugs. +* Helgrind: + - False errors resulting from the use of statically initialised + mutexes and condition variables (PTHREAD_MUTEX_INITIALISER, etc) + have been removed. + - False errors resulting from the use of pthread_cond_waits that + timeout, have been removed. -Version 1.9.6 (7 May 2003 or thereabouts) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* ==================== OTHER CHANGES ==================== -Major changes in 1.9.6: +* Some attempt to tune Valgrind's space requirements to the expected + capabilities of the target: + + - The default size of the translation cache has been reduced from 8 + sectors to 6 on Android platforms, since each sector occupies + about 40MB when using Memcheck. + + - The default size of the translation cache has been increased to 16 + sectors on all other platforms, reflecting the fact that large + applications require instrumentation and storage of huge amounts + of code. For similar reasons, the number of memory mapped + segments that can be tracked has been increased by a factor of 6. + + - In all cases, the maximum number of sectors in the translation + cache can be controlled by the new flag --num-transtab-sectors. + +* Changes in how debug info (line numbers, etc) is read: + + - Valgrind no longer temporarily mmaps the entire object to read + from it. Instead, reading is done through a small fixed sized + buffer. This avoids virtual memory usage spikes when Valgrind + reads debuginfo from large shared objects. + + - A new experimental remote debug info server. Valgrind can read + debug info from a different machine (typically, a build host) + where debuginfo objects are stored. This can save a lot of time + and hassle when running Valgrind on resource-constrained targets + (phones, tablets) when the full debuginfo objects are stored + somewhere else. This is enabled by the --debuginfo-server= + option. + + - Consistency checking between main and debug objects can be + disabled using the --allow-mismatched-debuginfo option. + +* Stack unwinding by stack scanning, on ARM. Unwinding by stack + scanning can recover stack traces in some cases when the normal + unwind mechanisms fail. Stack scanning is best described as "a + nasty, dangerous and misleading hack" and so is disabled by default. + Use --unw-stack-scan-thresh and --unw-stack-scan-frames to enable + and control it. + +* Detection and merging of recursive stack frame cycles. When your + program has recursive algorithms, this limits the memory used by + Valgrind for recorded stack traces and avoids recording + uninteresting repeated calls. This is controlled by the command + line option --merge-recursive-frame and by the monitor command + "v.set merge-recursive-frames". + +* File name and line numbers for used suppressions. The list of used + suppressions (shown when the -v option is given) now shows, for each + used suppression, the file name and line number where the suppression + is defined. + +* New and modified GDB server monitor features: + + - valgrind.h has a new client request, VALGRIND_MONITOR_COMMAND, + that can be used to execute gdbserver monitor commands from the + client program. + + - A new monitor command, "v.info open_fds", that gives the list of + open file descriptors and additional details. + + - An optional message in the "v.info n_errs_found" monitor command, + for example "v.info n_errs_found test 1234 finished", allowing a + comment string to be added to the process output, perhaps for the + purpose of separating errors of different tests or test phases. + + - A new monitor command "v.info execontext" that shows information + about the stack traces recorded by Valgrind. + + - A new monitor command "v.do expensive_sanity_check_general" to run + some internal consistency checks. + +* New flag --sigill-diagnostics to control whether a diagnostic + message is printed when the JIT encounters an instruction it can't + translate. The actual behavior -- delivery of SIGILL to the + application -- is unchanged. + +* The maximum amount of memory that Valgrind can use on 64 bit targets + has been increased from 32GB to 64GB. This should make it possible + to run applications on Memcheck that natively require up to about 35GB. + +* ==================== FIXED BUGS ==================== + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather +than mailing the developers (or mailing lists) directly -- bugs that +are not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +123837 system call: 4th argument is optional, depending on cmd +135425 memcheck should tell you where Freed blocks were Mallocd +164485 VG_N_SEGNAMES and VG_N_SEGMENTS are (still) too small +207815 Adds some of the drm ioctls to syswrap-linux.c +251569 vex amd64->IR: 0xF 0x1 0xF9 0xBF 0x90 0xD0 0x3 0x0 (RDTSCP) +252955 Impossible to compile with ccache +253519 Memcheck reports auxv pointer accesses as invalid reads. +263034 Crash when loading some PPC64 binaries +269599 Increase deepest backtrace +274695 s390x: Support "compare to/from logical" instructions (z196) +275800 s390x: Autodetect cache info (part 2) +280271 Valgrind reports possible memory leaks on still-reachable std::string +284540 Memcheck shouldn't count suppressions matching still-reachable [..] +289578 Backtraces with ARM unwind tables (stack scan flags) +296311 Wrong stack traces due to -fomit-frame-pointer (x86) +304832 ppc32: build failure +305431 Use find_buildid shdr fallback for separate .debug files +305728 Add support for AVX2 instructions +305948 ppc64: code generation for ShlD64 / ShrD64 asserts +306035 s390x: Fix IR generation for LAAG and friends +306054 s390x: Condition code computation for convert-to-int/logical +306098 s390x: alternate opcode form for convert to/from fixed +306587 Fix cache line detection from auxiliary vector for PPC. +306783 Mips unhandled syscall : 4025 / 4079 / 4182 +307038 DWARF2 CFI reader: unhandled DW_OP_ opcode 0x8 (DW_OP_const1u et al) +307082 HG false positive: pthread_cond_destroy: destruction of unknown CV +307101 sys_capget second argument can be NULL +307103 sys_openat: If pathname is absolute, then dirfd is ignored. +307106 amd64->IR: f0 0f c0 02 (lock xadd byte) +307113 s390x: DFP support +307141 valgrind does't work in mips-linux system +307155 filter_gdb should filter out syscall-template.S T_PSEUDO +307285 x86_amd64 feature test for avx in test suite is wrong +307290 memcheck overlap testcase needs memcpy version filter +307463 Please add "&limit=0" to the "all open bugs" link +307465 --show-possibly-lost=no should reduce the error count / exit code +307557 Leaks on Mac OS X 10.7.5 libraries at ImageLoader::recursiveInit[..] +307729 pkgconfig support broken valgrind.pc +307828 Memcheck false errors SSE optimized wcscpy, wcscmp, wcsrchr, wcschr +307955 Building valgrind 3.7.0-r4 fails in Gentoo AMD64 when using clang +308089 Unhandled syscall on ppc64: prctl +308135 PPC32 MPC8xx has 16 bytes cache size +308321 testsuite memcheck filter interferes with gdb_filter +308333 == 307106 +308341 vgdb should report process exit (or fatal signal) +308427 s390 memcheck reports tsearch cjump/cmove depends on uninit +308495 Remove build dependency on installed Xen headers +308573 Internal error on 64-bit instruction executed in 32-bit mode +308626 == 308627 +308627 pmovmskb validity bit propagation is imprecise +308644 vgdb command for having the info for the track-fds option +308711 give more info about aspacemgr and arenas in out_of_memory +308717 ARM: implement fixed-point VCVT.F64.[SU]32 +308718 ARM implement SMLALBB family of instructions +308886 Missing support for PTRACE_SET/GETREGSET +308930 syscall name_to_handle_at (303 on amd64) not handled +309229 V-bit tester does not report number of tests generated +309323 print unrecognized instuction on MIPS +309425 Provide a --sigill-diagnostics flag to suppress illegal [..] +309427 SSE optimized stpncpy trigger uninitialised value [..] errors +309430 Self hosting ppc64 encounters a vassert error on operand type +309600 valgrind is a bit confused about 0-sized sections +309823 Generate errors for still reachable blocks +309921 PCMPISTRI validity bit propagation is imprecise +309922 none/tests/ppc64/test_dfp5 sometimes fails +310169 The Iop_CmpORD class of Iops is not supported by the vbit checker. +310424 --read-var-info does not properly describe static variables +310792 search additional path for debug symbols +310931 s390x: Message-security assist (MSA) instruction extension [..] +311100 PPC DFP implementation of the integer operands is inconsistent [..] +311318 ARM: "128-bit constant is not implemented" error message +311407 ssse3 bcopy (actually converted memcpy) causes invalid read [..] +311690 V crashes because it redirects branches inside of a redirected function +311880 x86_64: make regtest hangs at shell_valid1 +311922 WARNING: unhandled syscall: 170 +311933 == 251569 +312171 ppc: insn selection for DFP +312571 Rounding mode call wrong for the DFP Iops [..] +312620 Change to Iop_D32toD64 [..] for s390 DFP support broke ppc [..] +312913 Dangling pointers error should also report the alloc stack trace +312980 Building on Mountain Lion generates some compiler warnings +313267 Adding MIPS64/Linux port to Valgrind +313348 == 251569 +313354 == 251569 +313811 Buffer overflow in assert_fail +314099 coverity pointed out error in VEX guest_ppc_toIR.c insn_suffix +314269 ppc: dead code in insn selection +314718 ARM: implement integer divide instruction (sdiv and udiv) +315345 cl-format.xml and callgrind/dump.c don't agree on using cfl= or cfi= +315441 sendmsg syscall should ignore unset msghdr msg_flags +315534 msgrcv inside a thread causes valgrind to hang (block) +315545 Assertion '(UChar*)sec->tt[tteNo].tcptr <= (UChar*)hcode' failed +315689 disInstr(thumb): unhandled instruction: 0xF852 0x0E10 (LDRT) +315738 disInstr(arm): unhandled instruction: 0xEEBE0BEE (vcvt.s32.f64) +315959 valgrind man page has bogus SGCHECK (and no BBV) OPTIONS section +316144 valgrind.1 manpage contains unknown ??? strings [..] +316145 callgrind command line options in manpage reference (unknown) [..] +316145 callgrind command line options in manpage reference [..] +316181 drd: Fixed a 4x slowdown for certain applications +316503 Valgrind does not support SSE4 "movntdqa" instruction +316535 Use of |signed int| instead of |size_t| in valgrind messages +316696 fluidanimate program of parsec 2.1 stuck +316761 syscall open_by_handle_at (304 on amd64, 342 on x86) not handled +317091 Use -Wl,-Ttext-segment when static linking if possible [..] +317186 "Impossible happens" when occurs VCVT instruction on ARM +317318 Support for Threading Building Blocks "scalable_malloc" +317444 amd64->IR: 0xC4 0x41 0x2C 0xC2 0xD2 0x8 (vcmpeq_uqps) +317461 Fix BMI assembler configure check and avx2/bmi/fma vgtest prereqs +317463 bmi testcase IR SANITY CHECK FAILURE +317506 memcheck/tests/vbit-test fails with unknown opcode after [..] +318050 libmpiwrap fails to compile with out-of-source build +318203 setsockopt handling needs to handle SOL_SOCKET/SO_ATTACH_FILTER +318643 annotate_trace_memory tests infinite loop on arm and ppc [..] +318773 amd64->IR: 0xF3 0x48 0x0F 0xBC 0xC2 0xC3 0x66 0x0F +318929 Crash with: disInstr(thumb): 0xF321 0x0001 (ssat16) +318932 Add missing PPC64 and PPC32 system call support +319235 --db-attach=yes is broken with Yama (ptrace scoping) enabled +319395 Crash with unhandled instruction on STRT (Thumb) instructions +319494 VEX Makefile-gcc standalone build update after r2702 +319505 [MIPSEL] Crash: unhandled UNRAY operator. +319858 disInstr(thumb): unhandled instruction on instruction STRBT +319932 disInstr(thumb): unhandled instruction on instruction STRHT +320057 Problems when we try to mmap more than 12 memory pages on MIPS32 +320063 Memory from PTRACE_GET_THREAD_AREA is reported uninitialised +320083 disInstr(thumb): unhandled instruction on instruction LDRBT +320116 bind on AF_BLUETOOTH produces warnings because of sockaddr_rc padding +320131 WARNING: unhandled syscall: 369 on ARM (prlimit64) +320211 Stack buffer overflow in ./coregrind/m_main.c with huge TMPDIR +320661 vgModuleLocal_read_elf_debug_info(): "Assertion '!di->soname' +320895 add fanotify support (patch included) +320998 vex amd64->IR pcmpestri and pcmpestrm SSE4.2 instruction +321065 Valgrind updates for Xen 4.3 +321148 Unhandled instruction: PLI (Thumb 1, 2, 3) +321363 Unhandled instruction: SSAX (ARM + Thumb) +321364 Unhandled instruction: SXTAB16 (ARM + Thumb) +321466 Unhandled instruction: SHASX (ARM + Thumb) +321467 Unhandled instruction: SHSAX (ARM + Thumb) +321468 Unhandled instruction: SHSUB16 (ARM + Thumb) +321619 Unhandled instruction: SHSUB8 (ARM + Thumb) +321620 Unhandled instruction: UASX (ARM + Thumb) +321621 Unhandled instruction: USAX (ARM + Thumb) +321692 Unhandled instruction: UQADD16 (ARM + Thumb) +321693 Unhandled instruction: LDRSBT (Thumb) +321694 Unhandled instruction: UQASX (ARM + Thumb) +321696 Unhandled instruction: UQSAX (Thumb + ARM) +321697 Unhandled instruction: UHASX (ARM + Thumb) +321703 Unhandled instruction: UHSAX (ARM + Thumb) +321704 Unhandled instruction: REVSH (ARM + Thumb) +321730 Add cg_diff and cg_merge man pages +321738 Add vgdb and valgrind-listener man pages +321814 == 315545 +321891 Unhandled instruction: LDRHT (Thumb) +321960 pthread_create() then alloca() causing invalid stack write errors +321969 ppc32 and ppc64 don't support [lf]setxattr +322254 Show threadname together with tid if set by application +322294 Add initial support for IBM Power ISA 2.07 +322368 Assertion failure in wqthread_hijack under OS X 10.8 +322563 vex mips->IR: 0x70 0x83 0xF0 0x3A +322807 VALGRIND_PRINTF_BACKTRACE writes callstack to xml and text to stderr +322851 0bXXX binary literal syntax is not standard +323035 Unhandled instruction: LDRSHT(Thumb) +323036 Unhandled instruction: SMMLS (ARM and Thumb) +323116 The memcheck/tests/ppc64/power_ISA2_05.c fails to build [..] +323175 Unhandled instruction: SMLALD (ARM + Thumb) +323177 Unhandled instruction: SMLSLD (ARM + Thumb) +323432 Calling pthread_cond_destroy() or pthread_mutex_destroy() [..] +323437 Phase 2 support for IBM Power ISA 2.07 +323713 Support mmxext (integer sse) subset on i386 (athlon) +323803 Transactional memory instructions are not supported for Power +323893 SSE3 not available on amd cpus in valgrind +323905 Probable false positive from Valgrind/drd on close() +323912 valgrind.h header isn't compatible for mingw64 +324047 Valgrind doesn't support [LDR,ST]{S}[B,H]T ARM instructions +324149 helgrind: When pthread_cond_timedwait returns ETIMEDOUT [..] +324181 mmap does not handle MAP_32BIT +324227 memcheck false positive leak when a thread calls exit+block [..] +324421 Support for fanotify API on ARM architecture +324514 gdbserver monitor cmd output behaviour consistency [..] +324518 ppc64: Emulation of dcbt instructions does not handle [..] +324546 none/tests/ppc32 test_isa_2_07_part2 requests -m64 +324582 When access is made to freed memory, report both allocation [..] +324594 Fix overflow computation for Power ISA 2.06 insns: mulldo/mulldo. +324765 ppc64: illegal instruction when executing none/tests/ppc64/jm-misc +324816 Incorrect VEX implementation for xscvspdp/xvcvspdp for SNaN inputs +324834 Unhandled instructions in Microsoft C run-time for x86_64 +324894 Phase 3 support for IBM Power ISA 2.07 +326091 drd: Avoid false race reports from optimized strlen() impls +326113 valgrind libvex hwcaps error on AMD64 +n-i-bz Some wrong command line options could be ignored +n-i-bz patch to allow fair-sched on android +n-i-bz report error for vgdb snapshot requested before execution +n-i-bz same as 303624 (fixed in 3.8.0), but for x86 android + +(3.9.0: 31 October 2013, vex r2796, valgrind r13708) + + + +Release 3.8.1 (19 September 2012) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.8.1 is a bug fix release. It fixes some assertion failures in 3.8.0 +that occur moderately frequently in real use cases, adds support for +some missing instructions on ARM, and fixes a deadlock condition on +MacOSX. If you package or deliver 3.8.0 for others to use, you might +want to consider upgrading to 3.8.1 instead. + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather +than mailing the developers (or mailing lists) directly -- bugs that +are not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +284004 == 301281 +289584 Unhandled instruction: 0xF 0x29 0xE5 (MOVAPS) +295808 amd64->IR: 0xF3 0xF 0xBC 0xC0 (TZCNT) +298281 wcslen causes false(?) uninitialised value warnings +301281 valgrind hangs on OS X when the process calls system() +304035 disInstr(arm): unhandled instruction 0xE1023053 +304867 implement MOVBE instruction in x86 mode +304980 Assertion 'lo <= hi' failed in vgModuleLocal_find_rx_mapping +305042 amd64: implement 0F 7F encoding of movq between two registers +305199 ARM: implement QDADD and QDSUB +305321 amd64->IR: 0xF 0xD 0xC (prefetchw) +305513 killed by fatal signal: SIGSEGV +305690 DRD reporting invalid semaphore when sem_trywait fails +305926 Invalid alignment checks for some AVX instructions +306297 disInstr(thumb): unhandled instruction 0xE883 0x000C +306310 3.8.0 release tarball missing some files +306612 RHEL 6 glibc-2.X default suppressions need /lib*/libc-*patterns +306664 vex amd64->IR: 0x66 0xF 0x3A 0x62 0xD1 0x46 0x66 0xF +n-i-bz shmat of a segment > 4Gb does not work +n-i-bz simulate_control_c script wrong USR1 signal number on mips +n-i-bz vgdb ptrace calls wrong on mips [...] +n-i-bz Fixes for more MPI false positives +n-i-bz exp-sgcheck's memcpy causes programs to segfault +n-i-bz OSX build w/ clang: asserts at startup +n-i-bz Incorrect undef'dness prop for Iop_DPBtoBCD and Iop_BCDtoDPB +n-i-bz fix a couple of union tag-vs-field mixups +n-i-bz OSX: use __NR_poll_nocancel rather than __NR_poll + +The following bugs were fixed in 3.8.0 but not listed in this NEWS +file at the time: + +254088 Valgrind should know about UD2 instruction +301280 == 254088 +301902 == 254088 +304754 NEWS blows TeX's little mind + +(3.8.1: 19 September 2012, vex r2537, valgrind r12996) + + + +Release 3.8.0 (10 August 2012) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.8.0 is a feature release with many improvements and the usual +collection of bug fixes. -- Improved threading support for glibc >= 2.3.2 (SuSE 8.2, - RedHat 9, to name but two ...) It turned out that 1.9.5 - had problems with threading support on glibc >= 2.3.2, - usually manifested by threaded programs deadlocking in system calls, - or running unbelievably slowly. Hopefully these are fixed now. 1.9.6 - is the first valgrind which gives reasonable support for - glibc-2.3.2. Also fixed a 2.3.2 problem with pthread_atfork(). +This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux, +PPC64/Linux, S390X/Linux, MIPS/Linux, ARM/Android, X86/Android, +X86/MacOSX 10.6/10.7 and AMD64/MacOSX 10.6/10.7. Support for recent +distros and toolchain components (glibc 2.16, gcc 4.7) has been added. +There is initial support for MacOSX 10.8, but it is not usable for +serious work at present. -- Majorly expanded FAQ.txt. We've added workarounds for all - common problems for which a workaround is known. +* ================== PLATFORM CHANGES ================= -Minor changes in 1.9.6: +* Support for MIPS32 platforms running Linux. Valgrind has been + tested on MIPS32 and MIPS32r2 platforms running different Debian + Squeeze and MeeGo distributions. Both little-endian and big-endian + cores are supported. The tools Memcheck, Massif and Lackey have + been tested and are known to work. See README.mips for more details. -- Fix identification of the main thread's stack. Incorrect - identification of it was causing some on-stack addresses to not get - identified as such. This only affected the usefulness of some error - messages; the correctness of the checks made is unchanged. +* Preliminary support for Android running on x86. -- Support for kernels >= 2.5.68. +* Preliminary (as-yet largely unusable) support for MacOSX 10.8. -- Dummy implementations of __libc_current_sigrtmin, - __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully - good enough to keep alive programs which previously died for lack of - them. +* Support for Intel AVX instructions and for AES instructions. This + support is available only for 64 bit code. -- Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request. +* Support for POWER Decimal Floating Point instructions. -- Fix bug in the DWARF2 debug line info loader, when instructions - following each other have source lines far from each other - (e.g. with inlined functions). +* ==================== TOOL CHANGES ==================== -- Debug info reading: read symbols from both "symtab" and "dynsym" - sections, rather than merely from the one that comes last in the - file. +* Non-libc malloc implementations are now supported. This is useful + for tools that replace malloc (Memcheck, Massif, DRD, Helgrind). + Using the new option --soname-synonyms, such tools can be informed + that the malloc implementation is either linked statically into the + executable, or is present in some other shared library different + from libc.so. This makes it possible to process statically linked + programs, and programs using other malloc libraries, for example + TCMalloc or JEMalloc. -- New syscall support: prctl(), creat(), lookup_dcookie(). +* For tools that provide their own replacement for malloc et al, the + option --redzone-size= allows users to specify the size of + the padding blocks (redzones) added before and after each client + allocated block. Smaller redzones decrease the memory needed by + Valgrind. Bigger redzones increase the chance to detect blocks + overrun or underrun. Prior to this change, the redzone size was + hardwired to 16 bytes in Memcheck. -- When checking calls to accept(), recvfrom(), getsocketopt(), - don't complain if buffer values are NULL. +* Memcheck: -- Try and avoid assertion failures in - mash_LD_PRELOAD_and_LD_LIBRARY_PATH. + - The leak_check GDB server monitor command now can + control the maximum nr of loss records to output. -- Minor bug fixes in cg_annotate. + - Reduction of memory use for applications allocating + many blocks and/or having many partially defined bytes. + + - Addition of GDB server monitor command 'block_list' that lists + the addresses/sizes of the blocks of a leak search loss record. + + - Addition of GDB server monitor command 'who_points_at' that lists + the locations pointing at a block. + + - If a redzone size > 0 is given, VALGRIND_MALLOCLIKE_BLOCK now will + detect an invalid access of these redzones, by marking them + noaccess. Similarly, if a redzone size is given for a memory + pool, VALGRIND_MEMPOOL_ALLOC will mark the redzones no access. + This still allows to find some bugs if the user has forgotten to + mark the pool superblock noaccess. + + - Performance of memory leak check has been improved, especially in + cases where there are many leaked blocks and/or many suppression + rules used to suppress leak reports. + + - Reduced noise (false positive) level on MacOSX 10.6/10.7, due to + more precise analysis, which is important for LLVM/Clang + generated code. This is at the cost of somewhat reduced + performance. Note there is no change to analysis precision or + costs on Linux targets. + +* DRD: + + - Added even more facilities that can help finding the cause of a data + race, namely the command-line option --ptrace-addr and the macro + DRD_STOP_TRACING_VAR(x). More information can be found in the manual. + + - Fixed a subtle bug that could cause false positive data race reports. + +* ==================== OTHER CHANGES ==================== + +* The C++ demangler has been updated so as to work well with C++ + compiled by up to at least g++ 4.6. + +* Tool developers can make replacement/wrapping more flexible thanks + to the new option --soname-synonyms. This was reported above, but + in fact is very general and applies to all function + replacement/wrapping, not just to malloc-family functions. + +* Round-robin scheduling of threads can be selected, using the new + option --fair-sched= yes. Prior to this change, the pipe-based + thread serialisation mechanism (which is still the default) could + give very unfair scheduling. --fair-sched=yes improves + responsiveness of interactive multithreaded applications, and + improves repeatability of results from the thread checkers Helgrind + and DRD. + +* For tool developers: support to run Valgrind on Valgrind has been + improved. We can now routinely Valgrind on Helgrind or Memcheck. + +* gdbserver now shows the float shadow registers as integer + rather than float values, as the shadow values are mostly + used as bit patterns. + +* Increased limit for the --num-callers command line flag to 500. + +* Performance improvements for error matching when there are many + suppression records in use. + +* Improved support for DWARF4 debugging information (bug 284184). + +* Initial support for DWZ compressed Dwarf debug info. + +* Improved control over the IR optimiser's handling of the tradeoff + between performance and precision of exceptions. Specifically, + --vex-iropt-precise-memory-exns has been removed and replaced by + --vex-iropt-register-updates, with extended functionality. This + allows the Valgrind gdbserver to always show up to date register + values to GDB. + +* Modest performance gains through the use of translation chaining for + JIT-generated code. + +* ==================== FIXED BUGS ==================== + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather +than mailing the developers (or mailing lists) directly -- bugs that +are not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit + https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +197914 Building valgrind from svn now requires automake-1.10 +203877 increase to 16Mb maximum allowed alignment for memalign et al +219156 Handle statically linked malloc or other malloc lib (e.g. tcmalloc) +247386 make perf does not run all performance tests +270006 Valgrind scheduler unfair +270777 Adding MIPS/Linux port to Valgrind +270796 s390x: Removed broken support for the TS insn +271438 Fix configure for proper SSE4.2 detection +273114 s390x: Support TR, TRE, TROO, TROT, TRTO, and TRTT instructions +273475 Add support for AVX instructions +274078 improved configure logic for mpicc +276993 fix mremap 'no thrash checks' +278313 Fedora 15/x64: err read debug info with --read-var-info=yes flag +281482 memcheck incorrect byte allocation count in realloc() for silly argument +282230 group allocator for small fixed size, use it for MC_Chunk/SEc vbit +283413 Fix wrong sanity check +283671 Robustize alignment computation in LibVEX_Alloc +283961 Adding support for some HCI IOCTLs +284124 parse_type_DIE: confused by: DWARF 4 +284864 == 273475 (Add support for AVX instructions) +285219 Too-restrictive constraints for Thumb2 "SP plus/minus register" +285662 (MacOSX): Memcheck needs to replace memcpy/memmove +285725 == 273475 (Add support for AVX instructions) +286261 add wrapper for linux I2C_RDWR ioctl +286270 vgpreload is not friendly to 64->32 bit execs, gives ld.so warnings +286374 Running cachegrind with --branch-sim=yes on 64-bit PowerPC program fails +286384 configure fails "checking for a supported version of gcc" +286497 == 273475 (Add support for AVX instructions) +286596 == 273475 (Add support for AVX instructions) +286917 disInstr(arm): unhandled instruction: QADD (also QSUB) +287175 ARM: scalar VFP fixed-point VCVT instructions not handled +287260 Incorrect conditional jump or move depends on uninitialised value(s) +287301 vex amd64->IR: 0x66 0xF 0x38 0x41 0xC0 0xB8 0x0 0x0 (PHMINPOSUW) +287307 == 273475 (Add support for AVX instructions) +287858 VG_(strerror): unknown error +288298 (MacOSX) unhandled syscall shm_unlink +288995 == 273475 (Add support for AVX instructions) +289470 Loading of large Mach-O thin binaries fails. +289656 == 273475 (Add support for AVX instructions) +289699 vgdb connection in relay mode erroneously closed due to buffer overrun +289823 == 293754 (PCMPxSTRx not implemented for 16-bit characters) +289839 s390x: Provide support for unicode conversion instructions +289939 monitor cmd 'leak_check' with details about leaked or reachable blocks +290006 memcheck doesn't mark %xmm as initialized after "pcmpeqw %xmm %xmm" +290655 Add support for AESKEYGENASSIST instruction +290719 valgrind-3.7.0 fails with automake-1.11.2 due to"pkglibdir" usage +290974 vgdb must align pages to VKI_SHMLBA (16KB) on ARM +291253 ES register not initialised in valgrind simulation +291568 Fix 3DNOW-related crashes with baseline x86_64 CPU (w patch) +291865 s390x: Support the "Compare Double and Swap" family of instructions +292300 == 273475 (Add support for AVX instructions) +292430 unrecognized instruction in __intel_get_new_mem_ops_cpuid +292493 == 273475 (Add support for AVX instructions) +292626 Missing fcntl F_SETOWN_EX and F_GETOWN_EX support +292627 Missing support for some SCSI ioctls +292628 none/tests/x86/bug125959-x86.c triggers undefined behavior +292841 == 273475 (Add support for AVX instructions) +292993 implement the getcpu syscall on amd64-linux +292995 Implement the “cross memory attach” syscalls introduced in Linux 3.2 +293088 Add some VEX sanity checks for ppc64 unhandled instructions +293751 == 290655 (Add support for AESKEYGENASSIST instruction) +293754 PCMPxSTRx not implemented for 16-bit characters +293755 == 293754 (No tests for PCMPxSTRx on 16-bit characters) +293808 CLFLUSH not supported by latest VEX for amd64 +294047 valgrind does not correctly emulate prlimit64(..., RLIMIT_NOFILE, ...) +294048 MPSADBW instruction not implemented +294055 regtest none/tests/shell fails when locale is not set to C +294185 INT 0x44 (and others) not supported on x86 guest, but used by Jikes RVM +294190 --vgdb-error=xxx can be out of sync with errors shown to the user +294191 amd64: fnsave/frstor and 0x66 size prefixes on FP instructions +294260 disInstr_AMD64: disInstr miscalculated next %rip +294523 --partial-loads-ok=yes causes false negatives +294617 vex amd64->IR: 0x66 0xF 0x3A 0xDF 0xD1 0x1 0xE8 0x6A +294736 vex amd64->IR: 0x48 0xF 0xD7 0xD6 0x48 0x83 +294812 patch allowing to run (on x86 at least) helgrind/drd on tool. +295089 can not annotate source for both helgrind and drd +295221 POWER Processor decimal floating point instruction support missing +295427 building for i386 with clang on darwin11 requires "-new_linker linker" +295428 coregrind/m_main.c has incorrect x86 assembly for darwin +295590 Helgrind: Assertion 'cvi->nWaiters > 0' failed +295617 ARM - Add some missing syscalls +295799 Missing \n with get_vbits in gdbserver when line is % 80 [...] +296229 Linux user input device ioctls missing wrappers +296318 ELF Debug info improvements (more than one rx/rw mapping) +296422 Add translation chaining support +296457 vex amd64->IR: 0x66 0xF 0x3A 0xDF 0xD1 0x1 0xE8 0x6A (dup of AES) +296792 valgrind 3.7.0: add SIOCSHWTSTAMP (0x89B0) ioctl wrapper +296983 Fix build issues on x86_64/ppc64 without 32-bit toolchains +297078 gdbserver signal handling problems [..] +297147 drd false positives on newly allocated memory +297329 disallow decoding of IBM Power DFP insns on some machines +297497 POWER Processor decimal floating point instruction support missing +297701 Another alias for strncasecmp_l in libc-2.13.so +297911 'invalid write' not reported when using APIs for custom mem allocators. +297976 s390x: revisit EX implementation +297991 Valgrind interferes with mmap()+ftell() +297992 Support systems missing WIFCONTINUED (e.g. pre-2.6.10 Linux) +297993 Fix compilation of valgrind with gcc -g3. +298080 POWER Processor DFP support missing, part 3 +298227 == 273475 (Add support for AVX instructions) +298335 == 273475 (Add support for AVX instructions) +298354 Unhandled ARM Thumb instruction 0xEB0D 0x0585 (streq) +298394 s390x: Don't bail out on an unknown machine model. [..] +298421 accept4() syscall (366) support is missing for ARM +298718 vex amd64->IR: 0xF 0xB1 0xCB 0x9C 0x8F 0x45 +298732 valgrind installation problem in ubuntu with kernel version 3.x +298862 POWER Processor DFP instruction support missing, part 4 +298864 DWARF reader mis-parses DW_FORM_ref_addr +298943 massif asserts with --pages-as-heap=yes when brk is changing [..] +299053 Support DWARF4 DW_AT_high_pc constant form +299104 == 273475 (Add support for AVX instructions) +299316 Helgrind: hg_main.c:628 (map_threads_lookup): Assertion 'thr' failed. +299629 dup3() syscall (358) support is missing for ARM +299694 POWER Processor DFP instruction support missing, part 5 +299756 Ignore --free-fill for MEMPOOL_FREE and FREELIKE client requests +299803 == 273475 (Add support for AVX instructions) +299804 == 273475 (Add support for AVX instructions) +299805 == 273475 (Add support for AVX instructions) +300140 ARM - Missing (T1) SMMUL +300195 == 296318 (ELF Debug info improvements (more than one rx/rw mapping)) +300389 Assertion `are_valid_hwcaps(VexArchAMD64, [..])' failed. +300414 FCOM and FCOMP unimplemented for amd64 guest +301204 infinite loop in canonicaliseSymtab with ifunc symbol +301229 == 203877 (increase to 16Mb maximum allowed alignment for memalign etc) +301265 add x86 support to Android build +301984 configure script doesn't detect certain versions of clang +302205 Fix compiler warnings for POWER VEX code and POWER test cases +302287 Unhandled movbe instruction on Atom processors +302370 PPC: fnmadd, fnmsub, fnmadds, fnmsubs insns always negate the result +302536 Fix for the POWER Valgrind regression test: memcheck-ISA2.0. +302578 Unrecognized isntruction 0xc5 0x32 0xc2 0xca 0x09 vcmpngess +302656 == 273475 (Add support for AVX instructions) +302709 valgrind for ARM needs extra tls support for android emulator [..] +302827 add wrapper for CDROM_GET_CAPABILITY +302901 Valgrind crashes with dwz optimized debuginfo +302918 Enable testing of the vmaddfp and vnsubfp instructions in the testsuite +303116 Add support for the POWER instruction popcntb +303127 Power test suite fixes for frsqrte, vrefp, and vrsqrtefp instructions. +303250 Assertion `instrs_in->arr_used <= 10000' failed w/ OpenSSL code +303466 == 273475 (Add support for AVX instructions) +303624 segmentation fault on Android 4.1 (e.g. on Galaxy Nexus OMAP) +303963 strstr() function produces wrong results under valgrind callgrind +304054 CALL_FN_xx macros need to enforce stack alignment +304561 tee system call not supported +715750 (MacOSX): Incorrect invalid-address errors near 0xFFFFxxxx (mozbug#) +n-i-bz Add missing gdbserver xml files for shadow registers for ppc32 +n-i-bz Bypass gcc4.4/4.5 code gen bugs causing out of memory or asserts +n-i-bz Fix assert in gdbserver for watchpoints watching the same address +n-i-bz Fix false positive in sys_clone on amd64 when optional args [..] +n-i-bz s390x: Shadow registers can now be examined using vgdb + +(3.8.0-TEST3: 9 August 2012, vex r2465, valgrind r12865) +(3.8.0: 10 August 2012, vex r2465, valgrind r12866) + + + +Release 3.7.0 (5 November 2011) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.7.0 is a feature release with many significant improvements and the +usual collection of bug fixes. +This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux, +PPC64/Linux, S390X/Linux, ARM/Android, X86/Darwin and AMD64/Darwin. +Support for recent distros and toolchain components (glibc 2.14, gcc +4.6, MacOSX 10.7) has been added. +* ================== PLATFORM CHANGES ================= -Version 1.9.5 (7 April 2003) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* Support for IBM z/Architecture (s390x) running Linux. Valgrind can + analyse 64-bit programs running on z/Architecture. Most user space + instructions up to and including z10 are supported. Valgrind has + been tested extensively on z9, z10, and z196 machines running SLES + 10/11, RedHat 5/6m, and Fedora. The Memcheck and Massif tools are + known to work well. Callgrind, Helgrind, and DRD work reasonably + well on z9 and later models. See README.s390 for more details. -It occurs to me that it would be helpful for valgrind users to record -in the source distribution the changes in each release. So I now -attempt to mend my errant ways :-) Changes in this and future releases -will be documented in the NEWS file in the source distribution. - -Major changes in 1.9.5: - -- (Critical bug fix): Fix a bug in the FPU simulation. This was - causing some floating point conditional tests not to work right. - Several people reported this. If you had floating point code which - didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5. - -- Partial support for Red Hat 9. RH9 uses the new Native Posix - Threads Library (NPTL), instead of the older LinuxThreads. - This potentially causes problems with V which will take some - time to correct. In the meantime we have partially worked around - this, and so 1.9.5 works on RH9. Threaded programs still work, - but they may deadlock, because some system calls (accept, read, - write, etc) which should be nonblocking, in fact do block. This - is a known bug which we are looking into. - - If you can, your best bet (unfortunately) is to avoid using - 1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution. - If your glibc is 2.3.1 or earlier, you're almost certainly OK. - -Minor changes in 1.9.5: - -- Added some #errors to valgrind.h to ensure people don't include - it accidentally in their sources. This is a change from 1.0.X - which was never properly documented. The right thing to include - is now memcheck.h. Some people reported problems and strange - behaviour when (incorrectly) including valgrind.h in code with - 1.9.1 -- 1.9.4. This is no longer possible. - -- Add some __extension__ bits and pieces so that gcc configured - for valgrind-checking compiles even with -Werror. If you - don't understand this, ignore it. Of interest to gcc developers - only. - -- Removed a pointless check which caused problems interworking - with Clearcase. V would complain about shared objects whose - names did not end ".so", and refuse to run. This is now fixed. - In fact it was fixed in 1.9.4 but not documented. - -- Fixed a bug causing an assertion failure of "waiters == 1" - somewhere in vg_scheduler.c, when running large threaded apps, - notably MySQL. - -- Add support for the munlock system call (124). - -Some comments about future releases: - -1.9.5 is, we hope, the most stable Valgrind so far. It pretty much -supersedes the 1.0.X branch. If you are a valgrind packager, please -consider making 1.9.5 available to your users. You can regard the -1.0.X branch as obsolete: 1.9.5 is stable and vastly superior. There -are no plans at all for further releases of the 1.0.X branch. - -If you want a leading-edge valgrind, consider building the cvs head -(from SourceForge), or getting a snapshot of it. Current cool stuff -going in includes MMX support (done); SSE/SSE2 support (in progress), -a significant (10-20%) performance improvement (done), and the usual -large collection of minor changes. Hopefully we will be able to -improve our NPTL support, but no promises. +* Preliminary support for MacOSX 10.7 and XCode 4. Both 32- and + 64-bit processes are supported. Some complex threaded applications + (Firefox) are observed to hang when run as 32 bit applications, + whereas 64-bit versions run OK. The cause is unknown. Memcheck + will likely report some false errors. In general, expect some rough + spots. This release also supports MacOSX 10.6, but drops support + for 10.5. + +* Preliminary support for Android (on ARM). Valgrind can now run + large applications (eg, Firefox) on (eg) a Samsung Nexus S. See + README.android for more details, plus instructions on how to get + started. + +* Support for the IBM Power ISA 2.06 (Power7 instructions) + +* General correctness and performance improvements for ARM/Linux, and, + by extension, ARM/Android. + +* Further solidification of support for SSE 4.2 in 64-bit mode. AVX + instruction set support is under development but is not available in + this release. + +* Support for AIX5 has been removed. + +* ==================== TOOL CHANGES ==================== + +* Memcheck: some incremental changes: + + - reduction of memory use in some circumstances + + - improved handling of freed memory, which in some circumstances + can cause detection of use-after-free that would previously have + been missed + + - fix of a longstanding bug that could cause false negatives (missed + errors) in programs doing vector saturated narrowing instructions. + +* Helgrind: performance improvements and major memory use reductions, + particularly for large, long running applications which perform many + synchronisation (lock, unlock, etc) events. Plus many smaller + changes: + + - display of locksets for both threads involved in a race + + - general improvements in formatting/clarity of error messages + + - addition of facilities and documentation regarding annotation + of thread safe reference counted C++ classes + + - new flag --check-stack-refs=no|yes [yes], to disable race checking + on thread stacks (a performance hack) + + - new flag --free-is-write=no|yes [no], to enable detection of races + where one thread accesses heap memory but another one frees it, + without any coordinating synchronisation event + +* DRD: enabled XML output; added support for delayed thread deletion + in order to detect races that occur close to the end of a thread + (--join-list-vol); fixed a memory leak triggered by repeated client + memory allocatation and deallocation; improved Darwin support. + +* exp-ptrcheck: this tool has been renamed to exp-sgcheck + +* exp-sgcheck: this tool has been reduced in scope so as to improve + performance and remove checking that Memcheck does better. + Specifically, the ability to check for overruns for stack and global + arrays is unchanged, but the ability to check for overruns of heap + blocks has been removed. The tool has accordingly been renamed to + exp-sgcheck ("Stack and Global Array Checking"). + +* ==================== OTHER CHANGES ==================== + +* GDB server: Valgrind now has an embedded GDB server. That means it + is possible to control a Valgrind run from GDB, doing all the usual + things that GDB can do (single stepping, breakpoints, examining + data, etc). Tool-specific functionality is also available. For + example, it is possible to query the definedness state of variables + or memory from within GDB when running Memcheck; arbitrarily large + memory watchpoints are supported, etc. To use the GDB server, start + Valgrind with the flag --vgdb-error=0 and follow the on-screen + instructions. + +* Improved support for unfriendly self-modifying code: a new option + --smc-check=all-non-file is available. This adds the relevant + consistency checks only to code that originates in non-file-backed + mappings. In effect this confines the consistency checking only to + code that is or might be JIT generated, and avoids checks on code + that must have been compiled ahead of time. This significantly + improves performance on applications that generate code at run time. + +* It is now possible to build a working Valgrind using Clang-2.9 on + Linux. + +* new client requests VALGRIND_{DISABLE,ENABLE}_ERROR_REPORTING. + These enable and disable error reporting on a per-thread, and + nestable, basis. This is useful for hiding errors in particularly + troublesome pieces of code. The MPI wrapper library (libmpiwrap.c) + now uses this facility. + +* Added the --mod-funcname option to cg_diff. + +* ==================== FIXED BUGS ==================== + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than +mailing the developers (or mailing lists) directly -- bugs that are +not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit +https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + + 79311 malloc silly arg warning does not give stack trace +210935 port valgrind.h (not valgrind) to win32 to support client requests +214223 valgrind SIGSEGV on startup gcc 4.4.1 ppc32 (G4) Ubuntu 9.10 +243404 Port to zSeries +243935 Helgrind: incorrect handling of ANNOTATE_HAPPENS_BEFORE()/AFTER() +247223 non-x86: Suppress warning: 'regparm' attribute directive ignored +250101 huge "free" memory usage due to m_mallocfree.c fragmentation +253206 Some fixes for the faultstatus testcase +255223 capget testcase fails when running as root +256703 xlc_dbl_u32.c testcase broken +256726 Helgrind tests have broken inline asm +259977 == 214223 (Valgrind segfaults doing __builtin_longjmp) +264800 testcase compile failure on zseries +265762 make public VEX headers compilable by G++ 3.x +265771 assertion in jumps.c (r11523) fails with glibc-2.3 +266753 configure script does not give the user the option to not use QtCore +266931 gen_insn_test.pl is broken +266961 ld-linux.so.2 i?86-linux strlen issues +266990 setns instruction causes false positive +267020 Make directory for temporary files configurable at run-time. +267342 == 267997 (segmentation fault on Mac OS 10.6) +267383 Assertion 'vgPlain_strlen(dir) + vgPlain_strlen(file) + 1 < 256' failed +267413 Assertion 'DRD_(g_threadinfo)[tid].synchr_nesting >= 1' failed. +267488 regtest: darwin support for 64-bit build +267552 SIGSEGV (misaligned_stack_error) with DRD, but not with other tools +267630 Add support for IBM Power ISA 2.06 -- stage 1 +267769 == 267997 (Darwin: memcheck triggers segmentation fault) +267819 Add client request for informing the core about reallocation +267925 laog data structure quadratic for a single sequence of lock +267968 drd: (vgDrd_thread_set_joinable): Assertion '0 <= (int)tid ..' failed +267997 MacOSX: 64-bit V segfaults on launch when built with Xcode 4.0.1 +268513 missed optimizations in fold_Expr +268619 s390x: fpr - gpr transfer facility +268620 s390x: reconsider "long displacement" requirement +268621 s390x: improve IR generation for XC +268715 s390x: FLOGR is not universally available +268792 == 267997 (valgrind seg faults on startup when compiled with Xcode 4) +268930 s390x: MHY is not universally available +269078 arm->IR: unhandled instruction SUB (SP minus immediate/register) +269079 Support ptrace system call on ARM +269144 missing "Bad option" error message +269209 conditional load and store facility (z196) +269354 Shift by zero on x86 can incorrectly clobber CC_NDEP +269641 == 267997 (valgrind segfaults immediately (segmentation fault)) +269736 s390x: minor code generation tweaks +269778 == 272986 (valgrind.h: swap roles of VALGRIND_DO_CLIENT_REQUEST() ..) +269863 s390x: remove unused function parameters +269864 s390x: tweak s390_emit_load_cc +269884 == 250101 (overhead for huge blocks exhausts space too soon) +270082 s390x: Make sure to point the PSW address to the next address on SIGILL +270115 s390x: rewrite some testcases +270309 == 267997 (valgrind crash on startup) +270320 add support for Linux FIOQSIZE ioctl() call +270326 segfault while trying to sanitize the environment passed to execle +270794 IBM POWER7 support patch causes regression in none/tests +270851 IBM POWER7 fcfidus instruction causes memcheck to fail +270856 IBM POWER7 xsnmaddadp instruction causes memcheck to fail on 32bit app +270925 hyper-optimized strspn() in /lib64/libc-2.13.so needs fix +270959 s390x: invalid use of R0 as base register +271042 VSX configure check fails when it should not +271043 Valgrind build fails with assembler error on ppc64 with binutils 2.21 +271259 s390x: fix code confusion +271337 == 267997 (Valgrind segfaults on MacOS X) +271385 s390x: Implement Ist_MBE +271501 s390x: misc cleanups +271504 s390x: promote likely and unlikely +271579 ppc: using wrong enum type +271615 unhandled instruction "popcnt" (arch=amd10h) +271730 Fix bug when checking ioctls: duplicate check +271776 s390x: provide STFLE instruction support +271779 s390x: provide clock instructions like STCK +271799 Darwin: ioctls without an arg report a memory error +271820 arm: fix type confusion +271917 pthread_cond_timedwait failure leads to not-locked false positive +272067 s390x: fix DISP20 macro +272615 A typo in debug output in mc_leakcheck.c +272661 callgrind_annotate chokes when run from paths containing regex chars +272893 amd64->IR: 0x66 0xF 0x38 0x2B 0xC1 0x66 0xF 0x7F == (closed as dup) +272955 Unhandled syscall error for pwrite64 on ppc64 arch +272967 make documentation build-system more robust +272986 Fix gcc-4.6 warnings with valgrind.h +273318 amd64->IR: 0x66 0xF 0x3A 0x61 0xC1 0x38 (missing PCMPxSTRx case) +273318 unhandled PCMPxSTRx case: vex amd64->IR: 0x66 0xF 0x3A 0x61 0xC1 0x38 +273431 valgrind segfaults in evalCfiExpr (debuginfo.c:2039) +273465 Callgrind: jumps.c:164 (new_jcc): Assertion '(0 <= jmp) && ...' +273536 Build error: multiple definition of `vgDrd_pthread_cond_initializer' +273640 ppc64-linux: unhandled syscalls setresuid(164) and setresgid(169) +273729 == 283000 (Illegal opcode for SSE2 "roundsd" instruction) +273778 exp-ptrcheck: unhandled sysno == 259 +274089 exp-ptrcheck: unhandled sysno == 208 +274378 s390x: Various dispatcher tweaks +274447 WARNING: unhandled syscall: 340 +274776 amd64->IR: 0x66 0xF 0x38 0x2B 0xC5 0x66 +274784 == 267997 (valgrind ls -l results in Segmentation Fault) +274926 valgrind does not build against linux-3 +275148 configure FAIL with glibc-2.14 +275151 Fedora 15 / glibc-2.14 'make regtest' FAIL +275168 Make Valgrind work for MacOSX 10.7 Lion +275212 == 275284 (lots of false positives from __memcpy_ssse3_back et al) +275278 valgrind does not build on Linux kernel 3.0.* due to silly +275284 Valgrind memcpy/memmove redirection stopped working in glibc 2.14/x86_64 +275308 Fix implementation for ppc64 fres instruc +275339 s390x: fix testcase compile warnings +275517 s390x: Provide support for CKSM instruction +275710 s390x: get rid of redundant address mode calculation +275815 == 247894 (Valgrind doesn't know about Linux readahead(2) syscall) +275852 == 250101 (valgrind uses all swap space and is killed) +276784 Add support for IBM Power ISA 2.06 -- stage 3 +276987 gdbsrv: fix tests following recent commits +277045 Valgrind crashes with unhandled DW_OP_ opcode 0x2a +277199 The test_isa_2_06_part1.c in none/tests/ppc64 should be a symlink +277471 Unhandled syscall: 340 +277610 valgrind crashes in VG_(lseek)(core_fd, phdrs[idx].p_offset, ...) +277653 ARM: support Thumb2 PLD instruction +277663 ARM: NEON float VMUL by scalar incorrect +277689 ARM: tests for VSTn with register post-index are broken +277694 ARM: BLX LR instruction broken in ARM mode +277780 ARM: VMOV.F32 (immediate) instruction is broken +278057 fuse filesystem syscall deadlocks +278078 Unimplemented syscall 280 on ppc32 +278349 F_GETPIPE_SZ and F_SETPIPE_SZ Linux fcntl commands +278454 VALGRIND_STACK_DEREGISTER has wrong output type +278502 == 275284 (Valgrind confuses memcpy() and memmove()) +278892 gdbsrv: factorize gdb version handling, fix doc and typos +279027 Support for MVCL and CLCL instruction +279027 s390x: Provide support for CLCL and MVCL instructions +279062 Remove a redundant check in the insn selector for ppc. +279071 JDK creates PTEST with redundant REX.W prefix +279212 gdbsrv: add monitor cmd v.info scheduler. +279378 exp-ptrcheck: the 'impossible' happened on mkfifo call +279698 memcheck discards valid-bits for packuswb +279795 memcheck reports uninitialised values for mincore on amd64 +279994 Add support for IBM Power ISA 2.06 -- stage 3 +280083 mempolicy syscall check errors +280290 vex amd64->IR: 0x66 0xF 0x38 0x28 0xC1 0x66 0xF 0x6F +280710 s390x: config files for nightly builds +280757 /tmp dir still used by valgrind even if TMPDIR is specified +280965 Valgrind breaks fcntl locks when program does mmap +281138 WARNING: unhandled syscall: 340 +281241 == 275168 (valgrind useless on Macos 10.7.1 Lion) +281304 == 275168 (Darwin: dyld "cannot load inserted library") +281305 == 275168 (unhandled syscall: unix:357 on Darwin 11.1) +281468 s390x: handle do_clone and gcc clones in call traces +281488 ARM: VFP register corruption +281828 == 275284 (false memmove warning: "Source and destination overlap") +281883 s390x: Fix system call wrapper for "clone". +282105 generalise 'reclaimSuperBlock' to also reclaim splittable superblock +282112 Unhandled instruction bytes: 0xDE 0xD9 0x9B 0xDF (fcompp) +282238 SLES10: make check fails +282979 strcasestr needs replacement with recent(>=2.12) glibc +283000 vex amd64->IR: 0x66 0xF 0x3A 0xA 0xC0 0x9 0xF3 0xF +283243 Regression in ppc64 memcheck tests +283325 == 267997 (Darwin: V segfaults on startup when built with Xcode 4.0) +283427 re-connect epoll_pwait syscall on ARM linux +283600 gdbsrv: android: port vgdb.c +283709 none/tests/faultstatus needs to account for page size +284305 filter_gdb needs enhancement to work on ppc64 +284384 clang 3.1 -Wunused-value warnings in valgrind.h, memcheck.h +284472 Thumb2 ROR.W encoding T2 not implemented +284621 XML-escape process command line in XML output +n-i-bz cachegrind/callgrind: handle CPUID information for Core iX Intel CPUs + that have non-power-of-2 sizes (also AMDs) +n-i-bz don't be spooked by libraries mashed by elfhack +n-i-bz don't be spooked by libxul.so linked with gold +n-i-bz improved checking for VALGRIND_CHECK_MEM_IS_DEFINED + +(3.7.0-TEST1: 27 October 2011, vex r2228, valgrind r12245) +(3.7.0.RC1: 1 November 2011, vex r2231, valgrind r12257) +(3.7.0: 5 November 2011, vex r2231, valgrind r12258) + + + +Release 3.6.1 (16 February 2011) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.6.1 is a bug fix release. It adds support for some SSE4 +instructions that were omitted in 3.6.0 due to lack of time. Initial +support for glibc-2.13 has been added. A number of bugs causing +crashing or assertion failures have been fixed. + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than +mailing the developers (or mailing lists) directly -- bugs that are +not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit +https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +188572 Valgrind on Mac should suppress setenv() mem leak +194402 vex amd64->IR: 0x48 0xF 0xAE 0x4 (proper FX{SAVE,RSTOR} support) +210481 vex amd64->IR: Assertion `sz == 2 || sz == 4' failed (REX.W POPQ) +246152 callgrind internal error after pthread_cancel on 32 Bit Linux +250038 ppc64: Altivec LVSR and LVSL instructions fail their regtest +254420 memory pool tracking broken +254957 Test code failing to compile due to changes in memcheck.h +255009 helgrind/drd: crash on chmod with invalid parameter +255130 readdwarf3.c parse_type_DIE confused by GNAT Ada types +255355 helgrind/drd: crash on threaded programs doing fork +255358 == 255355 +255418 (SSE4.x) rint call compiled with ICC +255822 --gen-suppressions can create invalid files: "too many callers [...]" +255888 closing valgrindoutput tag outputted to log-stream on error +255963 (SSE4.x) vex amd64->IR: 0x66 0xF 0x3A 0x9 0xDB 0x0 (ROUNDPD) +255966 Slowness when using mempool annotations +256387 vex x86->IR: 0xD4 0xA 0x2 0x7 (AAD and AAM) +256600 super-optimized strcasecmp() false positive +256669 vex amd64->IR: Unhandled LOOPNEL insn on amd64 +256968 (SSE4.x) vex amd64->IR: 0x66 0xF 0x38 0x10 0xD3 0x66 (BLENDVPx) +257011 (SSE4.x) vex amd64->IR: 0x66 0xF 0x3A 0xE 0xFD 0xA0 (PBLENDW) +257063 (SSE4.x) vex amd64->IR: 0x66 0xF 0x3A 0x8 0xC0 0x0 (ROUNDPS) +257276 Missing case in memcheck --track-origins=yes +258870 (SSE4.x) Add support for EXTRACTPS SSE 4.1 instruction +261966 (SSE4.x) support for CRC32B and CRC32Q is lacking (also CRC32{W,L}) +262985 VEX regression in valgrind 3.6.0 in handling PowerPC VMX +262995 (SSE4.x) crash when trying to valgrind gcc-snapshot (PCMPxSTRx $0) +263099 callgrind_annotate counts Ir improperly [...] +263877 undefined coprocessor instruction on ARMv7 +265964 configure FAIL with glibc-2.13 +n-i-bz Fix compile error w/ icc-12.x in guest_arm_toIR.c +n-i-bz Docs: fix bogus descriptions for VALGRIND_CREATE_BLOCK et al +n-i-bz Massif: don't assert on shmat() with --pages-as-heap=yes +n-i-bz Bug fixes and major speedups for the exp-DHAT space profiler +n-i-bz DRD: disable --free-is-write due to implementation difficulties + +(3.6.1: 16 February 2011, vex r2103, valgrind r11561). diff --git a/NEWS.older b/NEWS.older new file mode 100644 index 0000000000..6de0e84dac --- /dev/null +++ b/NEWS.older @@ -0,0 +1,3107 @@ +Release 3.6.0 (21 October 2010) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.6.0 is a feature release with many significant improvements and the +usual collection of bug fixes. + +This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux, +PPC64/Linux, X86/Darwin and AMD64/Darwin. Support for recent distros +and toolchain components (glibc 2.12, gcc 4.5, OSX 10.6) has been added. + + ------------------------- + +Here are some highlights. Details are shown further down: + +* Support for ARM/Linux. + +* Support for recent Linux distros: Ubuntu 10.10 and Fedora 14. + +* Support for Mac OS X 10.6, both 32- and 64-bit executables. + +* Support for the SSE4.2 instruction set. + +* Enhancements to the Callgrind profiler, including the ability to + handle CPUs with three levels of cache. + +* A new experimental heap profiler, DHAT. + +* A huge number of bug fixes and small enhancements. + + ------------------------- + +Here are details of the above changes, together with descriptions of +many other changes, and a list of fixed bugs. + +* ================== PLATFORM CHANGES ================= + +* Support for ARM/Linux. Valgrind now runs on ARMv7 capable CPUs + running Linux. It is known to work on Ubuntu 10.04, Ubuntu 10.10, + and Maemo 5, so you can run Valgrind on your Nokia N900 if you want. + + This requires a CPU capable of running the ARMv7-A instruction set + (Cortex A5, A8 and A9). Valgrind provides fairly complete coverage + of the user space instruction set, including ARM and Thumb integer + code, VFPv3, NEON and V6 media instructions. The Memcheck, + Cachegrind and Massif tools work properly; other tools work to + varying degrees. + +* Support for recent Linux distros (Ubuntu 10.10 and Fedora 14), along + with support for recent releases of the underlying toolchain + components, notably gcc-4.5 and glibc-2.12. + +* Support for Mac OS X 10.6, both 32- and 64-bit executables. 64-bit + support also works much better on OS X 10.5, and is as solid as + 32-bit support now. + +* Support for the SSE4.2 instruction set. SSE4.2 is supported in + 64-bit mode. In 32-bit mode, support is only available up to and + including SSSE3. Some exceptions: SSE4.2 AES instructions are not + supported in 64-bit mode, and 32-bit mode does in fact support the + bare minimum SSE4 instructions to needed to run programs on Mac OS X + 10.6 on 32-bit targets. + +* Support for IBM POWER6 cpus has been improved. The Power ISA up to + and including version 2.05 is supported. + +* ==================== TOOL CHANGES ==================== + +* Cachegrind has a new processing script, cg_diff, which finds the + difference between two profiles. It's very useful for evaluating + the performance effects of a change in a program. + + Related to this change, the meaning of cg_annotate's (rarely-used) + --threshold option has changed; this is unlikely to affect many + people, if you do use it please see the user manual for details. + +* Callgrind now can do branch prediction simulation, similar to + Cachegrind. In addition, it optionally can count the number of + executed global bus events. Both can be used for a better + approximation of a "Cycle Estimation" as derived event (you need to + update the event formula in KCachegrind yourself). + +* Cachegrind and Callgrind now refer to the LL (last-level) cache + rather than the L2 cache. This is to accommodate machines with + three levels of caches -- if Cachegrind/Callgrind auto-detects the + cache configuration of such a machine it will run the simulation as + if the L2 cache isn't present. This means the results are less + likely to match the true result for the machine, but + Cachegrind/Callgrind's results are already only approximate, and + should not be considered authoritative. The results are still + useful for giving a general idea about a program's locality. + +* Massif has a new option, --pages-as-heap, which is disabled by + default. When enabled, instead of tracking allocations at the level + of heap blocks (as allocated with malloc/new/new[]), it instead + tracks memory allocations at the level of memory pages (as mapped by + mmap, brk, etc). Each mapped page is treated as its own block. + Interpreting the page-level output is harder than the heap-level + output, but this option is useful if you want to account for every + byte of memory used by a program. + +* DRD has two new command-line options: --free-is-write and + --trace-alloc. The former allows to detect reading from already freed + memory, and the latter allows tracing of all memory allocations and + deallocations. + +* DRD has several new annotations. Custom barrier implementations can + now be annotated, as well as benign races on static variables. + +* DRD's happens before / happens after annotations have been made more + powerful, so that they can now also be used to annotate e.g. a smart + pointer implementation. + +* Helgrind's annotation set has also been drastically improved, so as + to provide to users a general set of annotations to describe locks, + semaphores, barriers and condition variables. Annotations to + describe thread-safe reference counted heap objects have also been + added. + +* Memcheck has a new command-line option, --show-possibly-lost, which + is enabled by default. When disabled, the leak detector will not + show possibly-lost blocks. + +* A new experimental heap profiler, DHAT (Dynamic Heap Analysis Tool), + has been added. DHAT keeps track of allocated heap blocks, and also + inspects every memory reference to see which block (if any) is being + accessed. This gives a lot of insight into block lifetimes, + utilisation, turnover, liveness, and the location of hot and cold + fields. You can use DHAT to do hot-field profiling. + +* ==================== OTHER CHANGES ==================== + +* Improved support for unfriendly self-modifying code: the extra + overhead incurred by --smc-check=all has been reduced by + approximately a factor of 5 as compared with 3.5.0. + +* Ability to show directory names for source files in error messages. + This is combined with a flexible mechanism for specifying which + parts of the paths should be shown. This is enabled by the new flag + --fullpath-after. + +* A new flag, --require-text-symbol, which will stop the run if a + specified symbol is not found it a given shared object when it is + loaded into the process. This makes advanced working with function + intercepting and wrapping safer and more reliable. + +* Improved support for the Valkyrie GUI, version 2.0.0. GUI output + and control of Valgrind is now available for the tools Memcheck and + Helgrind. XML output from Valgrind is available for Memcheck, + Helgrind and exp-Ptrcheck. + +* More reliable stack unwinding on amd64-linux, particularly in the + presence of function wrappers, and with gcc-4.5 compiled code. + +* Modest scalability (performance improvements) for massive + long-running applications, particularly for those with huge amounts + of code. + +* Support for analyzing programs running under Wine with has been + improved. The header files , + and can now be used in + Windows-programs compiled with MinGW or one of the Microsoft Visual + Studio compilers. + +* A rare but serious error in the 64-bit x86 CPU simulation was fixed. + The 32-bit simulator was not affected. This did not occur often, + but when it did would usually crash the program under test. + Bug 245925. + +* A large number of bugs were fixed. These are shown below. + +* A number of bugs were investigated, and were candidates for fixing, + but are not fixed in 3.6.0, due to lack of developer time. They may + get fixed in later releases. They are: + + 194402 vex amd64->IR: 0x48 0xF 0xAE 0x4 0x24 0x49 (FXSAVE64) + 212419 false positive "lock order violated" (A+B vs A) + 213685 Undefined value propagates past dependency breaking instruction + 216837 Incorrect instrumentation of NSOperationQueue on Darwin + 237920 valgrind segfault on fork failure + 242137 support for code compiled by LLVM-2.8 + 242423 Another unknown Intel cache config value + 243232 Inconsistent Lock Orderings report with trylock + 243483 ppc: callgrind triggers VEX assertion failure + 243935 Helgrind: implementation of ANNOTATE_HAPPENS_BEFORE() is wrong + 244677 Helgrind crash hg_main.c:616 (map_threads_lookup): Assertion + 'thr' failed. + 246152 callgrind internal error after pthread_cancel on 32 Bit Linux + 249435 Analyzing wine programs with callgrind triggers a crash + 250038 ppc64: Altivec lvsr and lvsl instructions fail their regtest + 250065 Handling large allocations + 250101 huge "free" memory usage due to m_mallocfree.c + "superblocks fragmentation" + 251569 vex amd64->IR: 0xF 0x1 0xF9 0x8B 0x4C 0x24 (RDTSCP) + 252091 Callgrind on ARM does not detect function returns correctly + 252600 [PATCH] Allow lhs to be a pointer for shl/shr + 254420 memory pool tracking broken + n-i-bz support for adding symbols for JIT generated code + + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than +mailing the developers (or mailing lists) directly -- bugs that are +not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit +https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +135264 dcbzl instruction missing +142688 == 250799 +153699 Valgrind should report unaligned reads with movdqa +180217 == 212335 +190429 Valgrind reports lost of errors in ld.so + with x86_64 2.9.90 glibc +197266 valgrind appears to choke on the xmms instruction + "roundsd" on x86_64 +197988 Crash when demangling very large symbol names +202315 unhandled syscall: 332 (inotify_init1) +203256 Add page-level profiling to Massif +205093 dsymutil=yes needs quotes, locking (partial fix) +205241 Snow Leopard 10.6 support (partial fix) +206600 Leak checker fails to upgrade indirect blocks when their + parent becomes reachable +210935 port valgrind.h (not valgrind) to win32 so apps run under + wine can make client requests +211410 vex amd64->IR: 0x15 0xFF 0xFF 0x0 0x0 0x89 + within Linux ip-stack checksum functions +212335 unhandled instruction bytes: 0xF3 0xF 0xBD 0xC0 + (lzcnt %eax,%eax) +213685 Undefined value propagates past dependency breaking instruction + (partial fix) +215914 Valgrind inserts bogus empty environment variable +217863 == 197988 +219538 adjtimex syscall wrapper wrong in readonly adjtime mode +222545 shmat fails under valgind on some arm targets +222560 ARM NEON support +230407 == 202315 +231076 == 202315 +232509 Docs build fails with formatting inside elements +232793 == 202315 +235642 [PATCH] syswrap-linux.c: support evdev EVIOCG* ioctls +236546 vex x86->IR: 0x66 0xF 0x3A 0xA +237202 vex amd64->IR: 0xF3 0xF 0xB8 0xC0 0x49 0x3B +237371 better support for VALGRIND_MALLOCLIKE_BLOCK +237485 symlink (syscall 57) is not supported on Mac OS +237723 sysno == 101 exp-ptrcheck: the 'impossible' happened: + unhandled syscall +238208 is_just_below_ESP doesn't take into account red-zone +238345 valgrind passes wrong $0 when executing a shell script +238679 mq_timedreceive syscall doesn't flag the reception buffer + as "defined" +238696 fcntl command F_DUPFD_CLOEXEC not supported +238713 unhandled instruction bytes: 0x66 0xF 0x29 0xC6 +238713 unhandled instruction bytes: 0x66 0xF 0x29 0xC6 +238745 3.5.0 Make fails on PPC Altivec opcodes, though configure + says "Altivec off" +239992 vex amd64->IR: 0x48 0xF 0xC4 0xC1 0x0 0x48 +240488 == 197988 +240639 == 212335 +241377 == 236546 +241903 == 202315 +241920 == 212335 +242606 unhandled syscall: setegid (in Ptrcheck) +242814 Helgrind "Impossible has happened" during + QApplication::initInstance(); +243064 Valgrind attempting to read debug information from iso +243270 Make stack unwinding in Valgrind wrappers more reliable +243884 exp-ptrcheck: the 'impossible happened: unhandled syscall + sysno = 277 (mq_open) +244009 exp-ptrcheck unknown syscalls in analyzing lighttpd +244493 ARM VFP d16-d31 registers support +244670 add support for audit_session_self syscall on Mac OS 10.6 +244921 The xml report of helgrind tool is not well format +244923 In the xml report file, the not escape the + xml char, eg '<','&','>' +245535 print full path names in plain text reports +245925 x86-64 red zone handling problem +246258 Valgrind not catching integer underruns + new [] s +246311 reg/reg cmpxchg doesn't work on amd64 +246549 unhandled syscall unix:277 while testing 32-bit Darwin app +246888 Improve Makefile.vex.am +247510 [OS X 10.6] Memcheck reports unaddressable bytes passed + to [f]chmod_extended +247526 IBM POWER6 (ISA 2.05) support is incomplete +247561 Some leak testcases fails due to reachable addresses in + caller save regs +247875 sizeofIRType to handle Ity_I128 +247894 [PATCH] unhandled syscall sys_readahead +247980 Doesn't honor CFLAGS passed to configure +248373 darwin10.supp is empty in the trunk +248822 Linux FIBMAP ioctl has int parameter instead of long +248893 [PATCH] make readdwarf.c big endianess safe to enable + unwinding on big endian systems +249224 Syscall 336 not supported (SYS_proc_info) +249359 == 245535 +249775 Incorrect scheme for detecting NEON capabilities of host CPU +249943 jni JVM init fails when using valgrind +249991 Valgrind incorrectly declares AESKEYGENASSIST support + since VEX r2011 +249996 linux/arm: unhandled syscall: 181 (__NR_pwrite64) +250799 frexp$fenv_access_off function generates SIGILL +250998 vex x86->IR: unhandled instruction bytes: 0x66 0x66 0x66 0x2E +251251 support pclmulqdq insn +251362 valgrind: ARM: attach to debugger either fails or provokes + kernel oops +251674 Unhandled syscall 294 +251818 == 254550 + +254257 Add support for debugfiles found by build-id +254550 [PATCH] Implement DW_ATE_UTF (DWARF4) +254646 Wrapped functions cause stack misalignment on OS X + (and possibly Linux) +254556 ARM: valgrinding anything fails with SIGSEGV for 0xFFFF0FA0 + +(3.6.0: 21 October 2010, vex r2068, valgrind r11471). + + + +Release 3.5.0 (19 August 2009) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.5.0 is a feature release with many significant improvements and the +usual collection of bug fixes. The main improvement is that Valgrind +now works on Mac OS X. + +This release supports X86/Linux, AMD64/Linux, PPC32/Linux, PPC64/Linux +and X86/Darwin. Support for recent distros and toolchain components +(glibc 2.10, gcc 4.5) has been added. + + ------------------------- + +Here is a short summary of the changes. Details are shown further +down: + +* Support for Mac OS X (10.5.x). + +* Improvements and simplifications to Memcheck's leak checker. + +* Clarification and simplifications in various aspects of Valgrind's + text output. + +* XML output for Helgrind and Ptrcheck. + +* Performance and stability improvements for Helgrind and DRD. + +* Genuinely atomic support for x86/amd64/ppc atomic instructions. + +* A new experimental tool, BBV, useful for computer architecture + research. + +* Improved Wine support, including ability to read Windows PDB + debuginfo. + + ------------------------- + +Here are details of the above changes, followed by descriptions of +many other minor changes, and a list of fixed bugs. + + +* Valgrind now runs on Mac OS X. (Note that Mac OS X is sometimes + called "Darwin" because that is the name of the OS core, which is the + level that Valgrind works at.) + + Supported systems: + + - It requires OS 10.5.x (Leopard). Porting to 10.4.x is not planned + because it would require work and 10.4 is only becoming less common. + + - 32-bit programs on x86 and AMD64 (a.k.a x86-64) machines are supported + fairly well. For 10.5.x, 32-bit programs are the default even on + 64-bit machines, so it handles most current programs. + + - 64-bit programs on x86 and AMD64 (a.k.a x86-64) machines are not + officially supported, but simple programs at least will probably work. + However, start-up is slow. + + - PowerPC machines are not supported. + + Things that don't work: + + - The Ptrcheck tool. + + - Objective-C garbage collection. + + - --db-attach=yes. + + - If you have Rogue Amoeba's "Instant Hijack" program installed, + Valgrind will fail with a SIGTRAP at start-up. See + https://bugs.kde.org/show_bug.cgi?id=193917 for details and a + simple work-around. + + Usage notes: + + - You will likely find --dsymutil=yes a useful option, as error + messages may be imprecise without it. + + - Mac OS X support is new and therefore will be less robust than the + Linux support. Please report any bugs you find. + + - Threaded programs may run more slowly than on Linux. + + Many thanks to Greg Parker for developing this port over several years. + + +* Memcheck's leak checker has been improved. + + - The results for --leak-check=summary now match the summary results + for --leak-check=full. Previously they could differ because + --leak-check=summary counted "indirectly lost" blocks and + "suppressed" blocks as "definitely lost". + + - Blocks that are only reachable via at least one interior-pointer, + but are directly pointed to by a start-pointer, were previously + marked as "still reachable". They are now correctly marked as + "possibly lost". + + - The default value for the --leak-resolution option has been + changed from "low" to "high". In general, this means that more + leak reports will be produced, but each leak report will describe + fewer leaked blocks. + + - With --leak-check=full, "definitely lost" and "possibly lost" + leaks are now considered as proper errors, ie. they are counted + for the "ERROR SUMMARY" and affect the behaviour of + --error-exitcode. These leaks are not counted as errors if + --leak-check=summary is specified, however. + + - Documentation for the leak checker has been improved. + + +* Various aspects of Valgrind's text output have changed. + + - Valgrind's start-up message has changed. It is shorter but also + includes the command being run, which makes it easier to use + --trace-children=yes. An example: + + - Valgrind's shut-down messages have also changed. This is most + noticeable with Memcheck, where the leak summary now occurs before + the error summary. This change was necessary to allow leaks to be + counted as proper errors (see the description of the leak checker + changes above for more details). This was also necessary to fix a + longstanding bug in which uses of suppressions against leaks were + not "counted", leading to difficulties in maintaining suppression + files (see https://bugs.kde.org/show_bug.cgi?id=186790). + + - Behavior of -v has changed. In previous versions, -v printed out + a mixture of marginally-user-useful information, and tool/core + statistics. The statistics printing has now been moved to its own + flag, --stats=yes. This means -v is less verbose and more likely + to convey useful end-user information. + + - The format of some (non-XML) stack trace entries has changed a + little. Previously there were six possible forms: + + 0x80483BF: really (a.c:20) + 0x80483BF: really (in /foo/a.out) + 0x80483BF: really + 0x80483BF: (within /foo/a.out) + 0x80483BF: ??? (a.c:20) + 0x80483BF: ??? + + The third and fourth of these forms have been made more consistent + with the others. The six possible forms are now: + + 0x80483BF: really (a.c:20) + 0x80483BF: really (in /foo/a.out) + 0x80483BF: really (in ???) + 0x80483BF: ??? (in /foo/a.out) + 0x80483BF: ??? (a.c:20) + 0x80483BF: ??? + + Stack traces produced when --xml=yes is specified are different + and unchanged. + + +* Helgrind and Ptrcheck now support XML output, so they can be used + from GUI tools. Also, the XML output mechanism has been + overhauled. + + - The XML format has been overhauled and generalised, so it is more + suitable for error reporting tools in general. The Memcheck + specific aspects of it have been removed. The new format, which + is an evolution of the old format, is described in + docs/internals/xml-output-protocol4.txt. + + - Memcheck has been updated to use the new format. + + - Helgrind and Ptrcheck are now able to emit output in this format. + + - The XML output mechanism has been overhauled. XML is now output + to its own file descriptor, which means that: + + * Valgrind can output text and XML independently. + + * The longstanding problem of XML output being corrupted by + unexpected un-tagged text messages is solved. + + As before, the destination for text output is specified using + --log-file=, --log-fd= or --log-socket=. + + As before, XML output for a tool is enabled using --xml=yes. + + Because there's a new XML output channel, the XML output + destination is now specified by --xml-file=, --xml-fd= or + --xml-socket=. + + Initial feedback has shown this causes some confusion. To + clarify, the two envisaged usage scenarios are: + + (1) Normal text output. In this case, do not specify --xml=yes + nor any of --xml-file=, --xml-fd= or --xml-socket=. + + (2) XML output. In this case, specify --xml=yes, and one of + --xml-file=, --xml-fd= or --xml-socket= to select the XML + destination, one of --log-file=, --log-fd= or --log-socket= + to select the destination for any remaining text messages, + and, importantly, -q. + + -q makes Valgrind completely silent on the text channel, + except in the case of critical failures, such as Valgrind + itself segfaulting, or failing to read debugging information. + Hence, in this scenario, it suffices to check whether or not + any output appeared on the text channel. If yes, then it is + likely to be a critical error which should be brought to the + attention of the user. If no (the text channel produced no + output) then it can be assumed that the run was successful. + + This allows GUIs to make the critical distinction they need to + make (did the run fail or not?) without having to search or + filter the text output channel in any way. + + It is also recommended to use --child-silent-after-fork=yes in + scenario (2). + + +* Improvements and changes in Helgrind: + + - XML output, as described above + + - Checks for consistent association between pthread condition + variables and their associated mutexes are now performed. + + - pthread_spinlock functions are supported. + + - Modest performance improvements. + + - Initial (skeletal) support for describing the behaviour of + non-POSIX synchronisation objects through ThreadSanitizer + compatible ANNOTATE_* macros. + + - More controllable tradeoffs between performance and the level of + detail of "previous" accesses in a race. There are now three + settings: + + * --history-level=full. This is the default, and was also the + default in 3.4.x. It shows both stacks involved in a race, but + requires a lot of memory and can be very slow in programs that + do many inter-thread synchronisation events. + + * --history-level=none. This only shows the later stack involved + in a race. This can be much faster than --history-level=full, + but makes it much more difficult to find the other access + involved in the race. + + The new intermediate setting is + + * --history-level=approx + + For the earlier (other) access, two stacks are presented. The + earlier access is guaranteed to be somewhere in between the two + program points denoted by those stacks. This is not as useful + as showing the exact stack for the previous access (as per + --history-level=full), but it is better than nothing, and it's + almost as fast as --history-level=none. + + +* New features and improvements in DRD: + + - The error messages printed by DRD are now easier to interpret. + Instead of using two different numbers to identify each thread + (Valgrind thread ID and DRD thread ID), DRD does now identify + threads via a single number (the DRD thread ID). Furthermore + "first observed at" information is now printed for all error + messages related to synchronization objects. + + - Added support for named semaphores (sem_open() and sem_close()). + + - Race conditions between pthread_barrier_wait() and + pthread_barrier_destroy() calls are now reported. + + - Added support for custom allocators through the macros + VALGRIND_MALLOCLIKE_BLOCK() VALGRIND_FREELIKE_BLOCK() (defined in + in ). An alternative for these two macros is + the new client request VG_USERREQ__DRD_CLEAN_MEMORY (defined in + ). + + - Added support for annotating non-POSIX synchronization objects + through several new ANNOTATE_*() macros. + + - OpenMP: added support for the OpenMP runtime (libgomp) included + with gcc versions 4.3.0 and 4.4.0. + + - Faster operation. + + - Added two new command-line options (--first-race-only and + --segment-merging-interval). + + +* Genuinely atomic support for x86/amd64/ppc atomic instructions + + Valgrind will now preserve (memory-access) atomicity of LOCK- + prefixed x86/amd64 instructions, and any others implying a global + bus lock. Ditto for PowerPC l{w,d}arx/st{w,d}cx. instructions. + + This means that Valgrinded processes will "play nicely" in + situations where communication with other processes, or the kernel, + is done through shared memory and coordinated with such atomic + instructions. Prior to this change, such arrangements usually + resulted in hangs, races or other synchronisation failures, because + Valgrind did not honour atomicity of such instructions. + + +* A new experimental tool, BBV, has been added. BBV generates basic + block vectors for use with the SimPoint analysis tool, which allows + a program's overall behaviour to be approximated by running only a + fraction of it. This is useful for computer architecture + researchers. You can run BBV by specifying --tool=exp-bbv (the + "exp-" prefix is short for "experimental"). BBV was written by + Vince Weaver. + + +* Modestly improved support for running Windows applications under + Wine. In particular, initial support for reading Windows .PDB debug + information has been added. + + +* A new Memcheck client request VALGRIND_COUNT_LEAK_BLOCKS has been + added. It is similar to VALGRIND_COUNT_LEAKS but counts blocks + instead of bytes. + + +* The Valgrind client requests VALGRIND_PRINTF and + VALGRIND_PRINTF_BACKTRACE have been changed slightly. Previously, + the string was always printed immediately on its own line. Now, the + string will be added to a buffer but not printed until a newline is + encountered, or other Valgrind output is printed (note that for + VALGRIND_PRINTF_BACKTRACE, the back-trace itself is considered + "other Valgrind output"). This allows you to use multiple + VALGRIND_PRINTF calls to build up a single output line, and also to + print multiple output lines with a single request (by embedding + multiple newlines in the string). + + +* The graphs drawn by Massif's ms_print program have changed slightly: + + - The half-height chars '.' and ',' are no longer drawn, because + they are confusing. The --y option can be used if the default + y-resolution is not high enough. + + - Horizontal lines are now drawn after the top of a snapshot if + there is a gap until the next snapshot. This makes it clear that + the memory usage has not dropped to zero between snapshots. + + +* Something that happened in 3.4.0, but wasn't clearly announced: the + option --read-var-info=yes can be used by some tools (Memcheck, + Helgrind and DRD). When enabled, it causes Valgrind to read DWARF3 + variable type and location information. This makes those tools + start up more slowly and increases memory consumption, but + descriptions of data addresses in error messages become more + detailed. + + +* exp-Omega, an experimental instantaneous leak-detecting tool, was + disabled in 3.4.0 due to a lack of interest and maintenance, + although the source code was still in the distribution. The source + code has now been removed from the distribution. For anyone + interested, the removal occurred in SVN revision r10247. + + +* Some changes have been made to the build system. + + - VEX/ is now integrated properly into the build system. This means + that dependency tracking within VEX/ now works properly, "make + install" will work without requiring "make" before it, and + parallel builds (ie. 'make -j') now work (previously a + .NOTPARALLEL directive was used to serialize builds, ie. 'make -j' + was effectively ignored). + + - The --with-vex configure option has been removed. It was of + little use and removing it simplified the build system. + + - The location of some install files has changed. This should not + affect most users. Those who might be affected: + + * For people who use Valgrind with MPI programs, the installed + libmpiwrap.so library has moved from + $(INSTALL)//libmpiwrap.so to + $(INSTALL)/libmpiwrap-.so. + + * For people who distribute standalone Valgrind tools, the + installed libraries such as $(INSTALL)//libcoregrind.a + have moved to $(INSTALL)/libcoregrind-.a. + + These changes simplify the build system. + + - Previously, all the distributed suppression (*.supp) files were + installed. Now, only default.supp is installed. This should not + affect users as the other installed suppression files were not + read; the fact that they were installed was a mistake. + + +* KNOWN LIMITATIONS: + + - Memcheck is unusable with the Intel compiler suite version 11.1, + when it generates code for SSE2-and-above capable targets. This + is because of icc's use of highly optimised inlined strlen + implementations. It causes Memcheck to report huge numbers of + false errors even in simple programs. Helgrind and DRD may also + have problems. + + Versions 11.0 and earlier may be OK, but this has not been + properly tested. + + +The following bugs have been fixed or resolved. Note that "n-i-bz" +stands for "not in bugzilla" -- that is, a bug that was reported to us +but never got a bugzilla entry. We encourage you to file bugs in +bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than +mailing the developers (or mailing lists) directly -- bugs that are +not entered into bugzilla tend to get forgotten about or ignored. + +To see details of a given bug, visit +https://bugs.kde.org/show_bug.cgi?id=XXXXXX +where XXXXXX is the bug number as listed below. + +84303 How about a LockCheck tool? +91633 dereference of null ptr in vgPlain_st_basetype +97452 Valgrind doesn't report any pthreads problems +100628 leak-check gets assertion failure when using + VALGRIND_MALLOCLIKE_BLOCK on malloc()ed memory +108528 NPTL pthread cleanup handlers not called +110126 Valgrind 2.4.1 configure.in tramples CFLAGS +110128 mallinfo is not implemented... +110770 VEX: Generated files not always updated when making valgrind +111102 Memcheck: problems with large (memory footprint) applications +115673 Vex's decoder should never assert +117564 False positive: Syscall param clone(child_tidptr) contains + uninitialised byte(s) +119404 executing ssh from inside valgrind fails +133679 Callgrind does not write path names to sources with dwarf debug + info +135847 configure.in problem with non gnu compilers (and possible fix) +136154 threads.c:273 (vgCallgrind_post_signal): Assertion + '*(vgCallgrind_current_fn_stack.top) == 0' failed. +136230 memcheck reports "possibly lost", should be "still reachable" +137073 NULL arg to MALLOCLIKE_BLOCK causes crash +137904 Valgrind reports a memory leak when using POSIX threads, + while it shouldn't +139076 valgrind VT_GETSTATE error +142228 complaint of elf_dynamic_do_rela in trivial usage +145347 spurious warning with USBDEVFS_REAPURB +148441 (wine) can't find memory leak in Wine, win32 binary + executable file. +148742 Leak-check fails assert on exit +149878 add (proper) check for calloc integer overflow +150606 Call graph is broken when using callgrind control +152393 leak errors produce an exit code of 0. I need some way to + cause leak errors to result in a nonzero exit code. +157154 documentation (leak-resolution doc speaks about num-callers + def=4) + what is a loss record +159501 incorrect handling of ALSA ioctls +162020 Valgrinding an empty/zero-byte file crashes valgrind +162482 ppc: Valgrind crashes while reading stabs information +162718 x86: avoid segment selector 0 in sys_set_thread_area() +163253 (wine) canonicaliseSymtab forgot some fields in DiSym +163560 VEX/test_main.c is missing from valgrind-3.3.1 +164353 malloc_usable_size() doesn't return a usable size +165468 Inconsistent formatting in memcheck manual -- please fix +169505 main.c:286 (endOfInstr): + Assertion 'ii->cost_offset == *cost_offset' failed +177206 Generate default.supp during compile instead of configure +177209 Configure valt_load_address based on arch+os +177305 eventfd / syscall 323 patch lost +179731 Tests fail to build because of inlining of non-local asm labels +181394 helgrind: libhb_core.c:3762 (msm_write): Assertion + 'ordxx == POrd_EQ || ordxx == POrd_LT' failed. +181594 Bogus warning for empty text segment +181707 dwarf doesn't require enumerations to have name +185038 exp-ptrcheck: "unhandled syscall: 285" (fallocate) on x86_64 +185050 exp-ptrcheck: sg_main.c:727 (add_block_to_GlobalTree): + Assertion '!already_present' failed. +185359 exp-ptrcheck: unhandled syscall getresuid() +185794 "WARNING: unhandled syscall: 285" (fallocate) on x86_64 +185816 Valgrind is unable to handle debug info for files with split + debug info that are prelinked afterwards +185980 [darwin] unhandled syscall: sem_open +186238 bbToIR_AMD64: disInstr miscalculated next %rip +186507 exp-ptrcheck unhandled syscalls prctl, etc. +186790 Suppression pattern used for leaks are not reported +186796 Symbols with length>200 in suppression files are ignored +187048 drd: mutex PTHREAD_PROCESS_SHARED attribute missinterpretation +187416 exp-ptrcheck: support for __NR_{setregid,setreuid,setresuid} +188038 helgrind: hg_main.c:926: mk_SHVAL_fail: the 'impossible' happened +188046 bashisms in the configure script +188127 amd64->IR: unhandled instruction bytes: 0xF0 0xF 0xB0 0xA +188161 memcheck: --track-origins=yes asserts "mc_machine.c:672 + (get_otrack_shadow_offset_wrk): the 'impossible' happened." +188248 helgrind: pthread_cleanup_push, pthread_rwlock_unlock, + assertion fail "!lock->heldBy" +188427 Add support for epoll_create1 (with patch) +188530 Support for SIOCGSTAMPNS +188560 Include valgrind.spec in the tarball +188572 Valgrind on Mac should suppress setenv() mem leak +189054 Valgrind fails to build because of duplicate non-local asm labels +189737 vex amd64->IR: unhandled instruction bytes: 0xAC +189762 epoll_create syscall not handled (--tool=exp-ptrcheck) +189763 drd assertion failure: s_threadinfo[tid].is_recording +190219 unhandled syscall: 328 (x86-linux) +190391 dup of 181394; see above +190429 Valgrind reports lots of errors in ld.so with x86_64 2.9.90 glibc +190820 No debug information on powerpc-linux +191095 PATCH: Improve usbdevfs ioctl handling +191182 memcheck: VALGRIND_LEAK_CHECK quadratic when big nr of chunks + or big nr of errors +191189 --xml=yes should obey --gen-suppressions=all +191192 syslog() needs a suppression on macosx +191271 DARWIN: WARNING: unhandled syscall: 33554697 a.k.a.: 265 +191761 getrlimit on MacOSX +191992 multiple --fn-skip only works sometimes; dependent on order +192634 V. reports "aspacem sync_check_mapping_callback: + segment mismatch" on Darwin +192954 __extension__ missing on 2 client requests +194429 Crash at start-up with glibc-2.10.1 and linux-2.6.29 +194474 "INSTALL" file has different build instructions than "README" +194671 Unhandled syscall (sem_wait?) from mac valgrind +195069 memcheck: reports leak (memory still reachable) for + printf("%d', x) +195169 drd: (vgDrd_barrier_post_wait): + Assertion 'r->sg[p->post_iteration]' failed. +195268 valgrind --log-file doesn't accept ~/... +195838 VEX abort: LibVEX_N_SPILL_BYTES too small for CPUID boilerplate +195860 WARNING: unhandled syscall: unix:223 +196528 need a error suppression for pthread_rwlock_init under os x? +197227 Support aio_* syscalls on Darwin +197456 valgrind should reject --suppressions=(directory) +197512 DWARF2 CFI reader: unhandled CFI instruction 0:10 +197591 unhandled syscall 27 (mincore) +197793 Merge DCAS branch to the trunk == 85756, 142103 +197794 Avoid duplicate filenames in Vex +197898 make check fails on current SVN +197901 make check fails also under exp-ptrcheck in current SVN +197929 Make --leak-resolution=high the default +197930 Reduce spacing between leak reports +197933 Print command line of client at start-up, and shorten preamble +197966 unhandled syscall 205 (x86-linux, --tool=exp-ptrcheck) +198395 add BBV to the distribution as an experimental tool +198624 Missing syscalls on Darwin: 82, 167, 281, 347 +198649 callgrind_annotate doesn't cumulate counters +199338 callgrind_annotate sorting/thresholds are broken for all but Ir +199977 Valgrind complains about an unrecognized instruction in the + atomic_incs test program +200029 valgrind isn't able to read Fedora 12 debuginfo +200760 darwin unhandled syscall: unix:284 +200827 DRD doesn't work on Mac OS X +200990 VG_(read_millisecond_timer)() does not work correctly +201016 Valgrind does not support pthread_kill() on Mac OS +201169 Document --read-var-info +201323 Pre-3.5.0 performance sanity checking +201384 Review user manual for the 3.5.0 release +201585 mfpvr not implemented on ppc +201708 tests failing because x86 direction flag is left set +201757 Valgrind doesn't handle any recent sys_futex additions +204377 64-bit valgrind can not start a shell script + (with #!/path/to/shell) if the shell is a 32-bit executable +n-i-bz drd: fixed assertion failure triggered by mutex reinitialization. +n-i-bz drd: fixed a bug that caused incorrect messages to be printed + about memory allocation events with memory access tracing enabled +n-i-bz drd: fixed a memory leak triggered by vector clock deallocation + +(3.5.0: 19 Aug 2009, vex r1913, valgrind r10846). + + + +Release 3.4.1 (28 February 2009) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.4.1 is a bug-fix release that fixes some regressions and assertion +failures in debug info reading in 3.4.0, most notably incorrect stack +traces on amd64-linux on older (glibc-2.3 based) systems. Various +other debug info problems are also fixed. A number of bugs in the +exp-ptrcheck tool introduced in 3.4.0 have been fixed. + +In view of the fact that 3.4.0 contains user-visible regressions +relative to 3.3.x, upgrading to 3.4.1 is recommended. Packagers are +encouraged to ship 3.4.1 in preference to 3.4.0. + +The fixed bugs are as follows. Note that "n-i-bz" stands for "not in +bugzilla" -- that is, a bug that was reported to us but never got a +bugzilla entry. We encourage you to file bugs in bugzilla +(http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the +developers (or mailing lists) directly -- bugs that are not entered +into bugzilla tend to get forgotten about or ignored. + +n-i-bz Fix various bugs reading icc-11 generated debug info +n-i-bz Fix various bugs reading gcc-4.4 generated debug info +n-i-bz Preliminary support for glibc-2.10 / Fedora 11 +n-i-bz Cachegrind and Callgrind: handle non-power-of-two cache sizes, + so as to support (eg) 24k Atom D1 and Core2 with 3/6/12MB L2. +179618 exp-ptrcheck crashed / exit prematurely +179624 helgrind: false positive races with pthread_create and + recv/open/close/read +134207 pkg-config output contains @VG_PLATFORM@ +176926 floating point exception at valgrind startup with PPC 440EPX +181594 Bogus warning for empty text segment +173751 amd64->IR: 0x48 0xF 0x6F 0x45 (even more redundant rex prefixes) +181707 Dwarf3 doesn't require enumerations to have name +185038 exp-ptrcheck: "unhandled syscall: 285" (fallocate) on x86_64 +185050 exp-ptrcheck: sg_main.c:727 (add_block_to_GlobalTree): + Assertion '!already_present' failed. +185359 exp-ptrcheck unhandled syscall getresuid() + +(3.4.1.RC1: 24 Feb 2008, vex r1884, valgrind r9253). +(3.4.1: 28 Feb 2008, vex r1884, valgrind r9293). + + + +Release 3.4.0 (2 January 2009) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.4.0 is a feature release with many significant improvements and the +usual collection of bug fixes. This release supports X86/Linux, +AMD64/Linux, PPC32/Linux and PPC64/Linux. Support for recent distros +(using gcc 4.4, glibc 2.8 and 2.9) has been added. + +3.4.0 brings some significant tool improvements. Memcheck can now +report the origin of uninitialised values, the thread checkers +Helgrind and DRD are much improved, and we have a new experimental +tool, exp-Ptrcheck, which is able to detect overruns of stack and +global arrays. In detail: + +* Memcheck is now able to track the origin of uninitialised values. + When it reports an uninitialised value error, it will try to show + the origin of the value, as either a heap or stack allocation. + Origin tracking is expensive and so is not enabled by default. To + use it, specify --track-origins=yes. Memcheck's speed will be + essentially halved, and memory usage will be significantly + increased. Nevertheless it can drastically reduce the effort + required to identify the root cause of uninitialised value errors, + and so is often a programmer productivity win, despite running more + slowly. + +* A version (1.4.0) of the Valkyrie GUI, that works with Memcheck in + 3.4.0, will be released shortly. + +* Helgrind's race detection algorithm has been completely redesigned + and reimplemented, to address usability and scalability concerns: + + - The new algorithm has a lower false-error rate: it is much less + likely to report races that do not really exist. + + - Helgrind will display full call stacks for both accesses involved + in a race. This makes it easier to identify the root causes of + races. + + - Limitations on the size of program that can run have been removed. + + - Performance has been modestly improved, although that is very + workload-dependent. + + - Direct support for Qt4 threading has been added. + + - pthread_barriers are now directly supported. + + - Helgrind works well on all supported Linux targets. + +* The DRD thread debugging tool has seen major improvements: + + - Greatly improved performance and significantly reduced memory + usage. + + - Support for several major threading libraries (Boost.Thread, Qt4, + glib, OpenMP) has been added. + + - Support for atomic instructions, POSIX semaphores, barriers and + reader-writer locks has been added. + + - Works now on PowerPC CPUs too. + + - Added support for printing thread stack usage at thread exit time. + + - Added support for debugging lock contention. + + - Added a manual for Drd. + +* A new experimental tool, exp-Ptrcheck, has been added. Ptrcheck + checks for misuses of pointers. In that sense it is a bit like + Memcheck. However, Ptrcheck can do things Memcheck can't: it can + detect overruns of stack and global arrays, it can detect + arbitrarily far out-of-bounds accesses to heap blocks, and it can + detect accesses heap blocks that have been freed a very long time + ago (millions of blocks in the past). + + Ptrcheck currently works only on x86-linux and amd64-linux. To use + it, use --tool=exp-ptrcheck. A simple manual is provided, as part + of the main Valgrind documentation. As this is an experimental + tool, we would be particularly interested in hearing about your + experiences with it. + +* exp-Omega, an experimental instantaneous leak-detecting tool, is no + longer built by default, although the code remains in the repository + and the tarball. This is due to three factors: a perceived lack of + users, a lack of maintenance, and concerns that it may not be + possible to achieve reliable operation using the existing design. + +* As usual, support for the latest Linux distros and toolchain + components has been added. It should work well on Fedora Core 10, + OpenSUSE 11.1 and Ubuntu 8.10. gcc-4.4 (in its current pre-release + state) is supported, as is glibc-2.9. The C++ demangler has been + updated so as to work well with C++ compiled by even the most recent + g++'s. + +* You can now use frame-level wildcards in suppressions. This was a + frequently-requested enhancement. A line "..." in a suppression now + matches zero or more frames. This makes it easier to write + suppressions which are precise yet insensitive to changes in + inlining behaviour. + +* 3.4.0 adds support on x86/amd64 for the SSSE3 instruction set. + +* Very basic support for IBM Power6 has been added (64-bit processes only). + +* Valgrind is now cross-compilable. For example, it is possible to + cross compile Valgrind on an x86/amd64-linux host, so that it runs + on a ppc32/64-linux target. + +* You can set the main thread's stack size at startup using the + new --main-stacksize= flag (subject of course to ulimit settings). + This is useful for running apps that need a lot of stack space. + +* The limitation that you can't use --trace-children=yes together + with --db-attach=yes has been removed. + +* The following bugs have been fixed. Note that "n-i-bz" stands for + "not in bugzilla" -- that is, a bug that was reported to us but + never got a bugzilla entry. We encourage you to file bugs in + bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than + mailing the developers (or mailing lists) directly. + + n-i-bz Make return types for some client requests 64-bit clean + n-i-bz glibc 2.9 support + n-i-bz ignore unsafe .valgrindrc's (CVE-2008-4865) + n-i-bz MPI_Init(0,0) is valid but libmpiwrap.c segfaults + n-i-bz Building in an env without gdb gives bogus gdb attach + 92456 Tracing the origin of uninitialised memory + 106497 Valgrind does not demangle some C++ template symbols + 162222 ==106497 + 151612 Suppression with "..." (frame-level wildcards in .supp files) + 156404 Unable to start oocalc under memcheck on openSUSE 10.3 (64-bit) + 159285 unhandled syscall:25 (stime, on x86-linux) + 159452 unhandled ioctl 0x8B01 on "valgrind iwconfig" + 160954 ppc build of valgrind crashes with illegal instruction (isel) + 160956 mallinfo implementation, w/ patch + 162092 Valgrind fails to start gnome-system-monitor + 162819 malloc_free_fill test doesn't pass on glibc2.8 x86 + 163794 assertion failure with "--track-origins=yes" + 163933 sigcontext.err and .trapno must be set together + 163955 remove constraint !(--db-attach=yes && --trace-children=yes) + 164476 Missing kernel module loading system calls + 164669 SVN regression: mmap() drops posix file locks + 166581 Callgrind output corruption when program forks + 167288 Patch file for missing system calls on Cell BE + 168943 unsupported scas instruction pentium + 171645 Unrecognised instruction (MOVSD, non-binutils encoding) + 172417 x86->IR: 0x82 ... + 172563 amd64->IR: 0xD9 0xF5 - fprem1 + 173099 .lds linker script generation error + 173177 [x86_64] syscalls: 125/126/179 (capget/capset/quotactl) + 173751 amd64->IR: 0x48 0xF 0x6F 0x45 (even more redundant prefixes) + 174532 == 173751 + 174908 --log-file value not expanded correctly for core file + 175044 Add lookup_dcookie for amd64 + 175150 x86->IR: 0xF2 0xF 0x11 0xC1 (movss non-binutils encoding) + +Developer-visible changes: + +* Valgrind's debug-info reading machinery has been majorly overhauled. + It can now correctly establish the addresses for ELF data symbols, + which is something that has never worked properly before now. + + Also, Valgrind can now read DWARF3 type and location information for + stack and global variables. This makes it possible to use the + framework to build tools that rely on knowing the type and locations + of stack and global variables, for example exp-Ptrcheck. + + Reading of such information is disabled by default, because most + tools don't need it, and because it is expensive in space and time. + However, you can force Valgrind to read it, using the + --read-var-info=yes flag. Memcheck, Helgrind and DRD are able to + make use of such information, if present, to provide source-level + descriptions of data addresses in the error messages they create. + +(3.4.0.RC1: 24 Dec 2008, vex r1878, valgrind r8882). +(3.4.0: 3 Jan 2009, vex r1878, valgrind r8899). + + +Release 3.3.1 (4 June 2008) +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.3.1 fixes a bunch of bugs in 3.3.0, adds support for glibc-2.8 based +systems (openSUSE 11, Fedora Core 9), improves the existing glibc-2.7 +support, and adds support for the SSSE3 (Core 2) instruction set. + +3.3.1 will likely be the last release that supports some very old +systems. In particular, the next major release, 3.4.0, will drop +support for the old LinuxThreads threading library, and for gcc +versions prior to 3.0. + +The fixed bugs are as follows. Note that "n-i-bz" stands for "not in +bugzilla" -- that is, a bug that was reported to us but never got a +bugzilla entry. We encourage you to file bugs in bugzilla +(http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the +developers (or mailing lists) directly -- bugs that are not entered +into bugzilla tend to get forgotten about or ignored. + +n-i-bz Massif segfaults at exit +n-i-bz Memcheck asserts on Altivec code +n-i-bz fix sizeof bug in Helgrind +n-i-bz check fd on sys_llseek +n-i-bz update syscall lists to kernel 2.6.23.1 +n-i-bz support sys_sync_file_range +n-i-bz handle sys_sysinfo, sys_getresuid, sys_getresgid on ppc64-linux +n-i-bz intercept memcpy in 64-bit ld.so's +n-i-bz Fix wrappers for sys_{futimesat,utimensat} +n-i-bz Minor false-error avoidance fixes for Memcheck +n-i-bz libmpiwrap.c: add a wrapper for MPI_Waitany +n-i-bz helgrind support for glibc-2.8 +n-i-bz partial fix for mc_leakcheck.c:698 assert: + 'lc_shadows[i]->data + lc_shadows[i] ... +n-i-bz Massif/Cachegrind output corruption when programs fork +n-i-bz register allocator fix: handle spill stores correctly +n-i-bz add support for PA6T PowerPC CPUs +126389 vex x86->IR: 0xF 0xAE (FXRSTOR) +158525 ==126389 +152818 vex x86->IR: 0xF3 0xAC (repz lodsb) +153196 vex x86->IR: 0xF2 0xA6 (repnz cmpsb) +155011 vex x86->IR: 0xCF (iret) +155091 Warning [...] unhandled DW_OP_ opcode 0x23 +156960 ==155901 +155528 support Core2/SSSE3 insns on x86/amd64 +155929 ms_print fails on massif outputs containing long lines +157665 valgrind fails on shmdt(0) after shmat to 0 +157748 support x86 PUSHFW/POPFW +158212 helgrind: handle pthread_rwlock_try{rd,wr}lock. +158425 sys_poll incorrectly emulated when RES==0 +158744 vex amd64->IR: 0xF0 0x41 0xF 0xC0 (xaddb) +160907 Support for a couple of recent Linux syscalls +161285 Patch -- support for eventfd() syscall +161378 illegal opcode in debug libm (FUCOMPP) +160136 ==161378 +161487 number of suppressions files is limited to 10 +162386 ms_print typo in milliseconds time unit for massif +161036 exp-drd: client allocated memory was never freed +162663 signalfd_wrapper fails on 64bit linux + +(3.3.1.RC1: 2 June 2008, vex r1854, valgrind r8169). +(3.3.1: 4 June 2008, vex r1854, valgrind r8180). + + + +Release 3.3.0 (7 December 2007) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.3.0 is a feature release with many significant improvements and the +usual collection of bug fixes. This release supports X86/Linux, +AMD64/Linux, PPC32/Linux and PPC64/Linux. Support for recent distros +(using gcc 4.3, glibc 2.6 and 2.7) has been added. + +The main excitement in 3.3.0 is new and improved tools. Helgrind +works again, Massif has been completely overhauled and much improved, +Cachegrind now does branch-misprediction profiling, and a new category +of experimental tools has been created, containing two new tools: +Omega and DRD. There are many other smaller improvements. In detail: + +- Helgrind has been completely overhauled and works for the first time + since Valgrind 2.2.0. Supported functionality is: detection of + misuses of the POSIX PThreads API, detection of potential deadlocks + resulting from cyclic lock dependencies, and detection of data + races. Compared to the 2.2.0 Helgrind, the race detection algorithm + has some significant improvements aimed at reducing the false error + rate. Handling of various kinds of corner cases has been improved. + Efforts have been made to make the error messages easier to + understand. Extensive documentation is provided. + +- Massif has been completely overhauled. Instead of measuring + space-time usage -- which wasn't always useful and many people found + confusing -- it now measures space usage at various points in the + execution, including the point of peak memory allocation. Its + output format has also changed: instead of producing PostScript + graphs and HTML text, it produces a single text output (via the new + 'ms_print' script) that contains both a graph and the old textual + information, but in a more compact and readable form. Finally, the + new version should be more reliable than the old one, as it has been + tested more thoroughly. + +- Cachegrind has been extended to do branch-misprediction profiling. + Both conditional and indirect branches are profiled. The default + behaviour of Cachegrind is unchanged. To use the new functionality, + give the option --branch-sim=yes. + +- A new category of "experimental tools" has been created. Such tools + may not work as well as the standard tools, but are included because + some people will find them useful, and because exposure to a wider + user group provides tool authors with more end-user feedback. These + tools have a "exp-" prefix attached to their names to indicate their + experimental nature. Currently there are two experimental tools: + + * exp-Omega: an instantaneous leak detector. See + exp-omega/docs/omega_introduction.txt. + + * exp-DRD: a data race detector based on the happens-before + relation. See exp-drd/docs/README.txt. + +- Scalability improvements for very large programs, particularly those + which have a million or more malloc'd blocks in use at once. These + improvements mostly affect Memcheck. Memcheck is also up to 10% + faster for all programs, with x86-linux seeing the largest + improvement. + +- Works well on the latest Linux distros. Has been tested on Fedora + Core 8 (x86, amd64, ppc32, ppc64) and openSUSE 10.3. glibc 2.6 and + 2.7 are supported. gcc-4.3 (in its current pre-release state) is + supported. At the same time, 3.3.0 retains support for older + distros. + +- The documentation has been modestly reorganised with the aim of + making it easier to find information on common-usage scenarios. + Some advanced material has been moved into a new chapter in the main + manual, so as to unclutter the main flow, and other tidying up has + been done. + +- There is experimental support for AIX 5.3, both 32-bit and 64-bit + processes. You need to be running a 64-bit kernel to use Valgrind + on a 64-bit executable. + +- There have been some changes to command line options, which may + affect you: + + * --log-file-exactly and + --log-file-qualifier options have been removed. + + To make up for this --log-file option has been made more powerful. + It now accepts a %p format specifier, which is replaced with the + process ID, and a %q{FOO} format specifier, which is replaced with + the contents of the environment variable FOO. + + * --child-silent-after-fork=yes|no [no] + + Causes Valgrind to not show any debugging or logging output for + the child process resulting from a fork() call. This can make the + output less confusing (although more misleading) when dealing with + processes that create children. + + * --cachegrind-out-file, --callgrind-out-file and --massif-out-file + + These control the names of the output files produced by + Cachegrind, Callgrind and Massif. They accept the same %p and %q + format specifiers that --log-file accepts. --callgrind-out-file + replaces Callgrind's old --base option. + + * Cachegrind's 'cg_annotate' script no longer uses the -- + option to specify the output file. Instead, the first non-option + argument is taken to be the name of the output file, and any + subsequent non-option arguments are taken to be the names of + source files to be annotated. + + * Cachegrind and Callgrind now use directory names where possible in + their output files. This means that the -I option to + 'cg_annotate' and 'callgrind_annotate' should not be needed in + most cases. It also means they can correctly handle the case + where two source files in different directories have the same + name. + +- Memcheck offers a new suppression kind: "Jump". This is for + suppressing jump-to-invalid-address errors. Previously you had to + use an "Addr1" suppression, which didn't make much sense. + +- Memcheck has new flags --malloc-fill= and + --free-fill= which free malloc'd / free'd areas with the + specified byte. This can help shake out obscure memory corruption + problems. The definedness and addressability of these areas is + unchanged -- only the contents are affected. + +- The behaviour of Memcheck's client requests VALGRIND_GET_VBITS and + VALGRIND_SET_VBITS have changed slightly. They no longer issue + addressability errors -- if either array is partially unaddressable, + they just return 3 (as before). Also, SET_VBITS doesn't report + definedness errors if any of the V bits are undefined. + +- The following Memcheck client requests have been removed: + VALGRIND_MAKE_NOACCESS + VALGRIND_MAKE_WRITABLE + VALGRIND_MAKE_READABLE + VALGRIND_CHECK_WRITABLE + VALGRIND_CHECK_READABLE + VALGRIND_CHECK_DEFINED + They were deprecated in 3.2.0, when equivalent but better-named client + requests were added. See the 3.2.0 release notes for more details. + +- The behaviour of the tool Lackey has changed slightly. First, the output + from --trace-mem has been made more compact, to reduce the size of the + traces. Second, a new option --trace-superblocks has been added, which + shows the addresses of superblocks (code blocks) as they are executed. + +- The following bugs have been fixed. Note that "n-i-bz" stands for + "not in bugzilla" -- that is, a bug that was reported to us but + never got a bugzilla entry. We encourage you to file bugs in + bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than + mailing the developers (or mailing lists) directly. + + n-i-bz x86_linux_REDIR_FOR_index() broken + n-i-bz guest-amd64/toIR.c:2512 (dis_op2_E_G): Assertion `0' failed. + n-i-bz Support x86 INT insn (INT (0xCD) 0x40 - 0x43) + n-i-bz Add sys_utimensat system call for Linux x86 platform + 79844 Helgrind complains about race condition which does not exist + 82871 Massif output function names too short + 89061 Massif: ms_main.c:485 (get_XCon): Assertion `xpt->max_chi...' + 92615 Write output from Massif at crash + 95483 massif feature request: include peak allocation in report + 112163 MASSIF crashed with signal 7 (SIGBUS) after running 2 days + 119404 problems running setuid executables (partial fix) + 121629 add instruction-counting mode for timing + 127371 java vm giving unhandled instruction bytes: 0x26 0x2E 0x64 0x65 + 129937 ==150380 + 129576 Massif loses track of memory, incorrect graphs + 132132 massif --format=html output does not do html entity escaping + 132950 Heap alloc/usage summary + 133962 unhandled instruction bytes: 0xF2 0x4C 0xF 0x10 + 134990 use -fno-stack-protector if possible + 136382 ==134990 + 137396 I would really like helgrind to work again... + 137714 x86/amd64->IR: 0x66 0xF 0xF7 0xC6 (maskmovq, maskmovdq) + 141631 Massif: percentages don't add up correctly + 142706 massif numbers don't seem to add up + 143062 massif crashes on app exit with signal 8 SIGFPE + 144453 (get_XCon): Assertion 'xpt->max_children != 0' failed. + 145559 valgrind aborts when malloc_stats is called + 145609 valgrind aborts all runs with 'repeated section!' + 145622 --db-attach broken again on x86-64 + 145837 ==149519 + 145887 PPC32: getitimer() system call is not supported + 146252 ==150678 + 146456 (update_XCon): Assertion 'xpt->curr_space >= -space_delta'... + 146701 ==134990 + 146781 Adding support for private futexes + 147325 valgrind internal error on syscall (SYS_io_destroy, 0) + 147498 amd64->IR: 0xF0 0xF 0xB0 0xF (lock cmpxchg %cl,(%rdi)) + 147545 Memcheck: mc_main.c:817 (get_sec_vbits8): Assertion 'n' failed. + 147628 SALC opcode 0xd6 unimplemented + 147825 crash on amd64-linux with gcc 4.2 and glibc 2.6 (CFI) + 148174 Incorrect type of freed_list_volume causes assertion [...] + 148447 x86_64 : new NOP codes: 66 66 66 66 2e 0f 1f + 149182 PPC Trap instructions not implemented in valgrind + 149504 Assertion hit on alloc_xpt->curr_space >= -space_delta + 149519 ppc32: V aborts with SIGSEGV on execution of a signal handler + 149892 ==137714 + 150044 SEGV during stack deregister + 150380 dwarf/gcc interoperation (dwarf3 read problems) + 150408 ==148447 + 150678 guest-amd64/toIR.c:3741 (dis_Grp5): Assertion `sz == 4' failed + 151209 V unable to execute programs for users with UID > 2^16 + 151938 help on --db-command= misleading + 152022 subw $0x28, %%sp causes assertion failure in memcheck + 152357 inb and outb not recognized in 64-bit mode + 152501 vex x86->IR: 0x27 0x66 0x89 0x45 (daa) + 152818 vex x86->IR: 0xF3 0xAC 0xFC 0x9C (rep lodsb) + +Developer-visible changes: + +- The names of some functions and types within the Vex IR have + changed. Run 'svn log -r1689 VEX/pub/libvex_ir.h' for full details. + Any existing standalone tools will have to be updated to reflect + these changes. The new names should be clearer. The file + VEX/pub/libvex_ir.h is also much better commented. + +- A number of new debugging command line options have been added. + These are mostly of use for debugging the symbol table and line + number readers: + + --trace-symtab-patt= limit debuginfo tracing to obj name + --trace-cfi=no|yes show call-frame-info details? [no] + --debug-dump=syms mimic /usr/bin/readelf --syms + --debug-dump=line mimic /usr/bin/readelf --debug-dump=line + --debug-dump=frames mimic /usr/bin/readelf --debug-dump=frames + --sym-offsets=yes|no show syms in form 'name+offset' ? [no] + +- Internally, the code base has been further factorised and + abstractified, particularly with respect to support for non-Linux + OSs. + +(3.3.0.RC1: 2 Dec 2007, vex r1803, valgrind r7268). +(3.3.0.RC2: 5 Dec 2007, vex r1804, valgrind r7282). +(3.3.0.RC3: 9 Dec 2007, vex r1804, valgrind r7288). +(3.3.0: 10 Dec 2007, vex r1804, valgrind r7290). + + + +Release 3.2.3 (29 Jan 2007) +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Unfortunately 3.2.2 introduced a regression which can cause an +assertion failure ("vex: the `impossible' happened: eqIRConst") when +running obscure pieces of SSE code. 3.2.3 fixes this and adds one +more glibc-2.5 intercept. In all other respects it is identical to +3.2.2. Please do not use (or package) 3.2.2; instead use 3.2.3. + +n-i-bz vex: the `impossible' happened: eqIRConst +n-i-bz Add an intercept for glibc-2.5 __stpcpy_chk + +(3.2.3: 29 Jan 2007, vex r1732, valgrind r6560). + + +Release 3.2.2 (22 Jan 2007) +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.2.2 fixes a bunch of bugs in 3.2.1, adds support for glibc-2.5 based +systems (openSUSE 10.2, Fedora Core 6), improves support for icc-9.X +compiled code, and brings modest performance improvements in some +areas, including amd64 floating point, powerpc support, and startup +responsiveness on all targets. + +The fixed bugs are as follows. Note that "n-i-bz" stands for "not in +bugzilla" -- that is, a bug that was reported to us but never got a +bugzilla entry. We encourage you to file bugs in bugzilla +(http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the +developers (or mailing lists) directly. + +129390 ppc?->IR: some kind of VMX prefetch (dstt) +129968 amd64->IR: 0xF 0xAE 0x0 (fxsave) +134319 ==129968 +133054 'make install' fails with syntax errors +118903 ==133054 +132998 startup fails in when running on UML +134207 pkg-config output contains @VG_PLATFORM@ +134727 valgrind exits with "Value too large for defined data type" +n-i-bz ppc32/64: support mcrfs +n-i-bz Cachegrind/Callgrind: Update cache parameter detection +135012 x86->IR: 0xD7 0x8A 0xE0 0xD0 (xlat) +125959 ==135012 +126147 x86->IR: 0xF2 0xA5 0xF 0x77 (repne movsw) +136650 amd64->IR: 0xC2 0x8 0x0 +135421 x86->IR: unhandled Grp5(R) case 6 +n-i-bz Improved documentation of the IR intermediate representation +n-i-bz jcxz (x86) (users list, 8 Nov) +n-i-bz ExeContext hashing fix +n-i-bz fix CFI reading failures ("Dwarf CFI 0:24 0:32 0:48 0:7") +n-i-bz fix Cachegrind/Callgrind simulation bug +n-i-bz libmpiwrap.c: fix handling of MPI_LONG_DOUBLE +n-i-bz make User errors suppressible +136844 corrupted malloc line when using --gen-suppressions=yes +138507 ==136844 +n-i-bz Speed up the JIT's register allocator +n-i-bz Fix confusing leak-checker flag hints +n-i-bz Support recent autoswamp versions +n-i-bz ppc32/64 dispatcher speedups +n-i-bz ppc64 front end rld/rlw improvements +n-i-bz ppc64 back end imm64 improvements +136300 support 64K pages on ppc64-linux +139124 == 136300 +n-i-bz fix ppc insn set tests for gcc >= 4.1 +137493 x86->IR: recent binutils no-ops +137714 x86->IR: 0x66 0xF 0xF7 0xC6 (maskmovdqu) +138424 "failed in UME with error 22" (produce a better error msg) +138856 ==138424 +138627 Enhancement support for prctl ioctls +138896 Add support for usb ioctls +136059 ==138896 +139050 ppc32->IR: mfspr 268/269 instructions not handled +n-i-bz ppc32->IR: lvxl/stvxl +n-i-bz glibc-2.5 support +n-i-bz memcheck: provide replacement for mempcpy +n-i-bz memcheck: replace bcmp in ld.so +n-i-bz Use 'ifndef' in VEX's Makefile correctly +n-i-bz Suppressions for MVL 4.0.1 on ppc32-linux +n-i-bz libmpiwrap.c: Fixes for MPICH +n-i-bz More robust handling of hinted client mmaps +139776 Invalid read in unaligned memcpy with Intel compiler v9 +n-i-bz Generate valid XML even for very long fn names +n-i-bz Don't prompt about suppressions for unshown reachable leaks +139910 amd64 rcl is not supported +n-i-bz DWARF CFI reader: handle DW_CFA_undefined +n-i-bz DWARF CFI reader: handle icc9 generated CFI info better +n-i-bz fix false uninit-value errs in icc9 generated FP code +n-i-bz reduce extraneous frames in libmpiwrap.c +n-i-bz support pselect6 on amd64-linux + +(3.2.2: 22 Jan 2007, vex r1729, valgrind r6545). + + +Release 3.2.1 (16 Sept 2006) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.2.1 adds x86/amd64 support for all SSE3 instructions except monitor +and mwait, further reduces memcheck's false error rate on all +platforms, adds support for recent binutils (in OpenSUSE 10.2 and +Fedora Rawhide) and fixes a bunch of bugs in 3.2.0. Some of the fixed +bugs were causing large programs to segfault with --tool=callgrind and +--tool=cachegrind, so an upgrade is recommended. + +In view of the fact that any 3.3.0 release is unlikely to happen until +well into 1Q07, we intend to keep the 3.2.X line alive for a while +yet, and so we tentatively plan a 3.2.2 release sometime in December +06. + +The fixed bugs are as follows. Note that "n-i-bz" stands for "not in +bugzilla" -- that is, a bug that was reported to us but never got a +bugzilla entry. + +n-i-bz Expanding brk() into last available page asserts +n-i-bz ppc64-linux stack RZ fast-case snafu +n-i-bz 'c' in --gen-supps=yes doesn't work +n-i-bz VG_N_SEGMENTS too low (users, 28 June) +n-i-bz VG_N_SEGNAMES too low (Stu Robinson) +106852 x86->IR: fisttp (SSE3) +117172 FUTEX_WAKE does not use uaddr2 +124039 Lacks support for VKI_[GP]IO_UNIMAP* +127521 amd64->IR: 0xF0 0x48 0xF 0xC7 (cmpxchg8b) +128917 amd64->IR: 0x66 0xF 0xF6 0xC4 (psadbw,SSE2) +129246 JJ: ppc32/ppc64 syscalls, w/ patch +129358 x86->IR: fisttpl (SSE3) +129866 cachegrind/callgrind causes executable to die +130020 Can't stat .so/.exe error while reading symbols +130388 Valgrind aborts when process calls malloc_trim() +130638 PATCH: ppc32 missing system calls +130785 amd64->IR: unhandled instruction "pushfq" +131481: (HINT_NOP) vex x86->IR: 0xF 0x1F 0x0 0xF +131298 ==131481 +132146 Programs with long sequences of bswap[l,q]s +132918 vex amd64->IR: 0xD9 0xF8 (fprem) +132813 Assertion at priv/guest-x86/toIR.c:652 fails +133051 'cfsi->len > 0 && cfsi->len < 2000000' failed +132722 valgrind header files are not standard C +n-i-bz Livelocks entire machine (users list, Timothy Terriberry) +n-i-bz Alex Bennee mmap problem (9 Aug) +n-i-bz BartV: Don't print more lines of a stack-trace than were obtained. +n-i-bz ppc32 SuSE 10.1 redir +n-i-bz amd64 padding suppressions +n-i-bz amd64 insn printing fix. +n-i-bz ppc cmp reg,reg fix +n-i-bz x86/amd64 iropt e/rflag reduction rules +n-i-bz SuSE 10.1 (ppc32) minor fixes +133678 amd64->IR: 0x48 0xF 0xC5 0xC0 (pextrw?) +133694 aspacem assertion: aspacem_minAddr <= holeStart +n-i-bz callgrind: fix warning about malformed creator line +n-i-bz callgrind: fix annotate script for data produced with + --dump-instr=yes +n-i-bz callgrind: fix failed assertion when toggling + instrumentation mode +n-i-bz callgrind: fix annotate script fix warnings with + --collect-jumps=yes +n-i-bz docs path hardwired (Dennis Lubert) + +The following bugs were not fixed, due primarily to lack of developer +time, and also because bug reporters did not answer requests for +feedback in time for the release: + +129390 ppc?->IR: some kind of VMX prefetch (dstt) +129968 amd64->IR: 0xF 0xAE 0x0 (fxsave) +133054 'make install' fails with syntax errors +n-i-bz Signal race condition (users list, 13 June, Johannes Berg) +n-i-bz Unrecognised instruction at address 0x70198EC2 (users list, + 19 July, Bennee) +132998 startup fails in when running on UML + +The following bug was tentatively fixed on the mainline but the fix +was considered too risky to push into 3.2.X: + +133154 crash when using client requests to register/deregister stack + +(3.2.1: 16 Sept 2006, vex r1658, valgrind r6070). + + +Release 3.2.0 (7 June 2006) +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.2.0 is a feature release with many significant improvements and the +usual collection of bug fixes. This release supports X86/Linux, +AMD64/Linux, PPC32/Linux and PPC64/Linux. + +Performance, especially of Memcheck, is improved, Addrcheck has been +removed, Callgrind has been added, PPC64/Linux support has been added, +Lackey has been improved, and MPI support has been added. In detail: + +- Memcheck has improved speed and reduced memory use. Run times are + typically reduced by 15-30%, averaging about 24% for SPEC CPU2000. + The other tools have smaller but noticeable speed improvements. We + are interested to hear what improvements users get. + + Memcheck uses less memory due to the introduction of a compressed + representation for shadow memory. The space overhead has been + reduced by a factor of up to four, depending on program behaviour. + This means you should be able to run programs that use more memory + than before without hitting problems. + +- Addrcheck has been removed. It has not worked since version 2.4.0, + and the speed and memory improvements to Memcheck make it redundant. + If you liked using Addrcheck because it didn't give undefined value + errors, you can use the new Memcheck option --undef-value-errors=no + to get the same behaviour. + +- The number of undefined-value errors incorrectly reported by + Memcheck has been reduced (such false reports were already very + rare). In particular, efforts have been made to ensure Memcheck + works really well with gcc 4.0/4.1-generated code on X86/Linux and + AMD64/Linux. + +- Josef Weidendorfer's popular Callgrind tool has been added. Folding + it in was a logical step given its popularity and usefulness, and + makes it easier for us to ensure it works "out of the box" on all + supported targets. The associated KDE KCachegrind GUI remains a + separate project. + +- A new release of the Valkyrie GUI for Memcheck, version 1.2.0, + accompanies this release. Improvements over previous releases + include improved robustness, many refinements to the user interface, + and use of a standard autoconf/automake build system. You can get + it from http://www.valgrind.org/downloads/guis.html. + +- Valgrind now works on PPC64/Linux. As with the AMD64/Linux port, + this supports programs using to 32G of address space. On 64-bit + capable PPC64/Linux setups, you get a dual architecture build so + that both 32-bit and 64-bit executables can be run. Linux on POWER5 + is supported, and POWER4 is also believed to work. Both 32-bit and + 64-bit DWARF2 is supported. This port is known to work well with + both gcc-compiled and xlc/xlf-compiled code. + +- Floating point accuracy has been improved for PPC32/Linux. + Specifically, the floating point rounding mode is observed on all FP + arithmetic operations, and multiply-accumulate instructions are + preserved by the compilation pipeline. This means you should get FP + results which are bit-for-bit identical to a native run. These + improvements are also present in the PPC64/Linux port. + +- Lackey, the example tool, has been improved: + + * It has a new option --detailed-counts (off by default) which + causes it to print out a count of loads, stores and ALU operations + done, and their sizes. + + * It has a new option --trace-mem (off by default) which causes it + to print out a trace of all memory accesses performed by a + program. It's a good starting point for building Valgrind tools + that need to track memory accesses. Read the comments at the top + of the file lackey/lk_main.c for details. + + * The original instrumentation (counting numbers of instructions, + jumps, etc) is now controlled by a new option --basic-counts. It + is on by default. + +- MPI support: partial support for debugging distributed applications + using the MPI library specification has been added. Valgrind is + aware of the memory state changes caused by a subset of the MPI + functions, and will carefully check data passed to the (P)MPI_ + interface. + +- A new flag, --error-exitcode=, has been added. This allows changing + the exit code in runs where Valgrind reported errors, which is + useful when using Valgrind as part of an automated test suite. + +- Various segfaults when reading old-style "stabs" debug information + have been fixed. + +- A simple performance evaluation suite has been added. See + perf/README and README_DEVELOPERS for details. There are + various bells and whistles. + +- New configuration flags: + --enable-only32bit + --enable-only64bit + By default, on 64 bit platforms (ppc64-linux, amd64-linux) the build + system will attempt to build a Valgrind which supports both 32-bit + and 64-bit executables. This may not be what you want, and you can + override the default behaviour using these flags. + +Please note that Helgrind is still not working. We have made an +important step towards making it work again, however, with the +addition of function wrapping (see below). + +Other user-visible changes: + +- Valgrind now has the ability to intercept and wrap arbitrary + functions. This is a preliminary step towards making Helgrind work + again, and was required for MPI support. + +- There are some changes to Memcheck's client requests. Some of them + have changed names: + + MAKE_NOACCESS --> MAKE_MEM_NOACCESS + MAKE_WRITABLE --> MAKE_MEM_UNDEFINED + MAKE_READABLE --> MAKE_MEM_DEFINED + + CHECK_WRITABLE --> CHECK_MEM_IS_ADDRESSABLE + CHECK_READABLE --> CHECK_MEM_IS_DEFINED + CHECK_DEFINED --> CHECK_VALUE_IS_DEFINED + + The reason for the change is that the old names are subtly + misleading. The old names will still work, but they are deprecated + and may be removed in a future release. + + We also added a new client request: + + MAKE_MEM_DEFINED_IF_ADDRESSABLE(a, len) + + which is like MAKE_MEM_DEFINED but only affects a byte if the byte is + already addressable. + +- The way client requests are encoded in the instruction stream has + changed. Unfortunately, this means 3.2.0 will not honour client + requests compiled into binaries using headers from earlier versions + of Valgrind. We will try to keep the client request encodings more + stable in future. + +BUGS FIXED: + +108258 NPTL pthread cleanup handlers not called +117290 valgrind is sigKILL'd on startup +117295 == 117290 +118703 m_signals.c:1427 Assertion 'tst->status == VgTs_WaitSys' +118466 add %reg, %reg generates incorrect validity for bit 0 +123210 New: strlen from ld-linux on amd64 +123244 DWARF2 CFI reader: unhandled CFI instruction 0:18 +123248 syscalls in glibc-2.4: openat, fstatat, symlinkat +123258 socketcall.recvmsg(msg.msg_iov[i] points to uninit +123535 mremap(new_addr) requires MREMAP_FIXED in 4th arg +123836 small typo in the doc +124029 ppc compile failed: `vor' gcc 3.3.5 +124222 Segfault: @@don't know what type ':' is +124475 ppc32: crash (syscall?) timer_settime() +124499 amd64->IR: 0xF 0xE 0x48 0x85 (femms) +124528 FATAL: aspacem assertion failed: segment_is_sane +124697 vex x86->IR: 0xF 0x70 0xC9 0x0 (pshufw) +124892 vex x86->IR: 0xF3 0xAE (REPx SCASB) +126216 == 124892 +124808 ppc32: sys_sched_getaffinity() not handled +n-i-bz Very long stabs strings crash m_debuginfo +n-i-bz amd64->IR: 0x66 0xF 0xF5 (pmaddwd) +125492 ppc32: support a bunch more syscalls +121617 ppc32/64: coredumping gives assertion failure +121814 Coregrind return error as exitcode patch +126517 == 121814 +125607 amd64->IR: 0x66 0xF 0xA3 0x2 (btw etc) +125651 amd64->IR: 0xF8 0x49 0xFF 0xE3 (clc?) +126253 x86 movx is wrong +126451 3.2 SVN doesn't work on ppc32 CPU's without FPU +126217 increase # threads +126243 vex x86->IR: popw mem +126583 amd64->IR: 0x48 0xF 0xA4 0xC2 (shld $1,%rax,%rdx) +126668 amd64->IR: 0x1C 0xFF (sbb $0xff,%al) +126696 support for CDROMREADRAW ioctl and CDROMREADTOCENTRY fix +126722 assertion: segment_is_sane at m_aspacemgr/aspacemgr.c:1624 +126938 bad checking for syscalls linkat, renameat, symlinkat + +(3.2.0RC1: 27 May 2006, vex r1626, valgrind r5947). +(3.2.0: 7 June 2006, vex r1628, valgrind r5957). + + +Release 3.1.1 (15 March 2006) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.1.1 fixes a bunch of bugs reported in 3.1.0. There is no new +functionality. The fixed bugs are: + +(note: "n-i-bz" means "not in bugzilla" -- this bug does not have + a bugzilla entry). + +n-i-bz ppc32: fsub 3,3,3 in dispatcher doesn't clear NaNs +n-i-bz ppc32: __NR_{set,get}priority +117332 x86: missing line info with icc 8.1 +117366 amd64: 0xDD 0x7C fnstsw +118274 == 117366 +117367 amd64: 0xD9 0xF4 fxtract +117369 amd64: __NR_getpriority (140) +117419 ppc32: lfsu f5, -4(r11) +117419 ppc32: fsqrt +117936 more stabs problems (segfaults while reading debug info) +119914 == 117936 +120345 == 117936 +118239 amd64: 0xF 0xAE 0x3F (clflush) +118939 vm86old system call +n-i-bz memcheck/tests/mempool reads freed memory +n-i-bz AshleyP's custom-allocator assertion +n-i-bz Dirk strict-aliasing stuff +n-i-bz More space for debugger cmd line (Dan Thaler) +n-i-bz Clarified leak checker output message +n-i-bz AshleyP's --gen-suppressions output fix +n-i-bz cg_annotate's --sort option broken +n-i-bz OSet 64-bit fastcmp bug +n-i-bz VG_(getgroups) fix (Shinichi Noda) +n-i-bz ppc32: allocate from callee-saved FP/VMX regs +n-i-bz misaligned path word-size bug in mc_main.c +119297 Incorrect error message for sse code +120410 x86: prefetchw (0xF 0xD 0x48 0x4) +120728 TIOCSERGETLSR, TIOCGICOUNT, HDIO_GET_DMA ioctls +120658 Build fixes for gcc 2.96 +120734 x86: Support for changing EIP in signal handler +n-i-bz memcheck/tests/zeropage de-looping fix +n-i-bz x86: fxtract doesn't work reliably +121662 x86: lock xadd (0xF0 0xF 0xC0 0x2) +121893 calloc does not always return zeroed memory +121901 no support for syscall tkill +n-i-bz Suppression update for Debian unstable +122067 amd64: fcmovnu (0xDB 0xD9) +n-i-bz ppc32: broken signal handling in cpu feature detection +n-i-bz ppc32: rounding mode problems (improved, partial fix only) +119482 ppc32: mtfsb1 +n-i-bz ppc32: mtocrf/mfocrf + +(3.1.1: 15 March 2006, vex r1597, valgrind r5771). + + +Release 3.1.0 (25 November 2005) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.1.0 is a feature release with a number of significant improvements: +AMD64 support is much improved, PPC32 support is good enough to be +usable, and the handling of memory management and address space is +much more robust. In detail: + +- AMD64 support is much improved. The 64-bit vs. 32-bit issues in + 3.0.X have been resolved, and it should "just work" now in all + cases. On AMD64 machines both 64-bit and 32-bit versions of + Valgrind are built. The right version will be invoked + automatically, even when using --trace-children and mixing execution + between 64-bit and 32-bit executables. Also, many more instructions + are supported. + +- PPC32 support is now good enough to be usable. It should work with + all tools, but please let us know if you have problems. Three + classes of CPUs are supported: integer only (no FP, no Altivec), + which covers embedded PPC uses, integer and FP but no Altivec + (G3-ish), and CPUs capable of Altivec too (G4, G5). + +- Valgrind's address space management has been overhauled. As a + result, Valgrind should be much more robust with programs that use + large amounts of memory. There should be many fewer "memory + exhausted" messages, and debug symbols should be read correctly on + large (eg. 300MB+) executables. On 32-bit machines the full address + space available to user programs (usually 3GB or 4GB) can be fully + utilised. On 64-bit machines up to 32GB of space is usable; when + using Memcheck that means your program can use up to about 14GB. + + A side effect of this change is that Valgrind is no longer protected + against wild writes by the client. This feature was nice but relied + on the x86 segment registers and so wasn't portable. + +- Most users should not notice, but as part of the address space + manager change, the way Valgrind is built has been changed. Each + tool is now built as a statically linked stand-alone executable, + rather than as a shared object that is dynamically linked with the + core. The "valgrind" program invokes the appropriate tool depending + on the --tool option. This slightly increases the amount of disk + space used by Valgrind, but it greatly simplified many things and + removed Valgrind's dependence on glibc. + +Please note that Addrcheck and Helgrind are still not working. Work +is underway to reinstate them (or equivalents). We apologise for the +inconvenience. + +Other user-visible changes: + +- The --weird-hacks option has been renamed --sim-hints. + +- The --time-stamp option no longer gives an absolute date and time. + It now prints the time elapsed since the program began. + +- It should build with gcc-2.96. + +- Valgrind can now run itself (see README_DEVELOPERS for how). + This is not much use to you, but it means the developers can now + profile Valgrind using Cachegrind. As a result a couple of + performance bad cases have been fixed. + +- The XML output format has changed slightly. See + docs/internals/xml-output.txt. + +- Core dumping has been reinstated (it was disabled in 3.0.0 and 3.0.1). + If your program crashes while running under Valgrind, a core file with + the name "vgcore." will be created (if your settings allow core + file creation). Note that the floating point information is not all + there. If Valgrind itself crashes, the OS will create a normal core + file. + +The following are some user-visible changes that occurred in earlier +versions that may not have been announced, or were announced but not +widely noticed. So we're mentioning them now. + +- The --tool flag is optional once again; if you omit it, Memcheck + is run by default. + +- The --num-callers flag now has a default value of 12. It was + previously 4. + +- The --xml=yes flag causes Valgrind's output to be produced in XML + format. This is designed to make it easy for other programs to + consume Valgrind's output. The format is described in the file + docs/internals/xml-format.txt. + +- The --gen-suppressions flag supports an "all" value that causes every + suppression to be printed without asking. + +- The --log-file option no longer puts "pid" in the filename, eg. the + old name "foo.pid12345" is now "foo.12345". + +- There are several graphical front-ends for Valgrind, such as Valkyrie, + Alleyoop and Valgui. See http://www.valgrind.org/downloads/guis.html + for a list. + +BUGS FIXED: + +109861 amd64 hangs at startup +110301 ditto +111554 valgrind crashes with Cannot allocate memory +111809 Memcheck tool doesn't start java +111901 cross-platform run of cachegrind fails on opteron +113468 (vgPlain_mprotect_range): Assertion 'r != -1' failed. + 92071 Reading debugging info uses too much memory +109744 memcheck loses track of mmap from direct ld-linux.so.2 +110183 tail of page with _end + 82301 FV memory layout too rigid + 98278 Infinite recursion possible when allocating memory +108994 Valgrind runs out of memory due to 133x overhead +115643 valgrind cannot allocate memory +105974 vg_hashtable.c static hash table +109323 ppc32: dispatch.S uses Altivec insn, which doesn't work on POWER. +109345 ptrace_setregs not yet implemented for ppc +110831 Would like to be able to run against both 32 and 64 bit + binaries on AMD64 +110829 == 110831 +111781 compile of valgrind-3.0.0 fails on my linux (gcc 2.X prob) +112670 Cachegrind: cg_main.c:486 (handleOneStatement ... +112941 vex x86: 0xD9 0xF4 (fxtract) +110201 == 112941 +113015 vex amd64->IR: 0xE3 0x14 0x48 0x83 (jrcxz) +113126 Crash with binaries built with -gstabs+/-ggdb +104065 == 113126 +115741 == 113126 +113403 Partial SSE3 support on x86 +113541 vex: Grp5(x86) (alt encoding inc/dec) case 1 +113642 valgrind crashes when trying to read debug information +113810 vex x86->IR: 66 0F F6 (66 + PSADBW == SSE PSADBW) +113796 read() and write() do not work if buffer is in shared memory +113851 vex x86->IR: (pmaddwd): 0x66 0xF 0xF5 0xC7 +114366 vex amd64 cannnot handle __asm__( "fninit" ) +114412 vex amd64->IR: 0xF 0xAD 0xC2 0xD3 (128-bit shift, shrdq?) +114455 vex amd64->IR: 0xF 0xAC 0xD0 0x1 (also shrdq) +115590: amd64->IR: 0x67 0xE3 0x9 0xEB (address size override) +115953 valgrind svn r5042 does not build with parallel make (-j3) +116057 maximum instruction size - VG_MAX_INSTR_SZB too small? +116483 shmat failes with invalid argument +102202 valgrind crashes when realloc'ing until out of memory +109487 == 102202 +110536 == 102202 +112687 == 102202 +111724 vex amd64->IR: 0x41 0xF 0xAB (more BT{,S,R,C} fun n games) +111748 vex amd64->IR: 0xDD 0xE2 (fucom) +111785 make fails if CC contains spaces +111829 vex x86->IR: sbb AL, Ib +111851 vex x86->IR: 0x9F 0x89 (lahf/sahf) +112031 iopl on AMD64 and README_MISSING_SYSCALL_OR_IOCTL update +112152 code generation for Xin_MFence on x86 with SSE0 subarch +112167 == 112152 +112789 == 112152 +112199 naked ar tool is used in vex makefile +112501 vex x86->IR: movq (0xF 0x7F 0xC1 0xF) (mmx MOVQ) +113583 == 112501 +112538 memalign crash +113190 Broken links in docs/html/ +113230 Valgrind sys_pipe on x86-64 wrongly thinks file descriptors + should be 64bit +113996 vex amd64->IR: fucomp (0xDD 0xE9) +114196 vex x86->IR: out %eax,(%dx) (0xEF 0xC9 0xC3 0x90) +114289 Memcheck fails to intercept malloc when used in an uclibc environment +114756 mbind syscall support +114757 Valgrind dies with assertion: Assertion 'noLargerThan > 0' failed +114563 stack tracking module not informed when valgrind switches threads +114564 clone() and stacks +114565 == 114564 +115496 glibc crashes trying to use sysinfo page +116200 enable fsetxattr, fgetxattr, and fremovexattr for amd64 + +(3.1.0RC1: 20 November 2005, vex r1466, valgrind r5224). +(3.1.0: 26 November 2005, vex r1471, valgrind r5235). + + +Release 3.0.1 (29 August 2005) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.0.1 fixes a bunch of bugs reported in 3.0.0. There is no new +functionality. Some of the fixed bugs are critical, so if you +use/distribute 3.0.0, an upgrade to 3.0.1 is recommended. The fixed +bugs are: + +(note: "n-i-bz" means "not in bugzilla" -- this bug does not have + a bugzilla entry). + +109313 (== 110505) x86 cmpxchg8b +n-i-bz x86: track but ignore changes to %eflags.AC (alignment check) +110102 dis_op2_E_G(amd64) +110202 x86 sys_waitpid(#286) +110203 clock_getres(,0) +110208 execve fail wrong retval +110274 SSE1 now mandatory for x86 +110388 amd64 0xDD 0xD1 +110464 amd64 0xDC 0x1D FCOMP +110478 amd64 0xF 0xD PREFETCH +n-i-bz XML printing wrong +n-i-bz Dirk r4359 (amd64 syscalls from trunk) +110591 amd64 and x86: rdtsc not implemented properly +n-i-bz Nick r4384 (stub implementations of Addrcheck and Helgrind) +110652 AMD64 valgrind crashes on cwtd instruction +110653 AMD64 valgrind crashes on sarb $0x4,foo(%rip) instruction +110656 PATH=/usr/bin::/bin valgrind foobar stats ./fooba +110657 Small test fixes +110671 vex x86->IR: unhandled instruction bytes: 0xF3 0xC3 (rep ret) +n-i-bz Nick (Cachegrind should not assert when it encounters a client + request.) +110685 amd64->IR: unhandled instruction bytes: 0xE1 0x56 (loope Jb) +110830 configuring with --host fails to build 32 bit on 64 bit target +110875 Assertion when execve fails +n-i-bz Updates to Memcheck manual +n-i-bz Fixed broken malloc_usable_size() +110898 opteron instructions missing: btq btsq btrq bsfq +110954 x86->IR: unhandled instruction bytes: 0xE2 0xF6 (loop Jb) +n-i-bz Make suppressions work for "???" lines in stacktraces. +111006 bogus warnings from linuxthreads +111092 x86: dis_Grp2(Reg): unhandled case(x86) +111231 sctp_getladdrs() and sctp_getpaddrs() returns uninitialized + memory +111102 (comment #4) Fixed 64-bit unclean "silly arg" message +n-i-bz vex x86->IR: unhandled instruction bytes: 0x14 0x0 +n-i-bz minor umount/fcntl wrapper fixes +111090 Internal Error running Massif +101204 noisy warning +111513 Illegal opcode for SSE instruction (x86 movups) +111555 VEX/Makefile: CC is set to gcc +n-i-bz Fix XML bugs in FAQ + +(3.0.1: 29 August 05, + vex/branches/VEX_3_0_BRANCH r1367, + valgrind/branches/VALGRIND_3_0_BRANCH r4574). + + + +Release 3.0.0 (3 August 2005) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +3.0.0 is a major overhaul of Valgrind. The most significant user +visible change is that Valgrind now supports architectures other than +x86. The new architectures it supports are AMD64 and PPC32, and the +infrastructure is present for other architectures to be added later. + +AMD64 support works well, but has some shortcomings: + +- It generally won't be as solid as the x86 version. For example, + support for more obscure instructions and system calls may be missing. + We will fix these as they arise. + +- Address space may be limited; see the point about + position-independent executables below. + +- If Valgrind is built on an AMD64 machine, it will only run 64-bit + executables. If you want to run 32-bit x86 executables under Valgrind + on an AMD64, you will need to build Valgrind on an x86 machine and + copy it to the AMD64 machine. And it probably won't work if you do + something tricky like exec'ing a 32-bit program from a 64-bit program + while using --trace-children=yes. We hope to improve this situation + in the future. + +The PPC32 support is very basic. It may not work reliably even for +small programs, but it's a start. Many thanks to Paul Mackerras for +his great work that enabled this support. We are working to make +PPC32 usable as soon as possible. + +Other user-visible changes: + +- Valgrind is no longer built by default as a position-independent + executable (PIE), as this caused too many problems. + + Without PIE enabled, AMD64 programs will only be able to access 2GB of + address space. We will fix this eventually, but not for the moment. + + Use --enable-pie at configure-time to turn this on. + +- Support for programs that use stack-switching has been improved. Use + the --max-stackframe flag for simple cases, and the + VALGRIND_STACK_REGISTER, VALGRIND_STACK_DEREGISTER and + VALGRIND_STACK_CHANGE client requests for trickier cases. + +- Support for programs that use self-modifying code has been improved, + in particular programs that put temporary code fragments on the stack. + This helps for C programs compiled with GCC that use nested functions, + and also Ada programs. This is controlled with the --smc-check + flag, although the default setting should work in most cases. + +- Output can now be printed in XML format. This should make it easier + for tools such as GUI front-ends and automated error-processing + schemes to use Valgrind output as input. The --xml flag controls this. + As part of this change, ELF directory information is read from executables, + so absolute source file paths are available if needed. + +- Programs that allocate many heap blocks may run faster, due to + improvements in certain data structures. + +- Addrcheck is currently not working. We hope to get it working again + soon. Helgrind is still not working, as was the case for the 2.4.0 + release. + +- The JITter has been completely rewritten, and is now in a separate + library, called Vex. This enabled a lot of the user-visible changes, + such as new architecture support. The new JIT unfortunately translates + more slowly than the old one, so programs may take longer to start. + We believe the code quality is produces is about the same, so once + started, programs should run at about the same speed. Feedback about + this would be useful. + + On the plus side, Vex and hence Memcheck tracks value flow properly + through floating point and vector registers, something the 2.X line + could not do. That means that Memcheck is much more likely to be + usably accurate on vectorised code. + +- There is a subtle change to the way exiting of threaded programs + is handled. In 3.0, Valgrind's final diagnostic output (leak check, + etc) is not printed until the last thread exits. If the last thread + to exit was not the original thread which started the program, any + other process wait()-ing on this one to exit may conclude it has + finished before the diagnostic output is printed. This may not be + what you expect. 2.X had a different scheme which avoided this + problem, but caused deadlocks under obscure circumstances, so we + are trying something different for 3.0. + +- Small changes in control log file naming which make it easier to + use valgrind for debugging MPI-based programs. The relevant + new flags are --log-file-exactly= and --log-file-qualifier=. + +- As part of adding AMD64 support, DWARF2 CFI-based stack unwinding + support was added. In principle this means Valgrind can produce + meaningful backtraces on x86 code compiled with -fomit-frame-pointer + providing you also compile your code with -fasynchronous-unwind-tables. + +- The documentation build system has been completely redone. + The documentation masters are now in XML format, and from that + HTML, PostScript and PDF documentation is generated. As a result + the manual is now available in book form. Note that the + documentation in the source tarballs is pre-built, so you don't need + any XML processing tools to build Valgrind from a tarball. + +Changes that are not user-visible: + +- The code has been massively overhauled in order to modularise it. + As a result we hope it is easier to navigate and understand. + +- Lots of code has been rewritten. + +BUGS FIXED: + +110046 sz == 4 assertion failed +109810 vex amd64->IR: unhandled instruction bytes: 0xA3 0x4C 0x70 0xD7 +109802 Add a plausible_stack_size command-line parameter ? +109783 unhandled ioctl TIOCMGET (running hw detection tool discover) +109780 unhandled ioctl BLKSSZGET (running fdisk -l /dev/hda) +109718 vex x86->IR: unhandled instruction: ffreep +109429 AMD64 unhandled syscall: 127 (sigpending) +109401 false positive uninit in strchr from ld-linux.so.2 +109385 "stabs" parse failure +109378 amd64: unhandled instruction REP NOP +109376 amd64: unhandled instruction LOOP Jb +109363 AMD64 unhandled instruction bytes +109362 AMD64 unhandled syscall: 24 (sched_yield) +109358 fork() won't work with valgrind-3.0 SVN +109332 amd64 unhandled instruction: ADC Ev, Gv +109314 Bogus memcheck report on amd64 +108883 Crash; vg_memory.c:905 (vgPlain_init_shadow_range): + Assertion `vgPlain_defined_init_shadow_page()' failed. +108349 mincore syscall parameter checked incorrectly +108059 build infrastructure: small update +107524 epoll_ctl event parameter checked on EPOLL_CTL_DEL +107123 Vex dies with unhandled instructions: 0xD9 0x31 0xF 0xAE +106841 auxmap & openGL problems +106713 SDL_Init causes valgrind to exit +106352 setcontext and makecontext not handled correctly +106293 addresses beyond initial client stack allocation + not checked in VALGRIND_DO_LEAK_CHECK +106283 PIE client programs are loaded at address 0 +105831 Assertion `vgPlain_defined_init_shadow_page()' failed. +105039 long run-times probably due to memory manager +104797 valgrind needs to be aware of BLKGETSIZE64 +103594 unhandled instruction: FICOM +103320 Valgrind 2.4.0 fails to compile with gcc 3.4.3 and -O0 +103168 potentially memory leak in coregrind/ume.c +102039 bad permissions for mapped region at address 0xB7C73680 +101881 weird assertion problem +101543 Support fadvise64 syscalls +75247 x86_64/amd64 support (the biggest "bug" we have ever fixed) + +(3.0RC1: 27 July 05, vex r1303, valgrind r4283). +(3.0.0: 3 August 05, vex r1313, valgrind r4316). + + + +Stable release 2.4.1 (1 August 2005) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +(The notes for this release have been lost. Sorry! It would have +contained various bug fixes but no new features.) + + + +Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.4.0 brings many significant changes and bug fixes. The most +significant user-visible change is that we no longer supply our own +pthread implementation. Instead, Valgrind is finally capable of +running the native thread library, either LinuxThreads or NPTL. + +This means our libpthread has gone, along with the bugs associated +with it. Valgrind now supports the kernel's threading syscalls, and +lets you use your standard system libpthread. As a result: + +* There are many fewer system dependencies and strange library-related + bugs. There is a small performance improvement, and a large + stability improvement. + +* On the downside, Valgrind can no longer report misuses of the POSIX + PThreads API. It also means that Helgrind currently does not work. + We hope to fix these problems in a future release. + +Note that running the native thread libraries does not mean Valgrind +is able to provide genuine concurrent execution on SMPs. We still +impose the restriction that only one thread is running at any given +time. + +There are many other significant changes too: + +* Memcheck is (once again) the default tool. + +* The default stack backtrace is now 12 call frames, rather than 4. + +* Suppressions can have up to 25 call frame matches, rather than 4. + +* Memcheck and Addrcheck use less memory. Under some circumstances, + they no longer allocate shadow memory if there are large regions of + memory with the same A/V states - such as an mmaped file. + +* The memory-leak detector in Memcheck and Addrcheck has been + improved. It now reports more types of memory leak, including + leaked cycles. When reporting leaked memory, it can distinguish + between directly leaked memory (memory with no references), and + indirectly leaked memory (memory only referred to by other leaked + memory). + +* Memcheck's confusion over the effect of mprotect() has been fixed: + previously mprotect could erroneously mark undefined data as + defined. + +* Signal handling is much improved and should be very close to what + you get when running natively. + + One result of this is that Valgrind observes changes to sigcontexts + passed to signal handlers. Such modifications will take effect when + the signal returns. You will need to run with --single-step=yes to + make this useful. + +* Valgrind is built in Position Independent Executable (PIE) format if + your toolchain supports it. This allows it to take advantage of all + the available address space on systems with 4Gbyte user address + spaces. + +* Valgrind can now run itself (requires PIE support). + +* Syscall arguments are now checked for validity. Previously all + memory used by syscalls was checked, but now the actual values + passed are also checked. + +* Syscall wrappers are more robust against bad addresses being passed + to syscalls: they will fail with EFAULT rather than killing Valgrind + with SIGSEGV. + +* Because clone() is directly supported, some non-pthread uses of it + will work. Partial sharing (where some resources are shared, and + some are not) is not supported. + +* open() and readlink() on /proc/self/exe are supported. + +BUGS FIXED: + +88520 pipe+fork+dup2 kills the main program +88604 Valgrind Aborts when using $VALGRIND_OPTS and user progra... +88614 valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt... +88703 Stabs parser fails to handle ";" +88886 ioctl wrappers for TIOCMBIS and TIOCMBIC +89032 valgrind pthread_cond_timedwait fails +89106 the 'impossible' happened +89139 Missing sched_setaffinity & sched_getaffinity +89198 valgrind lacks support for SIOCSPGRP and SIOCGPGRP +89263 Missing ioctl translations for scsi-generic and CD playing +89440 tests/deadlock.c line endings +89481 `impossible' happened: EXEC FAILED +89663 valgrind 2.2.0 crash on Redhat 7.2 +89792 Report pthread_mutex_lock() deadlocks instead of returnin... +90111 statvfs64 gives invalid error/warning +90128 crash+memory fault with stabs generated by gnat for a run... +90778 VALGRIND_CHECK_DEFINED() not as documented in memcheck.h +90834 cachegrind crashes at end of program without reporting re... +91028 valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio... +91162 valgrind crash while debugging drivel 1.2.1 +91199 Unimplemented function +91325 Signal routing does not propagate the siginfo structure +91599 Assertion `cv == ((void *)0)' +91604 rw_lookup clears orig and sends the NULL value to rw_new +91821 Small problems building valgrind with $top_builddir ne $t... +91844 signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec... +92264 UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared +92331 per-target flags necessitate AM_PROG_CC_C_O +92420 valgrind doesn't compile with linux 2.6.8.1/9 +92513 Valgrind 2.2.0 generates some warning messages +92528 vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed. +93096 unhandled ioctl 0x4B3A and 0x5601 +93117 Tool and core interface versions do not match +93128 Can't run valgrind --tool=memcheck because of unimplement... +93174 Valgrind can crash if passed bad args to certain syscalls +93309 Stack frame in new thread is badly aligned +93328 Wrong types used with sys_sigprocmask() +93763 /usr/include/asm/msr.h is missing +93776 valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser... +93810 fcntl() argument checking a bit too strict +94378 Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed. +94429 valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3 +94645 Impossible happened: PINSRW mem +94953 valgrind: the `impossible' happened: SIGSEGV +95667 Valgrind does not work with any KDE app +96243 Assertion 'res==0' failed +96252 stage2 loader of valgrind fails to allocate memory +96520 All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ... +96660 ioctl CDROMREADTOCENTRY causes bogus warnings +96747 After looping in a segfault handler, the impossible happens +96923 Zero sized arrays crash valgrind trace back with SIGFPE +96948 valgrind stops with assertion failure regarding mmap2 +96966 valgrind fails when application opens more than 16 sockets +97398 valgrind: vg_libpthread.c:2667 Assertion failed +97407 valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `... +97427 "Warning: invalid file descriptor -1 in syscall close()" ... +97785 missing backtrace +97792 build in obj dir fails - autoconf / makefile cleanup +97880 pthread_mutex_lock fails from shared library (special ker... +97975 program aborts without ang VG messages +98129 Failed when open and close file 230000 times using stdio +98175 Crashes when using valgrind-2.2.0 with a program using al... +98288 Massif broken +98303 UNIMPLEMENTED FUNCTION pthread_condattr_setpshared +98630 failed--compilation missing warnings.pm, fails to make he... +98756 Cannot valgrind signal-heavy kdrive X server +98966 valgrinding the JVM fails with a sanity check assertion +99035 Valgrind crashes while profiling +99142 loops with message "Signal 11 being dropped from thread 0... +99195 threaded apps crash on thread start (using QThread::start... +99348 Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off... +99568 False negative due to mishandling of mprotect +99738 valgrind memcheck crashes on program that uses sigitimer +99923 0-sized allocations are reported as leaks +99949 program seg faults after exit() +100036 "newSuperblock's request for 1048576 bytes failed" +100116 valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ... +100486 memcheck reports "valgrind: the `impossible' happened: V... +100833 second call to "mremap" fails with EINVAL +101156 (vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1... +101173 Assertion `recDepth >= 0 && recDepth < 500' failed +101291 creating threads in a forked process fails +101313 valgrind causes different behavior when resizing a window... +101423 segfault for c++ array of floats +101562 valgrind massif dies on SIGINT even with signal handler r... + + +Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.2.0 brings nine months worth of improvements and bug fixes. We +believe it to be a worthy successor to 2.0.0. There are literally +hundreds of bug fixes and minor improvements. There are also some +fairly major user-visible changes: + +* A complete overhaul of handling of system calls and signals, and + their interaction with threads. In general, the accuracy of the + system call, thread and signal simulations is much improved: + + - Blocking system calls behave exactly as they do when running + natively (not on valgrind). That is, if a syscall blocks only the + calling thread when running natively, than it behaves the same on + valgrind. No more mysterious hangs because V doesn't know that some + syscall or other, should block only the calling thread. + + - Interrupted syscalls should now give more faithful results. + + - Signal contexts in signal handlers are supported. + +* Improvements to NPTL support to the extent that V now works + properly on NPTL-only setups. + +* Greater isolation between Valgrind and the program being run, so + the program is less likely to inadvertently kill Valgrind by + doing wild writes. + +* Massif: a new space profiling tool. Try it! It's cool, and it'll + tell you in detail where and when your C/C++ code is allocating heap. + Draws pretty .ps pictures of memory use against time. A potentially + powerful tool for making sense of your program's space use. + +* File descriptor leakage checks. When enabled, Valgrind will print out + a list of open file descriptors on exit. + +* Improved SSE2/SSE3 support. + +* Time-stamped output; use --time-stamp=yes + + + +Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.1.2 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.2.0 is not much different from 2.1.2, released seven weeks ago. +A number of bugs have been fixed, most notably #85658, which gave +problems for quite a few people. There have been many internal +cleanups, but those are not user visible. + +The following bugs have been fixed since 2.1.2: + +85658 Assert in coregrind/vg_libpthread.c:2326 (open64) != + (void*)0 failed + This bug was reported multiple times, and so the following + duplicates of it are also fixed: 87620, 85796, 85935, 86065, + 86919, 86988, 87917, 88156 + +80716 Semaphore mapping bug caused by unmap (sem_destroy) + (Was fixed prior to 2.1.2) + +86987 semctl and shmctl syscalls family is not handled properly + +86696 valgrind 2.1.2 + RH AS2.1 + librt + +86730 valgrind locks up at end of run with assertion failure + in __pthread_unwind + +86641 memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1 + (also fixes 74298, a duplicate of this) + +85947 MMX/SSE unhandled instruction 'sfence' + +84978 Wrong error "Conditional jump or move depends on + uninitialised value" resulting from "sbbl %reg, %reg" + +86254 ssort() fails when signed int return type from comparison is + too small to handle result of unsigned int subtraction + +87089 memalign( 4, xxx) makes valgrind assert + +86407 Add support for low-level parallel port driver ioctls. + +70587 Add timestamps to Valgrind output? (wishlist) + +84937 vg_libpthread.c:2505 (se_remap): Assertion `res == 0' + (fixed prior to 2.1.2) + +86317 cannot load libSDL-1.2.so.0 using valgrind + +86989 memcpy from mac_replace_strmem.c complains about + uninitialized pointers passed when length to copy is zero + +85811 gnu pascal symbol causes segmentation fault; ok in 2.0.0 + +79138 writing to sbrk()'d memory causes segfault + +77369 sched deadlock while signal received during pthread_join + and the joined thread exited + +88115 In signal handler for SIGFPE, siginfo->si_addr is wrong + under Valgrind + +78765 Massif crashes on app exit if FP exceptions are enabled + +Additionally there are the following changes, which are not +connected to any bug report numbers, AFAICS: + +* Fix scary bug causing mis-identification of SSE stores vs + loads and so causing memcheck to sometimes give nonsense results + on SSE code. + +* Add support for the POSIX message queue system calls. + +* Fix to allow 32-bit Valgrind to run on AMD64 boxes. Note: this does + NOT allow Valgrind to work with 64-bit executables - only with 32-bit + executables on an AMD64 box. + +* At configure time, only check whether linux/mii.h can be processed + so that we don't generate ugly warnings by trying to compile it. + +* Add support for POSIX clocks and timers. + + + +Developer (cvs head) release 2.1.2 (18 July 2004) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.1.2 contains four months worth of bug fixes and refinements. +Although officially a developer release, we believe it to be stable +enough for widespread day-to-day use. 2.1.2 is pretty good, so try it +first, although there is a chance it won't work. If so then try 2.0.0 +and tell us what went wrong." 2.1.2 fixes a lot of problems present +in 2.0.0 and is generally a much better product. + +Relative to 2.1.1, a large number of minor problems with 2.1.1 have +been fixed, and so if you use 2.1.1 you should try 2.1.2. Users of +the last stable release, 2.0.0, might also want to try this release. + +The following bugs, and probably many more, have been fixed. These +are listed at http://bugs.kde.org. Reporting a bug for valgrind in +the http://bugs.kde.org is much more likely to get you a fix than +mailing developers directly, so please continue to keep sending bugs +there. + +76869 Crashes when running any tool under Fedora Core 2 test1 + This fixes the problem with returning from a signal handler + when VDSOs are turned off in FC2. + +69508 java 1.4.2 client fails with erroneous "stack size too small". + This fix makes more of the pthread stack attribute related + functions work properly. Java still doesn't work though. + +71906 malloc alignment should be 8, not 4 + All memory returned by malloc/new etc is now at least + 8-byte aligned. + +81970 vg_alloc_ThreadState: no free slots available + (closed because the workaround is simple: increase + VG_N_THREADS, rebuild and try again.) + +78514 Conditional jump or move depends on uninitialized value(s) + (a slight mishanding of FP code in memcheck) + +77952 pThread Support (crash) (due to initialisation-ordering probs) + (also 85118) + +80942 Addrcheck wasn't doing overlap checking as it should. +78048 return NULL on malloc/new etc failure, instead of asserting +73655 operator new() override in user .so files often doesn't get picked up +83060 Valgrind does not handle native kernel AIO +69872 Create proper coredumps after fatal signals +82026 failure with new glibc versions: __libc_* functions are not exported +70344 UNIMPLEMENTED FUNCTION: tcdrain +81297 Cancellation of pthread_cond_wait does not require mutex +82872 Using debug info from additional packages (wishlist) +83025 Support for ioctls FIGETBSZ and FIBMAP +83340 Support for ioctl HDIO_GET_IDENTITY +79714 Support for the semtimedop system call. +77022 Support for ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO +82098 hp2ps ansification (wishlist) +83573 Valgrind SIGSEGV on execve +82999 show which cmdline option was erroneous (wishlist) +83040 make valgrind VPATH and distcheck-clean (wishlist) +83998 Assertion `newfd > vgPlain_max_fd' failed (see below) +82722 Unchecked mmap in as_pad leads to mysterious failures later +78958 memcheck seg faults while running Mozilla +85416 Arguments with colon (e.g. --logsocket) ignored + + +Additionally there are the following changes, which are not +connected to any bug report numbers, AFAICS: + +* Rearranged address space layout relative to 2.1.1, so that + Valgrind/tools will run out of memory later than currently in many + circumstances. This is good news esp. for Calltree. It should + be possible for client programs to allocate over 800MB of + memory when using memcheck now. + +* Improved checking when laying out memory. Should hopefully avoid + the random segmentation faults that 2.1.1 sometimes caused. + +* Support for Fedora Core 2 and SuSE 9.1. Improvements to NPTL + support to the extent that V now works properly on NPTL-only setups. + +* Renamed the following options: + --logfile-fd --> --log-fd + --logfile --> --log-file + --logsocket --> --log-socket + to be consistent with each other and other options (esp. --input-fd). + +* Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and + improve the checking of other interface related ioctls. + +* Fix building with gcc-3.4.1. + +* Remove limit on number of semaphores supported. + +* Add support for syscalls: set_tid_address (258), acct (51). + +* Support instruction "repne movs" -- not official but seems to occur. + +* Implement an emulated soft limit for file descriptors in addition to + the current reserved area, which effectively acts as a hard limit. The + setrlimit system call now simply updates the emulated limits as best + as possible - the hard limit is not allowed to move at all and just + returns EPERM if you try and change it. This should stop reductions + in the soft limit causing assertions when valgrind tries to allocate + descriptors from the reserved area. + (This actually came from bug #83998). + +* Major overhaul of Cachegrind implementation. First user-visible change + is that cachegrind.out files are now typically 90% smaller than they + used to be; code annotation times are correspondingly much smaller. + Second user-visible change is that hit/miss counts for code that is + unloaded at run-time is no longer dumped into a single "discard" pile, + but accurately preserved. + +* Client requests for telling valgrind about memory pools. + + + +Developer (cvs head) release 2.1.1 (12 March 2004) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.1.1 contains some internal structural changes needed for V's +long-term future. These don't affect end-users. Most notable +user-visible changes are: + +* Greater isolation between Valgrind and the program being run, so + the program is less likely to inadvertently kill Valgrind by + doing wild writes. + +* Massif: a new space profiling tool. Try it! It's cool, and it'll + tell you in detail where and when your C/C++ code is allocating heap. + Draws pretty .ps pictures of memory use against time. A potentially + powerful tool for making sense of your program's space use. + +* Fixes for many bugs, including support for more SSE2/SSE3 instructions, + various signal/syscall things, and various problems with debug + info readers. + +* Support for glibc-2.3.3 based systems. + +We are now doing automatic overnight build-and-test runs on a variety +of distros. As a result, we believe 2.1.1 builds and runs on: +Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9. + + +The following bugs, and probably many more, have been fixed. These +are listed at http://bugs.kde.org. Reporting a bug for valgrind in +the http://bugs.kde.org is much more likely to get you a fix than +mailing developers directly, so please continue to keep sending bugs +there. + +69616 glibc 2.3.2 w/NPTL is massively different than what valgrind expects +69856 I don't know how to instrument MMXish stuff (Helgrind) +73892 valgrind segfaults starting with Objective-C debug info + (fix for S-type stabs) +73145 Valgrind complains too much about close() +73902 Shadow memory allocation seems to fail on RedHat 8.0 +68633 VG_N_SEMAPHORES too low (V itself was leaking semaphores) +75099 impossible to trace multiprocess programs +76839 the `impossible' happened: disInstr: INT but not 0x80 ! +76762 vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed. +76747 cannot include valgrind.h in c++ program +76223 parsing B(3,10) gave NULL type => impossible happens +75604 shmdt handling problem +76416 Problems with gcc 3.4 snap 20040225 +75614 using -gstabs when building your programs the `impossible' happened +75787 Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET, +75294 gcc 3.4 snapshot's libstdc++ have unsupported instructions. + (REP RET) +73326 vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed. +72596 not recognizing __libc_malloc +69489 Would like to attach ddd to running program +72781 Cachegrind crashes with kde programs +73055 Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes) +73026 Descriptor leak check reports port numbers wrongly +71705 README_MISSING_SYSCALL_OR_IOCTL out of date +72643 Improve support for SSE/SSE2 instructions +72484 valgrind leaves it's own signal mask in place when execing +72650 Signal Handling always seems to restart system calls +72006 The mmap system call turns all errors in ENOMEM +71781 gdb attach is pretty useless +71180 unhandled instruction bytes: 0xF 0xAE 0x85 0xE8 +69886 writes to zero page cause valgrind to assert on exit +71791 crash when valgrinding gimp 1.3 (stabs reader problem) +69783 unhandled syscall: 218 +69782 unhandled instruction bytes: 0x66 0xF 0x2B 0x80 +70385 valgrind fails if the soft file descriptor limit is less + than about 828 +69529 "rep; nop" should do a yield +70827 programs with lots of shared libraries report "mmap failed" + for some of them when reading symbols +71028 glibc's strnlen is optimised enough to confuse valgrind + + + + +Unstable (cvs head) release 2.1.0 (15 December 2003) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +For whatever it's worth, 2.1.0 actually seems pretty darn stable to me +(Julian). It looks eminently usable, and given that it fixes some +significant bugs, may well be worth using on a day-to-day basis. +2.1.0 is known to build and pass regression tests on: SuSE 9, SuSE +8.2, RedHat 8. + +2.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of +handling of system calls and signals, and their interaction with +threads. In general, the accuracy of the system call, thread and +signal simulations is much improved. Specifically: + +- Blocking system calls behave exactly as they do when running + natively (not on valgrind). That is, if a syscall blocks only the + calling thread when running natively, than it behaves the same on + valgrind. No more mysterious hangs because V doesn't know that some + syscall or other, should block only the calling thread. + +- Interrupted syscalls should now give more faithful results. + +- Finally, signal contexts in signal handlers are supported. As a + result, konqueror on SuSE 9 no longer segfaults when notified of + file changes in directories it is watching. + +Other changes: + +- Robert Walsh's file descriptor leakage checks. When enabled, + Valgrind will print out a list of open file descriptors on + exit. Along with each file descriptor, Valgrind prints out a stack + backtrace of where the file was opened and any details relating to the + file descriptor such as the file name or socket details. + To use, give: --track-fds=yes + +- Implemented a few more SSE/SSE2 instructions. + +- Less crud on the stack when you do 'where' inside a GDB attach. + +- Fixed the following bugs: + 68360: Valgrind does not compile against 2.6.0-testX kernels + 68525: CVS head doesn't compile on C90 compilers + 68566: pkgconfig support (wishlist) + 68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr) + 69140: valgrind not able to explicitly specify a path to a binary. + 69432: helgrind asserts encountering a MutexErr when there are + EraserErr suppressions + +- Increase the max size of the translation cache from 200k average bbs + to 300k average bbs. Programs on the size of OOo (680m17) are + thrashing the cache at the smaller size, creating large numbers of + retranslations and wasting significant time as a result. + + + +Stable release 2.0.0 (5 Nov 2003) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +2.0.0 improves SSE/SSE2 support, fixes some minor bugs, and +improves support for SuSE 9 and the Red Hat "Severn" beta. + +- Further improvements to SSE/SSE2 support. The entire test suite of + the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1 + 20030307Z '-g -O -xW' now works. I think this gives pretty good + coverage of SSE/SSE2 floating point instructions, or at least the + subset emitted by Icc. + +- Also added support for the following instructions: + MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS + PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS). + +- CFI support for GDB version 6. Needed to enable newer GDBs + to figure out where they are when using --gdb-attach=yes. + +- Fix this: + mc_translate.c:1091 (memcheck_instrument): Assertion + `u_in->size == 4 || u_in->size == 16' failed. + +- Return an error rather than panicing when given a bad socketcall. + +- Fix checking of syscall rt_sigtimedwait(). + +- Implement __NR_clock_gettime (syscall 265). Needed on Red Hat Severn. + +- Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n' + bytes long, when it could be shorter, which could cause false + positives. + +- Support use of select() for very large numbers of file descriptors. + +- Don't fail silently if the executable is statically linked, or is + setuid/setgid. Print an error message instead. + +- Support for old DWARF-1 format line number info. + + + +Snapshot 20031012 (12 October 2003) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Three months worth of bug fixes, roughly. Most significant single +change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller. + +20031012 builds on Red Hat Fedora ("Severn") but doesn't really work +(curiously, mozilla runs OK, but a modest "ls -l" bombs). I hope to +get a working version out soon. It may or may not work ok on the +forthcoming SuSE 9; I hear positive noises about it but haven't been +able to verify this myself (not until I get hold of a copy of 9). + +A detailed list of changes, in no particular order: + +- Describe --gen-suppressions in the FAQ. + +- Syscall __NR_waitpid supported. + +- Minor MMX bug fix. + +- -v prints program's argv[] at startup. + +- More glibc-2.3 suppressions. + +- Suppressions for stack underrun bug(s) in the c++ support library + distributed with Intel Icc 7.0. + +- Fix problems reading /proc/self/maps. + +- Fix a couple of messages that should have been suppressed by -q, + but weren't. + +- Make Addrcheck understand "Overlap" suppressions. + +- At startup, check if program is statically linked and bail out if so. + +- Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah + +- Memcheck/addrcheck: minor speed optimisations + +- Handle syscall __NR_brk more correctly than before. + +- Fixed incorrect allocate/free mismatch errors when using + operator new(unsigned, std::nothrow_t const&) + operator new[](unsigned, std::nothrow_t const&) + +- Support POSIX pthread spinlocks. + +- Fixups for clean compilation with gcc-3.3.1. + +- Implemented more opcodes: + - push %es + - push %ds + - pop %es + - pop %ds + - movntq + - sfence + - pshufw + - pavgb + - ucomiss + - enter + - mov imm32, %esp + - all "in" and "out" opcodes + - inc/dec %esp + - A whole bunch of SSE/SSE2 instructions + +- Memcheck: don't bomb on SSE/SSE2 code. + + +Snapshot 20030725 (25 July 2003) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Fixes some minor problems in 20030716. + +- Fix bugs in overlap checking for strcpy/memcpy etc. + +- Do overlap checking with Addrcheck as well as Memcheck. + +- Fix this: + Memcheck: the `impossible' happened: + get_error_name: unexpected type + +- Install headers needed to compile new skins. + +- Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD + passed to non-traced children. + +- Fix file descriptor leak in valgrind-listener. + +- Fix longstanding bug in which the allocation point of a + block resized by realloc was not correctly set. This may + have caused confusing error messages. + + +Snapshot 20030716 (16 July 2003) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +20030716 is a snapshot of our current CVS head (development) branch. +This is the branch which will become valgrind-2.0. It contains +significant enhancements over the 1.9.X branch. + +Despite this being a snapshot of the CVS head, it is believed to be +quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so +-- and therefore suitable for widespread use. Please let us know asap +if it causes problems for you. + +Two reasons for releasing a snapshot now are: + +- It's been a while since 1.9.6, and this snapshot fixes + various problems that 1.9.6 has with threaded programs + on glibc-2.3.X based systems. + +- So as to make available improvements in the 2.0 line. + +Major changes in 20030716, as compared to 1.9.6: + +- More fixes to threading support on glibc-2.3.1 and 2.3.2-based + systems (SuSE 8.2, Red Hat 9). If you have had problems + with inconsistent/illogical behaviour of errno, h_errno or the DNS + resolver functions in threaded programs, 20030716 should improve + matters. This snapshot seems stable enough to run OpenOffice.org + 1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big + threaded app if ever I saw one. + +- Automatic generation of suppression records; you no longer + need to write them by hand. Use --gen-suppressions=yes. + +- strcpy/memcpy/etc check their arguments for overlaps, when + running with the Memcheck or Addrcheck skins. + +- malloc_usable_size() is now supported. + +- new client requests: + - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS: + useful with regression testing + - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions + on real CPU (use with caution!) + +- The GDB attach mechanism is more flexible. Allow the GDB to + be run to be specified by --gdb-path=/path/to/gdb, and specify + which file descriptor V will read its input from with + --input-fd=. + +- Cachegrind gives more accurate results (wasn't tracking instructions in + malloc() and friends previously, is now). + +- Complete support for the MMX instruction set. + +- Partial support for the SSE and SSE2 instruction sets. Work for this + is ongoing. About half the SSE/SSE2 instructions are done, so + some SSE based programs may work. Currently you need to specify + --skin=addrcheck. Basically not suitable for real use yet. + +- Significant speedups (10%-20%) for standard memory checking. + +- Fix assertion failure in pthread_once(). + +- Fix this: + valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select): + Assertion `ms_end >= ms_now' failed. + +- Implement pthread_mutexattr_setpshared. + +- Understand Pentium 4 branch hints. Also implemented a couple more + obscure x86 instructions. + +- Lots of other minor bug fixes. + +- We have a decent regression test system, for the first time. + This doesn't help you directly, but it does make it a lot easier + for us to track the quality of the system, especially across + multiple linux distributions. + + You can run the regression tests with 'make regtest' after 'make + install' completes. On SuSE 8.2 and Red Hat 9 I get this: + + == 84 tests, 0 stderr failures, 0 stdout failures == + + On Red Hat 8, I get this: + + == 84 tests, 2 stderr failures, 1 stdout failure == + corecheck/tests/res_search (stdout) + memcheck/tests/sigaltstack (stderr) + + sigaltstack is probably harmless. res_search doesn't work + on R H 8 even running natively, so I'm not too worried. + + On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures: + + == 84 tests, 2 stderr failures, 1 stdout failure == + corecheck/tests/pth_atfork1 (stdout) + corecheck/tests/pth_atfork1 (stderr) + memcheck/tests/sigaltstack (stderr) + + You need to run on a PII system, at least, since some tests + contain P6-specific instructions, and the test machine needs + access to the internet so that corecheck/tests/res_search + (a test that the DNS resolver works) can function. + +As ever, thanks for the vast amount of feedback :) and bug reports :( +We may not answer all messages, but we do at least look at all of +them, and tend to fix the most frequently reported bugs. + + + +Version 1.9.6 (7 May 2003 or thereabouts) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Major changes in 1.9.6: + +- Improved threading support for glibc >= 2.3.2 (SuSE 8.2, + RedHat 9, to name but two ...) It turned out that 1.9.5 + had problems with threading support on glibc >= 2.3.2, + usually manifested by threaded programs deadlocking in system calls, + or running unbelievably slowly. Hopefully these are fixed now. 1.9.6 + is the first valgrind which gives reasonable support for + glibc-2.3.2. Also fixed a 2.3.2 problem with pthread_atfork(). + +- Majorly expanded FAQ.txt. We've added workarounds for all + common problems for which a workaround is known. + +Minor changes in 1.9.6: + +- Fix identification of the main thread's stack. Incorrect + identification of it was causing some on-stack addresses to not get + identified as such. This only affected the usefulness of some error + messages; the correctness of the checks made is unchanged. + +- Support for kernels >= 2.5.68. + +- Dummy implementations of __libc_current_sigrtmin, + __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully + good enough to keep alive programs which previously died for lack of + them. + +- Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request. + +- Fix bug in the DWARF2 debug line info loader, when instructions + following each other have source lines far from each other + (e.g. with inlined functions). + +- Debug info reading: read symbols from both "symtab" and "dynsym" + sections, rather than merely from the one that comes last in the + file. + +- New syscall support: prctl(), creat(), lookup_dcookie(). + +- When checking calls to accept(), recvfrom(), getsocketopt(), + don't complain if buffer values are NULL. + +- Try and avoid assertion failures in + mash_LD_PRELOAD_and_LD_LIBRARY_PATH. + +- Minor bug fixes in cg_annotate. + + + +Version 1.9.5 (7 April 2003) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +It occurs to me that it would be helpful for valgrind users to record +in the source distribution the changes in each release. So I now +attempt to mend my errant ways :-) Changes in this and future releases +will be documented in the NEWS file in the source distribution. + +Major changes in 1.9.5: + +- (Critical bug fix): Fix a bug in the FPU simulation. This was + causing some floating point conditional tests not to work right. + Several people reported this. If you had floating point code which + didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5. + +- Partial support for Red Hat 9. RH9 uses the new Native Posix + Threads Library (NPTL), instead of the older LinuxThreads. + This potentially causes problems with V which will take some + time to correct. In the meantime we have partially worked around + this, and so 1.9.5 works on RH9. Threaded programs still work, + but they may deadlock, because some system calls (accept, read, + write, etc) which should be nonblocking, in fact do block. This + is a known bug which we are looking into. + + If you can, your best bet (unfortunately) is to avoid using + 1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution. + If your glibc is 2.3.1 or earlier, you're almost certainly OK. + +Minor changes in 1.9.5: + +- Added some #errors to valgrind.h to ensure people don't include + it accidentally in their sources. This is a change from 1.0.X + which was never properly documented. The right thing to include + is now memcheck.h. Some people reported problems and strange + behaviour when (incorrectly) including valgrind.h in code with + 1.9.1 -- 1.9.4. This is no longer possible. + +- Add some __extension__ bits and pieces so that gcc configured + for valgrind-checking compiles even with -Werror. If you + don't understand this, ignore it. Of interest to gcc developers + only. + +- Removed a pointless check which caused problems interworking + with Clearcase. V would complain about shared objects whose + names did not end ".so", and refuse to run. This is now fixed. + In fact it was fixed in 1.9.4 but not documented. + +- Fixed a bug causing an assertion failure of "waiters == 1" + somewhere in vg_scheduler.c, when running large threaded apps, + notably MySQL. + +- Add support for the munlock system call (124). + +Some comments about future releases: + +1.9.5 is, we hope, the most stable Valgrind so far. It pretty much +supersedes the 1.0.X branch. If you are a valgrind packager, please +consider making 1.9.5 available to your users. You can regard the +1.0.X branch as obsolete: 1.9.5 is stable and vastly superior. There +are no plans at all for further releases of the 1.0.X branch. + +If you want a leading-edge valgrind, consider building the cvs head +(from SourceForge), or getting a snapshot of it. Current cool stuff +going in includes MMX support (done); SSE/SSE2 support (in progress), +a significant (10-20%) performance improvement (done), and the usual +large collection of minor changes. Hopefully we will be able to +improve our NPTL support, but no promises. + diff --git a/configure.ac b/configure.ac index bf024aca73..451ec48c07 100755 --- a/configure.ac +++ b/configure.ac @@ -15,10 +15,10 @@ # Also set the (expected/last) release date here. # Do not forget to rerun ./autogen.sh m4_define([v_major_ver], [3]) -m4_define([v_minor_ver], [22]) +m4_define([v_minor_ver], [23]) m4_define([v_micro_ver], [0]) -m4_define([v_suffix_ver], []) -m4_define([v_rel_date], ["31 Oct 2023"]) +m4_define([v_suffix_ver], [GIT]) +m4_define([v_rel_date], ["?? Apr 2024"]) m4_define([v_version], m4_if(v_suffix_ver, [], [v_major_ver.v_minor_ver.v_micro_ver],