|
From: <sv...@va...> - 2013-11-29 23:08:55
|
Author: sewardj
Date: Fri Nov 29 23:08:28 2013
New Revision: 13724
Log:
Merge the following revisions from 3_9_BRANCH to trunk:
r13682 Initial cut at 3.9.0 release notes.
r13683 Remove duplicate NEWS entries for 3.9.0.
r13689 Minor docs/NEWS fixes
r13690 Documentation updates for 3.9.0.
r13691 More documentation updates, re leak-checker changes
r13692 NEWS: Note increased max mem size.
Modified:
trunk/ (props changed)
trunk/AUTHORS
trunk/NEWS
trunk/docs/xml/manual-core.xml
trunk/docs/xml/vg-entities.xml
trunk/memcheck/docs/mc-manual.xml
Modified: trunk/AUTHORS
==============================================================================
--- trunk/AUTHORS (original)
+++ trunk/AUTHORS Fri Nov 29 23:08:28 2013
@@ -74,7 +74,10 @@
Dragos Tatulea modified the arm-android port so it also works on
x86-android.
-Jakub Jelinek helped out with the AVX support.
+Jakub Jelinek helped out extensively with the AVX and AVX2 support.
+
+Mark Wielaard fixed a bunch of bugs and acts as our Fedora/RHEL
+liaison.
Maran Pakkirisamy implemented support for decimal floating point on
s390.
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Fri Nov 29 23:08:28 2013
@@ -1,103 +1,170 @@
-Release 3.9.0 (?? ?????? 201?)
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+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 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
+* Support for s390x Decimal Floating Point instructions on hosts that
have the DFP facility installed.
- Power8 (Power ISA 2.07 support)
+* Support for POWER8 (Power ISA 2.07) instructions
- Intel AVX2 support
- Intel HTM support (kind of)
- Power HTM support (kind of)
+* Support for Intel AVX2 instructions. This is available only on 64
+ bit code.
+* Initial support for Intel Transactional Synchronization Extensions,
+ both RTM and HLE.
-* ==================== TOOL CHANGES ====================
-* Memcheck:
+* Initial support for Hardware Transactional Memory on POWER.
- - Using the options --show-leak-kinds=kind1,kind2,.. and
- --errors-for-leak-kinds=kind1,kind2,.., each leak kind (definite, indirect,
- possible, reachable) can now be individually reported and/or counted as
- an error.
- In a leak suppression entry, an optional line 'match-leak-kinds:'
- controls which leak kinds are suppressed by this entry.
- This is a.o. useful to avoid definite leaks being "catched"
- by a suppression entry aimed at suppressing possibly lost blocks.
-
- - The option --leak-check-heuristics=heur1,heur2,... can activate
- various heuristics to decrease the number of false positive
- "possible leaks" for C++ code. The available heuristics are
- detecting 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.
-
- - The option --keep-stacktraces controls which stack trace(s) to keep for
- malloc'd and/or free'd blocks. This can be used to obtain more information
- for 'use after free' errors or to decrease Valgrind memory and/or cpu usage
- by recording less information for heap blocks.
-
- - The list of used suppressions (shown when giving the -v option)
- now shows for the leak suppressions how many blocks and bytes were
- suppressed during the last leak search for each suppression.
- The suppression count for a leak suppression shows the total nr
- of loss records which were suppressed by this suppression.
+* Improved support for MacOSX 10.8 (64-bit only). Memcheck can now
+ run large GUI apps tolerably well.
-* ==================== OTHER CHANGES ====================
+* ==================== TOOL CHANGES ====================
- - The default nr of sectors in the translation cache has been
- decreased to 6 on android platforms, and increased to 16
- on all other platforms. A sector (lazily allocated) uses several
- MB depending on the tool (about 40MB for memcheck).
- The option --num-transtab-sectors allows to specify how
- many sectors Valgrind can allocate.
-
- - Option --merge-recursive-frames=<number> tells Valgrind to
- detect and merge (collapse) recursive calls when recording stack traces.
- When your program has recursive algorithms, this limits
- the memory used by Valgrind for recorded stack traces and avoid
- recording uninteresting repeated calls.
- The value is changeable using the monitor command
- 'v.set merge-recursive-frames'.
-
- - valgrind.h has a new request VALGRIND_MONITOR_COMMAND.
- This can be used to execute gdbserver monitor commands from
- the client program.
-
- - Addition of GDB server monitor command 'v.info open_fds' that gives the
- list of open file descriptors and additional details.
-
- - Optional message in the 'v.info n_errs_found' monitor command (e.g.
- 'v.info n_errs_found test 1234 finished'), allowing to have
- a comment string in the process output, separating errors of different
- tests (or test phases).
-
- - Addition of GDB server monitor command 'v.info execontext' that shows
- information about the stack traces recorded by Valgrind.
- This can be used to analyse one possible cause of Valgrind high
- memory usage for some programs.
-
- - Addition of GDB server monitor command
- 'v.do expensive_sanity_check_general' that checks the sanity
- of various Valgrind aspects, including the Valgrind heap.
-
- - The list of used suppressions (shown when giving the -v option)
- now gives the filename and line number where the suppression is defined.
+* Memcheck:
- - remote debuginfo server + overhaul of debuginfo reading
+ - 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.
- - some fixes for OSX 10.8
+ - False errors resulting from the use of pthread_cond_waits that
+ timeout, have been removed.
- - partial-loads-ok now works for 16 and 32 byte loads
- and in general improved handling of vectorised code on Memcheck
+* ==================== OTHER CHANGES ====================
- - unwind-by-stack-scan for ARM
+* 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 ====================
@@ -112,593 +179,201 @@
https://bugs.kde.org/show_bug.cgi?id=XXXXXX
where XXXXXX is the bug number as listed below.
-v = verified fixed in 3_8_BRANCH
-m = merged into 3_8_BRANCH
-[390] = fixed in trunk (for 3.9.0)
-[381] = fixed in trunk and in 3_8_BRANCH, for 3.8.1
-[382] = fixed in trunk and needs to be made available for 3.8.2 too
-
-123837 [390] semctl system call: 4rth argument is optional, depending on cmd
-135425 [390] memcheck should tell you where Freed blocks were Mallocd
-252955 [390] Impossible to compile with ccache
+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.
- FIXED r13109
-
-274695 [390] s390x: Support "compare to/from logical" instructions (z196)
-275800 [390] s390x: Add support for the ecag instruction (part 1)
-275800 [390] s390x: Autodetect cache info (part 2)
-280271 Valgrind reports possible memory leaks on still-reachable std::string
-284540 [390] Memcheck shouldn't count suppressions matching still-reachable allocations
-296311 [390] Wrong stack traces due to -fomit-frame-pointer (x86)
-
+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
- FIXED r13160
-
-305948 [390] ppc64: code generation for ShlD64 / ShrD64 asserts
-306035 [390] s390x: Fix IR generation for LAAG and friends
-306054 [390] s390x: Condition code computation for convert-to-int/logical
-
+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
- FIXED, 2501/12935, but not yet closed
-306310 3.8.0 release tarball missing some files
- FIXED 12964/12983.
-
306587 Fix cache line detection from auxiliary vector for PPC.
-
306783 Mips unhandled syscall : 4025 / 4079 / 4182
- FIXED r12995.
-
307038 DWARF2 CFI reader: unhandled DW_OP_ opcode 0x8 (DW_OP_const1u et al)
- FIXED r13010
-
+307082 HG false positive: pthread_cond_destroy: destruction of unknown CV
307101 sys_capget second argument can be NULL
- FIXED r13021
307103 sys_openat: If pathname is absolute, then dirfd is ignored.
- FIXED r13159
-307103 sys_openat If pathname is absolute, then dirfd is ignored
- FIXED r13159
-
307106 amd64->IR: f0 0f c0 02 (lock xadd byte)
- == 308333
- FIXED r2581
-
307113 s390x: DFP support
-
307141 valgrind does't work in mips-linux system
- FIXED (no action on our part? unclear)
-
-
-
-307155 [390] filter_gdb should filter out syscall-template.S T_PSEUDO
+307155 filter_gdb should filter out syscall-template.S T_PSEUDO
307285 x86_amd64 feature test for avx in test suite is wrong
- FIXED, r13161
-
307290 memcheck overlap testcase needs memcpy version filter
- FIXED r13020
-
307463 Please add "&limit=0" to the "all open bugs" link
- FIXED
-
-307465 [390] --show-possibly-lost=no should bring down the error count / exit code
+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
- valt_load_address=@VALT_LOAD_ADDRESS@
- FIXED r13018
-
-307828 SSE optimized wcscpy, wcscmp, wcsrchr and wcschr trigger
- uninitialised value and/or invalid read warnings
- FIXED r13162
-
-307955 Building valgrind 3.7.0-r4 fails in Gentoo AMD64 when
- using clang instead of gcc
- FIXED (long since)
-
-308321 [390] testsuite memcheck filter interferes with gdb_filter
-308341 [390] vgdb should report process exit (or fatal signal)
-308427 s390 memcheck reports tsearch conditional jump or move
- depends on uninitialized value
- FIXED r2551
-
+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
- FIXED r13081
-
-308573 Internal Valgrind error on 64-bit instruction executed in
- 32-bit mode
- FIXED r2558, r13091
-
+308573 Internal error on 64-bit instruction executed in 32-bit mode
+308626 == 308627
308627 pmovmskb validity bit propagation is imprecise
- == 308626
- FIXED r2559, r13108, r13129
-
-308644 [390] vgdb command for having the info for the track-fds option
-308711 [390] give more info about aspacemgr and arenas in out_of_memory
-308886 [390] Missing support for PTRACE_SET/GETREGSET
-308886 Missing support for PTRACE_SET/GETREGSET
- FIXED r13112, r13115 (??)
-
+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
- FIXED r13124
-
-309425 Provide a --sigill-diagnostics flag to suppress illegal
- instruction reporting
- FIXED r13164, r2582
-
+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
- FIXED r13109
-
-309823 [390] Generate errors for still reachable blocks
+309823 Generate errors for still reachable blocks
309921 PCMPISTRI validity bit propagation is imprecise
- FIXED r2562, r13132
-
309922 none/tests/ppc64/test_dfp5 sometimes fails
- FIXED r2563
-
-310169 The Iop_CmpORD class of Iops is currently not supported
- by the vbit checker.
- FIXED r13123
-
-310424 [390] --read-var-info does not properly describe static variables
-310792 [PATCH v2] search additional path for debug symbols
- FIXED r13154,13169
-
-310931 [390] s390x: Message-security assist (MSA) instruction extension not implemented
-311100 PPC DFP implementation of the integer operands is not
- consistent with the Iop definitions
- FIXED r2562, r13260
-
-311407 ssse3 bcopy (actually converted memcpy) causes invalid read of
- size 8 under Debian GNU/Linux 32 bits
- FIXED r13253
-
-
+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
- FIXED r2597
-
-312571 Rounding mode call wrong for the DFP Iops: Iop_AddD128,
- Iop_SubD128, Iop_MulD128, Iop_DivD128, Iop_D128toI64
- FIXED r2627
-
-312620 Recent change to Iop_D32toD64 and Iop_D64toD32 for s390 DFP
- support broke ppc implementation of the Iops
- FIXED r2650
-
-312913 [390] Dangling pointers error should also report the alloc stack trace
-312980 [390] Building on Mountain Lion generates some compiler warnings
+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
- FIXED (mostly -- still DW64 outstandings) r13292, r2687
-
-313811 [390] Buffer overflow in assert_fail
+313348 == 251569
+313354 == 251569
+313811 Buffer overflow in assert_fail
314099 coverity pointed out error in VEX guest_ppc_toIR.c insn_suffix
- FIXED 2671
-
+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
- FIXED 13294
-
-315545 [390] (find_TTEntry_from_hcode): Assertion '(UChar*)sec->tt[tteNo].tcptr <= (UChar*)hcode' failed
-321814 == 315545
-
-316535 [390] Use of |signed int| instead of (unsigned) |size_t| in valgrind messages...
-315959 [390] valgrind man page has bogus SGCHECK (and no BBV) OPTIONS section
-316144 [390] valgrind.1 manpage contains unknown ??? strings for some core option references
-316145 [390] callgrind command line options in manpage reference (unknown) callgrind manual
-n-i-bz [390] report error for vgdb snapshot requested before execution
-n-i-bz [390] Some wrong command line options could be ignored
-n-i-bz [390] same as 303624 (fixed in 3.8.0), but for x86 android
-
-304832 ppc32: build failure
- FIXED (not sure what happened. Seems bogus to me.)
-
-n-i-bz patch to allow fair-sched on android
- FIXED r13186
-
+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)
- FIXED 2695 13313
-
-311669 disInstr(arm): unhandled instruction: 0xEE07CFBA
- FIXED in 3.8.1 (hence, basically, invalid)
-
-311318 ARM: "128-bit constant is not implemented" error message
- FIXED 2693
-
-309427 SSE optimized stpncpy trigger uninitialised value and/or
- invalid read warnings
- FIXED, r13163
-
-308718 ARM implement SMLALBB family of instructions
- FIXED 2692, 13311
-
-308717 ARM: implement fixed-point VCVT.F64.[SU]32
- FIXED 2694 13312
-
-316144 valgrind.1 manpage contains unknown ??? strings for some
- core option references
- FIXED 13314
-
-316145 callgrind command line options in manpage reference
- (unknown) callgrind manual
- FIXED 13324
-
-316181 x264 program of parsec 2.1 stuck (do not finish)
- FIXED 13315
-
-316535 Use of |signed int| instead of (unsigned) |size_t| in
- valgrind messages...
- FIXED 13326
-
-317091 Use -Wl,-Ttext-segment when static linking if possible to
- keep build-ids
- FIXED 13331
-
-317186 "Impossible happends" when occurs VCVT instruction on ARM
- FIXED 2698
-
315959 valgrind man page has bogus SGCHECK (and no BBV) OPTIONS section
- FIXED 13323
- 312907 ==
-
-312171 ppc: insn selection for DFP
- FIXED r?????
-
-315534 msgrcv inside a thread causes valgrind to hang (block)
- FIXED 13289
-
+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
- FIXED 2700 13336
-
-311690 V crashes because it redirects branches inside of a redirected function
- FIXED (kinda; not really) 13190
-
-314269 ppc: dead code in insn selection
- FIXED 2697
-
-315345 cl-format.xml and callgrind/dump.c don't agree on
- using cfl= or cfi= for the called function source file
- FIXED 13310
-
-251569 vex amd64->IR: 0xF 0x1 0xF9 0xBF 0x90 0xD0 0x3 0x0 (RDTSCP)
- 311933 ==
- 313348 ==
- 313354 ==
- FIXED 2701 13337
-
-305728 Add support for AVX2 instructions
- FIXED r2702, r13338, r13339, r13340
-
+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"
- WORKSFORME
-
-308089 Unhandled syscall on ppc64: prctl
- FIXED 13350
-
-263034 Crash when loading some PPC64 binaries
- FIXED 13351
-
-307082 HG false positive: pthread_cond_destroy: destruction of
- unknown cond var, w/ patch
- FIXED 13332
-
-135425 memcheck should tell you where Freed blocks were Mallocd
- FIXED 13223
-
-269599] Increase deepest backtrace
-FIXED r??
-
317444 amd64->IR: 0xC4 0x41 0x2C 0xC2 0xD2 0x8 (vcmpeq_uqps)
- FIXED 2703 13342
-
317461 Fix BMI assembler configure check and avx2/bmi/fma vgtest prereqs
- FIXED 13343
-
317463 bmi testcase IR SANITY CHECK FAILURE
- FIXED 2704
-
-314718 ARM: implement integer divide instruction (sdiv and udiv)
- FIXED 2706 13365
-
-315689 disInstr(thumb): unhandled instruction: 0xF852 0x0E10 (LDRT)
- FIXED 2705 13364
-
-317506 memcheck/tests/vbit-test fails with unknown opcode after
- introduction of new Iops for AVX2, BMI, FMA support
- FIXED 13347
-
-318643 annotate_trace_memory tests go into infinite loop on arm and ppc
- because of failed reservation (ARM: ldrex/strex PPC:lwarx/stwcx)
- FIXED r13406
-
+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
- FIXED 13383
-
319235 --db-attach=yes is broken with Yama (ptrace scoping) enabled
- FIXED 13384
-
319395 Crash with unhandled instruction on STRT (Thumb) instructions
- FIXED 2722 13997
-
-319494 Fix VEX's Makefile-gcc.
-
+319494 VEX Makefile-gcc standalone build update after r2702
+319505 [MIPSEL] Crash: unhandled UNRAY operator.
319858 disInstr(thumb): unhandled instruction on instruction STRBT
- FIXED 2730 13445
-
319932 disInstr(thumb): unhandled instruction on instruction STRHT
- FIXED 2730 13445
-
+320057 Problems when we try to mmap more than 12 memory pages on MIPS32
320063 Memory from PTRACE_GET_THREAD_AREA is reported uninitialised
- FIXED 13403
-
320083 disInstr(thumb): unhandled instruction on instruction LDRBT
- FIXED 2730 13445
-
320116 bind on AF_BLUETOOTH produces warnings because of sockaddr_rc padding
- FIXED 13404, 13405
-
+320131 WARNING: unhandled syscall: 369 on ARM (prlimit64)
320211 Stack buffer overflow in ./coregrind/m_main.c with huge TMPDIR
- FIXED 13409
-
+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
- FIXED 13435/6/7/8
-
321148 Unhandled instruction: PLI (Thumb 1, 2, 3)
- FIXED 2730
-
-321693 Unhandled instruction: LDRSBT (Thumb)
- FIXED 2730 13445
-
-321730 Add cg_diff and cg_merge man pages
- FIXED 13442
-
-321738 Add vgdb and valgrind-listener man pages
- FIXED 13443
-
321363 Unhandled instruction: SSAX (ARM + Thumb)
- FIXED 2731 13446 13447
-
321364 Unhandled instruction: SXTAB16 (ARM + Thumb)
- FIXED 2731 13446 13447
-
321466 Unhandled instruction: SHASX (ARM + Thumb)
- FIXED 2731 13446 13447
-
321467 Unhandled instruction: SHSAX (ARM + Thumb)
- FIXED 2731 13446 13447
-
321468 Unhandled instruction: SHSUB16 (ARM + Thumb)
- FIXED 2731 13446 13447
-
321619 Unhandled instruction: SHSUB8 (ARM + Thumb)
- FIXED 2731 13446 13447
-
321620 Unhandled instruction: UASX (ARM + Thumb)
- FIXED 2731 13446 13447
-
321621 Unhandled instruction: USAX (ARM + Thumb)
- FIXED 2731 13446 13447
-
321692 Unhandled instruction: UQADD16 (ARM + Thumb)
- FIXED 2731 13446 13447
-
+321693 Unhandled instruction: LDRSBT (Thumb)
321694 Unhandled instruction: UQASX (ARM + Thumb)
- FIXED 2731 13446 13447
-
321696 Unhandled instruction: UQSAX (Thumb + ARM)
- FIXED 2731 13446 13447
-
321697 Unhandled instruction: UHASX (ARM + Thumb)
- FIXED 2731 13446 13447
-
321703 Unhandled instruction: UHSAX (ARM + Thumb)
- FIXED 2731 13446 13447
-
321704 Unhandled instruction: REVSH (ARM + Thumb)
- FIXED 2731 13446 13447
-
+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
- FIXED 13467
-
-322807 VALGRIND_PRINTF_BACKTRACE writes callstack to xml and text to stderr
- FIXED 13516
-
-322851 0bXXX binary literal syntax is not standard
- FIXED 2736
-
-324514 gdbserver monitor cmd output behaviour consistency + allow user
- to put a "marker" msg in process log output
- FIXED 13532
-
-207815 Adds some of the drm ioctls to syswrap-linux.c
- FIXED 13486
-
321969 ppc32 and ppc64 don't support [lf]setxattr
- FIXED r13449
-
322254 Show threadname together with tid if set by application
- FIXED r13553
-
+322294 Add initial support for IBM Power ISA 2.07
322368 Assertion failure in wqthread_hijack under OS X 10.8
- FIXED 13523
-
+322563 vex mips->IR: 0x70 0x83 0xF0 0x3A
322807 VALGRIND_PRINTF_BACKTRACE writes callstack to xml and text to stderr
- FIXED r13516
-
-322851 0bXXX binary literal syntax is not standard
- FIXED 2736
-
-323116 The memcheck/tests/ppc64/power_ISA2_05.c fails to build with recent binutils
- FIXED 13490 13505 13506
-
-323713 Support mmxext (integer sse) subset on i386 (athlon)
- FIXED 2745 13515
-
-323905 Probable false positive from Valgrind/drd on close()
- FIXED r13511
-
-323912 valgrind.h header isn't compatible for mingw64
- FIXED r13513
-
-324514 gdbserver monitor cmd output behaviour consistency + allow user
- to put a "marker" msg in process output
- FIXED 13532
-
-324546 none/tests/ppc32 test_isa_2_07_part2 requests -m64
- FIXED 13533
-
-324582 When access is made to freed memory, report both allocation
- and freeing callstack
- FIXED 13223
-
-324594 Fix overflow computation and add test-cases for Power ISA 2.06
- insns: mulldo/mulldo.
- FIXED 2754 13537; needs closing.
-
-324518 ppc64: Emulation of dcbt instructions does not handle non-zero hint fields
- FIXED 2753; needs closing though.
-
-323437 Phase 2 support for IBM Power ISA 2.07
- FIXED 2753 13539
-
-322294 Add initial support for IBM Power ISA 2.07
- FIXED 2740 13494, but needs close
-
-324816 Incorrect VEX implementation for xscvspdp/xvcvspdp regarding SNaN inputs
- FIXED 2760 13544
-
-324765 ppc64: illegal instruction when executing none/tests/ppc64/jm-misc
- FIXED 13562
-
-323893 SSE3 not available on amd cpus in valgrind
- No action so far; maybe MJW can look at it
- FIXED 2761
-
-320895 add fanotify support (patch included)
- FIXED 13460
-
-320057 We have problems when we try to mmap more than 12 memory pages
- on MIPS32 when we are using Valgrind
- FIXED 13450
-
-319505 [MIPSEL] Crash: unhandled UNRAY operator.
- FIXED 2729
-
-319494 VEX Makefile-gcc standalone build update after r2702
- FIXED 2702
-
-318929 Crash with: disInstr(thumb): 0xF321 0x0001 (ssat16)
- FIXED 2721 13396
-
-318773 unhandled instruction bytes: 0xF3 0x48 0x0F 0xBC 0xC2 0xC3 0x66 0x0F
- tzcnt? == 295808, but not closed
- FIXED 2478
-
-318203 setsockopt handling needs to handle SOL_SOCKET/SO_ATTACH_FILTER
- FIXED 13461
-
-316761 syscall open_by_handle_at (304 on amd64, 342 on x86) not handled
- FIXED 13459
-
-311922 WARNING: unhandled syscall: 170
- FIXED 13458
-
-309823 Generate errors for still reachable blocks
- FIXED 13170
-
-309323 print unrecognized instuction on MIPS
- FIXED ????
-
-308930 syscall name_to_handle_at (303 on amd64) not handled
- FIXED 13304
-
-307113 s390x: DFP support
- FIXED
-
-164485 VG_N_SEGNAMES and VG_N_SEGMENTS are (still) too small
- == https://bugzilla.redhat.com/show_bug.cgi?id=730303
- FIXED 13567
-
-316181 drd: Fixed a 4x slowdown for certain applications
-316696 FIXED 13315 13316
-
-321891 Unhandled instruction: LDRHT (Thumb)
- FIXED 2777 13583
-
+322851 0bXXX binary literal syntax is not standard
323035 Unhandled instruction: LDRSHT(Thumb)
- FIXED 2777 13583
-
-324047 Valgrind doesn't support [LDR,ST]{S}[B,H]T ARM instructions
- FIXED 2777 13583
-
323036 Unhandled instruction: SMMLS (ARM and Thumb)
- FIXED 2778 13584
-
+323116 The memcheck/tests/ppc64/power_ISA2_05.c fails to build [..]
323175 Unhandled instruction: SMLALD (ARM + Thumb)
- FIXED 2778 13584
-
323177 Unhandled instruction: SMLSLD (ARM + Thumb)
- FIXED 2778 13584
-
-324421 Support for fanotify API on ARM architecture
- FIXED 13586
-
-307557 Leaks on Mac OS X 10.7.5 libraries at ImageLoader::recursiveInit[..]
- FIXED 13636
-
-308135 PPC32 MPC8xx has 16 bytes cache size
- FIXED 2785 13637
-
-318050 libmpiwrap fails to compile with out-of-source build
- FIXED 13638
-
-320131 WARNING: unhandled syscall: 369 on ARM (prlimit64)
- FIXED 13639
-
-320661 vgModuleLocal_read_elf_debug_info(): "Assertion '!di->soname'
- FIXED 13640
-
-324149 helgrind: When pthread_cond_timedwait returns ETIMEDOUT, helgrind
- FIXED 13641
-
-323432 Calling pthread_cond_destroy() or pthread_mutex_destroy()
- FIXED 13642
-
+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
- FIXED 13644
-
+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
- FIXED 2786
-
-* Support for Haswell RTM (restricted transactional memory insns) is
- in, but Haswell HLE isn't supported yet. To make this work requires
- the x86_64 insn decoder to accept XACQUIRE/XRELEASE prefixes (F2/F3)
- on certain memory instructions as listed by the Intel documentation.
- Should be easy.
-DONE
-
-320998 vex amd64->IR pcmpestri and pcmpestrm SSE4.2 instruction
- FIXED 2791 13654
-
-289578 Backtraces with ARM unwind tables (stack scan flags)
- FIXED 13657
-
-326113 valgrind libvex hwcaps error on AMD64
- FIXED 13656
-
324894 Phase 3 support for IBM Power ISA 2.07
- FIXED 13594 2779
-
-323803 Transactional memory instructions are not supported for Power
- FIXED 2780 13607 13608
-
-322563 vex mips->IR: 0x70 0x83 0xF0 0x3A
- FIXED 13558 2765
+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
-324227 memcheck false positive leak when a thread calls exit+block
- only reachable via other thread live register
- FIXED 13670
-
-326091 drd: Avoid that optimized strlen() implementations trigger
- false positive race reports.
- FIXED 13664
+(3.9.0: 31 October 2013, vex r2796, valgrind r13708)
-309430 Self hosting ppc64 encounters a vassert error on operand type
- FIXED 2793
Release 3.8.1 (19 September 2012)
@@ -756,7 +431,7 @@
301902 == 254088
304754 NEWS blows TeX's little mind
-(3.8.1: 19 September 2012, vex rXXXX, valgrind rXXXXX)
+(3.8.1: 19 September 2012, vex r2537, valgrind r12996)
Modified: trunk/docs/xml/manual-core.xml
==============================================================================
--- trunk/docs/xml/manual-core.xml (original)
+++ trunk/docs/xml/manual-core.xml Fri Nov 29 23:08:28 2013
@@ -1019,6 +1019,69 @@
</listitem>
</varlistentry>
+ <varlistentry id="opt.unw-stack-scan-thresh"
+ xreflabel="--unw-stack-scan-thresh">
+ <term>
+ <option><![CDATA[--unw-stack-scan-thresh=<number> [default: 0] ]]></option>
+ </term>
+ <term>
+ <option><![CDATA[--unw-stack-scan-frames=<number> [default: 5] ]]></option>
+ </term>
+ <listitem>
+ <para>Stack-scanning support is available only on ARM
+ targets.</para>
+
+ <para>These flags enable and control stack unwinding by stack
+ scanning. When the normal stack unwinding mechanisms -- usage
+ of Dwarf CFI records, and frame-pointer following -- fail, stack
+ scanning may be able to recover a stack trace.</para>
+
+ <para>Note that stack scanning is an imprecise, heuristic
+ mechanism that may give very misleading results, or none at all.
+ It should be used only in emergencies, when normal unwinding
+ fails, and it is important to nevertheless have stack
+ traces.</para>
+
+ <para>Stack scanning is a simple technique: the unwinder reads
+ words from the stack, and tries to guess which of them might be
+ return addresses, by checking to see if they point just after
+ ARM or Thumb call instructions. If so, the word is added to the
+ backtrace.</para>
+
+ <para>The main danger occurs when a function call returns,
+ leaving its return address exposed, and a new function is
+ called, but the new function does not overwrite the old address.
+ The result of this is that the backtrace may contain entries for
+ functions which have already returned, and so be very
+ confusing.</para>
+
+ <para>A second limitation of this implementation is that it will
+ scan only the page (4KB, normally) containing the starting stack
+ pointer. If the stack frames are large, this may result in only
+ a few (or not even any) being present in the trace. Also, if
+ you are unlucky and have an initial stack pointer near the end
+ of its containing page, the scan may miss all interesting
+ frames.</para>
+
+ <para>By default stack scanning is disabled. The normal use
+ case is to ask for it when a stack trace would otherwise be very
+ short. So, to enable it,
+ use <computeroutput>--unw-stack-scan-thresh=number</computeroutput>.
+ This requests Valgrind to try using stack scanning to "extend"
+ stack traces which contain fewer
+ than <computeroutput>number</computeroutput> frames.</para>
+
+ <para>If stack scanning does take place, it will only generate
+ at most the number of frames specified
+ by <computeroutput>--unw-stack-scan-frames</computeroutput>.
+ Typically, stack scanning generates so many garbage entries that
+ this value is set to a low value (5) by default. In no case
+ will a stack trace larger than the value specified
+ by <computeroutput>--num-callers</computeroutput> be
+ created.</para>
+ </listitem>
+ </varlistentry>
+
<varlistentry id="opt.error-limit" xreflabel="--error-limit">
<term>
<option><![CDATA[--error-limit=<yes|no> [default: yes] ]]></option>
@@ -1057,17 +1120,19 @@
<option>--quiet</option> is given. The default can always be explicitly
overridden by giving this option.</para>
- <para>When enabled a warning message will be printed with some
- diagnostics whenever some instruction is encountered that valgrind
- cannot decode or translate before the program is given a SIGILL signal.
+ <para>When enabled, a warning message will be printed, along with some
+ diagnostics, whenever an instruction is encountered that Valgrind
+ cannot decode or translate, before the program is given a SIGILL signal.
Often an illegal instruction indicates a bug in the program or missing
- support for the particular instruction in Valgrind. But some programs
+ support for the particular instruction in Valgrind. But some programs
do deliberately try to execute an instruction that might be missing
- and trap the SIGILL signal to detect processor features.</para>
+ and trap the SIGILL signal to detect processor features. Using
+ this flag makes it possible to avoid the diagnostic output
+ that you would otherwise get in such cases.</para>
</listitem>
</varlistentry>
- <varlistentry id="opt.stack-traces" xreflabel="--show-below-main">
+ <varlistentry id="opt.show-below-main" xreflabel="--show-below-main">
<term>
<option><![CDATA[--show-below-main=<yes|no> [default: no] ]]></option>
</term>
@@ -1173,6 +1238,83 @@
</listitem>
</varlistentry>
+ <varlistentry id="opt.debuginfo-server" xreflabel="--debuginfo-server">
+ <term>
+ <option><![CDATA[--debuginfo-server=ipaddr:port [default: undefined and unused]]]></option>
+ </term>
+ <listitem>
+ <para>This is a new, experimental, feature introduced in version
+ 3.9.0.</para>
+
+ <para>In some scenarios it may be convenient to read debuginfo
+ from objects stored on a different machine. With this flag,
+ Valgrind will query a debuginfo server running
+ on <computeroutput>ipaddr</computeroutput> and listening on
+ port <computeroutput>port</computeroutput>, if it cannot find
+ the debuginfo object in the local filesystem.</para>
+
+ <para>The debuginfo server must accept TCP connections on
+ port <computeroutput>port</computeroutput>. The debuginfo
+ server is contained in the source
+ file <computeroutput>auxprogs/valgrind-di-server.c</computeroutput>.
+ It will only serve from the directory it is started
+ in. <computeroutput>port</computeroutput> defaults to 1500 in
+ both client and server if not specified.</para>
+
+ <para>If Valgrind looks for the debuginfo for
+ <computeroutput>/w/x/y/zz.so</computeroutput> by using the
+ debuginfo server, it will strip the pathname components and
+ merely request <computeroutput>zz.so</computeroutput> on the
+ server. That in turn will look only in its current working
+ directory for a matching debuginfo object.</para>
+
+ <para>The debuginfo data is transmitted in small fragments (8
+ KB) as requested by Valgrind. Each block is compressed using
+ LZO to reduce transmission time. The implementation has been
+ tuned for best performance over a single-stage 802.11g (WiFi)
+ network link.</para>
+
+ <para>Note that checks for matching primary vs debug objects,
+ using GNU debuglink CRC scheme, are performed even when using
+ the debuginfo server. To disable such checking, you need to
+ also specify
+ <computeroutput>--allow-mismatched-debuginfo=yes</computeroutput>.
+ </para>
+
+ <para>By default the Valgrind build system will
+ build <computeroutput>valgrind-di-server</computeroutput> for
+ the target platform, which is almost certainly not what you
+ want. So far we have been unable to find out how to get
+ automake/autoconf to build it for the build platform. If
+ you want to use it, you will have to recompile it by hand using
+ the command shown at the top
+ of <computeroutput>auxprogs/valgrind-di-server.c</computeroutput>.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="opt.allow-mismatched-debuginfo"
+ xreflabel="--allow-mismatched-debuginfo">
+ <term>
+ <option><![CDATA[--allow-mismatched-debuginfo=no|yes [no] ]]></option>
+ </term>
+ <listitem>
+ <para>When reading debuginfo from separate debuginfo objects,
+ Valgrind will by default check that the main and debuginfo
+ objects match, using the GNU debuglink mechanism. This
+ guarantees that it does not read debuginfo from out of date
+ debuginfo objects, and also ensures that Valgrind can't crash as
+ a result of mismatches.</para>
+
+ <para>This check can be overridden using
+ <computeroutput>--allow-mismatched-debuginfo=yes</computeroutput>.
+ This may be useful when the debuginfo and main objects have not
+ been split in the proper way. Be careful when using this,
+ though: it disables all consistency checking, and Valgrind has
+ been observed to crash when the main and debuginfo objects don't
+ match.</para>
+ </listitem>
+ </varlistentry>
+
<varlistentry id="opt.suppressions" xreflabel="--suppressions">
<term>
<option><![CDATA[--suppressions=<filename> [default: $PREFIX/lib/valgrind/default.supp] ]]></option>
@@ -1824,14 +1966,16 @@
<option><![CDATA[--merge-recursive-frames=<number> [default: 0] ]]></option>
</term>
<listitem>
- <para>Some recursive algorithms (such as balanced binary tree
- implementations) have the property to create many different
- stack traces, containing cycles of calls. A cycle is defined by
- two identical program counters separated by 0 or more other
- program counters. Valgrind might then use a lot of memory to
- record these stack traces, containing repeated uninteresting
- recursive calls instead of more interesting information such as
- the function that has initiated the recursive call.
+ <para>Some recursive algorithms, for example balanced binary
+ tree implementations, create many different stack traces, each
+ containing cycles of calls. A cycle is defined as two identical
+ program counter values separated by zero or more other program
+ counter values. Valgrind may then use a lot of memory to store
+ all these stack traces. This is a poor use of memory
+ considering that such stack traces contain repeated
+ uninteresting recursive calls instead of more interesting
+ information such as the function that has initiated the
+ recursive call.
</para>
<para>The option <option>--merge-recursive-frames=<number></option>
instructs Valgrind to detect and merge recursive call cycles
@@ -1843,27 +1987,29 @@
The value 0 (the default) causes no recursive call merging.
A value of 1 will cause stack traces of simple recursive algorithms
(for example, a factorial implementation) to be collapsed.
- A value of 2 will usually be needed to collapsed stack traces produced
- by recursive algorithms such as binary trees, quick sort, ...
+ A value of 2 will usually be needed to collapse stack traces produced
+ by recursive algorithms such as binary trees, quick sort, etc.
Higher values might be needed for more complex recursive algorithms.
</para>
- <para>Note: recursive calls are detected based on program counters.
- The cycles are not detected based on function names. </para>
+ <para>Note: recursive calls are detected by analysis of program
+ counter values. They are not detected by looking at function
+ names.</para>
</listitem>
</varlistentry>
<varlistentry id="opt.num-transtab-sectors" xreflabel="--num-transtab-sectors">
<term>
- <option><![CDATA[--num-transtab-sectors=<number> [default: 6 or 16] ]]></option>
+ <option><![CDATA[--num-transtab-sectors=<number> [default: 6
+ for Android platforms, 16 for all others] ]]></option>
</term>
<listitem>
<para>Valgrind translates and instruments your program's machine
code in small fragments. The translations are stored in a
translation cache that is divided into a number of sections
(sectors). If the cache is full, the sector containing the
- oldest translations is emptied and recycled. If these old
+ oldest translations is emptied and reused. If these old
translations are needed again, Valgrind must re-translate and
- re-instrument the corresponding program code, which is
+ re-instrument the corresponding machine code, which is
expensive. If the "executed instructions" working set of a
program is big, increasing the number of sectors may improve
performance by reducing the number of re-translations needed.
Modified: trunk/docs/xml/vg-entities.xml
==============================================================================
--- trunk/docs/xml/vg-entities.xml (original)
+++ trunk/docs/xml/vg-entities.xml Fri Nov 29 23:08:28 2013
@@ -2,12 +2,12 @@
<!ENTITY vg-jemail "ju...@va...">
<!ENTITY vg-vemail "val...@va...">
<!ENTITY cl-email "Jos...@gm...">
-<!ENTITY vg-lifespan "2000-2012">
+<!ENTITY vg-lifespan "2000-2013">
<!-- valgrind release + version stuff -->
<!ENTITY rel-type "Release">
-<!ENTITY rel-version "3.8.0">
-<!ENTITY rel-date "10 August 2012">
+<!ENTITY rel-version "3.9.0">
+<!ENTITY rel-date "31 October 2013">
<!-- where the docs are installed -->
<!ENTITY vg-docs-path "$INSTALL/share/doc/valgrind/html/index.html">
Modified: trunk/memcheck/docs/mc-manual.xml
==============================================================================
--- trunk/memcheck/docs/mc-manual.xml (original)
+++ trunk/memcheck/docs/mc-manual.xml Fri Nov 29 23:08:28 2013
@@ -604,10 +604,10 @@
<para>The option <option>--show-leak-kinds=<set></option>
controls the set of leak kinds to show
-if <option>--leak-check=full</option> is specified. </para>
+when <option>--leak-check=full</option> is specified. </para>
-<para>The <option><set></option> of leak kinds is specified by
-using one of the following forms:
+<para>The <option><set></option> of leak kinds is specified
+in one of the following ways:
<itemizedlist>
<listitem>a comma separated list of one or more of
@@ -617,7 +617,7 @@
<listitem><option>all</option> to specify the complete set (all leak kinds).
</listitem>
- <listitem><option>none</option> is the empty set.
+ <listitem><option>none</option> for the empty set.
</listitem>
</itemizedlist>
@@ -627,12 +627,13 @@
<option>--show-leak-kinds=definite,possible</option>.
</para>
-<para>To also show the reachable and indirectly lost blocks in addition to the definitely
-and possibly lost blocks, you can use <option>--show-leak-kinds=all</option>.
-To only show the reachable and indirectly lost blocks, use
-<option>--show-leak-kinds=indirect,reachable</option>.
-The reachable and indirectly lost blocks will then be presented as the following
-two examples show.</para>
+<para>To also show the reachable and indirectly lost blocks in
+addition to the definitely and possibly lost blocks, you can
+use <option>--show-leak-kinds=all</option>. To only show the
+reachable and indirectly lost blocks, use
+<option>--show-leak-kinds=indirect,reachable</option>. The reachable
+and indirectly lost blocks will then be presented as shown in
+the following two examples.</para>
<programlisting><![CDATA[
64 bytes in 4 blocks are still reachable in loss record 2 of 4
@@ -647,7 +648,7 @@
]]></programlisting>
<para>Because there are different kinds of leaks with different
-severities, an interesting question is this: which leaks should be
+severities, an interesting question is: which leaks should be
counted as true "errors" and which should not?
</para>
@@ -716,8 +717,8 @@
<option><![CDATA[--show-leak-kinds=<set> [default: definite,possible] ]]></option>
</term>
<listitem>
- <para>Specifies the leak kinds to show in a full leak search by
- using one of the following forms:
+ <para>Specifies the leak kinds to show in a full leak search, in
+ one of the following ways:
<itemizedlist>
<listitem>a comma separated list of one or more of
@@ -729,7 +730,7 @@
<option>--show-leak-kinds=definite,indirect,possible,reachable</option>.
</listitem>
- <listitem><option>none</option> is the empty set.
+ <listitem><option>none</option> for the empty set.
</listitem>
</itemizedlist>
</para>
@@ -755,10 +756,11 @@
<option><![CDATA[--leak-check-heuristics=<set> [default: none] ]]></option>
</term>
<listitem>
- <para>Specifies the leak check heuristics to use during leak search
- to discover interior pointers with which a block should be considered
- as reachable. The heuristic set is specified by using one of the
- following forms:
+ <para>Specifies the set of leak check heuristics to be used
+ during
+ leak searches. The heuristics control which interior pointers
+ to a block cause it to be considered as reachable.
+ The heuristic set is specified in one of the following ways:
<itemizedlist>
<listitem>a comma separated list of one or more of
@@ -771,7 +773,7 @@
<option>--leak-check-heuristics=stdstring,newarray,multipleinheritance</option>.
</listitem>
- <listitem><option>none</option> is the empty set.
+ <listitem><option>none</option> for the empty set.
</listitem>
</itemizedlist>
</para>
@@ -886,8 +888,8 @@
<option><![CDATA[--partial-loads-ok=<yes|no> [default: no] ]]></option>
</term>
<listitem>
- <para>Controls how Memcheck handles word-sized,
- word-aligned loads from addresses for which some bytes are
+ <para>Controls how Memcheck handles 32-, 64-, 128- and 256-bit
+ naturally aligned loads from addresses for which some bytes are
addressable and others are not. When <varname>yes</varname>, such
loads do not produce an address error. Instead, loaded bytes
originating from illegal addresses are marked as uninitialised, and
@@ -915,46 +917,47 @@
free'd blocks.
</para>
- <para>With <varname>alloc-then-free</varname>, the malloc stack
- trace is recorded at allocation time. The block contains a
- reference to this allocation stack trace. When the block is
- freed, the block will then reference the free stack trace. So,
- a 'use after free' error will only report the free stack trace.
+ <para>With <varname>alloc-then-free</varname>, a stack trace is
+ recorded at allocation time, and is associated with the block.
+ When the block is freed, a second stack trace is recorded, and
+ this replaces the allocation stack trace. As a result, any "use
+ after free" errors relating to this block can only show a stack
+ trace for where the block was freed.
</para>
- <para>With <varname>alloc-and-free</varname>, both the malloc
- and the free stack trace (for freed block) are recorded and
- referenced by the block. A 'use after free' error will report
- the free stack trace, followed by the stack trace where this
- block was allocated. Compared
- to <varname>alloc-then-free</varname>, this value very slightly
- increases Valgrind memory use as the block contains two references
- instead of one.
+ <para>With <varname>alloc-and-free</varname>, both allocation
+ and the deallocation stack traces for the block are stored.
+ Hence a "use after free" error will
+ show both, which may make the error easier to diagnose.
+ Compared to <varname>alloc-then-free</varname>, this setting
+ slightly increases Valgrind's memory use as the block contains two
+ references instead of one.
</para>
- <para>With <varname>alloc</varname>, only the malloc stack trace
- is recorded (and reported). With <varname>free</varname>, only
- the free stack trace is recorded (and reported). These values
- somewhat decrease Valgrind memory and cpu usage. They can be
- useful depending on the error types you are searching for and
- the level of details you need to analyse them. For example, if
- you are only interested in memory leak errors, it is sufficient
- to record the allocation stack traces.
+ <para>With <varname>alloc</varname>, only the allocation stack
+ trace is recorded (and reported). With <varname>free</varname>,
+ only the deallocation stack trace is recorded (and reported).
+ These values somewhat decrease Valgrind's memory and cpu usage.
+ They can be useful depending on the error types you are
+ searching for and the level of detail you need to analyse
+ them. For example, if you are only interested...
[truncated message content] |