Features Download
From: Julian Seward <jseward-HInyCGIudOg <at> public.gmane.org>
Subject: Valgrind-3.9.0 is available
Newsgroups: gmane.comp.debugging.valgrind.devel
Date: Friday 1st November 2013 11:18:16 UTC (over 3 years ago)
We are pleased to announce a new release of Valgrind, version 3.9.0,
available from http://www.valgrind.org.

3.9.0 is a feature release with many improvements and the usual
collection of bug fixes.  This release adds support for MIPS64/Linux,
Intel AVX2 instructions and POWER8 instructions.  DFP support has been
added for S390.  Initial support for hardware transactional memory has
been added for Intel and POWER platforms.  Support for Mac OS X 10.8
(Mountain Lion) has been improved.  Accuracy of Memcheck on vectorized
code has been improved.

The release notes below give more details.

Our thanks to all those who contribute to Valgrind's development.
This release represents a great deal of time, energy and effort on the
part of many people.

Happy and productive debugging and profiling,

-- The Valgrind Developers

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=

  - 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)
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
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
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
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
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
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
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
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
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 r13707)

Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
CD: 3ms