Skip to content
  • Elliott Hughes's avatar
    Upgrade to valgrind 3.13.0 (15 June 2017). · ed39800a
    Elliott Hughes authored
    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=<file>.
    
      A report can also be produced on demand using the gdbserver monitor command
      'xtmemory [<filename>]>'.  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 [<filename>]>'.
    
      - New command line options --xtree-leak=no|yes and --xtree-leak-file=<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 [<filename>]>'.
    
      - For some workloads (typically, for big applications), Massif memory
        consumption and CPU consumption has decreased significantly.
    
    * Helgrind:
    
      - Support for --xtree-memory and 'xtmemory [<filename>]>'.
    
      - 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)
    
    Bug: N/A
    Test: manual
    Change-Id: Id4498a49f462c3689cbcb35c15f96a8c7e3cea17
    ed39800a
To find the state of this project's repository at the time of any of these versions, check out the tags.