On 09/03/2014 02:47 PM, Phil Longstaff wrote: > Is more information available about these changes? > I'd like to see more detail on "improved error messages" > and "stack traces through inlined function calls".
Sure. Here is the entire NEWS entry for the release so far. J Release 3.10.0 (mid September 2014) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.10.0 is not yet released. This is a beta of 3.10.0. 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, 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. * ================== 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. By default, stack unwinding now makes 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 [yes]. In the 3.10.0 beta release(s), inlined unwinding is only enabled for Memcheck and Helgrind. It is hoped to enable it for all tools in the 3.10.0 final release. * 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 <address>" 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=<address>" 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 199144 == 278972 232510 make distcheck fails 249435 Analyzing wine programs with callgrind triggers a crash 278972 support for inlined function calls in stacktraces and suppression 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) 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 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 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 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 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} 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 337871 deprecate --db-attach 338024 inlined functions are not shown if DW_AT_ranges is used 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 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 338703 helgrind on arm-linux gets false positives in dynamic loader 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 (3.10.0.BETA1: 2 September 2014, vex r2940, valgrind r14428) ------------------------------------------------------------------------------ Slashdot TV. Video for Nerds. Stuff that matters. http://tv.slashdot.org/ _______________________________________________ Valgrind-users mailing list Valgrind-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/valgrind-users