Upgrade to valgrind 3.13.0 (15 June 2017).
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
diff --git a/docs/html/FAQ.html b/docs/html/FAQ.html
index 17c6491..d71a37b 100644
--- a/docs/html/FAQ.html
+++ b/docs/html/FAQ.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Valgrind FAQ</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="index.html" title="Valgrind Documentation">
<link rel="prev" href="nl-manual.html" title="14. Nulgrind: the minimal Valgrind tool">
@@ -22,10 +22,10 @@
<div>
<div><h1 class="title">
<a name="FAQ"></a>Valgrind FAQ</h1></div>
-<div><p class="releaseinfo">Release 3.12.0 20 October 2016</p></div>
-<div><p class="copyright">Copyright © 2000-2016 <a class="ulink" href="http://www.valgrind.org/info/developers.html" target="_top">Valgrind Developers</a></p></div>
+<div><p class="releaseinfo">Release 3.13.0 15 June 2017</p></div>
+<div><p class="copyright">Copyright © 2000-2017 <a class="ulink" href="http://www.valgrind.org/info/developers.html" target="_top">Valgrind Developers</a></p></div>
<div><div class="legalnotice">
-<a name="idm140639119221280"></a><p>Email: <a class="ulink" href="mailto:valgrind@valgrind.org" target="_top">valgrind@valgrind.org</a></p>
+<a name="idm140394923825504"></a><p>Email: <a class="ulink" href="mailto:valgrind@valgrind.org" target="_top">valgrind@valgrind.org</a></p>
</div></div>
</div>
<hr>
diff --git a/docs/html/QuickStart.html b/docs/html/QuickStart.html
index a304edb..89d8ffc 100644
--- a/docs/html/QuickStart.html
+++ b/docs/html/QuickStart.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>The Valgrind Quick Start Guide</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="index.html" title="Valgrind Documentation">
<link rel="prev" href="index.html" title="Valgrind Documentation">
@@ -22,10 +22,10 @@
<div>
<div><h1 class="title">
<a name="QuickStart"></a>The Valgrind Quick Start Guide</h1></div>
-<div><p class="releaseinfo">Release 3.12.0 20 October 2016</p></div>
-<div><p class="copyright">Copyright © 2000-2016 <a class="ulink" href="http://www.valgrind.org/info/developers.html" target="_top">Valgrind Developers</a></p></div>
+<div><p class="releaseinfo">Release 3.13.0 15 June 2017</p></div>
+<div><p class="copyright">Copyright © 2000-2017 <a class="ulink" href="http://www.valgrind.org/info/developers.html" target="_top">Valgrind Developers</a></p></div>
<div><div class="legalnotice">
-<a name="idm140639120054432"></a><p>Email: <a class="ulink" href="mailto:valgrind@valgrind.org" target="_top">valgrind@valgrind.org</a></p>
+<a name="idm140394929811680"></a><p>Email: <a class="ulink" href="mailto:valgrind@valgrind.org" target="_top">valgrind@valgrind.org</a></p>
</div></div>
</div>
<hr>
diff --git a/docs/html/bbv-manual.html b/docs/html/bbv-manual.html
index 2039193..b8981b0 100644
--- a/docs/html/bbv-manual.html
+++ b/docs/html/bbv-manual.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>12. BBV: an experimental basic block vector generation tool</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="manual.html" title="Valgrind User Manual">
<link rel="prev" href="sg-manual.html" title="11. SGCheck: an experimental stack and global array overrun detector">
diff --git a/docs/html/cg-manual.html b/docs/html/cg-manual.html
index fabf6fa..99ec6cd 100644
--- a/docs/html/cg-manual.html
+++ b/docs/html/cg-manual.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>5. Cachegrind: a cache and branch-prediction profiler</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="manual.html" title="Valgrind User Manual">
<link rel="prev" href="mc-manual.html" title="4. Memcheck: a memory error detector">
diff --git a/docs/html/cl-format.html b/docs/html/cl-format.html
index 7cf30de..4c35b5a 100644
--- a/docs/html/cl-format.html
+++ b/docs/html/cl-format.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>3. Callgrind Format Specification</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="tech-docs.html" title="Valgrind Technical Documentation">
<link rel="prev" href="manual-writing-tools.html" title="2. Writing a New Valgrind Tool">
@@ -41,9 +41,7 @@
</dl></dd>
</dl>
</div>
-<p>This chapter describes the Callgrind Profile Format, Version 1.</p>
-<p>A synonymous name is "Calltree Profile Format". These names actually mean
-the same since Callgrind was previously named Calltree.</p>
+<p>This chapter describes the Callgrind Format, Version 1.</p>
<p>The format description is meant for the user to be able to understand the
file contents; but more important, it is given for authors of measurement or
visualization tools to be able to write and read this format.</p>
@@ -59,6 +57,9 @@
<div class="sect2">
<div class="titlepage"><div><div><h3 class="title">
<a name="cl-format.overview.basics"></a>3.1.1. Basic Structure</h3></div></div></div>
+<p>To uniquely specify that a file is a callgrind profile, it
+should add "# callgrind format" as first line. This is optional but
+recommended for easy format detection.</p>
<p>Each file has a header part of an arbitrary number of lines of the
format "key: value". After the header, lines specifying profile costs
follow. Everywhere, comments on own lines starting with '#' are allowed.
@@ -85,7 +86,8 @@
However, any profiling tool could use the format described in this chapter.</p>
<p>
</p>
-<pre class="screen">events: Cycles Instructions Flops
+<pre class="screen"># callgrind format
+events: Cycles Instructions Flops
fl=file.f
fn=main
15 90 14 2
@@ -147,8 +149,10 @@
<code class="function">main</code> calls <code class="function">func1</code> once and
<code class="function">func2</code> 3 times. <code class="function">func1</code> calls
<code class="function">func2</code> 2 times.
+
</p>
-<pre class="screen">events: Instructions
+<pre class="screen"># callgrind format
+events: Instructions
fl=file1.c
fn=main
@@ -197,9 +201,10 @@
integer ID to a name, and "spec=(ID)" to reference a previously defined ID
mapping. There is a separate ID mapping for each position specification,
i.e. you can use ID 1 for both a file name and a symbol name.</p>
-<p>With string compression, the example from 1.4 looks like this:
+<p>With string compression, the example from above looks like this:
</p>
-<pre class="screen">events: Instructions
+<pre class="screen"># callgrind format
+events: Instructions
fl=(1) file1.c
fn=(1) main
@@ -228,7 +233,8 @@
define name compression mappings directly after the header, and before any cost
lines. Thus, the above example can also be written as
</p>
-<pre class="screen">events: Instructions
+<pre class="screen"># callgrind format
+events: Instructions
# define file ID mapping
fl=(1) file1.c
@@ -265,7 +271,8 @@
Assume the following example (subpositions can always be specified
as hexadecimal numbers, beginning with "0x"):
</p>
-<pre class="screen">positions: instr line
+<pre class="screen"># callgrind format
+positions: instr line
events: ticks
fn=func
@@ -274,7 +281,8 @@
0x80001238 91 6</pre>
<p>With subposition compression, this looks like
</p>
-<pre class="screen">positions: instr line
+<pre class="screen"># callgrind format
+positions: instr line
events: ticks
fn=func
@@ -328,7 +336,10 @@
<a name="cl-format.reference.grammar"></a>3.2.1. Grammar</h3></div></div></div>
<p>
</p>
-<pre class="screen">ProfileDataFile := FormatVersion? Creator? PartData*</pre>
+<pre class="screen">ProfileDataFile := FormatSpec? FormatVersion? Creator? PartData*</pre>
+<p>
+</p>
+<pre class="screen">FormatSpec := "# callgrind format\n"</pre>
<p>
</p>
<pre class="screen">FormatVersion := "version: 1\n"</pre>
@@ -451,7 +462,7 @@
<p>
</p>
<p>A profile data file ("ProfileDataFile") starts with basic information
- such as the version and creator information, and then has a list of parts, where
+ such as a format marker, the version and creator information, and then has a list of parts, where
each part has its own header and body. Parts typically are different threads
and/or time spans/phases within a profiled application run.</p>
<p>Note that callgrind_annotate currently only supports profile data files with
@@ -464,11 +475,22 @@
<p>Basic information in the first lines of a profile data file:</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
+<p><code class="computeroutput"># callgrind format</code> [Callgrind]</p>
+<p>This line specifies that the file is a callgrind profile,
+ and it has to be the first line. It was added late to the
+ format (with Valgrind 3.13) and is optional, as all readers also
+ should work with older callgrind profiles not including this line.
+ However, generation of this line is recommended to allow desktop
+ environments and file managers to uniquely detect the format.</p>
+</li>
+<li class="listitem">
<p><code class="computeroutput">version: number</code> [Callgrind]</p>
<p>This is used to distinguish future profile data formats. A
major version of 0 or 1 is supposed to be upwards compatible with
Cachegrind's format. It is optional; if not appearing, version 1
- is assumed. Otherwise, this has to be the first header line.</p>
+ is assumed. Otherwise, it has to follow directly after the format
+ specification (i.e. be the first line if the optional format
+ specification is skipped).</p>
</li>
<li class="listitem">
<p><code class="computeroutput">creator: string</code> [Callgrind]</p>
diff --git a/docs/html/cl-manual.html b/docs/html/cl-manual.html
index 35f29cf..2cc4e95 100644
--- a/docs/html/cl-manual.html
+++ b/docs/html/cl-manual.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>6. Callgrind: a call-graph generating cache and branch prediction profiler</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="manual.html" title="Valgrind User Manual">
<link rel="prev" href="cg-manual.html" title="5. Cachegrind: a cache and branch-prediction profiler">
@@ -315,7 +315,7 @@
what is happening within a given function or starting from a given
program phase. To this end, you can disable event aggregation for
uninteresting program parts. While attribution of events to
- functions as well as producing seperate output per program phase
+ functions as well as producing separate output per program phase
can be done by other means (see previous section), there are two
benefits by disabling aggregation. First, this is very
fine-granular (e.g. just for a loop within a function). Second,
@@ -423,7 +423,7 @@
cycles, this does not hold true: callees of a function in a cycle include
the function itself. Therefore, KCachegrind does cycle detection
and skips visualization of any inclusive cost for calls inside
- of cycles. Further, all functions in a cycle are collapsed into artifical
+ of cycles. Further, all functions in a cycle are collapsed into artificial
functions called like <code class="computeroutput">Cycle 1</code>.</p>
<p>Now, when a program exposes really big cycles (as is
true for some GUI code, or in general code using event or callback based
@@ -1005,7 +1005,7 @@
</dt>
<dd><p>Start full Callgrind instrumentation if not already enabled.
When cache simulation is done, this will flush the simulated cache
- and lead to an artifical cache warmup phase afterwards with
+ and lead to an artificial cache warmup phase afterwards with
cache misses which would not have happened in reality. See also
option <code class="option"><a class="xref" href="cl-manual.html#opt.instr-atstart">--instr-atstart</a></code>.</p></dd>
<dt>
@@ -1040,7 +1040,11 @@
<dt><span class="term">
<code class="option">--sort=A,B,C</code>
</span></dt>
-<dd><p>Sort columns by events A,B,C [event column order].</p></dd>
+<dd>
+<p>Sort columns by events A,B,C [event column order].</p>
+<p>Optionally, each event is followed by a : and a threshold,
+ to specify different thresholds depending on the event.</p>
+</dd>
<dt><span class="term">
<code class="option">--threshold=<0--100> [default: 99%] </code>
</span></dt>
diff --git a/docs/html/design-impl.html b/docs/html/design-impl.html
index 22f8c6e..6571555 100644
--- a/docs/html/design-impl.html
+++ b/docs/html/design-impl.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>1. The Design and Implementation of Valgrind</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="tech-docs.html" title="Valgrind Technical Documentation">
<link rel="prev" href="tech-docs.html" title="Valgrind Technical Documentation">
diff --git a/docs/html/dh-manual.html b/docs/html/dh-manual.html
index 4557e7d..4b4356f 100644
--- a/docs/html/dh-manual.html
+++ b/docs/html/dh-manual.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>10. DHAT: a dynamic heap analysis tool</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="manual.html" title="Valgrind User Manual">
<link rel="prev" href="ms-manual.html" title="9. Massif: a heap profiler">
@@ -26,9 +26,9 @@
<dt><span class="sect1"><a href="dh-manual.html#dh-manual.overview">10.1. Overview</a></span></dt>
<dt><span class="sect1"><a href="dh-manual.html#dh-manual.understanding">10.2. Understanding DHAT's output</a></span></dt>
<dd><dl>
-<dt><span class="sect2"><a href="dh-manual.html#idm140639117126160">10.2.1. Interpreting the max-live, tot-alloc and deaths fields</a></span></dt>
-<dt><span class="sect2"><a href="dh-manual.html#idm140639113841488">10.2.2. Interpreting the acc-ratios fields</a></span></dt>
-<dt><span class="sect2"><a href="dh-manual.html#idm140639116741152">10.2.3. Interpreting "Aggregated access counts by offset" data</a></span></dt>
+<dt><span class="sect2"><a href="dh-manual.html#idm140394924138288">10.2.1. Interpreting the max-live, tot-alloc and deaths fields</a></span></dt>
+<dt><span class="sect2"><a href="dh-manual.html#idm140394926128304">10.2.2. Interpreting the acc-ratios fields</a></span></dt>
+<dt><span class="sect2"><a href="dh-manual.html#idm140394925890256">10.2.3. Interpreting "Aggregated access counts by offset" data</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="dh-manual.html#dh-manual.options">10.3. DHAT Command-line Options</a></span></dt>
</dl>
@@ -90,9 +90,9 @@
numbers. That is best illustrated via a set of examples.</p>
<div class="sect2">
<div class="titlepage"><div><div><h3 class="title">
-<a name="idm140639117126160"></a>10.2.1. Interpreting the max-live, tot-alloc and deaths fields</h3></div></div></div>
+<a name="idm140394924138288"></a>10.2.1. Interpreting the max-live, tot-alloc and deaths fields</h3></div></div></div>
<div class="sect3"><div class="titlepage"><div><div><h4 class="title">
-<a name="idm140639117125456"></a>10.2.1.1. A simple example</h4></div></div></div></div>
+<a name="idm140394924137584"></a>10.2.1.1. A simple example</h4></div></div></div></div>
<pre class="screen">
======== SUMMARY STATISTICS ========
@@ -123,7 +123,7 @@
for 1,045,339,534 instructions, and so the average age at death is
about 2% of the program's total run time.</p>
<div class="sect3"><div class="titlepage"><div><div><h4 class="title">
-<a name="idm140639113980544"></a>10.2.1.2. Example of a potential process-lifetime leak</h4></div></div></div></div>
+<a name="idm140394923815680"></a>10.2.1.2. Example of a potential process-lifetime leak</h4></div></div></div></div>
<p>This next example (from a different program than the above)
shows a potential process lifetime leak. A process lifetime leak
occurs when a program keeps allocating data, but only frees the
@@ -158,9 +158,9 @@
</div>
<div class="sect2">
<div class="titlepage"><div><div><h3 class="title">
-<a name="idm140639113841488"></a>10.2.2. Interpreting the acc-ratios fields</h3></div></div></div>
+<a name="idm140394926128304"></a>10.2.2. Interpreting the acc-ratios fields</h3></div></div></div>
<div class="sect3"><div class="titlepage"><div><div><h4 class="title">
-<a name="idm140639113840736"></a>10.2.2.1. A fairly harmless allocation point record</h4></div></div></div></div>
+<a name="idm140394923814880"></a>10.2.2.1. A fairly harmless allocation point record</h4></div></div></div></div>
<pre class="screen">
max-live: 49,398 in 808 blocks
tot-alloc: 1,481,940 in 24,240 blocks (avg size 61.13)
@@ -193,7 +193,7 @@
that they must have varying sizes since the average block size, 61.13,
isn't a whole number.</p>
<div class="sect3"><div class="titlepage"><div><div><h4 class="title">
-<a name="idm140639118134560"></a>10.2.2.2. A more suspicious looking example</h4></div></div></div></div>
+<a name="idm140394922011696"></a>10.2.2.2. A more suspicious looking example</h4></div></div></div></div>
<pre class="screen">
max-live: 180,224 in 22 blocks
tot-alloc: 180,224 in 22 blocks (avg size 8192.00)
@@ -213,7 +213,7 @@
DHAT can tell us, that Memcheck can't, is that not only are the blocks
leaked, they are also never used.</p>
<div class="sect3"><div class="titlepage"><div><div><h4 class="title">
-<a name="idm140639111498432"></a>10.2.2.3. Another suspicious example</h4></div></div></div></div>
+<a name="idm140394922008704"></a>10.2.2.3. Another suspicious example</h4></div></div></div></div>
<p>Here's one where blocks are allocated, written to,
but never read from. We see this immediately from the zero read
access ratio. They do get freed, though:</p>
@@ -241,7 +241,7 @@
</div>
<div class="sect2">
<div class="titlepage"><div><div><h3 class="title">
-<a name="idm140639116741152"></a>10.2.3. Interpreting "Aggregated access counts by offset" data</h3></div></div></div>
+<a name="idm140394925890256"></a>10.2.3. Interpreting "Aggregated access counts by offset" data</h3></div></div></div>
<p>For allocation points that always allocate blocks of the same
size, and which are 4096 bytes or smaller, DHAT counts accesses
per offset, for example:</p>
@@ -341,7 +341,7 @@
</dl>
</div>
<p>One important point to note is that each allocation stack counts
-as a seperate allocation point. Because stacks by default have 12
+as a separate allocation point. Because stacks by default have 12
frames, this tends to spread data out over multiple allocation points.
You may want to use the flag --num-callers=4 or some such small
number, to reduce the spreading.</p>
diff --git a/docs/html/dist.authors.html b/docs/html/dist.authors.html
index b69494e..9c895b2 100644
--- a/docs/html/dist.authors.html
+++ b/docs/html/dist.authors.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>1. AUTHORS</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="dist.html" title="Valgrind Distribution Documents">
<link rel="prev" href="dist.html" title="Valgrind Distribution Documents">
diff --git a/docs/html/dist.html b/docs/html/dist.html
index b50087b..26c14ee 100644
--- a/docs/html/dist.html
+++ b/docs/html/dist.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Valgrind Distribution Documents</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="index.html" title="Valgrind Documentation">
<link rel="prev" href="cl-format.html" title="3. Callgrind Format Specification">
@@ -22,10 +22,10 @@
<div>
<div><h1 class="title">
<a name="dist"></a>Valgrind Distribution Documents</h1></div>
-<div><p class="releaseinfo">Release 3.12.0 20 October 2016</p></div>
-<div><p class="copyright">Copyright © 2000-2016 <a class="ulink" href="http://www.valgrind.org/info/developers.html" target="_top">Valgrind Developers</a></p></div>
+<div><p class="releaseinfo">Release 3.13.0 15 June 2017</p></div>
+<div><p class="copyright">Copyright © 2000-2017 <a class="ulink" href="http://www.valgrind.org/info/developers.html" target="_top">Valgrind Developers</a></p></div>
<div><div class="legalnotice">
-<a name="idm140639116581280"></a><p>Email: <a class="ulink" href="mailto:valgrind@valgrind.org" target="_top">valgrind@valgrind.org</a></p>
+<a name="idm140394926016768"></a><p>Email: <a class="ulink" href="mailto:valgrind@valgrind.org" target="_top">valgrind@valgrind.org</a></p>
</div></div>
</div>
<hr>
diff --git a/docs/html/dist.news.html b/docs/html/dist.news.html
index cb91bf8..048fe05 100644
--- a/docs/html/dist.news.html
+++ b/docs/html/dist.news.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>2. NEWS</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="dist.html" title="Valgrind Distribution Documents">
<link rel="prev" href="dist.authors.html" title="1. AUTHORS">
@@ -21,7 +21,266 @@
<div class="titlepage"><div><div><h1 class="title">
<a name="dist.news"></a>2. NEWS</h1></div></div></div>
<div class="literallayout"><p><br>
- <br>
+ Release 3.13.0 (15 June 2017)<br>
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
+<br>
+3.13.0 is a feature release with many improvements and the usual collection of<br>
+bug fixes.<br>
+<br>
+This release supports X86/Linux, AMD64/Linux, ARM32/Linux, ARM64/Linux,<br>
+PPC32/Linux, PPC64BE/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux,<br>
+MIPS64/Linux, ARM/Android, ARM64/Android, MIPS32/Android, X86/Android,<br>
+X86/Solaris, AMD64/Solaris and AMD64/MacOSX 10.12.<br>
+<br>
+* ==================== CORE CHANGES ===================<br>
+<br>
+* The translation cache size has been increased to keep up with the demands of<br>
+ large applications. The maximum number of sectors has increased from 24 to<br>
+ 48. The default number of sectors has increased from 16 to 32 on all<br>
+ targets except Android, where the increase is from 6 to 12.<br>
+<br>
+* The amount of memory that Valgrind can use has been increased from 64GB to<br>
+ 128GB. In particular this means your application can allocate up to about<br>
+ 60GB when running on Memcheck.<br>
+<br>
+* Valgrind's default load address has been changed from 0x3800'0000 to<br>
+ 0x5800'0000, so as to make it possible to load larger executables. This<br>
+ should make it possible to load executables of size at least 1200MB.<br>
+<br>
+* A massive spaceleak caused by reading compressed debuginfo files has been<br>
+ fixed. Valgrind should now be entirely usable with gcc-7.0 "-gz" created<br>
+ debuginfo.<br>
+<br>
+* The C++ demangler has been updated.<br>
+<br>
+* Support for demangling Rust symbols has been added.<br>
+<br>
+* A new representation of stack traces, the "XTree", has been added. An XTree<br>
+ is a tree of stacktraces with data associated with the stacktraces. This is<br>
+ used by various tools (Memcheck, Helgrind, Massif) to report on the heap<br>
+ consumption of your program. Reporting is controlled by the new options<br>
+ --xtree-memory=none|allocs|full and --xtree-memory-file=<file>.<br>
+<br>
+ A report can also be produced on demand using the gdbserver monitor command<br>
+ 'xtmemory [<filename>]>'. The XTree can be output in 2 formats: 'callgrind<br>
+ format' and 'massif format. The existing visualisers for these formats (e.g.<br>
+ callgrind_annotate, KCachegrind, ms_print) can be used to visualise and<br>
+ analyse these reports.<br>
+<br>
+ Memcheck can also produce XTree leak reports using the Callgrind file<br>
+ format. For more details, see the user manual.<br>
+<br>
+* ================== PLATFORM CHANGES =================<br>
+<br>
+* ppc64: support for ISA 3.0B and various fixes for existing 3.0 support<br>
+<br>
+* amd64: fixes for JIT failure problems on long AVX2 code blocks<br>
+<br>
+* amd64 and x86: support for CET prefixes has been added<br>
+<br>
+* arm32: a few missing ARMv8 instructions have been implemented<br>
+<br>
+* arm64, mips64, mips32: an alternative implementation of Load-Linked and<br>
+ Store-Conditional instructions has been added. This is to deal with<br>
+ processor implementations that implement the LL/SC specifications strictly<br>
+ and as a result cause Valgrind to hang in certain situations. The<br>
+ alternative implementation is automatically enabled at startup, as required.<br>
+ You can use the option --sim-hints=fallback-llsc to force-enable it if you<br>
+ want.<br>
+<br>
+* Support for OSX 10.12 has been improved.<br>
+<br>
+* On Linux, clone handling has been improved to honour CLONE_VFORK that<br>
+ involves a child stack. Note however that CLONE_VFORK | CLONE_VM is handled<br>
+ like CLONE_VFORK (by removing CLONE_VM), so applications that depend on<br>
+ CLONE_VM exact semantics will (still) not work.<br>
+<br>
+* The TileGX/Linux port has been removed because it appears to be both unused<br>
+ and unsupported.<br>
+<br>
+* ==================== TOOL CHANGES ====================<br>
+<br>
+* Memcheck:<br>
+<br>
+ - Memcheck should give fewer false positives when running optimised<br>
+ Clang/LLVM generated code.<br>
+<br>
+ - Support for --xtree-memory and 'xtmemory [<filename>]>'.<br>
+<br>
+ - New command line options --xtree-leak=no|yes and --xtree-leak-file=<file><br>
+ to produce the end of execution leak report in a xtree callgrind format<br>
+ file.<br>
+<br>
+ - New option 'xtleak' in the memcheck leak_check monitor command, to produce<br>
+ the leak report in an xtree file.<br>
+<br>
+* Massif:<br>
+<br>
+ - Support for --xtree-memory and 'xtmemory [<filename>]>'.<br>
+<br>
+ - For some workloads (typically, for big applications), Massif memory<br>
+ consumption and CPU consumption has decreased significantly.<br>
+<br>
+* Helgrind:<br>
+<br>
+ - Support for --xtree-memory and 'xtmemory [<filename>]>'.<br>
+<br>
+ - addition of client request VALGRIND_HG_GNAT_DEPENDENT_MASTER_JOIN, useful<br>
+ for Ada gnat compiled applications.<br>
+<br>
+* ==================== OTHER CHANGES ====================<br>
+<br>
+* For Valgrind developers: in an outer/inner setup, the outer Valgrind will<br>
+ append the inner guest stacktrace to the inner host stacktrace. This helps<br>
+ to investigate the errors reported by the outer, when they are caused by the<br>
+ inner guest program (such as an inner regtest). See README_DEVELOPERS for<br>
+ more info.<br>
+<br>
+* To allow fast detection of callgrind files by desktop environments and file<br>
+ managers, the format was extended to have an optional first line that<br>
+ uniquely identifies the format ("# callgrind format"). Callgrind creates<br>
+ this line now, as does the new xtree functionality.<br>
+<br>
+* File name template arguments (such as --log-file, --xtree-memory-file, ...)<br>
+ have a new %n format letter that is replaced by a sequence number.<br>
+<br>
+* "--version -v" now shows the SVN revision numbers from which Valgrind was<br>
+ built.<br>
+<br>
+* ==================== FIXED BUGS ====================<br>
+<br>
+The following bugs have been fixed or resolved. Note that "n-i-bz"<br>
+stands for "not in bugzilla" -- that is, a bug that was reported to us<br>
+but never got a bugzilla entry. We encourage you to file bugs in<br>
+bugzilla (https://bugs.kde.org/enter_bug.cgi?product=valgrind) rather<br>
+than mailing the developers (or mailing lists) directly -- bugs that<br>
+are not entered into bugzilla tend to get forgotten about or ignored.<br>
+<br>
+To see details of a given bug, visit<br>
+ https://bugs.kde.org/show_bug.cgi?id=XXXXXX<br>
+where XXXXXX is the bug number as listed below.<br>
+<br>
+162848 --log-file output isn't split when a program forks<br>
+340777 Illegal instruction on mips (ar71xx)<br>
+341481 MIPS64: Iop_CmpNE32 triggers false warning on MIPS64 platforms<br>
+342040 Valgrind mishandles clone with CLONE_VFORK | CLONE_VM that clones<br>
+ to a different stack.<br>
+344139 x86 stack-seg overrides, needed by the Wine people<br>
+344524 store conditional of guest applications always fail - observed on<br>
+ Octeon3(MIPS)<br>
+348616 Wine/valgrind: noted but unhandled ioctl 0x5390 [..] (DVD_READ_STRUCT)<br>
+352395 Please provide SVN revision info in --version -v<br>
+352767 Wine/valgrind: noted but unhandled ioctl 0x5307 [..] (CDROMSTOP)<br>
+356374 Assertion 'DRD_(g_threadinfo)[tid].pt_threadid !=<br>
+ INVALID_POSIX_THREADID' failed<br>
+358213 helgrind/drd bar_bad testcase hangs or crashes with new glibc pthread<br>
+ barrier implementation<br>
+358697 valgrind.h: Some code remains even when defining NVALGRIND<br>
+359202 Add musl libc configure/compile<br>
+360415 amd64 instructions ADCX and ADOX are not implemented in VEX<br>
+ == 372828 (vex amd64->IR: 0x66 0xF 0x3A 0x62 0x4A 0x10)<br>
+360429 unhandled ioctl 0x530d with no size/direction hints (CDROMREADMODE1)<br>
+362223 assertion failed when .valgrindrc is a directory instead of a file<br>
+367543 bt/btc/btr/bts x86/x86_64 instructions are poorly-handled wrt flags<br>
+367942 Segfault vgPlain_do_sys_sigaction (m_signals.c:1138)<br>
+368507 can't malloc chunks larger than about 34GB<br>
+368529 Android arm target link error, missing atexit and pthread_atfork<br>
+368863 WARNING: unhandled arm64-linux syscall: 100 (get_robust_list)<br>
+368865 WARNING: unhandled arm64-linux syscall: 272 (kcmp)<br>
+368868 disInstr(arm64): unhandled instruction 0xD53BE000 = cntfrq_el0 (ARMv8)<br>
+368917 WARNING: unhandled arm64-linux syscall: 218 (request_key)<br>
+368918 WARNING: unhandled arm64-linux syscall: 127 (sched_rr_get_interval)<br>
+368922 WARNING: unhandled arm64-linux syscall: 161 (sethostname)<br>
+368924 WARNING: unhandled arm64-linux syscall: 84 (sync_file_range)<br>
+368925 WARNING: unhandled arm64-linux syscall: 130 (tkill)<br>
+368926 WARNING: unhandled arm64-linux syscall: 97 (unshare)<br>
+369459 valgrind on arm64 violates the ARMv8 spec (ldxr/stxr)<br>
+370028 Reduce the number of compiler warnings on MIPS platforms<br>
+370635 arm64 missing syscall getcpu<br>
+371225 Fix order of timer_{gettime,getoverrun,settime} syscalls on arm64<br>
+371227 Clean AArch64 syscall table<br>
+371412 Rename wrap_sys_shmat to sys_shmat like other wrappers<br>
+371471 Valgrind complains about non legit memory leaks on placement new (C++)<br>
+371491 handleAddrOverrides() is [incorrect] when ASO prefix is used<br>
+371503 disInstr(arm64): unhandled instruction 0xF89F0000<br>
+371869 support '%' in symbol Z-encoding<br>
+371916 execution tree xtree concept<br>
+372120 c++ demangler demangles symbols which are not c++<br>
+372185 Support of valgrind on ARMv8 with 32 bit executable<br>
+372188 vex amd64->IR: 0x66 0xF 0x3A 0x62 0x4A 0x10 0x10 0x48 (PCMPxSTRx $0x10)<br>
+372195 Power PC, xxsel instruction is not always recognized.<br>
+372504 Hanging on exit_group<br>
+372600 process loops forever when fatal signals are arriving quickly<br>
+372794 LibVEX (arm32 front end): 'Assertion szBlg2 <= 3' failed<br>
+373046 Stacks registered by core are never deregistered<br>
+373069 memcheck/tests/leak_cpp_interior fails with GCC 5.1+<br>
+373086 Implement additional Xen hypercalls<br>
+373192 Calling posix_spawn in glibc 2.24 completely broken<br>
+373488 Support for fanotify API on ARM64 architecture<br>
+ == 368864 WARNING: unhandled arm64-linux syscall: 262 (fanotify_init)<br>
+373555 Rename BBPTR to GSPTR as it denotes guest state pointer only<br>
+373938 const IRExpr arguments for matchIRExpr()<br>
+374719 some spelling fixes<br>
+374963 increase valgrind's load address to prevent mmap failure<br>
+375514 valgrind_get_tls_addr() does not work in case of static TLS<br>
+375772 +1 error in get_elf_symbol_info() when computing value of 'hi' address<br>
+ for ML_(find_rx_mapping)()<br>
+375806 Test helgrind/tests/tc22_exit_w_lock fails with glibc 2.24<br>
+375839 Temporary storage exhausted, with long sequence of vfmadd231ps insns<br>
+ == 377159 "vex: the `impossible' happened" still present<br>
+ == 375150 Assertion 'tres.status == VexTransOK' failed<br>
+ == 378068 valgrind crashes on AVX2 function in FFmpeg<br>
+376142 Segfaults on MIPS Cavium Octeon boards<br>
+376279 disInstr(arm64): unhandled instruction 0xD50320FF<br>
+376455 Solaris: unhandled syscall lgrpsys(180)<br>
+376518 Solaris: unhandled fast trap getlgrp(6)<br>
+376611 ppc64 and arm64 don't know about prlimit64 syscall<br>
+376729 PPC64, remove R2 from the clobber list<br>
+ == 371668<br>
+376956 syswrap of SNDDRV and DRM_IOCTL_VERSION causing some addresses<br>
+ to be wrongly marked as addressable<br>
+377066 Some Valgrind unit tests fail to compile on Ubuntu 16.10 with<br>
+ PIE enabled by default<br>
+377376 memcheck/tests/linux/getregset fails with glibc2.24<br>
+377427 PPC64, lxv instruction failing on odd destination register <br>
+377478 PPC64: ISA 3.0 setup fixes<br>
+377698 Missing memory check for futex() uaddr arg for FUTEX_WAKE<br>
+ and FUTEX_WAKE_BITSET, check only 4 args for FUTEX_WAKE_BITSET,<br>
+ and 2 args for FUTEX_TRYLOCK_PI<br>
+377717 Fix massive space leak when reading compressed debuginfo sections<br>
+377891 Update Xen 4.6 domctl wrappers<br>
+377930 fcntl syscall wrapper is missing flock structure check<br>
+378524 libvexmultiarch_test regression on s390x and ppc64<br>
+378535 Valgrind reports INTERNAL ERROR in execve syscall wrapper<br>
+378673 Update libiberty demangler<br>
+378931 Add ISA 3.0B additional isnstructions, add OV32, CA32 setting support<br>
+379039 syscall wrapper for prctl(PR_SET_NAME) must not check more than 16 bytes<br>
+379094 Valgrind reports INTERNAL ERROR in rt_sigsuspend syscall wrapper<br>
+379371 UNKNOWN task message [id 3444, to mach_task_self(), reply 0x603]<br>
+ (task_register_dyld_image_infos)<br>
+379372 UNKNOWN task message [id 3447, to mach_task_self(), reply 0x603]<br>
+ (task_register_dyld_shared_cache_image_info)<br>
+379390 unhandled syscall: mach:70 (host_create_mach_voucher_trap)<br>
+379473 MIPS: add support for rdhwr cycle counter register<br>
+379504 remove TileGX/Linux port<br>
+379525 Support more x86 nop opcodes<br>
+379838 disAMode(x86): not an addr!<br>
+379703 PC ISA 3.0 fixes: stxvx, stxv, xscmpexpdp instructions<br>
+379890 arm: unhandled instruction: 0xEBAD 0x1B05 (sub.w fp, sp, r5, lsl #4)<br>
+379895 clock_gettime does not execute POST syscall wrapper<br>
+379925 PPC64, mtffs does not set the FPCC and C bits in the FPSCR correctly<br>
+379966 WARNING: unhandled amd64-linux syscall: 313 (finit_module)<br>
+380200 xtree generated callgrind files refer to files without directory name<br>
+380202 Assertion failure for cache line size (cls == 64) on aarch64.<br>
+380397 s390x: __GI_strcspn() replacement needed<br>
+n-i-bz Fix pub_tool_basics.h build issue with g++ 4.4.7.<br>
+<br>
+(3.13.0.RC1: 2 June 2017, vex r3386, valgrind r16434)<br>
+(3.13.0.RC2: 9 June 2017, vex r3389, valgrind r16443)<br>
+(3.13.0: 14 June 2017, vex r3396, valgrind r16446)<br>
+<br>
+<br>
+<br>
Release 3.12.0 (20 October 2016)<br>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
<br>
@@ -142,6 +401,7 @@
303877 valgrind doesn't support compressed debuginfo sections.<br>
345307 Warning about "still reachable" memory when using libstdc++ from gcc 5<br>
348345 Assertion fails for negative lineno<br>
+348924 MIPS: Load doubles through memory so the code compiles with the FPXX ABI<br>
351282 V 3.10.1 MIPS softfloat build broken with GCC 4.9.3 / binutils 2.25.1<br>
351692 Dumps created by valgrind are not readable by gdb (mips32 specific)<br>
351804 Crash on generating suppressions for "printf" call on OS X 10.10<br>
@@ -269,6 +529,8 @@
369468 Remove quadratic metapool algorithm using VG_(HT_remove_at_Iter)<br>
370265 ISA 3.0 HW cap stuff needs updating<br>
371128 BCD add and subtract instructions on Power BE in 32-bit mode do not work<br>
+372195 Power PC, xxsel instruction is not always recognized<br>
+<br>
n-i-bz Fix incorrect (or infinite loop) unwind on RHEL7 x86 and amd64<br>
n-i-bz massif --pages-as-heap=yes does not report peak caused by mmap+munmap<br>
n-i-bz false positive leaks due to aspacemgr merging heap & non heap segments<br>
diff --git a/docs/html/dist.news.old.html b/docs/html/dist.news.old.html
index d5747d5..74501de 100644
--- a/docs/html/dist.news.old.html
+++ b/docs/html/dist.news.old.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>3. OLDER NEWS</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="dist.html" title="Valgrind Distribution Documents">
<link rel="prev" href="dist.news.html" title="2. NEWS">
diff --git a/docs/html/dist.readme-android.html b/docs/html/dist.readme-android.html
index 4fcbfb7..87c1d1d 100644
--- a/docs/html/dist.readme-android.html
+++ b/docs/html/dist.readme-android.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>9. README.android</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="dist.html" title="Valgrind Distribution Documents">
<link rel="prev" href="dist.readme-s390.html" title="8. README.S390">
diff --git a/docs/html/dist.readme-android_emulator.html b/docs/html/dist.readme-android_emulator.html
index 6c788fd..b90366c 100644
--- a/docs/html/dist.readme-android_emulator.html
+++ b/docs/html/dist.readme-android_emulator.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>10. README.android_emulator</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="dist.html" title="Valgrind Distribution Documents">
<link rel="prev" href="dist.readme-android.html" title="9. README.android">
diff --git a/docs/html/dist.readme-developers.html b/docs/html/dist.readme-developers.html
index 29ad4d5..ae18432 100644
--- a/docs/html/dist.readme-developers.html
+++ b/docs/html/dist.readme-developers.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>6. README_DEVELOPERS</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="dist.html" title="Valgrind Distribution Documents">
<link rel="prev" href="dist.readme-missing.html" title="5. README_MISSING_SYSCALL_OR_IOCTL">
@@ -256,6 +256,45 @@
The file tests/outer_inner.supp contains suppressions for <br>
the irrelevant or benign errors found in the inner.<br>
<br>
+An regression test running in the inner (e.g. memcheck/tests/badrw) will<br>
+cause the inner to report an error, which is expected and checked<br>
+as usual when running the regtests in an outer/inner setup.<br>
+However, the outer will often also observe an error, e.g. a jump<br>
+using uninitialised data, or a read/write outside the bounds of a heap<br>
+block. When the outer reports such an error, it will output the<br>
+inner host stacktrace. To this stacktrace, it will append the<br>
+stacktrace of the inner guest program. For example, this is an error<br>
+reported by the outer when the inner runs the badrw regtest:<br>
+ ==8119== Invalid read of size 2<br>
+ ==8119== at 0x7F2EFD7AF: ???<br>
+ ==8119== by 0x7F2C82EAF: ???<br>
+ ==8119== by 0x7F180867F: ???<br>
+ ==8119== by 0x40051D: main (badrw.c:5)<br>
+ ==8119== by 0x7F180867F: ???<br>
+ ==8119== by 0x1BFF: ???<br>
+ ==8119== by 0x3803B7F0: _______VVVVVVVV_appended_inner_guest_stack_VVVVVVVV_______ (m_execontext.c:332)<br>
+ ==8119== by 0x40055C: main (badrw.c:22)<br>
+ ==8119== Address 0x55cd03c is 4 bytes before a block of size 16 alloc'd<br>
+ ==8119== at 0x2804E26D: vgPlain_arena_malloc (m_mallocfree.c:1914)<br>
+ ==8119== by 0x2800BAB4: vgMemCheck_new_block (mc_malloc_wrappers.c:368)<br>
+ ==8119== by 0x2800BC87: vgMemCheck_malloc (mc_malloc_wrappers.c:403)<br>
+ ==8119== by 0x28097EAE: do_client_request (scheduler.c:1861)<br>
+ ==8119== by 0x28097EAE: vgPlain_scheduler (scheduler.c:1425)<br>
+ ==8119== by 0x280A7237: thread_wrapper (syswrap-linux.c:103)<br>
+ ==8119== by 0x280A7237: run_a_thread_NORETURN (syswrap-linux.c:156)<br>
+ ==8119== by 0x3803B7F0: _______VVVVVVVV_appended_inner_guest_stack_VVVVVVVV_______ (m_execontext.c:332)<br>
+ ==8119== by 0x4C294C4: malloc (vg_replace_malloc.c:298)<br>
+ ==8119== by 0x40051D: main (badrw.c:5)<br>
+In the above, the first stacktrace starts with the inner host stacktrace,<br>
+which in this case is some JITted code. Such code sometimes contains IPs<br>
+that points in the inner guest code (0x40051D: main (badrw.c:5)).<br>
+After the separator, we have the inner guest stacktrace.<br>
+The second stacktrace gives the stacktrace where the heap block that was<br>
+overrun was allocated. We see it was allocated by the inner valgrind<br>
+in the client arena (first part of the stacktrace). The second part is<br>
+the guest stacktrace that did the allocation.<br>
+<br>
+<br>
(C) Performance tests in an outer/inner setup:<br>
<br>
To run all the performance tests with an outer cachegrind, do :<br>
diff --git a/docs/html/dist.readme-mips.html b/docs/html/dist.readme-mips.html
index bd7c477..bd47d06 100644
--- a/docs/html/dist.readme-mips.html
+++ b/docs/html/dist.readme-mips.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>11. README.mips</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="dist.html" title="Valgrind Distribution Documents">
<link rel="prev" href="dist.readme-android_emulator.html" title="10. README.android_emulator">
diff --git a/docs/html/dist.readme-missing.html b/docs/html/dist.readme-missing.html
index 7273b51..eae0a04 100644
--- a/docs/html/dist.readme-missing.html
+++ b/docs/html/dist.readme-missing.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>5. README_MISSING_SYSCALL_OR_IOCTL</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="dist.html" title="Valgrind Distribution Documents">
<link rel="prev" href="dist.readme.html" title="4. README">
@@ -163,7 +163,7 @@
LINX_, LINXY, PLAX_, PLAXY.<br>
GEN* for generic syscalls (in syswrap-generic.c), LIN* for linux<br>
specific ones (in syswrap-linux.c) and PLA* for the platform<br>
- dependant ones (in syswrap-$(PLATFORM)-linux.c).<br>
+ dependent ones (in syswrap-$(PLATFORM)-linux.c).<br>
The *XY variant if it requires a PRE() and POST() function, and<br>
the *X_ variant if it only requires a PRE()<br>
function. <br>
diff --git a/docs/html/dist.readme-packagers.html b/docs/html/dist.readme-packagers.html
index 12b6685..a37248d 100644
--- a/docs/html/dist.readme-packagers.html
+++ b/docs/html/dist.readme-packagers.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>7. README_PACKAGERS</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="dist.html" title="Valgrind Distribution Documents">
<link rel="prev" href="dist.readme-developers.html" title="6. README_DEVELOPERS">
diff --git a/docs/html/dist.readme-s390.html b/docs/html/dist.readme-s390.html
index 003d5c8..6970064 100644
--- a/docs/html/dist.readme-s390.html
+++ b/docs/html/dist.readme-s390.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>8. README.S390</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="dist.html" title="Valgrind Distribution Documents">
<link rel="prev" href="dist.readme-packagers.html" title="7. README_PACKAGERS">
diff --git a/docs/html/dist.readme-solaris.html b/docs/html/dist.readme-solaris.html
index fa10fe3..baf392b 100644
--- a/docs/html/dist.readme-solaris.html
+++ b/docs/html/dist.readme-solaris.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>12. README.solaris</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="dist.html" title="Valgrind Distribution Documents">
<link rel="prev" href="dist.readme-mips.html" title="11. README.mips">
@@ -34,12 +34,14 @@
- A working combination of autotools is required: aclocal, autoheader,<br>
automake and autoconf have to be found in the PATH. You should be able to<br>
install pkg:/developer/build/automake and pkg:/developer/build/autoconf<br>
- packages to fullfil this requirement.<br>
+ packages to fulfil this requirement.<br>
- System header files are required. On Solaris, these can be installed with:<br>
# pkg install system/header<br>
- GNU make is also required. On Solaris, this can be quickly achieved with:<br>
$ PATH=/usr/gnu/bin:$PATH; export PATH<br>
- For remote debugging support, working GDB is required (see below).<br>
+- For running regression tests, GNU sed, grep, awk, diff are required.<br>
+ This can be quickly achieved on Solaris by prepending /usr/gnu/bin to PATH.<br>
<br>
<br>
Compilation<br>
@@ -146,7 +148,6 @@
- Provide better error reporting for various subsyscalls.<br>
- Implement storing of extra register state in signal frame.<br>
- Performance comparison against other platforms.<br>
-<br>
- Prevent SIGPIPE when writing to a socket (coregrind/m_libcfile.c).<br>
- Implement ticket locking for fair scheduling (--fair-sched=yes).<br>
- Implement support in DRD and Helgrind tools for thr_join() with thread == 0.<br>
@@ -160,6 +161,8 @@
to see this in effect. Would require awareness of syscall parameter semantics.<br>
- Correctly print arguments of DW_CFA_ORCL_arg_loc in show_CF_instruction() when<br>
it is implemented in libdwarf.<br>
+- Handle a situation when guest program sets SC_CANCEL_FLG in schedctl and<br>
+ Valgrind needs to invoke a syscall on its own.<br>
<br>
<br>
Contacts<br>
diff --git a/docs/html/dist.readme.html b/docs/html/dist.readme.html
index 2904de3..8d93d00 100644
--- a/docs/html/dist.readme.html
+++ b/docs/html/dist.readme.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>4. README</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="dist.html" title="Valgrind Distribution Documents">
<link rel="prev" href="dist.news.old.html" title="3. OLDER NEWS">
diff --git a/docs/html/drd-manual.html b/docs/html/drd-manual.html
index 0de0955..62d214e 100644
--- a/docs/html/drd-manual.html
+++ b/docs/html/drd-manual.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>8. DRD: a thread error detector</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="manual.html" title="Valgrind User Manual">
<link rel="prev" href="hg-manual.html" title="7. Helgrind: a thread error detector">
diff --git a/docs/html/faq.html b/docs/html/faq.html
index b17361e..c993974 100644
--- a/docs/html/faq.html
+++ b/docs/html/faq.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Valgrind Frequently Asked Questions</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="FAQ.html" title="Valgrind FAQ">
<link rel="prev" href="FAQ.html" title="Valgrind FAQ">
@@ -187,7 +187,7 @@
<tr><td colspan="2"> </td></tr>
<tr class="question">
<td align="left" valign="top">
-<a name="faq.glibc_devel"></a><a name="idm140639118203536"></a><b>2.2.</b>
+<a name="faq.glibc_devel"></a><a name="idm140394923880656"></a><b>2.2.</b>
</td>
<td align="left" valign="top">
<b>When building Valgrind, 'make' fails with this:</b><pre class="screen">
diff --git a/docs/html/hg-manual.html b/docs/html/hg-manual.html
index 4156c05..cec55e4 100644
--- a/docs/html/hg-manual.html
+++ b/docs/html/hg-manual.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>7. Helgrind: a thread error detector</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="manual.html" title="Valgrind User Manual">
<link rel="prev" href="cl-manual.html" title="6. Callgrind: a call-graph generating cache and branch prediction profiler">
@@ -81,6 +81,10 @@
primitives, you can describe their behaviour to Helgrind using the
<code class="varname">ANNOTATE_*</code> macros defined
in <code class="varname">helgrind.h</code>.</p>
+<p>Helgrind also provides <a class="xref" href="manual-core.html#manual-core.xtree" title="2.9. Execution Trees">Execution Trees</a> memory
+ profiling using the command line
+ option <code class="computeroutput">--xtree-memory</code> and the monitor command
+ <code class="computeroutput">xtmemory</code>.</p>
<p>Following those is a section containing
<a class="link" href="hg-manual.html#hg-manual.effective-use" title="7.5. Hints and Tips for Effective Use of Helgrind">
hints and tips on how to get the best out of Helgrind.</a>
diff --git a/docs/html/images/kcachegrind_xtree.png b/docs/html/images/kcachegrind_xtree.png
new file mode 100644
index 0000000..6006bbd
--- /dev/null
+++ b/docs/html/images/kcachegrind_xtree.png
Binary files differ
diff --git a/docs/html/index.html b/docs/html/index.html
index 8e27063..7898a1e 100644
--- a/docs/html/index.html
+++ b/docs/html/index.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Valgrind Documentation</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="next" href="QuickStart.html" title="The Valgrind Quick Start Guide">
</head>
@@ -14,12 +14,12 @@
<div>
<div align="center"><h1 class="title">
<a name="set-index"></a>Valgrind Documentation</h1></div>
-<div align="center"><p class="releaseinfo">Release 3.12.0 20 October 2016</p></div>
-<div align="center"><p class="copyright">Copyright © 2000-2016
+<div align="center"><p class="releaseinfo">Release 3.13.0 15 June 2017</p></div>
+<div align="center"><p class="copyright">Copyright © 2000-2017
<a class="link" href="dist.authors.html" title="1. AUTHORS">AUTHORS</a>
</p></div>
<div align="center"><div class="legalnotice">
-<a name="idm140639127546768"></a><p>Permission is granted to copy, distribute and/or modify
+<a name="idm140394938157648"></a><p>Permission is granted to copy, distribute and/or modify
this document under the terms of the GNU Free Documentation
License, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, with no
diff --git a/docs/html/license.gfdl.html b/docs/html/license.gfdl.html
index b4f9e11..fceebee 100644
--- a/docs/html/license.gfdl.html
+++ b/docs/html/license.gfdl.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>2. The GNU Free Documentation License</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="licenses.html" title="GNU Licenses">
<link rel="prev" href="license.gpl.html" title="1. The GNU General Public License">
diff --git a/docs/html/license.gpl.html b/docs/html/license.gpl.html
index e48a6c4..2673ea7 100644
--- a/docs/html/license.gpl.html
+++ b/docs/html/license.gpl.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>1. The GNU General Public License</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="licenses.html" title="GNU Licenses">
<link rel="prev" href="licenses.html" title="GNU Licenses">
diff --git a/docs/html/licenses.html b/docs/html/licenses.html
index 924a130..4016d64 100644
--- a/docs/html/licenses.html
+++ b/docs/html/licenses.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>GNU Licenses</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="index.html" title="Valgrind Documentation">
<link rel="prev" href="dist.readme-solaris.html" title="12. README.solaris">
diff --git a/docs/html/lk-manual.html b/docs/html/lk-manual.html
index 0713143..51a190a 100644
--- a/docs/html/lk-manual.html
+++ b/docs/html/lk-manual.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>13. Lackey: an example tool</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="manual.html" title="Valgrind User Manual">
<link rel="prev" href="bbv-manual.html" title="12. BBV: an experimental basic block vector generation tool">
diff --git a/docs/html/manual-core-adv.html b/docs/html/manual-core-adv.html
index 0e6738c..de6355a 100644
--- a/docs/html/manual-core-adv.html
+++ b/docs/html/manual-core-adv.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>3. Using and understanding the Valgrind core: Advanced Topics</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="manual.html" title="Valgrind User Manual">
<link rel="prev" href="manual-core.html" title="2. Using and understanding the Valgrind core">
@@ -213,7 +213,7 @@
memcheck leak search can be requested from the client program
using VALGRIND_DO_LEAK_CHECK or via the monitor command "leak_search".
Note that the syntax of the command string is only verified at
- run-time. So, if it exists, it is preferrable to use a specific
+ run-time. So, if it exists, it is preferable to use a specific
client request to have better compile time verifications of the
arguments.
</p></dd>
@@ -354,8 +354,8 @@
and indicates it is waiting for a connection from a GDB:</p>
<pre class="programlisting">
==2418== Memcheck, a memory error detector
-==2418== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
-==2418== Using Valgrind-3.7.0.SVN and LibVEX; rerun with -h for copyright info
+==2418== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==2418== Using Valgrind-3.13.0.SVN and LibVEX; rerun with -h for copyright info
==2418== Command: ./prog
==2418==
==2418== (action at startup) vgdb me ...
@@ -940,6 +940,12 @@
connect to or interrupt a process blocked in a system call on Mac
OS X or Android.
</p>
+<p>Unblocking processes blocked in system calls is implemented
+ via agent thread on Solaris. This is quite a different approach
+ than using ptrace on Linux, but leads to equivalent result - Valgrind
+ gdbserver is invoked. Note that agent thread is a Solaris OS
+ feature and cannot be disabled.
+ </p>
</li>
<li class="listitem">
<p>Changing register values.</p>
@@ -1204,6 +1210,10 @@
<code class="option">--vgdb-error=0</code> on the
command line, then set a few breakpoints, set the vgdb-error value
to a huge value and continue execution.</p></li>
+<li class="listitem"><p><code class="varname">xtmemory [<filename> default xtmemory.kcg.%p.%n]</code>
+ requests the tool to produce an xtree heap memory report.
+ See <a class="xref" href="manual-core.html#manual-core.xtree" title="2.9. Execution Trees">Execution Trees</a> for
+ a detailed explanation about execution trees. </p></li>
</ul></div>
<p>The following Valgrind monitor commands are useful for
investigating the behaviour of Valgrind or its gdbserver in case of
@@ -1236,7 +1246,7 @@
by valgrind address space manager will be output. Note that
this list of segments is always output on the Valgrind log.
</p></li>
-<li class="listitem"><p><code class="varname">v.info exectxt</code> shows informations about
+<li class="listitem"><p><code class="varname">v.info exectxt</code> shows information about
the "executable contexts" (i.e. the stack traces) recorded by
Valgrind. For some programs, Valgrind can record a very high
number of such stack traces, causing a high memory usage. This
@@ -1291,9 +1301,9 @@
variable of the memcheck tool on an x86, do the following setup:</p>
<pre class="screen">
(gdb) monitor v.set hostvisibility yes
-(gdb) add-symbol-file /path/to/tool/executable/file/memcheck-x86-linux 0x38000000
+(gdb) add-symbol-file /path/to/tool/executable/file/memcheck-x86-linux 0x58000000
add symbol table from file "/path/to/tool/executable/file/memcheck-x86-linux" at
- .text_addr = 0x38000000
+ .text_addr = 0x58000000
(y or n) y
Reading symbols from /path/to/tool/executable/file/memcheck-x86-linux...done.
(gdb)
diff --git a/docs/html/manual-core.html b/docs/html/manual-core.html
index 480d038..0a98fce 100644
--- a/docs/html/manual-core.html
+++ b/docs/html/manual-core.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>2. Using and understanding the Valgrind core</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="manual.html" title="Valgrind User Manual">
<link rel="prev" href="manual-intro.html" title="1. Introduction">
@@ -41,11 +41,12 @@
<dt><span class="sect1"><a href="manual-core.html#manual-core.pthreads">2.7. Support for Threads</a></span></dt>
<dd><dl><dt><span class="sect2"><a href="manual-core.html#manual-core.pthreads_perf_sched">2.7.1. Scheduling and Multi-Thread Performance</a></span></dt></dl></dd>
<dt><span class="sect1"><a href="manual-core.html#manual-core.signals">2.8. Handling of Signals</a></span></dt>
-<dt><span class="sect1"><a href="manual-core.html#manual-core.install">2.9. Building and Installing Valgrind</a></span></dt>
-<dt><span class="sect1"><a href="manual-core.html#manual-core.problems">2.10. If You Have Problems</a></span></dt>
-<dt><span class="sect1"><a href="manual-core.html#manual-core.limits">2.11. Limitations</a></span></dt>
-<dt><span class="sect1"><a href="manual-core.html#manual-core.example">2.12. An Example Run</a></span></dt>
-<dt><span class="sect1"><a href="manual-core.html#manual-core.warnings">2.13. Warning Messages You Might See</a></span></dt>
+<dt><span class="sect1"><a href="manual-core.html#manual-core.xtree">2.9. Execution Trees</a></span></dt>
+<dt><span class="sect1"><a href="manual-core.html#manual-core.install">2.10. Building and Installing Valgrind</a></span></dt>
+<dt><span class="sect1"><a href="manual-core.html#manual-core.problems">2.11. If You Have Problems</a></span></dt>
+<dt><span class="sect1"><a href="manual-core.html#manual-core.limits">2.12. Limitations</a></span></dt>
+<dt><span class="sect1"><a href="manual-core.html#manual-core.example">2.13. An Example Run</a></span></dt>
+<dt><span class="sect1"><a href="manual-core.html#manual-core.warnings">2.14. Warning Messages You Might See</a></span></dt>
</dl>
</div>
<p>This chapter describes the Valgrind core services, command-line
@@ -760,7 +761,15 @@
calling exec afterwards, and you don't use this specifier
(or the <code class="option">%q</code> specifier below), the Valgrind output from
all those processes will go into one file, possibly jumbled up, and
- possibly incomplete.</p>
+ possibly incomplete. Note: If the program forks and calls exec afterwards,
+ Valgrind output of the child from the period between fork and exec
+ will be lost. Fortunately this gap is really tiny for most programs;
+ and modern programs use <code class="computeroutput">posix_spawn</code>
+ anyway.</p>
+<p><code class="option">%n</code> is replaced with a file sequence number
+ unique for this process.
+ This is useful for processes that produces several files
+ from the same filename template.</p>
<p><code class="option">%q{FOO}</code> is replaced with the contents of the
environment variable <code class="varname">FOO</code>. If the
<code class="option">{FOO}</code> part is malformed, it causes an abort. This
@@ -776,7 +785,7 @@
<p>If an <code class="option">%</code> is followed by any other character, it
causes an abort.</p>
<p>If the file name specifies a relative file name, it is put
- in the program's initial working directory : this is the current
+ in the program's initial working directory: this is the current
directory when the program started its execution after the fork
or after the exec. If it specifies an absolute file name (ie.
starts with '/') then it is put there.
@@ -864,7 +873,7 @@
<code class="option">--xml=yes</code>. Any <code class="option">%p</code> or
<code class="option">%q</code> sequences appearing in the filename are expanded
in exactly the same way as they are for <code class="option">--log-file</code>.
- See the description of <code class="option">--log-file</code> for details.
+ See the description of <a class="xref" href="manual-core.html#opt.log-file">--log-file</a> for details.
</p></dd>
<dt>
<a name="opt.xml-socket"></a><span class="term">
@@ -1443,6 +1452,68 @@
memory needed by Valgrind but also reduces the chances of
detecting over/underruns, so is not recommended.</p>
</dd>
+<dt>
+<a name="opt.xtree-memory"></a><span class="term">
+ <code class="option">--xtree-memory=none|allocs|full [none] </code>
+ </span>
+</dt>
+<dd>
+<p> Tools replacing Valgrind's <code class="function">malloc,
+ realloc,</code> etc, can optionally produce an execution
+ tree detailing which piece of code is responsible for heap
+ memory usage. See <a class="xref" href="manual-core.html#manual-core.xtree" title="2.9. Execution Trees">Execution Trees</a>
+ for a detailed explanation about execution trees. </p>
+<p> When set to <code class="varname">none</code>, no memory execution
+ tree is produced.</p>
+<p> When set to <code class="varname">allocs</code>, the memory
+ execution tree gives the current number of allocated bytes and
+ the current number of allocated blocks. </p>
+<p> When set to <code class="varname">full</code>, the memory execution
+ tree gives 6 different measurements : the current number of
+ allocated bytes and blocks (same values as
+ for <code class="varname">allocs</code>), the total number of allocated
+ bytes and blocks, the total number of freed bytes and
+ blocks.</p>
+<p>Note that the overhead in cpu and memory to produce
+ an xtree depends on the tool. The overhead in cpu is small for
+ the value <code class="varname">allocs</code>, as the information needed
+ to produce this report is maintained in any case by the tool.
+ For massif and helgrind, specifying <code class="varname">full</code>
+ implies to capture a stack trace for each free operation,
+ while normally these tools only capture an allocation stack
+ trace. For memcheck, the cpu overhead for the
+ value <code class="varname">full</code> is small, as this can only be
+ used in combination with
+ <code class="option">--keep-stacktraces=alloc-and-free</code> or
+ <code class="option">--keep-stacktraces=alloc-then-free</code>, which
+ already records a stack trace for each free operation. The
+ memory overhead varies between 5 and 10 words per unique
+ stacktrace in the xtree, plus the memory needed to record the
+ stack trace for the free operations, if needed specifically
+ for the xtree.
+ </p>
+</dd>
+<dt>
+<a name="opt.xtree-memory-file"></a><span class="term">
+ <code class="option">--xtree-memory-file=<filename> [default:
+ xtmemory.kcg.%p] </code>
+ </span>
+</dt>
+<dd>
+<p>Specifies that Valgrind should produce the xtree memory
+ report in the specified file. Any <code class="option">%p</code> or
+ <code class="option">%q</code> sequences appearing in the filename are expanded
+ in exactly the same way as they are for <code class="option">--log-file</code>.
+ See the description of <a class="xref" href="manual-core.html#opt.log-file">--log-file</a>
+ for details. </p>
+<p>If the filename contains the extension <code class="option">.ms</code>,
+ then the produced file format will be a massif output file format.
+ If the filename contains the extension <code class="option">.kcg</code>
+ or no extension is provided or recognised,
+ then the produced file format will be a callgrind output format.</p>
+<p>See <a class="xref" href="manual-core.html#manual-core.xtree" title="2.9. Execution Trees">Execution Trees</a>
+ for a detailed explanation about execution trees formats. </p>
+</dd>
</dl>
</div>
</div>
@@ -1749,7 +1820,7 @@
knowledge of the glibc stack cache implementation and by
examining the debug information of the pthread
library. This technique is thus somewhat fragile and might
- not work for all glibc versions. This has been succesfully
+ not work for all glibc versions. This has been successfully
tested with various glibc versions (e.g. 2.11, 2.16, 2.18)
on various platforms.</p>
</li>
@@ -1759,6 +1830,37 @@
when writing. Without this, programs using libdoor(3LIB)
functionality with completely proprietary semantics may report
large number of false positives.</p></li>
+<li class="listitem"><p><code class="option">fallback-llsc: </code>(MIPS and ARM64 only): Enables
+ an alternative implementation of Load-Linked (LL) and
+ Store-Conditional (SC) instructions. The standard implementation
+ gives more correct behaviour, but can cause indefinite looping on
+ certain processor implementations that are intolerant of extra
+ memory references between LL and SC. So far this is known only to
+ happen on Cavium 3 cores.
+
+ You should not need to use this flag, since the relevant cores are
+ detected at startup and the alternative implementation is
+ automatically enabled if necessary. There is no equivalent
+ anti-flag: you cannot force-disable the alternative
+ implementation, if it is automatically enabled.
+
+ The underlying problem exists because the "standard"
+ implementation of LL and SC is done by copying through LL and SC
+ instructions into the instrumented code. However, tools may
+ insert extra instrumentation memory references in between the LL
+ and SC instructions. These memory references are not present in
+ the original uninstrumented code, and their presence in the
+ instrumented code can cause the SC instructions to persistently
+ fail, leading to indefinite looping in LL-SC blocks.
+
+ The alternative implementation gives correct behaviour of LL and
+ SC instructions between threads in a process, up to and including
+ the ABA scenario. It also gives correct behaviour between a
+ Valgrinded thread and a non-Valgrinded thread running in a
+ different process, that communicate via shared memory, but only up
+ to and including correct CAS behaviour -- in this case the ABA
+ scenario may not be correctly handled.
+ </p></li>
</ul></div>
</dd>
<dt>
@@ -2125,8 +2227,8 @@
<code class="computeroutput">~/.valgrindrc</code>.
</p>
<p>Please note that the <code class="computeroutput">./.valgrindrc</code>
-file is ignored if it is marked as world writeable or not owned
-by the current user. This is because the
+file is ignored if it is not a regular file, or is marked as world writeable,
+or is not owned by the current user. This is because the
<code class="computeroutput">./.valgrindrc</code> can contain options that are
potentially harmful or can be used by a local attacker to execute code under
your user account.
@@ -2278,7 +2380,206 @@
</div>
<div class="sect1">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="manual-core.install"></a>2.9. Building and Installing Valgrind</h2></div></div></div>
+<a name="manual-core.xtree"></a>2.9. Execution Trees</h2></div></div></div>
+<p>An execution tree (xtree) is made of a set of stack traces, each
+ stack trace is associated with some resource consumptions or event
+ counts. Depending on the xtree, different event counts/resource
+ consumptions can be recorded in the xtree. Multiple tools can
+ produce memory use xtree. Memcheck can output the leak search results
+ in an xtree.</p>
+<p> A typical usage for an xtree is to show a graphical or textual
+ representation of the heap usage of a program. The below figure is
+ a heap usage xtree graphical representation produced by
+ kcachegrind. In the kcachegrind output, you can see that main
+ current heap usage (allocated indirectly) is 528 bytes : 388 bytes
+ allocated indirectly via a call to function f1 and 140 bytes
+ indirectly allocated via a call to function f2. f2 has allocated
+ memory by calling g2, while f1 has allocated memory by calling g11
+ and g12. g11, g12 and g1 have directly called a memory allocation
+ function (malloc), and so have a non zero 'Self' value. Note that when
+ kcachegrind shows an xtree, the 'Called' column and call nr indications in
+ the Call Graph are not significant (always set to 0 or 1, independently
+ of the real nr of calls. The kcachegrind versions >= 0.8.0 do not show
+ anymore such irrelevant xtree call number information.</p>
+<div><img src="images/kcachegrind_xtree.png"></div>
+<p>An xtree heap memory report is produced at the end of the
+ execution when required using the
+ option <code class="option">--xtree-memory</code>. It can also be produced on
+ demand using the <code class="option">xtmemory</code> monitor command (see
+ <a class="xref" href="manual-core-adv.html#manual-core-adv.valgrind-monitor-commands" title="3.2.10. Valgrind monitor commands">Valgrind monitor commands</a>). Currently,
+ an xtree heap memory report can be produced by
+ the <code class="option">memcheck</code>, <code class="option">helgrind</code>
+ and <code class="option">massif</code> tools.</p>
+<p>The xtrees produced by the option
+ <a class="xref" href="manual-core.html#opt.xtree-memory">--xtree-memory</a> or the <code class="option">xtmemory</code>
+ monitor command are showing the following events/resource
+ consumption describing heap usage:</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p><code class="option">curB</code> current number of Bytes allocated. The
+ number of allocated bytes is added to the <code class="option">curB</code>
+ value of a stack trace for each allocation. It is decreased when
+ a block allocated by this stack trace is released (by another
+ "freeing" stack trace)</p></li>
+<li class="listitem"><p><code class="option">curBk</code> current number of Blocks allocated,
+ maintained similary to curB : +1 for each allocation, -1 when
+ the block is freed.</p></li>
+<li class="listitem"><p><code class="option">totB</code> total allocated Bytes. This is
+ increased for each allocation with the number of allocated bytes.</p></li>
+<li class="listitem"><p><code class="option">totBk</code> total allocated Blocks, maintained similary
+ to totB : +1 for each allocation.</p></li>
+<li class="listitem"><p><code class="option">totFdB</code> total Freed Bytes, increased each time
+ a block is released by this ("freeing") stack trace : + nr freed bytes
+ for each free operation.</p></li>
+<li class="listitem"><p><code class="option">totFdBk</code> total Freed Blocks, maintained similarly
+ to totFdB : +1 for each free operation.</p></li>
+</ul></div>
+<p>Note that the last 4 counts are produced only when the
+ <code class="option">--xtree-memory=full</code> was given at startup.</p>
+<p>Xtrees can be saved in 2 file formats, the "Callgrind Format" and
+the "Massif Format".</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+<p>Callgrind Format</p>
+<p>An xtree file in the Callgrind Format contains a single callgraph,
+ associating each stack trace with the values recorded
+ in the xtree. </p>
+<p>Different Callgrind Format file visualisers are available:</p>
+<p>Valgrind distribution includes the <code class="option">callgrind_annotate</code>
+ command line utility that reads in the xtree data, and prints a sorted
+ lists of functions, optionally with source annotation. Note that due to
+ xtree specificities, you must give the option
+ <code class="option">--inclusive=yes</code> to callgrind_annotate.</p>
+<p>For graphical visualization of the data, you can use
+ <a class="ulink" href="http://kcachegrind.sourceforge.net/cgi-bin/show.cgi/KcacheGrindIndex" target="_top">KCachegrind</a>, which is a KDE/Qt based
+ GUI that makes it easy to navigate the large amount of data that
+ an xtree can contain.</p>
+</li>
+<li class="listitem">
+<p>Massif Format</p>
+<p>An xtree file in the Massif Format contains one detailed tree
+ callgraph data for each type of event recorded in the xtree. So,
+ for <code class="option">--xtree-memory=alloc</code>, the output file will
+ contain 2 detailed trees (for the counts <code class="option">curB</code>
+ and <code class="option">curBk</code>),
+ while <code class="option">--xtree-memory=full</code> will give a file
+ with 6 detailed trees.</p>
+<p>Different Massif Format file visualisers are available. Valgrind
+ distribution includes the <code class="option">ms_print</code>
+ command line utility that produces an easy to read reprentation of
+ a massif output file. See <a class="xref" href="ms-manual.html#ms-manual.running-massif" title="9.2.2. Running Massif">Running Massif</a> and
+ <a class="xref" href="ms-manual.html#ms-manual.using" title="9.2. Using Massif and ms_print">Using Massif and ms_print</a> for more details
+ about visualising Massif Format output files.</p>
+</li>
+</ul></div>
+<p>Note that for equivalent information, the Callgrind Format is more compact
+ than the Massif Format. However, the Callgrind Format always contains the
+ full data: there is no filtering done during file production, filtering is
+ done by visualisers such as kcachegrind. kcachegrind is particularly easy to
+ use to analyse big xtree data containing multiple events counts or resources
+ consumption. The Massif Format (optionally) only contains a part of the data.
+ For example, the Massif tool might filter some of the data, according to the
+ <code class="option">--threshold</code> option.
+</p>
+<p>To clarify the xtree concept, the below gives several extracts of
+ the output produced by the following commands:
+</p>
+<pre class="screen">
+valgrind --xtree-memory=full --xtree-memory-file=xtmemory.kcg mfg
+callgrind_annotate --auto=yes --inclusive=yes --sort=curB:100,curBk:100,totB:100,totBk:100,totFdB:100,totFdBk:100 xtmemory.kcg
+</pre>
+<p>
+</p>
+<p>The below extract shows that the program mfg has allocated in
+ total 770 bytes in 60 different blocks. Of these 60 blocks, 19 were
+ freed, releasing a total of 242 bytes. The heap currently contains
+ 528 bytes in 41 blocks.</p>
+<pre class="screen">
+--------------------------------------------------------------------------------
+curB curBk totB totBk totFdB totFdBk
+--------------------------------------------------------------------------------
+ 528 41 770 60 242 19 PROGRAM TOTALS
+</pre>
+<p>The below gives more details about which functions have
+ allocated or released memory. As an example, we see that main has
+ (directly or indirectly) allocated 770 bytes of memory and freed
+ (directly or indirectly) 242 bytes of memory. The function f1 has
+ (directly or indirectly) allocated 570 bytes of memory, and has not
+ (directly or indirectly) freed memory. Of the 570 bytes allocated
+ by function f1, 388 bytes (34 blocks) have not been
+ released.</p>
+<pre class="screen">
+--------------------------------------------------------------------------------
+curB curBk totB totBk totFdB totFdBk file:function
+--------------------------------------------------------------------------------
+ 528 41 770 60 242 19 mfg.c:main
+ 388 34 570 50 0 0 mfg.c:f1
+ 220 20 330 30 0 0 mfg.c:g11
+ 168 14 240 20 0 0 mfg.c:g12
+ 140 7 200 10 0 0 mfg.c:g2
+ 140 7 200 10 0 0 mfg.c:f2
+ 0 0 0 0 131 10 mfg.c:freeY
+ 0 0 0 0 111 9 mfg.c:freeX
+</pre>
+<p>The below gives a more detailed information about the callgraph
+ and which source lines/calls have (directly or indirectly) allocated or
+ released memory. The below shows that the 770 bytes allocated by
+ main have been indirectly allocated by calls to f1 and f2.
+ Similarly, we see that the 570 bytes allocated by f1 have been
+ indirectly allocated by calls to g11 and g12. Of the 330 bytes allocated
+ by the 30 calls to g11, 168 bytes have not been freed.
+ The function freeY (called once by main) has released in total
+ 10 blocks and 131 bytes. </p>
+<pre class="screen">
+--------------------------------------------------------------------------------
+-- Auto-annotated source: /home/philippe/valgrind/littleprogs/ + mfg.c
+--------------------------------------------------------------------------------
+curB curBk totB totBk totFdB totFdBk
+....
+ . . . . . . static void freeY(void)
+ . . . . . . {
+ . . . . . . int i;
+ . . . . . . for (i = 0; i < next_ptr; i++)
+ . . . . . . if(i % 5 == 0 && ptrs[i] != NULL)
+ 0 0 0 0 131 10 free(ptrs[i]);
+ . . . . . . }
+ . . . . . . static void f1(void)
+ . . . . . . {
+ . . . . . . int i;
+ . . . . . . for (i = 0; i < 30; i++)
+ 220 20 330 30 0 0 g11();
+ . . . . . . for (i = 0; i < 20; i++)
+ 168 14 240 20 0 0 g12();
+ . . . . . . }
+ . . . . . . int main()
+ . . . . . . {
+ 388 34 570 50 0 0 f1();
+ 140 7 200 10 0 0 f2();
+ 0 0 0 0 111 9 freeX();
+ 0 0 0 0 131 10 freeY();
+ . . . . . . return 0;
+ . . . . . . }
+</pre>
+<p>Heap memory xtrees are helping to understand how your (big)
+ program is using the heap. A full heap memory xtree helps to pin
+ point some code that allocates a lot of small objects : allocating
+ such small objects might be replaced by more efficient technique,
+ such as allocating a big block using malloc, and then diviving this
+ block into smaller blocks in order to decrease the cpu and/or memory
+ overhead of allocating a lot of small blocks. Such full xtree information
+ complements e.g. what callgrind can show: callgrind can show the number
+ of calls to a function (such as malloc) but does not indicate the volume
+ of memory allocated (or freed).</p>
+<p>A full heap memory xtree also can identify the code that allocates
+ and frees a lot of blocks : the total foot print of the program might
+ not reflect the fact that the same memory was over and over allocated
+ then released.</p>
+<p>Finally, Xtree visualisers such as kcachegrind are helping to
+ identify big memory consumers, in order to possibly optimise the
+ amount of memory needed by your program.</p>
+</div>
+<div class="sect1">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="manual-core.install"></a>2.10. Building and Installing Valgrind</h2></div></div></div>
<p>We use the standard Unix
<code class="computeroutput">./configure</code>,
<code class="computeroutput">make</code>, <code class="computeroutput">make
@@ -2332,9 +2633,9 @@
</div>
<div class="sect1">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="manual-core.problems"></a>2.10. If You Have Problems</h2></div></div></div>
+<a name="manual-core.problems"></a>2.11. If You Have Problems</h2></div></div></div>
<p>Contact us at <a class="ulink" href="http://www.valgrind.org/" target="_top">http://www.valgrind.org/</a>.</p>
-<p>See <a class="xref" href="manual-core.html#manual-core.limits" title="2.11. Limitations">Limitations</a> for the known
+<p>See <a class="xref" href="manual-core.html#manual-core.limits" title="2.12. Limitations">Limitations</a> for the known
limitations of Valgrind, and for a list of programs which are
known not to work on it.</p>
<p>All parts of the system make heavy use of assertions and
@@ -2350,7 +2651,7 @@
</div>
<div class="sect1">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="manual-core.limits"></a>2.11. Limitations</h2></div></div></div>
+<a name="manual-core.limits"></a>2.12. Limitations</h2></div></div></div>
<p>The following list of limitations seems long. However, most
programs actually work fine.</p>
<p>Valgrind will run programs on the supported platforms
@@ -2539,7 +2840,7 @@
</div>
<div class="sect1">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="manual-core.example"></a>2.12. An Example Run</h2></div></div></div>
+<a name="manual-core.example"></a>2.13. An Example Run</h2></div></div></div>
<p>This is the log for a run of a small program using Memcheck.
The program is in fact correct, and the reported error is as the
result of a potentially serious code generation bug in GNU g++
@@ -2573,7 +2874,7 @@
</div>
<div class="sect1">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="manual-core.warnings"></a>2.13. Warning Messages You Might See</h2></div></div></div>
+<a name="manual-core.warnings"></a>2.14. Warning Messages You Might See</h2></div></div></div>
<p>Some of these only appear if you run in verbose mode
(enabled by <code class="option">-v</code>):</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
diff --git a/docs/html/manual-intro.html b/docs/html/manual-intro.html
index 965c051..e98c777 100644
--- a/docs/html/manual-intro.html
+++ b/docs/html/manual-intro.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>1. Introduction</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="manual.html" title="Valgrind User Manual">
<link rel="prev" href="manual.html" title="Valgrind User Manual">
diff --git a/docs/html/manual-writing-tools.html b/docs/html/manual-writing-tools.html
index 59fc84d..04c3b36 100644
--- a/docs/html/manual-writing-tools.html
+++ b/docs/html/manual-writing-tools.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>2. Writing a New Valgrind Tool</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="tech-docs.html" title="Valgrind Technical Documentation">
<link rel="prev" href="design-impl.html" title="1. The Design and Implementation of Valgrind">
@@ -159,8 +159,8 @@
The output should be something like this:</p>
<pre class="programlisting">
==738== foobar-0.0.1, a foobarring tool.
- ==738== Copyright (C) 2002-2009, and GNU GPL'd, by J. Programmer.
- ==738== Using Valgrind-3.5.0.SVN and LibVEX; rerun with -h for copyright info
+ ==738== Copyright (C) 2002-2017, and GNU GPL'd, by J. Programmer.
+ ==738== Using Valgrind-3.13.0.SVN and LibVEX; rerun with -h for copyright info
==738== Command: date
==738==
Tue Nov 27 12:40:49 EST 2007
diff --git a/docs/html/manual.html b/docs/html/manual.html
index ed44036..e4d465e 100644
--- a/docs/html/manual.html
+++ b/docs/html/manual.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Valgrind User Manual</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="index.html" title="Valgrind Documentation">
<link rel="prev" href="quick-start.html" title="The Valgrind Quick Start Guide">
@@ -22,10 +22,10 @@
<div>
<div><h1 class="title">
<a name="manual"></a>Valgrind User Manual</h1></div>
-<div><p class="releaseinfo">Release 3.12.0 20 October 2016</p></div>
-<div><p class="copyright">Copyright © 2000-2016 <a class="ulink" href="http://www.valgrind.org/info/developers.html" target="_top">Valgrind Developers</a></p></div>
+<div><p class="releaseinfo">Release 3.13.0 15 June 2017</p></div>
+<div><p class="copyright">Copyright © 2000-2017 <a class="ulink" href="http://www.valgrind.org/info/developers.html" target="_top">Valgrind Developers</a></p></div>
<div><div class="legalnotice">
-<a name="idm140639115873632"></a><p>Email: <a class="ulink" href="mailto:valgrind@valgrind.org" target="_top">valgrind@valgrind.org</a></p>
+<a name="idm140394925654576"></a><p>Email: <a class="ulink" href="mailto:valgrind@valgrind.org" target="_top">valgrind@valgrind.org</a></p>
</div></div>
</div>
<hr>
@@ -58,11 +58,12 @@
<dt><span class="sect1"><a href="manual-core.html#manual-core.pthreads">2.7. Support for Threads</a></span></dt>
<dd><dl><dt><span class="sect2"><a href="manual-core.html#manual-core.pthreads_perf_sched">2.7.1. Scheduling and Multi-Thread Performance</a></span></dt></dl></dd>
<dt><span class="sect1"><a href="manual-core.html#manual-core.signals">2.8. Handling of Signals</a></span></dt>
-<dt><span class="sect1"><a href="manual-core.html#manual-core.install">2.9. Building and Installing Valgrind</a></span></dt>
-<dt><span class="sect1"><a href="manual-core.html#manual-core.problems">2.10. If You Have Problems</a></span></dt>
-<dt><span class="sect1"><a href="manual-core.html#manual-core.limits">2.11. Limitations</a></span></dt>
-<dt><span class="sect1"><a href="manual-core.html#manual-core.example">2.12. An Example Run</a></span></dt>
-<dt><span class="sect1"><a href="manual-core.html#manual-core.warnings">2.13. Warning Messages You Might See</a></span></dt>
+<dt><span class="sect1"><a href="manual-core.html#manual-core.xtree">2.9. Execution Trees</a></span></dt>
+<dt><span class="sect1"><a href="manual-core.html#manual-core.install">2.10. Building and Installing Valgrind</a></span></dt>
+<dt><span class="sect1"><a href="manual-core.html#manual-core.problems">2.11. If You Have Problems</a></span></dt>
+<dt><span class="sect1"><a href="manual-core.html#manual-core.limits">2.12. Limitations</a></span></dt>
+<dt><span class="sect1"><a href="manual-core.html#manual-core.example">2.13. An Example Run</a></span></dt>
+<dt><span class="sect1"><a href="manual-core.html#manual-core.warnings">2.14. Warning Messages You Might See</a></span></dt>
</dl></dd>
<dt><span class="chapter"><a href="manual-core-adv.html">3. Using and understanding the Valgrind core: Advanced Topics</a></span></dt>
<dd><dl>
@@ -270,9 +271,9 @@
<dt><span class="sect1"><a href="dh-manual.html#dh-manual.overview">10.1. Overview</a></span></dt>
<dt><span class="sect1"><a href="dh-manual.html#dh-manual.understanding">10.2. Understanding DHAT's output</a></span></dt>
<dd><dl>
-<dt><span class="sect2"><a href="dh-manual.html#idm140639117126160">10.2.1. Interpreting the max-live, tot-alloc and deaths fields</a></span></dt>
-<dt><span class="sect2"><a href="dh-manual.html#idm140639113841488">10.2.2. Interpreting the acc-ratios fields</a></span></dt>
-<dt><span class="sect2"><a href="dh-manual.html#idm140639116741152">10.2.3. Interpreting "Aggregated access counts by offset" data</a></span></dt>
+<dt><span class="sect2"><a href="dh-manual.html#idm140394924138288">10.2.1. Interpreting the max-live, tot-alloc and deaths fields</a></span></dt>
+<dt><span class="sect2"><a href="dh-manual.html#idm140394926128304">10.2.2. Interpreting the acc-ratios fields</a></span></dt>
+<dt><span class="sect2"><a href="dh-manual.html#idm140394925890256">10.2.3. Interpreting "Aggregated access counts by offset" data</a></span></dt>
</dl></dd>
<dt><span class="sect1"><a href="dh-manual.html#dh-manual.options">10.3. DHAT Command-line Options</a></span></dt>
</dl></dd>
diff --git a/docs/html/mc-manual.html b/docs/html/mc-manual.html
index b47da7d..2ae7d16 100644
--- a/docs/html/mc-manual.html
+++ b/docs/html/mc-manual.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>4. Memcheck: a memory error detector</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="manual.html" title="Valgrind User Manual">
<link rel="prev" href="manual-core-adv.html" title="3. Using and understanding the Valgrind core: Advanced Topics">
@@ -90,7 +90,11 @@
</ul></div>
<p>Problems like these can be difficult to find by other means,
often remaining undetected for long periods, then causing occasional,
-difficult-to-diagnose crashes.</p>
+ difficult-to-diagnose crashes.</p>
+<p>Memcheck also provides <a class="xref" href="manual-core.html#manual-core.xtree" title="2.9. Execution Trees">Execution Trees</a> memory
+ profiling using the command line
+ option <code class="computeroutput">--xtree-memory</code> and the monitor command
+ <code class="computeroutput">xtmemory</code>.</p>
</div>
<div class="sect1">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -726,6 +730,54 @@
</ul></div>
</dd>
<dt>
+<a name="opt.xtree-leak"></a><span class="term">
+ <code class="option">--xtree-leak=<no|yes> [no] </code>
+ </span>
+</dt>
+<dd>
+<p>If set to yes, the results for the leak search done at exit will be
+ output in a 'Callgrind Format' execution tree file. Note that this
+ automatically sets the option <code class="option">--leak-check=full</code>.
+ The produced file
+ will contain the following events:</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p><code class="option">RB</code> : Reachable Bytes</p></li>
+<li class="listitem"><p><code class="option">PB</code> : Possibly lost Bytes</p></li>
+<li class="listitem"><p><code class="option">IB</code> : Indirectly lost Bytes</p></li>
+<li class="listitem"><p><code class="option">DB</code> : Definitely lost Bytes (direct plus indirect)</p></li>
+<li class="listitem"><p><code class="option">DIB</code> : Definitely Indirectly lost Bytes (subset of DB)</p></li>
+<li class="listitem"><p><code class="option">RBk</code> : reachable Blocks</p></li>
+<li class="listitem"><p><code class="option">PBk</code> : Possibly lost Blocks</p></li>
+<li class="listitem"><p><code class="option">IBk</code> : Indirectly lost Blocks</p></li>
+<li class="listitem"><p><code class="option">DBk</code> : Definitely lost Blocks</p></li>
+</ul></div>
+<p>The increase or decrease for all events above will also be output in
+ the file to provide the delta (increase or decreaseà between 2
+ successive leak searches. For example, <code class="option">iRB</code> is the
+ increase of the <code class="option">RB</code> event, <code class="option">dPBk</code> is the
+ decrease of <code class="option">PBk</code> event. The values for the increase and
+ decrease events will be zero for the first leak search done.</p>
+<p>See <a class="xref" href="manual-core.html#manual-core.xtree" title="2.9. Execution Trees">Execution Trees</a> for a detailed explanation
+ about execution trees.</p>
+</dd>
+<dt>
+<a name="opt.xtree-leak-file"></a><span class="term">
+ <code class="option">--xtree-leak-file=<filename> [default:
+ xtleak.kcg.%p] </code>
+ </span>
+</dt>
+<dd>
+<p>Specifies that Valgrind should produce the xtree leak
+ report in the specified file. Any <code class="option">%p</code>,
+ <code class="option">%q</code> or <code class="option">%n</code> sequences appearing in
+ the filename are expanded
+ in exactly the same way as they are for <code class="option">--log-file</code>.
+ See the description of <a class="xref" href="manual-core.html#opt.log-file">--log-file</a>
+ for details. </p>
+<p>See <a class="xref" href="manual-core.html#manual-core.xtree" title="2.9. Execution Trees">Execution Trees</a>
+ for a detailed explanation about execution trees formats. </p>
+</dd>
+<dt>
<a name="opt.undef-value-errors"></a><span class="term">
<code class="option">--undef-value-errors=<yes|no> [default: yes] </code>
</span>
@@ -874,6 +926,11 @@
and/or by using a smaller value for the
option <code class="varname">--num-callers</code>.
</p>
+<p>If you want to use
+ <code class="computeroutput">--xtree-memory=full</code> memory profiling
+ (see <a class="xref" href="manual-core.html#manual-core.xtree" title="2.9. Execution Trees">Execution Trees</a> ), then you cannot
+ specify <code class="varname">--keep-stacktraces=free</code>
+ or <code class="varname">--keep-stacktraces=none</code>.</p>
</dd>
<dt>
<a name="opt.freelist-vol"></a><span class="term">
@@ -1500,7 +1557,7 @@
</pre>
</li>
<li class="listitem">
-<p><code class="varname">leak_check [full*|summary]
+<p><code class="varname">leak_check [full*|summary|xtleak]
[kinds <set>|reachable|possibleleak*|definiteleak]
[heuristics heur1,heur2,...]
[increased*|changed|any]
@@ -1508,7 +1565,7 @@
</code>
performs a leak check. The <code class="varname">*</code> in the arguments
indicates the default values. </p>
-<p> If the <code class="varname">[full*|summary]</code> argument is
+<p> If the <code class="varname">[full*|summary|xtleak]</code> argument is
<code class="varname">summary</code>, only a summary of the leak search is given;
otherwise a full leak report is produced. A full leak report gives
detailed information for each leak: the stack trace where the leaked blocks
@@ -1522,6 +1579,13 @@
of leak records to output. If this maximum is reached, the leak
search outputs the records with the biggest number of bytes.
</p>
+<p>The value <code class="varname">xtleak</code> also produces a full leak report,
+ but output it as an xtree in a file xtleak.kcg.%p.%n (see <a class="xref" href="manual-core.html#opt.log-file">--log-file</a>).
+ See <a class="xref" href="manual-core.html#manual-core.xtree" title="2.9. Execution Trees">Execution Trees</a>
+ for a detailed explanation about execution trees formats.
+ See <a class="xref" href="mc-manual.html#opt.xtree-leak">--xtree-leak</a> for the description of the events
+ in a xtree leak file.
+ </p>
<p>The <code class="varname">kinds</code> argument controls what kind of blocks
are shown for a <code class="varname">full</code> leak search. The set of leak kinds
to show can be specified using a <code class="varname"><set></code> similarly
diff --git a/docs/html/ms-manual.html b/docs/html/ms-manual.html
index fbb0e5a..b6e933e 100644
--- a/docs/html/ms-manual.html
+++ b/docs/html/ms-manual.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>9. Massif: a heap profiler</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="manual.html" title="Valgrind User Manual">
<link rel="prev" href="drd-manual.html" title="8. DRD: a thread error detector">
@@ -75,6 +75,10 @@
program is using, it also gives very detailed information that indicates
which parts of your program are responsible for allocating the heap memory.
</p>
+<p>Massif also provides <a class="xref" href="manual-core.html#manual-core.xtree" title="2.9. Execution Trees">Execution Trees</a> memory
+ profiling using the command line
+ option <code class="computeroutput">--xtree-memory</code> and the monitor command
+ <code class="computeroutput">xtmemory</code>.</p>
</div>
<div class="sect1">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
diff --git a/docs/html/nl-manual.html b/docs/html/nl-manual.html
index 643a272..d6b0f62 100644
--- a/docs/html/nl-manual.html
+++ b/docs/html/nl-manual.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>14. Nulgrind: the minimal Valgrind tool</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="manual.html" title="Valgrind User Manual">
<link rel="prev" href="lk-manual.html" title="13. Lackey: an example tool">
diff --git a/docs/html/quick-start.html b/docs/html/quick-start.html
index 00d7b07..afd3911 100644
--- a/docs/html/quick-start.html
+++ b/docs/html/quick-start.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>The Valgrind Quick Start Guide</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="QuickStart.html" title="The Valgrind Quick Start Guide">
<link rel="prev" href="QuickStart.html" title="The Valgrind Quick Start Guide">
diff --git a/docs/html/sg-manual.html b/docs/html/sg-manual.html
index ec96ab9..ab229dc 100644
--- a/docs/html/sg-manual.html
+++ b/docs/html/sg-manual.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>11. SGCheck: an experimental stack and global array overrun detector</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="manual.html" title="Valgrind User Manual">
<link rel="prev" href="dh-manual.html" title="10. DHAT: a dynamic heap analysis tool">
diff --git a/docs/html/tech-docs.html b/docs/html/tech-docs.html
index f2fc1e0..bf29eba 100644
--- a/docs/html/tech-docs.html
+++ b/docs/html/tech-docs.html
@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Valgrind Technical Documentation</title>
<link rel="stylesheet" type="text/css" href="vg_basic.css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Valgrind Documentation">
<link rel="up" href="index.html" title="Valgrind Documentation">
<link rel="prev" href="faq.html" title="Valgrind Frequently Asked Questions">
@@ -22,10 +22,10 @@
<div>
<div><h1 class="title">
<a name="tech-docs"></a>Valgrind Technical Documentation</h1></div>
-<div><p class="releaseinfo">Release 3.12.0 20 October 2016</p></div>
-<div><p class="copyright">Copyright © 2000-2016 <a class="ulink" href="http://www.valgrind.org/info/developers.html" target="_top">Valgrind Developers</a></p></div>
+<div><p class="releaseinfo">Release 3.13.0 15 June 2017</p></div>
+<div><p class="copyright">Copyright © 2000-2017 <a class="ulink" href="http://www.valgrind.org/info/developers.html" target="_top">Valgrind Developers</a></p></div>
<div><div class="legalnotice">
-<a name="idm140639109670320"></a><p>Email: <a class="ulink" href="mailto:valgrind@valgrind.org" target="_top">valgrind@valgrind.org</a></p>
+<a name="idm140394919379488"></a><p>Email: <a class="ulink" href="mailto:valgrind@valgrind.org" target="_top">valgrind@valgrind.org</a></p>
</div></div>
</div>
<hr>