any_supp = True;
}
- if (VG_(clo_xml))
+ if (VG_(clo_xml)) {
VG_(printf_xml)("</suppcounts>\n");
+ VG_(printf_xml)("\n");
+ }
return any_supp;
}
if (verbosity == 0 && show_error_list == 0)
return;
- /* If we're printing XML, just show the suppressions and stop. */
+ /* If we're printing XML, show the suppressions, the summary and stop. */
if (xml) {
if (show_error_list > 0)
(void)show_used_suppressions();
+ VG_(printf_xml)("<error_summary>\n"
+ " <errors>%u</errors>\n"
+ " <error_contexts>%u</error_contexts>\n"
+ " <suppressed>%u</suppressed>\n"
+ " <suppressed_contexts>%u</suppressed_contexts>\n"
+ "</error_summary>\n",
+ n_errs_found, n_err_contexts,
+ n_errs_suppressed, n_supp_contexts );
+ VG_(printf_xml)("\n");
return;
}
True, // stack_usage
False, // exited_threads
startRegsIN);
+
+ if (VG_(clo_xml)) // After flushing outputs
+ VG_(printf_xml)("</valgrindoutput>\n");
+
VG_(printf)(
"\n"
"Note: see also the FAQ in the source distribution.\n"
bugs_to = VG_(details).bug_reports_to;
}
- if (VG_(clo_xml))
- VG_(printf_xml)("</valgrindoutput>\n");
-
// Treat vg_assert2(0, "foo") specially, as a panicky abort
if (VG_STREQ(expr, "0")) {
VG_(printf)("\n%s: %s:%d (%s): the 'impossible' happened.\n",
static void panic ( const HChar* name, const HChar* report, const HChar* str,
const UnwindStartRegs* startRegs )
{
- if (VG_(clo_xml))
- VG_(printf_xml)("</valgrindoutput>\n");
VG_(printf)("\n%s: the 'impossible' happened:\n %s\n", name, str);
report_and_quit(report, startRegs);
}
VG_(printf_xml)("\n");
VG_(printf_xml)("<valgrindoutput>\n");
VG_(printf_xml)("\n");
- /* track-fds introduced some new elements. */
- if (VG_(clo_track_fds))
- VG_(printf_xml)("<protocolversion>5</protocolversion>\n");
- else
- VG_(printf_xml)("<protocolversion>4</protocolversion>\n");
+ VG_(printf_xml)("<protocolversion>6</protocolversion>\n");
VG_(printf_xml)("<protocoltool>%s</protocoltool>\n", VG_(clo_toolname));
VG_(printf_xml)("\n");
}
// affects what order the messages come.
//--------------------------------------------------------------
// First thing in the post-amble is a blank line.
- if (VG_(clo_xml))
- VG_(printf_xml)("\n");
- else if (VG_(clo_verbosity) > 0)
+ if (VG_(clo_verbosity) > 0 && !VG_(clo_xml))
VG_(message)(Vg_UserMsg, "\n");
if (VG_(clo_xml)) {
}
if (VG_(clo_xml)) {
- VG_(printf_xml)("\n");
VG_(printf_xml)("</valgrindoutput>\n");
- VG_(printf_xml)("\n");
}
VG_(sanity_check_general)( True /*include expensive checks*/ );
VG_(get_and_pp_StackTrace)( tid, VG_(clo_backtrace_size) );
if (VG_(clo_xml))
- VG_(printf_xml)( "</clientmsg>\n" );
+ VG_(printf_xml)( "</clientmsg>\n\n" );
return count;
}
--- /dev/null
+====================================================================
+
+11 May 2025
+
+Protocol 6 is now always used (unlike protocol 5 which was only
+used with--track-fds). The main difference is that the xml output
+now contains error summaries.
+
+====================================================================
+
+
+Global error summary
+--------------------
+
+Previously, the non-xml output contained a summary of errors and
+suppressions used, like this:
+
+==3166== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 3 from 3)
+
+This was not included in the xml output. Starting with protocol 6 it will
+be included. The above example would produce
+
+<error_summary>
+ <errors>1</errors>
+ <error_contexts>1</error_contexts>
+ <suppressed>3</suppressed>
+ <suppressed_contexts>3</suppressed_contexts>
+</error_summary>
+
+Memcheck heap and leak summaries
+--------------------------------
+
+Memcheck produces two summaries that were not generated for XML.
+These are the heap summary, such as
+
+==80874== HEAP SUMMARY:
+==80874== in use at exit: 720 bytes in 5 blocks
+==80874== total heap usage: 5 allocs, 0 frees, 720 bytes allocated
+
+This now generates with --xml=yes
+
+<heap_summary>
+ <memory_in_use_at_exit>
+ <bytes>720</bytes>
+ <blocks>5</blocks>
+ </memory_in_use_at_exit>
+ <total_heap_usage>
+ <allocs>5</allocs>
+ <frees>0</frees>
+ <bytes_allocated>720</bytes_allocated>
+ </total_heap_usage>
+</heap_summary>
+
+<all_heap_blocks_freed>false</all_heap_blocks_freed>
+
+The final summary is the leak summary. An example of the non-xml output
+is as follows:
+
+==24152== LEAK SUMMARY:
+==24152== definitely lost: 48 bytes in 3 blocks
+==24152== indirectly lost: 32 bytes in 2 blocks
+==24152== possibly lost: 96 bytes in 6 blocks
+==24152== still reachable: 64 bytes in 4 blocks
+==24152== suppressed: 0 bytes in 0 blocks
+
+The example above now produces with xml output
+
+<leak_summary>
+ <definitely_lost>
+ <bytes>48</bytes>
+ <in_blocks>3</in_blocks>
+ </definitely_lost>
+ <indirectly_lost>
+ <bytes>32</bytes>
+ <in_blocks>2</in_blocks>
+ </indirectly_lost>
+ <possibly_lost>
+ <bytes>96</bytes>
+ <in_blocks>6</in_blocks>
+ </possibly_lost>
+ <still_reachable>
+ <bytes>64</bytes>
+ <in_blocks>4</in_blocks>
+ </still_reachable>
+ <suppressed>
+ <bytes>0</bytes>
+ <in_blocks>0</in_blocks>
+ </suppressed>
+</leak_summary>
+
+
+COMMON ELEMENTS
+---------------
+BYTES and BLOCKS elements are common to the HEAP and LEAK summaries.
+
+The BYTES element is
+
+* <bytes>INT</bytes>
+
+This field indicates the number of bytes of memory that are not deallocated
+at exit or user leak check.
+
+The BLOCKS element is
+
+* <blocks>INT</blocks>
+
+The block fields contains the number of blocks that have not been deallocated
+at exit or user leak check.
+
+
+HEAP SUMMARY
+------------
+
+The heap summary is contained in a heap_summary element. It contains the
+following sub-elements:
+
+* <memory_in_use_at_exit>BYTES AND BLOCKS ELEMENTS</memory_in_use_at_exit>
+
+The second sub-element of heap_summary indicates the total heap usage.
+
+* <total_heap_usage>ALLOCS FREES AND BYTES ELEMENTS</total_heap_usage>
+
+The ALLOCS element is
+
+* <allocs>INT</allocs>
+
+This indicates the total number of allocations during the program run.
+
+The FREES element is
+
+* <frees>INT</frees>
+
+This indicates the total number of deallocation during the program run.
+
+The BYTES element is
+
+* <bytes_allocated>INT</bytes_allocated>
+
+This indicates the total number of bytes allocated during the program run.
+
+
+ERROR SUMMARY
+-------------
+
+The error summary is contained in an error_summary element. It contains the
+following sub-elements:
+
+* <errors>INT</errors>
+
+This field indicates the number of unsuppressed errors that were encountered.
+
+* <error_contexts>INT</error_contexts>
+
+This field indicated the number of unique unsuppressed error contexts.
+
+* <suppressed>INT</suppressed>
+
+This is the number of errors that were suppressed.
+
+* <suppressed_contexts>INT</suppressed_contexts>
+
+This is the number of unique error contexts used by the suppressions.
+
+LEAK SUMMARY
+------------
+
+The leak summary is contained in a leak_summary element.
+
+The leak summary sub-elements are:
+
+* <definitely_lost>BYTES AND BLOCKS ELEMENTS</definitely_lost>
+
+Memory that was definitely lost.
+
+* <indirectly_lost>BYTES AND BLOCKS ELEMENTS</indirectly_lost>
+
+Memory that was indirectly lost.
+
+* <possibly_lost>BYTES AND BLOCKS ELEMENTS</possibly_lost>
+
+Memory that was lost but memcheck cannot determine if it is
+definitely lost or still reachable.
+
+* <still_reachable> BYTES BLOCKS AND (optional) REACHABLE_HEURISTIC ELEMENTS</still_reachable>
+
+Memory that was still reachable at exit or the user leak check.
+
+If the --leak-check-heuristics= option was used then the still_reachable element
+may contain further details on the memory and kind of heuristic that the block(s).
+correspond to.
+
+The REACHABLE_HEURISTIC format is
+ <reachable_heuristic>
+ <kind>KIND</kind>
+ <bytes>INT</bytes>
+ <blocks>INT</blocks>
+ </reachable_heuristic>
+
+KIND is one of:
+ none, stdstring, length64, newarray, multipleinheritance
+
+* <suppressed>BYTES AND BLOCK ELEMENTS</suppressed>
+
+Information concerning the amount leaked that was suppressed.
+
+
+Addendum
+--------
+
+Unfortunately the xml-output-protocol documents were not updated
+to reflect some of the memcheck error conditions that were added.
+This omission is being rectified here.
+
+* memcheck error element kind
+
+ Added on 2023-03-10
+
+ ReallocSizeZero
+
+ realloc() called with a size of zero.
+
+ Added on 2023-09-02
+
+ InvalidSizeAndAlignment
+
+ an aligned allocation was requested with an invalid size such
+ as a non-multiple of the alignment
+
+ InvalidAlignment
+
+ an alignment was used that is not allowed such as a non-power
+ of two
+
+ InvalidSize
+
+ a size of zero was used with an aligned allocation
+
+ MismatchedAllocateDeallocateSize
+
+ the size used for a sized deallocation does not match the
+ size of the allocated block
+
+ MismatchedAllocateDeallocateAlignment
+
+ the alignment used for a deallocation does not match the
+ alignment requested when the block was allocated
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
</error>
Done.
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
</stack>
</trace>
Done.
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
</stack>
</trace>
Done.
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
</stack>
</trace>
Done.
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
</stack>
</trace>
Done.
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
</stack>
</trace>
Done.
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
</first_observed_at>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
</first_observed_at>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
<trace><text>drd_post_thread_join joiner = 1, joinee = 2, new vc: [ ... ]</text></trace>
<trace><text>drd_thread_finished tid = 1</text></trace>
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>drd</protocoltool>
<preamble>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
"0x([0-9a-zA-Z]+)" => "........",
"Using Valgrind-([^\\s]*)" => "X.Y.X",
"Copyright \\(C\\) ([0-9]{4}-[0-9]{4}).*" => "XXXX-YYYY",
- '<fn>pthread_.*(@\*)</fn>' => ""
+ '<fn>pthread_.*(@\*)</fn>' => "",
+ "<suppressed_contexts>(.*)</suppressed_contexts>" => "..."
);
# List of XML sections to be ignored.
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>helgrind</protocoltool>
<preamble>
<xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>9</line> </xauxwhat>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>
+ <errors>4</errors>
+ <error_contexts>4</error_contexts>
+ <suppressed>7</suppressed>
+ <suppressed_contexts>...</suppressed_contexts>
+</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>helgrind</protocoltool>
<preamble>
<xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>9</line> </xauxwhat>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>
+ <errors>4</errors>
+ <error_contexts>4</error_contexts>
+ <suppressed>7</suppressed>
+ <suppressed_contexts>...</suppressed_contexts>
+</error_summary>
+</valgrindoutput>
VG_(XT_delete)(leak_xt);
}
- if (VG_(clo_verbosity) > 0 && !VG_(clo_xml)) {
+ UInt (*umsg_or_xml)( const HChar *, ... )
+ = VG_(clo_xml) ? VG_(printf_xml) : VG_(umsg);
+ if (VG_(clo_verbosity) > 0) {
HChar d_bytes[31];
HChar d_blocks[31];
# define DBY(new,old) \
MC_(snprintf_delta) (d_blocks, sizeof(d_blocks), (new), (old), \
lcp->deltamode)
- VG_(umsg)("LEAK SUMMARY:\n");
- VG_(umsg)(" definitely lost: %'lu%s bytes in %'lu%s blocks\n",
+ umsg_or_xml(VG_(clo_xml) ? "<leak_summary>\n" : "LEAK SUMMARY:\n");
+ umsg_or_xml(VG_(clo_xml) ?
+ " <definitely_lost>\n"
+ " <bytes>%'lu%s</bytes>\n"
+ " <blocks>%'lu%s</blocks>\n"
+ " </definitely_lost>\n" :
+ " definitely lost: %'lu%s bytes in %'lu%s blocks\n",
MC_(bytes_leaked),
DBY (MC_(bytes_leaked), old_bytes_leaked),
MC_(blocks_leaked),
DBL (MC_(blocks_leaked), old_blocks_leaked));
- VG_(umsg)(" indirectly lost: %'lu%s bytes in %'lu%s blocks\n",
+ umsg_or_xml(VG_(clo_xml) ?
+ " <indirectly_lost>\n"
+ " <bytes>%'lu%s</bytes>\n"
+ " <blocks>%'lu%s</blocks>\n"
+ " </indirectly_lost>\n" :
+ " indirectly lost: %'lu%s bytes in %'lu%s blocks\n",
MC_(bytes_indirect),
DBY (MC_(bytes_indirect), old_bytes_indirect),
MC_(blocks_indirect),
DBL (MC_(blocks_indirect), old_blocks_indirect));
- VG_(umsg)(" possibly lost: %'lu%s bytes in %'lu%s blocks\n",
+ umsg_or_xml(VG_(clo_xml) ?
+ " <possibly_lost>\n"
+ " <bytes>%'lu%s</bytes>\n"
+ " <blocks>%'lu%s</blocks>\n"
+ " </possibly_lost>\n" :
+ " possibly lost: %'lu%s bytes in %'lu%s blocks\n",
MC_(bytes_dubious),
DBY (MC_(bytes_dubious), old_bytes_dubious),
MC_(blocks_dubious),
DBL (MC_(blocks_dubious), old_blocks_dubious));
- VG_(umsg)(" still reachable: %'lu%s bytes in %'lu%s blocks\n",
+ umsg_or_xml(VG_(clo_xml) ?
+ " <still_reachable>\n"
+ " <bytes>%'lu%s</bytes>\n"
+ " <blocks>%'lu%s</blocks>\n" :
+ " still reachable: %'lu%s bytes in %'lu%s blocks\n",
MC_(bytes_reachable),
DBY (MC_(bytes_reachable), old_bytes_reachable),
MC_(blocks_reachable),
for (i = 0; i < N_LEAK_CHECK_HEURISTICS; i++)
if (old_blocks_heuristically_reachable[i] > 0
|| MC_(blocks_heuristically_reachable)[i] > 0) {
- VG_(umsg)(" of which "
+ umsg_or_xml(VG_(clo_xml) ? "" : " of which "
"reachable via heuristic:\n");
break;
}
for (i = 0; i < N_LEAK_CHECK_HEURISTICS; i++)
if (old_blocks_heuristically_reachable[i] > 0
|| MC_(blocks_heuristically_reachable)[i] > 0)
- VG_(umsg)(" %-19s: "
- "%'lu%s bytes in %'lu%s blocks\n",
+ umsg_or_xml(VG_(clo_xml) ?
+ " <reachable_heuristic>\n"
+ " <kind>%ls</kind>\n"
+ " <bytes>%'lu%s</bytes>\n"
+ " <blocks>%'lu%s</blocks>\n"
+ " </reachable_heuristic>\n" :
+ " %-19s: "
+ "%'lu%s bytes in %'lu%s blocks\n",
pp_heuristic(i),
MC_(bytes_heuristically_reachable)[i],
DBY (MC_(bytes_heuristically_reachable)[i],
MC_(blocks_heuristically_reachable)[i],
DBL (MC_(blocks_heuristically_reachable)[i],
old_blocks_heuristically_reachable[i]));
- VG_(umsg)(" suppressed: %'lu%s bytes in %'lu%s blocks\n",
- MC_(bytes_suppressed),
- DBY (MC_(bytes_suppressed), old_bytes_suppressed),
+ if (VG_(clo_xml) && MC_(bytes_reachable)) {
+ umsg_or_xml(" </still_reachable>\n");
+ }
+ umsg_or_xml(VG_(clo_xml) ?
+ " <suppressed>\n"
+ " <bytes>%'lu%s</bytes>\n"
+ " <blocks>%'lu%s</blocks>\n"
+ " </suppressed>\n" :
+ " suppressed: %'lu%s bytes in %'lu%s blocks\n",
+ MC_(bytes_suppressed),
+ DBY (MC_(bytes_suppressed), old_bytes_suppressed),
MC_(blocks_suppressed),
DBL (MC_(blocks_suppressed), old_blocks_suppressed));
if (lcp->mode != LC_Full &&
(MC_(blocks_leaked) + MC_(blocks_indirect) +
MC_(blocks_dubious) + MC_(blocks_reachable)) > 0) {
if (lcp->requested_by_monitor_command)
- VG_(umsg)("To see details of leaked memory, "
- "give 'full' arg to leak_check\n");
+ umsg_or_xml(VG_(clo_xml) ? "" : "To see details of leaked memory, "
+ "give 'full' arg to leak_check\n");
else
- VG_(umsg)("Rerun with --leak-check=full to see details "
- "of leaked memory\n");
+ umsg_or_xml(VG_(clo_xml) ? "" : "Rerun with --leak-check=full to "
+ "see details of leaked memory\n");
}
if (lcp->mode == LC_Full &&
MC_(blocks_reachable) > 0 && !RiS(Reachable,lcp->show_leak_kinds)) {
- VG_(umsg)("Reachable blocks (those to which a pointer "
- "was found) are not shown.\n");
+ umsg_or_xml(VG_(clo_xml) ? "" : "Reachable blocks (those to which a "
+ "pointer was found) are not shown.\n");
if (lcp->requested_by_monitor_command)
- VG_(umsg)("To see them, add 'reachable any' args to leak_check\n");
+ umsg_or_xml(VG_(clo_xml) ? "" : "To see them, add 'reachable any' "
+ "args to leak_check\n");
else
- VG_(umsg)("To see them, rerun with: --leak-check=full "
- "--show-leak-kinds=all\n");
+ umsg_or_xml(VG_(clo_xml) ? "" : "To see them, rerun with: "
+ "--leak-check=full --show-leak-kinds=all\n");
}
- VG_(umsg)("\n");
+ umsg_or_xml(VG_(clo_xml) ? "</leak_summary>\n\n" : "\n");
#undef DBL
#undef DBY
}
VG_(OSetGen_Destroy) (lr_table);
lr_table = NULL;
}
- if (VG_(clo_verbosity) >= 1 && !VG_(clo_xml)) {
- VG_(umsg)("All heap blocks were freed -- no leaks are possible\n");
- VG_(umsg)("\n");
+ if (VG_(clo_verbosity) >= 1) {
+ if (!VG_(clo_xml)) {
+ VG_(umsg)("All heap blocks were freed -- no leaks are possible\n");
+ VG_(umsg)("\n");
+ } else
+ VG_(printf_xml)("<all_heap_blocks_freed>true</all_heap_blocks_freed>\n\n");
}
return;
+ } else {
+ if (VG_(clo_verbosity) >= 1 && VG_(clo_xml))
+ VG_(printf_xml)("<all_heap_blocks_freed>false</all_heap_blocks_freed>\n\n");
}
// Sanity check -- make sure they don't overlap. One exception is that
/*--------------------------------------------------------------------*/
/*--- end ---*/
/*--------------------------------------------------------------------*/
-
if (VG_(clo_verbosity) == 0)
return;
- if (VG_(clo_xml))
- return;
/* Count memory still in use. */
VG_(HT_ResetIter)(MC_(malloc_list));
nbytes += (ULong)mc->szB;
}
+ if (VG_(clo_xml)) {
+ VG_(printf_xml)(
+ "<heap_summary>\n"
+ " <memory_in_use_at_exit>\n"
+ " <bytes>%'llu</bytes>\n"
+ " <blocks>%'lu</blocks>\n"
+ " </memory_in_use_at_exit>\n"
+ " <total_heap_usage>\n"
+ " <allocs>%'lu</allocs>\n"
+ " <frees>%'lu</frees>\n"
+ " <bytes_allocated>%'llu</bytes_allocated>\n"
+ " </total_heap_usage>\n"
+ "</heap_summary>\n"
+ "\n",
+ nbytes, nblocks,
+ cmalloc_n_mallocs,
+ cmalloc_n_frees, cmalloc_bs_mallocd
+ );
+ return;
+ }
+
VG_(umsg)(
"HEAP SUMMARY:\n"
" in use at exit: %'llu bytes in %'lu blocks\n"
leak-segv-jmp.vgtest leak-segv-jmp.stderr.exp \
lks.vgtest lks.stdout.exp lks.supp lks.stderr.exp \
long_namespace_xml.vgtest long_namespace_xml.stdout.exp \
- long_namespace_xml.stderr.exp \
+ long_namespace_xml.stderr.exp long_namespace_xml.stderr.exp-freebsd \
long-supps.vgtest long-supps.stderr.exp long-supps.supp \
mallinfo.stderr.exp mallinfo.vgtest \
malloc_free_fill.vgtest \
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
<errorcounts>
</errorcounts>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
sed "s/4294967295/18446744073709551615/" |
sed "s/malloc_zone_memalign/posix_memalign/" |
perl -p -e "s/(m_replacemalloc\/)?vg_replace_malloc.c/vg_replace_malloc.c/" |
+perl -0 -p -e "s/<heap_summary>.*<\/heap_summary>/<heap_summary>...<\/heap_summary>/s" |
+perl -0 -p -e "s/<error_summary>.*<\/error_summary>/<error_summary>...<\/error_summary>/s" |
+perl -0 -p -e "s/<leak_summary>.*<\/leak_summary>/<leak_summary>...<\/leak_summary>/s" |
perl -0 -p -e "s/<suppcounts>.*<\/suppcounts>/<suppcounts>...<\/suppcounts>/s" |
perl -p -e "s/<time>.*<\/time>/<time>...<\/time>/s" |
perl -0 -p -e "s/<vargv>.*<\/vargv>/<vargv>...<\/vargv>/s" |
+perl -0 -p -e "s/<suppressed>.*<\/suppressed>/<suppressed>...<\/suppressed>/s" |
+perl -0 -p -e "s/<suppressed_contexts>.*<\/suppressed_contexts>/<suppressed_from>...<\/suppressed_from>/s" |
# Remove stack traces for Syscall param errors (see filter_stderr for more).
# Chops everything within <stack>...</stack>.
-perl -p -0 -e 's/(<what>Syscall param[^\n]*\n)([^\n]*(stack|frame|ip|obj|fn|dir|file|line)[^\n]*\n)+/$1/gs'
+perl -p -0 -e 's/(<what>Syscall param[^\n]*\n)([^\n]*(stack|frame|ip|obj|fn|dir|file|line)[^\n]*\n)+/$1/gs' |
+
+sed "/<all_heap_blocks_freed>/,+1d"
# Collected wisdom re Perl magic incantation:
#
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
<errorcounts>
<pair>
<count>...</count>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
<errorcounts>
<pair>
<count>...</count>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
</stack>
</fatal_signal>
-
<status>
<state>FINISHED</state>
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
<errorcounts>
</errorcounts>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
</stack>
</fatal_signal>
-
<status>
<state>FINISHED</state>
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
+<leak_summary>...</leak_summary>
+
<errorcounts>
</errorcounts>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
</stack>
</fatal_signal>
-
<status>
<state>FINISHED</state>
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
<errorcounts>
</errorcounts>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
<errorcounts>
<pair>
<count>...</count>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
--- /dev/null
+<?xml version="1.0"?>
+
+<valgrindoutput>
+
+<protocolversion>6</protocolversion>
+<protocoltool>memcheck</protocoltool>
+
+<preamble>
+ <line>...</line>
+ <line>...</line>
+ <line>...</line>
+ <line>...</line>
+</preamble>
+
+<pid>...</pid>
+<ppid>...</ppid>
+<tool>memcheck</tool>
+
+<args>
+ <vargv>...</vargv>
+ <argv>
+ <exe>./long_namespace_xml</exe>
+ </argv>
+</args>
+
+<status>
+ <state>RUNNING</state>
+ <time>...</time>
+</status>
+
+<error>
+ <unique>0x........</unique>
+ <tid>...</tid>
+ <kind>InvalidWrite</kind>
+ <what>Invalid write of size 1</what>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>_ZN5304abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz5304ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ1fEv</fn>
+ <dir>...</dir>
+ <file>long_namespace_xml.cpp</file>
+ <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>main</fn>
+ <dir>...</dir>
+ <file>long_namespace_xml.cpp</file>
+ <line>...</line>
+ </frame>
+ </stack>
+ <auxwhat>Address 0x........ is 1 bytes after a block of size 4 alloc'd</auxwhat>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>malloc</fn>
+ <dir>...</dir>
+ <file>vg_replace_malloc.c</file>
+ <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>_ZN5304abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz5304ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ1fEv</fn>
+ <dir>...</dir>
+ <file>long_namespace_xml.cpp</file>
+ <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>main</fn>
+ <dir>...</dir>
+ <file>long_namespace_xml.cpp</file>
+ <line>...</line>
+ </frame>
+ </stack>
+</error>
+
+<status>
+ <state>FINISHED</state>
+ <time>...</time>
+</status>
+
+<heap_summary>...</heap_summary>
+
+<leak_summary>...</leak_summary>
+
+<errorcounts>
+ <pair>
+ <count>...</count>
+ <unique>0x........</unique>
+ </pair>
+</errorcounts>
+
+<suppcounts>...</suppcounts>
+
+<error_summary>...</error_summary>
+
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
<errorcounts>
<pair>
<count>...</count>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
<errorcounts>
<pair>
<count>...</count>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
<errorcounts>
<pair>
<count>...</count>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
</pair>
</errorcounts>
-
</valgrindoutput>
-
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
<errorcounts>
<pair>
<count>...</count>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
<text>new/new[] aligned failed and should throw an exception, but Valgrind
</text>
</clientmsg>
+
<clientmsg>
<tid>...</tid>
<text> cannot throw exceptions and so is aborting instead. Sorry.
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
<errorcounts>
<pair>
<count>...</count>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
<text>new/new[] aligned failed and should throw an exception, but Valgrind
</text>
</clientmsg>
+
<clientmsg>
<tid>...</tid>
<text> cannot throw exceptions and so is aborting instead. Sorry.
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
<errorcounts>
<pair>
<count>...</count>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
<text>I am in child_fn_1
</text>
</clientmsg>
+
<error>
<unique>0x........</unique>
<tid>...</tid>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
+<leak_summary>...</leak_summary>
+
<errorcounts>
<pair>
<count>...</count>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
<what>Syscall param exit(status) contains uninitialised byte(s)</what>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
<error>
<unique>0x........</unique>
<tid>...</tid>
</stack>
</error>
+<leak_summary>...</leak_summary>
+
<errorcounts>
<pair>
<count>...</count>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>4</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>memcheck</protocoltool>
<preamble>
<what>Syscall param exit(status) contains uninitialised byte(s)</what>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
</status>
+<heap_summary>...</heap_summary>
+
<error>
<unique>0x........</unique>
<tid>...</tid>
</stack>
</error>
+<leak_summary>...</leak_summary>
+
<errorcounts>
<pair>
<count>...</count>
<suppcounts>...</suppcounts>
-</valgrindoutput>
+<error_summary>...</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
</pair>
</errorcounts>
-
</valgrindoutput>
-
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
<time>...</time>
</status>
-
<status>
<state>FINISHED</state>
<time>...</time>
<what>...</what>
</error>
-
</valgrindoutput>
-
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
<time>...</time>
</status>
-
<status>
<state>FINISHED</state>
<time>...</time>
<what>...</what>
</error>
-
</valgrindoutput>
-
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
<time>...</time>
</status>
-
<status>
<state>FINISHED</state>
<time>...</time>
<what>...</what>
</error>
-
</valgrindoutput>
-
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
<time>...</time>
</status>
-
<status>
<state>FINISHED</state>
<time>...</time>
<what>...</what>
</error>
-
</valgrindoutput>
-
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
<time>...</time>
</status>
-
<status>
<state>FINISHED</state>
<time>...</time>
<what>...</what>
</error>
-
</valgrindoutput>
-
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>
</suppcounts>
-</valgrindoutput>
+<error_summary>
+ <errors>2</errors>
+ <error_contexts>2</error_contexts>
+ <suppressed>0</suppressed>
+ <suppressed_contexts>0</suppressed_contexts>
+</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
<file>fdleak_ipv4.c</file>
<line>70</line>
</frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>main</fn>
+ <dir>...</dir>
+ <file>fdleak_ipv4.c</file>
+ <line>90</line>
+ </frame>
</stack>
<auxwhat>Previously closed</auxwhat>
<stack>
<file>fdleak_ipv4.c</file>
<line>69</line>
</frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>main</fn>
+ <dir>...</dir>
+ <file>fdleak_ipv4.c</file>
+ <line>90</line>
+ </frame>
</stack>
<auxwhat>Originally opened</auxwhat>
<stack>
<file>fdleak_ipv4.c</file>
<line>68</line>
</frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>main</fn>
+ <dir>...</dir>
+ <file>fdleak_ipv4.c</file>
+ <line>90</line>
+ </frame>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>
</suppcounts>
-</valgrindoutput>
+<error_summary>
+ <errors>2</errors>
+ <error_contexts>2</error_contexts>
+ <suppressed>0</suppressed>
+ <suppressed_contexts>0</suppressed_contexts>
+</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
<suppcounts>
</suppcounts>
-</valgrindoutput>
+<error_summary>
+ <errors>2</errors>
+ <error_contexts>2</error_contexts>
+ <suppressed>0</suppressed>
+ <suppressed_contexts>0</suppressed_contexts>
+</error_summary>
+</valgrindoutput>
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
<time>...</time>
</status>
-
<status>
<state>FINISHED</state>
<time>...</time>
</stack>
</error>
-
</valgrindoutput>
-
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
<time>...</time>
</status>
-
<status>
<state>FINISHED</state>
<time>...</time>
</stack>
</error>
-
</valgrindoutput>
-
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
<time>...</time>
</status>
-
<status>
<state>FINISHED</state>
<time>...</time>
</stack>
</error>
-
</valgrindoutput>
-
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
<time>...</time>
</status>
-
<status>
<state>FINISHED</state>
<time>...</time>
</stack>
</error>
-
</valgrindoutput>
-
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
</pair>
</errorcounts>
-
</valgrindoutput>
-
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
</stack>
</error>
-
<status>
<state>FINISHED</state>
<time>...</time>
</pair>
</errorcounts>
-
</valgrindoutput>
-
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
<valgrindoutput>
-<protocolversion>5</protocolversion>
+<protocolversion>6</protocolversion>
<protocoltool>none</protocoltool>
<preamble>
<time>...</time>
</status>
-
<status>
<state>FINISHED</state>
<time>...</time>
</status>
-
</valgrindoutput>
-