You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
1
|
2
(1) |
3
(5) |
4
(4) |
5
(1) |
6
|
7
|
|
8
(2) |
9
(12) |
10
|
11
(2) |
12
(16) |
13
(3) |
14
(13) |
|
15
(20) |
16
(19) |
17
(13) |
18
(20) |
19
(17) |
20
(17) |
21
(14) |
|
22
(13) |
23
(14) |
24
(15) |
25
(14) |
26
(14) |
27
(13) |
28
(2) |
|
29
(16) |
30
(3) |
31
(20) |
|
|
|
|
|
From: <sv...@va...> - 2012-01-26 23:18:31
|
Author: philippe
Date: 2012-01-26 23:13:52 +0000 (Thu, 26 Jan 2012)
New Revision: 12357
Log:
(fixes bug 289939 wish: complete monitor cmd 'leak_check' with details
about leaked or reachable blocks)
This patch implements two new memcheck gdbserver monitor commands:
block_list <loss_record_nr>
after a leak search, shows the list of blocks of <loss_record_nr>
who_points_at <addr> [<len>]
shows places pointing inside <len> (default 1) bytes at <addr>
(with len 1, only shows "start pointers" pointing exactly to <addr>,
with len > 1, will also show "interior pointers")
Compiled and reg-tested on f12/x86, deb5/amd64, f16/ppc64.
The 'block_list' command is implemented on top of the
lr_array/lc_chunks/lc_extras arrays used during the last leak search.
NB: no impact on the memory for the typical Valgrind usage where a leak
search is only done at the end of the run.
Printing the block_list of a loss record simply consists in scanning the
lc_chunks to find back the chunks corresponding to the loss record for which
block lists is requested.
The 'who_points_at' command is implemented by doing a scan similar to
(but simpler than) the leak search scan.
lc_scan_memory has been enhanced to have a mode to search for a specific
address, rather than to search for all allocated blocks.
VG_(apply_to_GP_regs) has been enhanced to also provide the ThreadId and
register name in the callback function.
The patch touches multiple files (but most changes are easy/trivial or factorise
existing code).
Most significant changes are in memcheck/mc_leakcheck.c :
* changed the LC_Extra struct to remember the clique for indirect leaks
(size of structure not changed).
* made lr_array a static global
* changed lc_scan_memory:
to have a search mode for a specific address (for who_points_at)
(for leak search) to pass a 'current clique' in addition to the clique
leader
so as to have a proper clique hierarchy for indirectly leaked blocks.
* print_results: reset values at the beginning of the print_result of the
next leak search, rather than at the end of print_results of the previous
leak search.
This allows to continue showing the same info for loss records till a new
leak search is done.
* new function print_clique which recursively prints a group of leaked
blocks, starting from the clique leader.
* new function MC_(print_block_list) : calls print_clique for each clique
leader found for the given loss record.
* static void scan_memory_root_set : code extracted from
MC_(detect_memory_leaks) (no relevant change)
* void MC_(who_points_at) : calls scan_memory_root_set, lc_scan_memory
and VG_(apply_to_GP_regs)(search_address_in_GP_reg) to search
pointers to the given address.
Added:
trunk/gdbserver_tests/mcblocklistsearch.stderr.exp
trunk/gdbserver_tests/mcblocklistsearch.stderrB.exp
trunk/gdbserver_tests/mcblocklistsearch.stdinB.gdb
trunk/gdbserver_tests/mcblocklistsearch.vgtest
Modified:
trunk/NEWS
trunk/coregrind/m_gdbserver/README_DEVELOPERS
trunk/coregrind/m_machine.c
trunk/gdbserver_tests/Makefile.am
trunk/gdbserver_tests/filter_gdb
trunk/gdbserver_tests/mchelp.stdoutB.exp
trunk/include/pub_tool_machine.h
trunk/memcheck/docs/mc-manual.xml
trunk/memcheck/mc_errors.c
trunk/memcheck/mc_include.h
trunk/memcheck/mc_leakcheck.c
trunk/memcheck/mc_main.c
trunk/memcheck/mc_malloc_wrappers.c
Modified: trunk/NEWS
===================================================================
--- trunk/NEWS 2012-01-25 20:36:27 UTC (rev 12356)
+++ trunk/NEWS 2012-01-26 23:13:52 UTC (rev 12357)
@@ -13,7 +13,12 @@
- reduction of memory use for applications allocating
many blocks and/or having many partially defined bytes.
+ - Addition of GDB server monitor command 'block_list' that lists
+ the addresses/sizes of the blocks of a leak search loss record.
+ - Addition of GDB server monitor command 'who_points_at' that lists
+ the locations pointing at a block.
+
* ==================== OTHER CHANGES ====================
* The C++ demangler has been updated so as to work well with C++
@@ -43,6 +48,7 @@
286374 Running cachegrind with --branch-sim=yes on 64-bit PowerPC program fails
287858 VG_(strerror): unknown error
289699 vgdb connection in relay mode erroneously closed due to buffer overrun
+289939 wish: complete monitor cmd 'leak_check' with details about leaked or reachable blocks
Release 3.7.0 (5 November 2011)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Modified: trunk/coregrind/m_gdbserver/README_DEVELOPERS
===================================================================
--- trunk/coregrind/m_gdbserver/README_DEVELOPERS 2012-01-25 20:36:27 UTC (rev 12356)
+++ trunk/coregrind/m_gdbserver/README_DEVELOPERS 2012-01-26 23:13:52 UTC (rev 12357)
@@ -305,11 +305,9 @@
its arguments like the startup options of m_main.c and tool clo processing.
* have a memcheck monitor command
- who_points_at <address> | <loss_record_nr>
- that would describe the addresses where a pointer is found
- to address (or address leaked at loss_record_nr>)
- This would allow to interactively searching who is "keeping" a piece
- of memory.
+ show_dangling_pointers [last_n_recently_released_blocks]
+ showing which of the n last recently released blocks are still
+ referenced. These references are (potential) dangling pointers.
* some GDBTD in the code
Modified: trunk/coregrind/m_machine.c
===================================================================
--- trunk/coregrind/m_machine.c 2012-01-25 20:36:27 UTC (rev 12356)
+++ trunk/coregrind/m_machine.c 2012-01-26 23:13:52 UTC (rev 12357)
@@ -186,115 +186,115 @@
}
-static void apply_to_GPs_of_tid(VexGuestArchState* vex, void (*f)(Addr))
+static void apply_to_GPs_of_tid(ThreadId tid, void (*f)(ThreadId, HChar*, Addr))
{
+ VexGuestArchState* vex = &(VG_(get_ThreadState)(tid)->arch.vex);
#if defined(VGA_x86)
- (*f)(vex->guest_EAX);
- (*f)(vex->guest_ECX);
- (*f)(vex->guest_EDX);
- (*f)(vex->guest_EBX);
- (*f)(vex->guest_ESI);
- (*f)(vex->guest_EDI);
- (*f)(vex->guest_ESP);
- (*f)(vex->guest_EBP);
+ (*f)(tid, "EAX", vex->guest_EAX);
+ (*f)(tid, "ECX", vex->guest_ECX);
+ (*f)(tid, "EDX", vex->guest_EDX);
+ (*f)(tid, "EBX", vex->guest_EBX);
+ (*f)(tid, "ESI", vex->guest_ESI);
+ (*f)(tid, "EDI", vex->guest_EDI);
+ (*f)(tid, "ESP", vex->guest_ESP);
+ (*f)(tid, "EBP", vex->guest_EBP);
#elif defined(VGA_amd64)
- (*f)(vex->guest_RAX);
- (*f)(vex->guest_RCX);
- (*f)(vex->guest_RDX);
- (*f)(vex->guest_RBX);
- (*f)(vex->guest_RSI);
- (*f)(vex->guest_RDI);
- (*f)(vex->guest_RSP);
- (*f)(vex->guest_RBP);
- (*f)(vex->guest_R8);
- (*f)(vex->guest_R9);
- (*f)(vex->guest_R10);
- (*f)(vex->guest_R11);
- (*f)(vex->guest_R12);
- (*f)(vex->guest_R13);
- (*f)(vex->guest_R14);
- (*f)(vex->guest_R15);
+ (*f)(tid, "RAX", vex->guest_RAX);
+ (*f)(tid, "RCX", vex->guest_RCX);
+ (*f)(tid, "RDX", vex->guest_RDX);
+ (*f)(tid, "RBX", vex->guest_RBX);
+ (*f)(tid, "RSI", vex->guest_RSI);
+ (*f)(tid, "RDI", vex->guest_RDI);
+ (*f)(tid, "RSP", vex->guest_RSP);
+ (*f)(tid, "RBP", vex->guest_RBP);
+ (*f)(tid, "R8" , vex->guest_R8 );
+ (*f)(tid, "R9" , vex->guest_R9 );
+ (*f)(tid, "R10", vex->guest_R10);
+ (*f)(tid, "R11", vex->guest_R11);
+ (*f)(tid, "R12", vex->guest_R12);
+ (*f)(tid, "R13", vex->guest_R13);
+ (*f)(tid, "R14", vex->guest_R14);
+ (*f)(tid, "R15", vex->guest_R15);
#elif defined(VGA_ppc32) || defined(VGA_ppc64)
- (*f)(vex->guest_GPR0);
- (*f)(vex->guest_GPR1);
- (*f)(vex->guest_GPR2);
- (*f)(vex->guest_GPR3);
- (*f)(vex->guest_GPR4);
- (*f)(vex->guest_GPR5);
- (*f)(vex->guest_GPR6);
- (*f)(vex->guest_GPR7);
- (*f)(vex->guest_GPR8);
- (*f)(vex->guest_GPR9);
- (*f)(vex->guest_GPR10);
- (*f)(vex->guest_GPR11);
- (*f)(vex->guest_GPR12);
- (*f)(vex->guest_GPR13);
- (*f)(vex->guest_GPR14);
- (*f)(vex->guest_GPR15);
- (*f)(vex->guest_GPR16);
- (*f)(vex->guest_GPR17);
- (*f)(vex->guest_GPR18);
- (*f)(vex->guest_GPR19);
- (*f)(vex->guest_GPR20);
- (*f)(vex->guest_GPR21);
- (*f)(vex->guest_GPR22);
- (*f)(vex->guest_GPR23);
- (*f)(vex->guest_GPR24);
- (*f)(vex->guest_GPR25);
- (*f)(vex->guest_GPR26);
- (*f)(vex->guest_GPR27);
- (*f)(vex->guest_GPR28);
- (*f)(vex->guest_GPR29);
- (*f)(vex->guest_GPR30);
- (*f)(vex->guest_GPR31);
- (*f)(vex->guest_CTR);
- (*f)(vex->guest_LR);
+ (*f)(tid, "GPR0" , vex->guest_GPR0 );
+ (*f)(tid, "GPR1" , vex->guest_GPR1 );
+ (*f)(tid, "GPR2" , vex->guest_GPR2 );
+ (*f)(tid, "GPR3" , vex->guest_GPR3 );
+ (*f)(tid, "GPR4" , vex->guest_GPR4 );
+ (*f)(tid, "GPR5" , vex->guest_GPR5 );
+ (*f)(tid, "GPR6" , vex->guest_GPR6 );
+ (*f)(tid, "GPR7" , vex->guest_GPR7 );
+ (*f)(tid, "GPR8" , vex->guest_GPR8 );
+ (*f)(tid, "GPR9" , vex->guest_GPR9 );
+ (*f)(tid, "GPR10", vex->guest_GPR10);
+ (*f)(tid, "GPR11", vex->guest_GPR11);
+ (*f)(tid, "GPR12", vex->guest_GPR12);
+ (*f)(tid, "GPR13", vex->guest_GPR13);
+ (*f)(tid, "GPR14", vex->guest_GPR14);
+ (*f)(tid, "GPR15", vex->guest_GPR15);
+ (*f)(tid, "GPR16", vex->guest_GPR16);
+ (*f)(tid, "GPR17", vex->guest_GPR17);
+ (*f)(tid, "GPR18", vex->guest_GPR18);
+ (*f)(tid, "GPR19", vex->guest_GPR19);
+ (*f)(tid, "GPR20", vex->guest_GPR20);
+ (*f)(tid, "GPR21", vex->guest_GPR21);
+ (*f)(tid, "GPR22", vex->guest_GPR22);
+ (*f)(tid, "GPR23", vex->guest_GPR23);
+ (*f)(tid, "GPR24", vex->guest_GPR24);
+ (*f)(tid, "GPR25", vex->guest_GPR25);
+ (*f)(tid, "GPR26", vex->guest_GPR26);
+ (*f)(tid, "GPR27", vex->guest_GPR27);
+ (*f)(tid, "GPR28", vex->guest_GPR28);
+ (*f)(tid, "GPR29", vex->guest_GPR29);
+ (*f)(tid, "GPR30", vex->guest_GPR30);
+ (*f)(tid, "GPR31", vex->guest_GPR31);
+ (*f)(tid, "CTR" , vex->guest_CTR );
+ (*f)(tid, "LR" , vex->guest_LR );
#elif defined(VGA_arm)
- (*f)(vex->guest_R0);
- (*f)(vex->guest_R1);
- (*f)(vex->guest_R2);
- (*f)(vex->guest_R3);
- (*f)(vex->guest_R4);
- (*f)(vex->guest_R5);
- (*f)(vex->guest_R6);
- (*f)(vex->guest_R8);
- (*f)(vex->guest_R9);
- (*f)(vex->guest_R10);
- (*f)(vex->guest_R11);
- (*f)(vex->guest_R12);
- (*f)(vex->guest_R13);
- (*f)(vex->guest_R14);
+ (*f)(tid, "R0" , vex->guest_R0 );
+ (*f)(tid, "R1" , vex->guest_R1 );
+ (*f)(tid, "R2" , vex->guest_R2 );
+ (*f)(tid, "R3" , vex->guest_R3 );
+ (*f)(tid, "R4" , vex->guest_R4 );
+ (*f)(tid, "R5" , vex->guest_R5 );
+ (*f)(tid, "R6" , vex->guest_R6 );
+ (*f)(tid, "R8" , vex->guest_R8 );
+ (*f)(tid, "R9" , vex->guest_R9 );
+ (*f)(tid, "R10", vex->guest_R10);
+ (*f)(tid, "R11", vex->guest_R11);
+ (*f)(tid, "R12", vex->guest_R12);
+ (*f)(tid, "R13", vex->guest_R13);
+ (*f)(tid, "R14", vex->guest_R14);
#elif defined(VGA_s390x)
- (*f)(vex->guest_r0);
- (*f)(vex->guest_r1);
- (*f)(vex->guest_r2);
- (*f)(vex->guest_r3);
- (*f)(vex->guest_r4);
- (*f)(vex->guest_r5);
- (*f)(vex->guest_r6);
- (*f)(vex->guest_r7);
- (*f)(vex->guest_r8);
- (*f)(vex->guest_r9);
- (*f)(vex->guest_r10);
- (*f)(vex->guest_r11);
- (*f)(vex->guest_r12);
- (*f)(vex->guest_r13);
- (*f)(vex->guest_r14);
- (*f)(vex->guest_r15);
+ (*f)(tid, "r0" , vex->guest_r0 );
+ (*f)(tid, "r1" , vex->guest_r1 );
+ (*f)(tid, "r2" , vex->guest_r2 );
+ (*f)(tid, "r3" , vex->guest_r3 );
+ (*f)(tid, "r4" , vex->guest_r4 );
+ (*f)(tid, "r5" , vex->guest_r5 );
+ (*f)(tid, "r6" , vex->guest_r6 );
+ (*f)(tid, "r7" , vex->guest_r7 );
+ (*f)(tid, "r8" , vex->guest_r8 );
+ (*f)(tid, "r9" , vex->guest_r9 );
+ (*f)(tid, "r10", vex->guest_r10);
+ (*f)(tid, "r11", vex->guest_r11);
+ (*f)(tid, "r12", vex->guest_r12);
+ (*f)(tid, "r13", vex->guest_r13);
+ (*f)(tid, "r14", vex->guest_r14);
+ (*f)(tid, "r15", vex->guest_r15);
#else
# error Unknown arch
#endif
}
-void VG_(apply_to_GP_regs)(void (*f)(UWord))
+void VG_(apply_to_GP_regs)(void (*f)(ThreadId, HChar*, UWord))
{
ThreadId tid;
for (tid = 1; tid < VG_N_THREADS; tid++) {
if (VG_(is_valid_tid)(tid)) {
- ThreadState* tst = VG_(get_ThreadState)(tid);
- apply_to_GPs_of_tid(&(tst->arch.vex), f);
+ apply_to_GPs_of_tid(tid, f);
}
}
}
Modified: trunk/gdbserver_tests/Makefile.am
===================================================================
--- trunk/gdbserver_tests/Makefile.am 2012-01-25 20:36:27 UTC (rev 12356)
+++ trunk/gdbserver_tests/Makefile.am 2012-01-26 23:13:52 UTC (rev 12357)
@@ -8,6 +8,10 @@
EXTRA_DIST = \
README_DEVELOPERS \
+ mcblocklistsearch.stderr.exp \
+ mcblocklistsearch.stdinB.gdb \
+ mcblocklistsearch.vgtest \
+ mcblocklistsearch.stderrB.exp \
mcbreak.stderrB.exp \
mcbreak.stderr.exp \
mcbreak.stdinB.gdb \
Modified: trunk/gdbserver_tests/filter_gdb
===================================================================
--- trunk/gdbserver_tests/filter_gdb 2012-01-25 20:36:27 UTC (rev 12356)
+++ trunk/gdbserver_tests/filter_gdb 2012-01-26 23:13:52 UTC (rev 12357)
@@ -10,7 +10,7 @@
$dir/../tests/filter_addresses |
# memcheck stuff
-$dir/filter_memcheck_monitor |
+$dir/filter_memcheck_monitor "$@" |
# Anonymise or remove :
Added: trunk/gdbserver_tests/mcblocklistsearch.stderr.exp
===================================================================
Added: trunk/gdbserver_tests/mcblocklistsearch.stderrB.exp
===================================================================
--- trunk/gdbserver_tests/mcblocklistsearch.stderrB.exp (rev 0)
+++ trunk/gdbserver_tests/mcblocklistsearch.stderrB.exp 2012-01-26 23:13:52 UTC (rev 12357)
@@ -0,0 +1,67 @@
+relaying data between gdb and process ....
+vgdb-error value changed from 0 to 999999
+Breakpoint 1 at 0x........: file leak-tree.c, line 42.
+Breakpoint 2 at 0x........: file leak-tree.c, line 67.
+Continuing.
+Breakpoint 1, f () at leak-tree.c:42
+42 t->l = mk(); // B
+Continuing.
+Breakpoint 2, main () at leak-tree.c:67
+67 PRINT_LEAK_COUNTS(stderr);
+Searching for pointers to 0x........
+*0x........ points at 0x........
+ Address 0x........ is 0 bytes inside data symbol "t"
+full leak search
+16 bytes in 1 blocks are still reachable in loss record ... of ...
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: mk (leak-tree.c:28)
+ by 0x........: f (leak-tree.c:41)
+ by 0x........: main (leak-tree.c:63)
+16 bytes in 1 blocks are still reachable in loss record ... of ...
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: mk (leak-tree.c:28)
+ by 0x........: f (leak-tree.c:42)
+ by 0x........: main (leak-tree.c:63)
+16 bytes in 1 blocks are still reachable in loss record ... of ...
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: mk (leak-tree.c:28)
+ by 0x........: f (leak-tree.c:45)
+ by 0x........: main (leak-tree.c:63)
+16 bytes in 1 blocks are indirectly lost in loss record ... of ...
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: mk (leak-tree.c:28)
+ by 0x........: f (leak-tree.c:46)
+ by 0x........: main (leak-tree.c:63)
+16 bytes in 1 blocks are indirectly lost in loss record ... of ...
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: mk (leak-tree.c:28)
+ by 0x........: f (leak-tree.c:47)
+ by 0x........: main (leak-tree.c:63)
+16 bytes in 1 blocks are definitely lost in loss record ... of ...
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: mk (leak-tree.c:28)
+ by 0x........: f (leak-tree.c:44)
+ by 0x........: main (leak-tree.c:63)
+48 (16 direct, 32 indirect) bytes in 1 blocks are definitely lost in loss record ... of ...
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: mk (leak-tree.c:28)
+ by 0x........: f (leak-tree.c:43)
+ by 0x........: main (leak-tree.c:63)
+block list 6 D
+16 bytes in 1 blocks are definitely lost in loss record ... of ...
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: mk (leak-tree.c:28)
+ by 0x........: f (leak-tree.c:44)
+ by 0x........: main (leak-tree.c:63)
+0x........[16]
+block list 7 C F G
+48 (16 direct, 32 indirect) bytes in 1 blocks are definitely lost in loss record ... of ...
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: mk (leak-tree.c:28)
+ by 0x........: f (leak-tree.c:43)
+ by 0x........: main (leak-tree.c:63)
+0x........[16]
+ 0x........[16] indirect loss record 4
+ 0x........[16] indirect loss record 5
+monitor command request to kill this process
+Remote connection closed
Added: trunk/gdbserver_tests/mcblocklistsearch.stdinB.gdb
===================================================================
--- trunk/gdbserver_tests/mcblocklistsearch.stdinB.gdb (rev 0)
+++ trunk/gdbserver_tests/mcblocklistsearch.stdinB.gdb 2012-01-26 23:13:52 UTC (rev 12357)
@@ -0,0 +1,31 @@
+# connect gdb to Valgrind gdbserver:
+target remote | ./vgdb --wait=60 --vgdb-prefix=./vgdb-prefix-mcblocklistsearch
+echo vgdb launched process attached\n
+monitor v.set vgdb-error 999999
+#
+#
+# insert break after the allocation of A
+break leak-tree.c:42
+# insert break after returning from function f
+break leak-tree.c:67
+#
+# continue till //1break:
+continue
+# save the value of A
+set $0xA = t
+#
+# continue till 2nd break
+continue
+#
+# check who points at A
+eval "monitor who_points_at 0x%x 1", $0xA
+# do a leak check, and then list the blocks lost
+echo full leak search \n
+monitor leak_check full reachable any
+#
+echo block list 6 D \n
+monitor block_list 6
+echo block list 7 C F G \n
+monitor block_list 7
+monitor v.kill
+quit
Added: trunk/gdbserver_tests/mcblocklistsearch.vgtest
===================================================================
--- trunk/gdbserver_tests/mcblocklistsearch.vgtest (rev 0)
+++ trunk/gdbserver_tests/mcblocklistsearch.vgtest 2012-01-26 23:13:52 UTC (rev 12357)
@@ -0,0 +1,12 @@
+# test the memcheck block_list and search monitor commands.
+prog: ../memcheck/tests/leak-tree
+vgopts: --tool=memcheck --vgdb=yes --vgdb-error=0 --vgdb-prefix=./vgdb-prefix-mcblocklistsearch -q
+prereq: test -e gdb.eval
+stdout_filter: filter_make_empty
+stderr_filter: filter_make_empty
+progB: gdb
+argsB: --quiet -l 60 --nx 1>&2 ../memcheck/tests/leak-tree
+stdinB: mcblocklistsearch.stdinB.gdb
+stdoutB_filter: filter_make_empty
+stderrB_filter: filter_gdb
+stderrB_filter_args: leak-tree.c
Modified: trunk/gdbserver_tests/mchelp.stdoutB.exp
===================================================================
--- trunk/gdbserver_tests/mchelp.stdoutB.exp 2012-01-25 20:36:27 UTC (rev 12356)
+++ trunk/gdbserver_tests/mchelp.stdoutB.exp 2012-01-26 23:13:52 UTC (rev 12357)
@@ -28,6 +28,12 @@
Examples: leak_check
leak_check summary any
leak_check full reachable any limited 100
+ block_list <loss_record_nr>
+ after a leak search, shows the list of blocks of <loss_record_nr>
+ who_points_at <addr> [<len>]
+ shows places pointing inside <len> (default 1) bytes at <addr>
+ (with len 1, only shows "start pointers" pointing exactly to <addr>,
+ with len > 1, will also show "interior pointers")
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
@@ -67,5 +73,11 @@
Examples: leak_check
leak_check summary any
leak_check full reachable any limited 100
+ block_list <loss_record_nr>
+ after a leak search, shows the list of blocks of <loss_record_nr>
+ who_points_at <addr> [<len>]
+ shows places pointing inside <len> (default 1) bytes at <addr>
+ (with len 1, only shows "start pointers" pointing exactly to <addr>,
+ with len > 1, will also show "interior pointers")
monitor command request to kill this process
Modified: trunk/include/pub_tool_machine.h
===================================================================
--- trunk/include/pub_tool_machine.h 2012-01-25 20:36:27 UTC (rev 12356)
+++ trunk/include/pub_tool_machine.h 2012-01-26 23:13:52 UTC (rev 12357)
@@ -121,7 +121,8 @@
// current threads.
// This is very Memcheck-specific -- it's used to find the roots when
// doing leak checking.
-extern void VG_(apply_to_GP_regs)(void (*f)(UWord val));
+extern void VG_(apply_to_GP_regs)(void (*f)(ThreadId tid,
+ HChar* regname, UWord val));
// This iterator lets you inspect each live thread's stack bounds.
// Returns False at the end. 'tid' is the iterator and you can only
Modified: trunk/memcheck/docs/mc-manual.xml
===================================================================
--- trunk/memcheck/docs/mc-manual.xml 2012-01-25 20:36:27 UTC (rev 12356)
+++ trunk/memcheck/docs/mc-manual.xml 2012-01-26 23:13:52 UTC (rev 12357)
@@ -1372,7 +1372,7 @@
(default 1) bytes at <addr> has the specified accessibility.
It then outputs a description of <addr>. In the following
example, a detailed description is available because the
- option <option>--read-var-info=yes</option> was given Valgrind at
+ option <option>--read-var-info=yes</option> was given at Valgrind
startup:
</para>
<programlisting><![CDATA[
@@ -1443,31 +1443,31 @@
there was no increase since the previous leak search.</para>
<programlisting><![CDATA[
(gdb) monitor leak_check full possibleleak increased
-==14729== 16 (+16) bytes in 1 (+1) blocks are possibly lost in loss record 13 of 16
-==14729== at 0x4006E9E: malloc (vg_replace_malloc.c:236)
-==14729== by 0x80484D5: mk (leak-cases.c:52)
-==14729== by 0x804855F: f (leak-cases.c:81)
-==14729== by 0x80488F5: main (leak-cases.c:107)
-==14729==
-==14729== LEAK SUMMARY:
-==14729== definitely lost: 32 (+0) bytes in 2 (+0) blocks
-==14729== indirectly lost: 16 (+0) bytes in 1 (+0) blocks
-==14729== possibly lost: 32 (+16) bytes in 2 (+1) blocks
-==14729== still reachable: 96 (+16) bytes in 6 (+1) blocks
-==14729== suppressed: 0 (+0) bytes in 0 (+0) blocks
-==14729== Reachable blocks (those to which a pointer was found) are not shown.
-==14729== To see them, add 'reachable any' args to leak_check
-==14729==
+==19520== 16 (+16) bytes in 1 (+1) blocks are possibly lost in loss record 9 of 12
+==19520== at 0x40070B4: malloc (vg_replace_malloc.c:263)
+==19520== by 0x80484D5: mk (leak-cases.c:52)
+==19520== by 0x804855F: f (leak-cases.c:81)
+==19520== by 0x80488E0: main (leak-cases.c:107)
+==19520==
+==19520== LEAK SUMMARY:
+==19520== definitely lost: 32 (+0) bytes in 2 (+0) blocks
+==19520== indirectly lost: 16 (+0) bytes in 1 (+0) blocks
+==19520== possibly lost: 32 (+16) bytes in 2 (+1) blocks
+==19520== still reachable: 96 (+16) bytes in 6 (+1) blocks
+==19520== suppressed: 0 (+0) bytes in 0 (+0) blocks
+==19520== Reachable blocks (those to which a pointer was found) are not shown.
+==19520== To see them, add 'reachable any' args to leak_check
+==19520==
(gdb) mo l
-==14729== LEAK SUMMARY:
-==14729== definitely lost: 32 (+0) bytes in 2 (+0) blocks
-==14729== indirectly lost: 16 (+0) bytes in 1 (+0) blocks
-==14729== possibly lost: 32 (+0) bytes in 2 (+0) blocks
-==14729== still reachable: 96 (+0) bytes in 6 (+0) blocks
-==14729== suppressed: 0 (+0) bytes in 0 (+0) blocks
-==14729== Reachable blocks (those to which a pointer was found) are not shown.
-==14729== To see them, add 'reachable any' args to leak_check
-==14729==
+==19520== LEAK SUMMARY:
+==19520== definitely lost: 32 (+0) bytes in 2 (+0) blocks
+==19520== indirectly lost: 16 (+0) bytes in 1 (+0) blocks
+==19520== possibly lost: 32 (+0) bytes in 2 (+0) blocks
+==19520== still reachable: 96 (+0) bytes in 6 (+0) blocks
+==19520== suppressed: 0 (+0) bytes in 0 (+0) blocks
+==19520== Reachable blocks (those to which a pointer was found) are not shown.
+==19520== To see them, add 'reachable any' args to leak_check
+==19520==
(gdb)
]]></programlisting>
<para>Note that when using Valgrind's gdbserver, it is not
@@ -1481,6 +1481,143 @@
</para>
</listitem>
+ <listitem>
+ <para><varname>block_list <loss_record_nr> </varname>
+ shows the list of blocks belonging to <loss_record_nr>.
+ </para>
+
+ <para> A leak search merges the allocated blocks in loss records :
+ a loss record re-groups all blocks having the same state (for
+ example, Definitely Lost) and the same allocation backtrace.
+ Each loss record is identified in the leak search result
+ by a loss record number.
+ The <varname>block_list</varname> command shows the loss record information
+ followed by the addresses and sizes of the blocks which have been
+ merged in the loss record.
+ </para>
+
+ <para> If a directly lost block causes some other blocks to be indirectly
+ lost, the block_list command will also show these indirectly lost blocks.
+ The indirectly lost blocks will be indented according to the level of indirection
+ between the directly lost block and the indirectly lost block(s).
+ Each indirectly lost block is followed by the reference of its loss record.
+ </para>
+
+ <para> The block_list command can be used on the results of a leak search as long
+ as no block has been freed after this leak search: as soon as the program frees
+ a block, a new leak search is needed before block_list can be used again.
+ </para>
+
+ <para>
+ In the below example, the program leaks a tree structure by losing the pointer to
+ the block A (top of the tree).
+ So, the block A is directly lost, causing an indirect
+ loss of blocks B to G. The first block_list command shows the loss record of A
+ (a definitely lost block with address 0x4028028, size 16). The addresses and sizes
+ of the indirectly lost blocks due to block A are shown below the block A.
+ The second command shows the details of one of the indirect loss records output
+ by the first command.
+ </para>
+<programlisting><![CDATA[
+ A
+ / \
+ B C
+ / \ / \
+ D E F G
+]]></programlisting>
+
+<programlisting><![CDATA[
+(gdb) bt
+#0 main () at leak-tree.c:69
+(gdb) monitor leak_check full any
+==19552== 112 (16 direct, 96 indirect) bytes in 1 blocks are definitely lost in loss record 7 of 7
+==19552== at 0x40070B4: malloc (vg_replace_malloc.c:263)
+==19552== by 0x80484D5: mk (leak-tree.c:28)
+==19552== by 0x80484FC: f (leak-tree.c:41)
+==19552== by 0x8048856: main (leak-tree.c:63)
+==19552==
+==19552== LEAK SUMMARY:
+==19552== definitely lost: 16 bytes in 1 blocks
+==19552== indirectly lost: 96 bytes in 6 blocks
+==19552== possibly lost: 0 bytes in 0 blocks
+==19552== still reachable: 0 bytes in 0 blocks
+==19552== suppressed: 0 bytes in 0 blocks
+==19552==
+(gdb) monitor block_list 7
+==19552== 112 (16 direct, 96 indirect) bytes in 1 blocks are definitely lost in loss record 7 of 7
+==19552== at 0x40070B4: malloc (vg_replace_malloc.c:263)
+==19552== by 0x80484D5: mk (leak-tree.c:28)
+==19552== by 0x80484FC: f (leak-tree.c:41)
+==19552== by 0x8048856: main (leak-tree.c:63)
+==19552== 0x4028028[16]
+==19552== 0x4028068[16] indirect loss record 1
+==19552== 0x40280E8[16] indirect loss record 3
+==19552== 0x4028128[16] indirect loss record 4
+==19552== 0x40280A8[16] indirect loss record 2
+==19552== 0x4028168[16] indirect loss record 5
+==19552== 0x40281A8[16] indirect loss record 6
+(gdb) mo b 2
+==19552== 16 bytes in 1 blocks are indirectly lost in loss record 2 of 7
+==19552== at 0x40070B4: malloc (vg_replace_malloc.c:263)
+==19552== by 0x80484D5: mk (leak-tree.c:28)
+==19552== by 0x8048519: f (leak-tree.c:43)
+==19552== by 0x8048856: main (leak-tree.c:63)
+==19552== 0x40280A8[16]
+==19552== 0x4028168[16] indirect loss record 5
+==19552== 0x40281A8[16] indirect loss record 6
+(gdb)
+
+]]></programlisting>
+
+ </listitem>
+
+ <listitem>
+ <para><varname>who_points_at <addr> [<len>]</varname>
+ shows all the locations where a pointer to addr is found.
+ If len is equal to 1, the command only shows the locations pointing
+ exactly at addr (i.e. the "start pointers" to addr).
+ If len is > 1, "interior pointers" pointing at the len first bytes
+ will also be shown.
+ </para>
+
+ <para>The locations searched for are the same as the locations
+ used in the leak search. So, <varname>who_points_at</varname> can a.o.
+ be used to show why the leak search still can reach a block, or can
+ search for dangling pointers to a freed block.
+ Each location pointing at addr (or pointing inside addr if interior pointers
+ are being searched for) will be described.
+ </para>
+
+ <para>In the below example, the pointers to the 'tree block A' (see example
+ in command <varname>block_list</varname>) is shown before the tree was leaked.
+ The descriptions are detailed as the option <option>--read-var-info=yes</option>
+ was given at Valgrind startup. The second call shows the pointers (start and interior
+ pointers) to block G. The block G (0x40281A8) is reachable via block C (0x40280a8)
+ and register ECX of tid 1 (tid is the Valgrind thread id).
+ It is "interior reachable" via the register EBX.
+ </para>
+
+<programlisting><![CDATA[
+(gdb) monitor who_points_at 0x4028028
+==20852== Searching for pointers to 0x4028028
+==20852== *0x8049e20 points at 0x4028028
+==20852== Location 0x8049e20 is 0 bytes inside global var "t"
+==20852== declared at leak-tree.c:35
+(gdb) monitor who_points_at 0x40281A8 16
+==20852== Searching for pointers pointing in 16 bytes from 0x40281a8
+==20852== *0x40280ac points at 0x40281a8
+==20852== Address 0x40280ac is 4 bytes inside a block of size 16 alloc'd
+==20852== at 0x40070B4: malloc (vg_replace_malloc.c:263)
+==20852== by 0x80484D5: mk (leak-tree.c:28)
+==20852== by 0x8048519: f (leak-tree.c:43)
+==20852== by 0x8048856: main (leak-tree.c:63)
+==20852== tid 1 register ECX points at 0x40281a8
+==20852== tid 1 register EBX interior points at 2 bytes inside 0x40281a8
+(gdb)
+]]></programlisting>
+ </listitem>
+
+
</itemizedlist>
</sect1>
Modified: trunk/memcheck/mc_errors.c
===================================================================
--- trunk/memcheck/mc_errors.c 2012-01-25 20:36:27 UTC (rev 12356)
+++ trunk/memcheck/mc_errors.c 2012-01-26 23:13:52 UTC (rev 12357)
@@ -447,6 +447,95 @@
return buf;
}
+static void pp_LossRecord(UInt n_this_record, UInt n_total_records,
+ LossRecord* lr, Bool xml)
+{
+ // char arrays to produce the indication of increase/decrease in case
+ // of delta_mode != LCD_Any
+ char d_bytes[20];
+ char d_direct_bytes[20];
+ char d_indirect_bytes[20];
+ char d_num_blocks[20];
+
+ MC_(snprintf_delta) (d_bytes, 20,
+ lr->szB + lr->indirect_szB,
+ lr->old_szB + lr->old_indirect_szB,
+ MC_(detect_memory_leaks_last_delta_mode));
+ MC_(snprintf_delta) (d_direct_bytes, 20,
+ lr->szB,
+ lr->old_szB,
+ MC_(detect_memory_leaks_last_delta_mode));
+ MC_(snprintf_delta) (d_indirect_bytes, 20,
+ lr->indirect_szB,
+ lr->old_indirect_szB,
+ MC_(detect_memory_leaks_last_delta_mode));
+ MC_(snprintf_delta) (d_num_blocks, 20,
+ (SizeT) lr->num_blocks,
+ (SizeT) lr->old_num_blocks,
+ MC_(detect_memory_leaks_last_delta_mode));
+
+ if (xml) {
+ emit(" <kind>%s</kind>\n", xml_leak_kind(lr->key.state));
+ if (lr->indirect_szB > 0) {
+ emit( " <xwhat>\n" );
+ emit( " <text>%'lu%s (%'lu%s direct, %'lu%s indirect) bytes "
+ "in %'u%s blocks"
+ " are %s in loss record %'u of %'u</text>\n",
+ lr->szB + lr->indirect_szB, d_bytes,
+ lr->szB, d_direct_bytes,
+ lr->indirect_szB, d_indirect_bytes,
+ lr->num_blocks, d_num_blocks,
+ str_leak_lossmode(lr->key.state),
+ n_this_record, n_total_records );
+ // Nb: don't put commas in these XML numbers
+ emit( " <leakedbytes>%lu</leakedbytes>\n",
+ lr->szB + lr->indirect_szB );
+ emit( " <leakedblocks>%u</leakedblocks>\n", lr->num_blocks );
+ emit( " </xwhat>\n" );
+ } else {
+ emit( " <xwhat>\n" );
+ emit( " <text>%'lu%s bytes in %'u%s blocks"
+ " are %s in loss record %'u of %'u</text>\n",
+ lr->szB, d_direct_bytes,
+ lr->num_blocks, d_num_blocks,
+ str_leak_lossmode(lr->key.state),
+ n_this_record, n_total_records );
+ emit( " <leakedbytes>%ld</leakedbytes>\n", lr->szB);
+ emit( " <leakedblocks>%d</leakedblocks>\n", lr->num_blocks);
+ emit( " </xwhat>\n" );
+ }
+ VG_(pp_ExeContext)(lr->key.allocated_at);
+ } else { /* ! if (xml) */
+ if (lr->indirect_szB > 0) {
+ emit(
+ "%'lu%s (%'lu%s direct, %'lu%s indirect) bytes in %'u%s blocks"
+ " are %s in loss record %'u of %'u\n",
+ lr->szB + lr->indirect_szB, d_bytes,
+ lr->szB, d_direct_bytes,
+ lr->indirect_szB, d_indirect_bytes,
+ lr->num_blocks, d_num_blocks,
+ str_leak_lossmode(lr->key.state),
+ n_this_record, n_total_records
+ );
+ } else {
+ emit(
+ "%'lu%s bytes in %'u%s blocks are %s in loss record %'u of %'u\n",
+ lr->szB, d_direct_bytes,
+ lr->num_blocks, d_num_blocks,
+ str_leak_lossmode(lr->key.state),
+ n_this_record, n_total_records
+ );
+ }
+ VG_(pp_ExeContext)(lr->key.allocated_at);
+ } /* if (xml) */
+}
+
+void MC_(pp_LossRecord)(UInt n_this_record, UInt n_total_records,
+ LossRecord* l)
+{
+ pp_LossRecord (n_this_record, n_total_records, l, /* xml */ False);
+}
+
void MC_(pp_Error) ( Error* err )
{
const Bool xml = VG_(clo_xml); /* a shorthand */
@@ -717,84 +806,7 @@
UInt n_this_record = extra->Err.Leak.n_this_record;
UInt n_total_records = extra->Err.Leak.n_total_records;
LossRecord* lr = extra->Err.Leak.lr;
- // char arrays to produce the indication of increase/decrease in case
- // of delta_mode != LCD_Any
- char d_bytes[20];
- char d_direct_bytes[20];
- char d_indirect_bytes[20];
- char d_num_blocks[20];
-
- MC_(snprintf_delta) (d_bytes, 20,
- lr->szB + lr->indirect_szB,
- lr->old_szB + lr->old_indirect_szB,
- MC_(detect_memory_leaks_last_delta_mode));
- MC_(snprintf_delta) (d_direct_bytes, 20,
- lr->szB,
- lr->old_szB,
- MC_(detect_memory_leaks_last_delta_mode));
- MC_(snprintf_delta) (d_indirect_bytes, 20,
- lr->indirect_szB,
- lr->old_indirect_szB,
- MC_(detect_memory_leaks_last_delta_mode));
- MC_(snprintf_delta) (d_num_blocks, 20,
- (SizeT) lr->num_blocks,
- (SizeT) lr->old_num_blocks,
- MC_(detect_memory_leaks_last_delta_mode));
-
- if (xml) {
- emit(" <kind>%s</kind>\n", xml_leak_kind(lr->key.state));
- if (lr->indirect_szB > 0) {
- emit( " <xwhat>\n" );
- emit( " <text>%'lu%s (%'lu%s direct, %'lu%s indirect) bytes "
- "in %'u%s blocks"
- " are %s in loss record %'u of %'u</text>\n",
- lr->szB + lr->indirect_szB, d_bytes,
- lr->szB, d_direct_bytes,
- lr->indirect_szB, d_indirect_bytes,
- lr->num_blocks, d_num_blocks,
- str_leak_lossmode(lr->key.state),
- n_this_record, n_total_records );
- // Nb: don't put commas in these XML numbers
- emit( " <leakedbytes>%lu</leakedbytes>\n",
- lr->szB + lr->indirect_szB );
- emit( " <leakedblocks>%u</leakedblocks>\n", lr->num_blocks );
- emit( " </xwhat>\n" );
- } else {
- emit( " <xwhat>\n" );
- emit( " <text>%'lu%s bytes in %'u%s blocks"
- " are %s in loss record %'u of %'u</text>\n",
- lr->szB, d_direct_bytes,
- lr->num_blocks, d_num_blocks,
- str_leak_lossmode(lr->key.state),
- n_this_record, n_total_records );
- emit( " <leakedbytes>%ld</leakedbytes>\n", lr->szB);
- emit( " <leakedblocks>%d</leakedblocks>\n", lr->num_blocks);
- emit( " </xwhat>\n" );
- }
- VG_(pp_ExeContext)(lr->key.allocated_at);
- } else { /* ! if (xml) */
- if (lr->indirect_szB > 0) {
- emit(
- "%'lu%s (%'lu%s direct, %'lu%s indirect) bytes in %'u%s blocks"
- " are %s in loss record %'u of %'u\n",
- lr->szB + lr->indirect_szB, d_bytes,
- lr->szB, d_direct_bytes,
- lr->indirect_szB, d_indirect_bytes,
- lr->num_blocks, d_num_blocks,
- str_leak_lossmode(lr->key.state),
- n_this_record, n_total_records
- );
- } else {
- emit(
- "%'lu%s bytes in %'u%s blocks are %s in loss record %'u of %'u\n",
- lr->szB, d_direct_bytes,
- lr->num_blocks, d_num_blocks,
- str_leak_lossmode(lr->key.state),
- n_this_record, n_total_records
- );
- }
- VG_(pp_ExeContext)(lr->key.allocated_at);
- } /* if (xml) */
+ pp_LossRecord (n_this_record, n_total_records, lr, xml);
break;
}
Modified: trunk/memcheck/mc_include.h
===================================================================
--- trunk/memcheck/mc_include.h 2012-01-25 20:36:27 UTC (rev 12356)
+++ trunk/memcheck/mc_include.h 2012-01-26 23:13:52 UTC (rev 12357)
@@ -121,6 +121,8 @@
void MC_(copy_address_range_state) ( Addr src, Addr dst, SizeT len );
void MC_(print_malloc_stats) ( void );
+/* nr of free operations done */
+SizeT MC_(get_cmalloc_n_frees) ( void );
void* MC_(malloc) ( ThreadId tid, SizeT n );
void* MC_(__builtin_new) ( ThreadId tid, SizeT n );
@@ -254,6 +256,7 @@
}
Reachedness;
+
/* For VALGRIND_COUNT_LEAKS client request */
extern SizeT MC_(bytes_leaked);
extern SizeT MC_(bytes_indirect);
@@ -324,6 +327,15 @@
// maintains the lcp.deltamode given in the last call to detect_memory_leaks
extern LeakCheckDeltaMode MC_(detect_memory_leaks_last_delta_mode);
+// prints the list of blocks corresponding to the given loss_record_nr.
+// Returns True if loss_record_nr identifies a correct loss record from last leak search.
+// Returns False otherwise.
+Bool MC_(print_block_list) ( UInt loss_record_nr);
+
+// Prints the addresses/registers/... at which a pointer to
+// the given range [address, address+szB[ is found.
+void MC_(who_points_at) ( Addr address, SizeT szB);
+
// if delta_mode == LCD_Any, prints in buf an empty string
// otherwise prints a delta in the layout " (+%'lu)" or " (-%'lu)"
extern char * MC_(snprintf_delta) (char * buf, Int size,
@@ -334,8 +346,9 @@
Bool MC_(is_valid_aligned_word) ( Addr a );
Bool MC_(is_within_valid_secondary) ( Addr a );
-void MC_(pp_LeakError)(UInt n_this_record, UInt n_total_records,
- LossRecord* l);
+// Prints as user msg a description of the given loss record.
+void MC_(pp_LossRecord)(UInt n_this_record, UInt n_total_records,
+ LossRecord* l);
/*------------------------------------------------------------*/
Modified: trunk/memcheck/mc_leakcheck.c
===================================================================
--- trunk/memcheck/mc_leakcheck.c 2012-01-25 20:36:27 UTC (rev 12356)
+++ trunk/memcheck/mc_leakcheck.c 2012-01-26 23:13:52 UTC (rev 12357)
@@ -426,31 +426,46 @@
struct {
UInt state:2; // Reachedness.
UInt pending:1; // Scan pending.
- SizeT indirect_szB : (sizeof(SizeT)*8)-3; // If Unreached, how many bytes
- // are unreachable from here.
+ union {
+ SizeT indirect_szB : (sizeof(SizeT)*8)-3; // If Unreached, how many bytes
+ // are unreachable from here.
+ SizeT clique : (sizeof(SizeT)*8)-3; // if IndirectLeak, clique leader
+ // to which it belongs.
+ } IorC;
}
LC_Extra;
// An array holding pointers to every chunk we're checking. Sorted by address.
+// lc_chunks is initialised during leak search. It is kept after leak search
+// to support printing the list of blocks belonging to a loss record.
+// lc_chunk array can only be used validly till the next "free" operation
+// (as a free operation potentially destroys one or more chunks).
+// To detect lc_chunk is valid, we store the nr of frees operations done
+// when lc_chunk was build : lc_chunks (and lc_extras) stays valid as
+// long as no free operations has been done since lc_chunks building.
static MC_Chunk** lc_chunks;
// How many chunks we're dealing with.
static Int lc_n_chunks;
+static SizeT lc_chunks_n_frees_marker;
+// This has the same number of entries as lc_chunks, and each entry
+// in lc_chunks corresponds with the entry here (ie. lc_chunks[i] and
+// lc_extras[i] describe the same block).
+static LC_Extra* lc_extras;
+
// chunks will be converted and merged in loss record, maintained in lr_table
// lr_table elements are kept from one leak_search to another to implement
// the "print new/changed leaks" client request
static OSet* lr_table;
+// Array of sorted loss record (produced during last leak search).
+static LossRecord** lr_array;
+
// DeltaMode used the last time we called detect_memory_leaks.
// The recorded leak errors must be output using a logic based on this delta_mode.
// The below avoids replicating the delta_mode in each LossRecord.
LeakCheckDeltaMode MC_(detect_memory_leaks_last_delta_mode);
-// This has the same number of entries as lc_chunks, and each entry
-// in lc_chunks corresponds with the entry here (ie. lc_chunks[i] and
-// lc_extras[i] describe the same block).
-static LC_Extra* lc_extras;
-
// Records chunks that are currently being processed. Each element in the
// stack is an index into lc_chunks and lc_extras. Its size is
// 'lc_n_chunks' because in the worst case that's how many chunks could be
@@ -478,7 +493,6 @@
SizeT MC_(blocks_reachable) = 0;
SizeT MC_(blocks_suppressed) = 0;
-
// Determines if a pointer is to a chunk. Returns the chunk number et al
// via call-by-reference.
static Bool
@@ -587,7 +601,7 @@
}
static void
-lc_push_if_a_chunk_ptr_register(Addr ptr)
+lc_push_if_a_chunk_ptr_register(ThreadId tid, HChar* regname, Addr ptr)
{
lc_push_without_clique_if_a_chunk_ptr(ptr, /*is_prior_definite*/True);
}
@@ -596,7 +610,7 @@
// before, push it onto the mark stack. Clique is the index of the
// clique leader.
static void
-lc_push_with_clique_if_a_chunk_ptr(Addr ptr, Int clique)
+lc_push_with_clique_if_a_chunk_ptr(Addr ptr, Int clique, Int cur_clique)
{
Int ch_no;
MC_Chunk* ch;
@@ -614,7 +628,6 @@
// Note that, unlike reachable blocks, we currently don't distinguish
// between start-pointers and interior-pointers here. We probably
// should, though.
- ex->state = IndirectLeak;
lc_push(ch_no, ch);
// Add the block to the clique, and add its size to the
@@ -622,28 +635,29 @@
// itself a clique leader, it isn't any more, so add its
// indirect_szB to the new clique leader.
if (VG_DEBUG_CLIQUE) {
- if (ex->indirect_szB > 0)
+ if (ex->IorC.indirect_szB > 0)
VG_(printf)(" clique %d joining clique %d adding %lu+%lu\n",
ch_no, clique, (unsigned long)ch->szB,
- (unsigned long)ex->indirect_szB);
+ (unsigned long)ex->IorC.indirect_szB);
else
VG_(printf)(" block %d joining clique %d adding %lu\n",
ch_no, clique, (unsigned long)ch->szB);
}
- lc_extras[clique].indirect_szB += ch->szB;
- lc_extras[clique].indirect_szB += ex->indirect_szB;
- ex->indirect_szB = 0; // Shouldn't matter.
+ lc_extras[clique].IorC.indirect_szB += ch->szB;
+ lc_extras[clique].IorC.indirect_szB += ex->IorC.indirect_szB;
+ ex->state = IndirectLeak;
+ ex->IorC.clique = (SizeT) cur_clique;
}
}
static void
-lc_push_if_a_chunk_ptr(Addr ptr, Int clique, Bool is_prior_definite)
+lc_push_if_a_chunk_ptr(Addr ptr, Int clique, Int cur_clique, Bool is_prior_definite)
{
if (-1 == clique)
lc_push_without_clique_if_a_chunk_ptr(ptr, is_prior_definite);
else
- lc_push_with_clique_if_a_chunk_ptr(ptr, clique);
+ lc_push_with_clique_if_a_chunk_ptr(ptr, clique, cur_clique);
}
@@ -658,12 +672,38 @@
VG_MINIMAL_LONGJMP(memscan_jmpbuf);
}
+// lc_scan_memory has 2 modes:
+//
+// 1. Leak check mode (searched == 0).
+// -----------------------------------
// Scan a block of memory between [start, start+len). This range may
// be bogus, inaccessable, or otherwise strange; we deal with it. For each
// valid aligned word we assume it's a pointer to a chunk a push the chunk
// onto the mark stack if so.
+// clique is the "highest level clique" in which indirectly leaked blocks have
+// to be collected. cur_clique is the current "lower" level clique through which
+// the memory to be scanned has been found.
+// Example: in the below tree if A is leaked, the top level clique will
+// be A, while lower level cliques will be B and C.
+/*
+ A
+ / \
+ B C
+ / \ / \
+ D E F G
+*/
+// Proper handling of top and lowest level clique allows block_list of a loss
+// record to describe the hierarchy of indirectly leaked blocks.
+//
+// 2. Search ptr mode (searched != 0).
+// -----------------------------------
+// In this mode, searches for pointers to a specific address range
+// In such a case, lc_scan_memory just scans [start..start+len[ for pointers to searched
+// and outputs the places where searched is found. It does not recursively scans the
+// found memory.
static void
-lc_scan_memory(Addr start, SizeT len, Bool is_prior_definite, Int clique)
+lc_scan_memory(Addr start, SizeT len, Bool is_prior_definite, Int clique, Int cur_clique,
+ Addr searched, SizeT szB)
{
Addr ptr = VG_ROUNDUP(start, sizeof(Addr));
Addr end = VG_ROUNDDN(start+len, sizeof(Addr));
@@ -703,7 +743,18 @@
addr = *(Addr *)ptr;
// If we get here, the scanned word is in valid memory. Now
// let's see if its contents point to a chunk.
- lc_push_if_a_chunk_ptr(addr, clique, is_prior_definite);
+ if (searched) {
+ if (addr >= searched && addr < searched + szB) {
+ if (addr == searched)
+ VG_(umsg)("*%#lx points at %#lx\n", ptr, searched);
+ else
+ VG_(umsg)("*%#lx interior points at %lu bytes inside %#lx\n",
+ ptr, (long unsigned) addr - searched, searched);
+ MC_(pp_describe_addr) (ptr);
+ }
+ } else {
+ lc_push_if_a_chunk_ptr(addr, clique, cur_clique, is_prior_definite);
+ }
} else if (0 && VG_DEBUG_LEAKCHECK) {
VG_(printf)("%#lx not valid\n", ptr);
}
@@ -735,7 +786,8 @@
is_prior_definite = ( Possible != lc_extras[top].state );
lc_scan_memory(lc_chunks[top]->data, lc_chunks[top]->szB,
- is_prior_definite, clique);
+ is_prior_definite, clique, (clique == -1 ? -1 : top),
+ /*searched*/ 0, 0);
}
}
@@ -782,7 +834,29 @@
return 0;
}
+// allocates or reallocates lr_array, and set its elements to the loss records
+// contains in lr_table.
+static Int get_lr_array_from_lr_table(void) {
+ Int i, n_lossrecords;
+ LossRecord* lr;
+ n_lossrecords = VG_(OSetGen_Size)(lr_table);
+
+ // (re-)create the array of pointers to the loss records.
+ // lr_array is kept to allow producing the block list from gdbserver.
+ if (lr_array != NULL)
+ VG_(free)(lr_array);
+ lr_array = VG_(malloc)("mc.pr.2", n_lossrecords * sizeof(LossRecord*));
+ i = 0;
+ VG_(OSetGen_ResetIter)(lr_table);
+ while ( (lr = VG_(OSetGen_Next)(lr_table)) ) {
+ lr_array[i++] = lr;
+ }
+ tl_assert(i == n_lossrecords);
+ return n_lossrecords;
+}
+
+
static void get_printing_rules(LeakCheckParams* lcp,
LossRecord* lr,
Bool* count_as_error,
@@ -840,7 +914,6 @@
static void print_results(ThreadId tid, LeakCheckParams* lcp)
{
Int i, n_lossrecords, start_lr_output_scan;
- LossRecord** lr_array;
LossRecord* lr;
Bool is_suppressed;
SizeT old_bytes_leaked = MC_(bytes_leaked); /* to report delta in summary */
@@ -866,6 +939,28 @@
VG_(malloc), "mc.pr.1",
VG_(free));
+ // If we have loss records from a previous search, reset values to have
+ // proper printing of the deltas between previous search and this search.
+ n_lossrecords = get_lr_array_from_lr_table();
+ for (i = 0; i < n_lossrecords; i++) {
+ if (lr_array[i]->num_blocks == 0)
+ // remove from lr_table the old loss_records with 0 bytes found
+ VG_(OSetGen_Remove) (lr_table, &lr_array[i]->key);
+ else {
+ // move the leak sizes to old_* and zero the current sizes
+ // for next leak search
+ lr_array[i]->old_szB = lr_array[i]->szB;
+ lr_array[i]->old_indirect_szB = lr_array[i]->indirect_szB;
+ lr_array[i]->old_num_blocks = lr_array[i]->num_blocks;
+ lr_array[i]->szB = 0;
+ lr_array[i]->indirect_szB = 0;
+ lr_array[i]->num_blocks = 0;
+ }
+ }
+ // lr_array now contains "invalid" loss records => free it.
+ // lr_array will be re-created below with the kept and new loss records.
+ VG_(free) (lr_array);
+ lr_array = NULL;
// Convert the chunks into loss records, merging them where appropriate.
for (i = 0; i < lc_n_chunks; i++) {
@@ -882,7 +977,8 @@
// loss record's details in-situ. This is safe because we don't
// change the elements used as the OSet key.
old_lr->szB += ch->szB;
- old_lr->indirect_szB += ex->indirect_szB;
+ if (ex->state == Unreached)
+ old_lr->indirect_szB += ex->IorC.indirect_szB;
old_lr->num_blocks++;
} else {
// No existing loss record matches this chunk. Create a new loss
@@ -890,7 +986,10 @@
lr = VG_(OSetGen_AllocNode)(lr_table, sizeof(LossRecord));
lr->key = lrkey;
lr->szB = ch->szB;
- lr->indirect_szB = ex->indirect_szB;
+ if (ex->state == Unreached)
+ lr->indirect_szB = ex->IorC.indirect_szB;
+ else
+ lr->indirect_szB = 0;
lr->num_blocks = 1;
lr->old_szB = 0;
lr->old_indirect_szB = 0;
@@ -898,16 +997,10 @@
VG_(OSetGen_Insert)(lr_table, lr);
}
}
- n_lossrecords = VG_(OSetGen_Size)(lr_table);
- // Create an array of pointers to the loss records.
- lr_array = VG_(malloc)("mc.pr.2", n_lossrecords * sizeof(LossRecord*));
- i = 0;
- VG_(OSetGen_ResetIter)(lr_table);
- while ( (lr = VG_(OSetGen_Next)(lr_table)) ) {
- lr_array[i++] = lr;
- }
- tl_assert(i == n_lossrecords);
+ // (re-)create the array of pointers to the (new) loss records.
+ n_lossrecords = get_lr_array_from_lr_table ();
+ tl_assert(VG_(OSetGen_Size)(lr_table) == n_lossrecords);
// Sort the array by loss record sizes.
VG_(ssort)(lr_array, n_lossrecords, sizeof(LossRecord*),
@@ -980,25 +1073,6 @@
}
}
- for (i = 0; i < n_lossrecords; i++)
- {
- if (lr->num_blocks == 0)
- // remove from lr_table the old loss_records with 0 bytes found
- VG_(OSetGen_Remove) (lr_table, &lr_array[i]->key);
- else
- {
- // move the leak sizes to old_* and zero the current sizes
- // for next leak search
- lr_array[i]->old_szB = lr_array[i]->szB;
- lr_array[i]->old_indirect_szB = lr_array[i]->indirect_szB;
- lr_array[i]->old_num_blocks = lr_array[i]->num_blocks;
- lr_array[i]->szB = 0;
- lr_array[i]->indirect_szB = 0;
- lr_array[i]->num_blocks = 0;
- }
- }
- VG_(free)(lr_array);
-
if (VG_(clo_verbosity) > 0 && !VG_(clo_xml)) {
char d_bytes[20];
char d_blocks[20];
@@ -1053,6 +1127,157 @@
}
}
+// print recursively all indirectly leaked blocks collected in clique.
+static void print_clique (Int clique, UInt level)
+{
+ Int ind;
+ Int i, n_lossrecords;;
+
+ n_lossrecords = VG_(OSetGen_Size)(lr_table);
+
+ for (ind = 0; ind < lc_n_chunks; ind++) {
+ LC_Extra* ind_ex = &(lc_extras)[ind];
+ if (ind_ex->state == IndirectLeak && ind_ex->IorC.clique == (SizeT) clique) {
+ MC_Chunk* ind_ch = lc_chunks[ind];
+ LossRecord* ind_lr;
+ LossRecordKey ind_lrkey;
+ Int lr_i;
+ ind_lrkey.state = ind_ex->state;
+ ind_lrkey.allocated_at = ind_ch->where;
+ ind_lr = VG_(OSetGen_Lookup)(lr_table, &ind_lrkey);
+ for (lr_i = 0; lr_i < n_lossrecords; lr_i++)
+ if (ind_lr == lr_array[lr_i])
+ break;
+ for (i = 0; i < level; i++)
+ VG_(umsg)(" ");
+ VG_(umsg)("%p[%lu] indirect loss record %d\n",
+ (void *)ind_ch->data, (unsigned long)ind_ch->szB,
+ lr_i+1); // lr_i+1 for user numbering.
+ if (lr_i >= n_lossrecords)
+ VG_(umsg)
+ ("error: no indirect loss record found for %p[%lu]?????\n",
+ (void *)ind_ch->data, (unsigned long)ind_ch->szB);
+ print_clique(ind, level+1);
+ }
+ }
+ }
+
+Bool MC_(print_block_list) ( UInt loss_record_nr)
+{
+ Int i, n_lossrecords;
+ LossRecord* lr;
+
+ if (lr_table == NULL || lc_chunks == NULL || lc_extras == NULL) {
+ VG_(umsg)("Can't print block list : no valid leak search result\n");
+ return False;
+ }
+
+ if (lc_chunks_n_frees_marker != MC_(get_cmalloc_n_frees)()) {
+ VG_(umsg)("Can't print obsolete block list : redo a leak search first\n");
+ return False;
+ }
+
+ n_lossrecords = VG_(OSetGen_Size)(lr_table);
+ if (loss_record_nr >= n_lossrecords)
+ return False; // Invalid loss record nr.
+
+ tl_assert (lr_array);
+ lr = lr_array[loss_record_nr];
+
+ // (re-)print the loss record details.
+ // (+1 on loss_record_nr as user numbering for loss records starts at 1).
+ MC_(pp_LossRecord)(loss_record_nr+1, n_lossrecords, lr);
+
+ // Match the chunks with loss records.
+ for (i = 0; i < lc_n_chunks; i++) {
+ MC_Chunk* ch = lc_chunks[i];
+ LC_Extra* ex = &(lc_extras)[i];
+ LossRecord* old_lr;
+ LossRecordKey lrkey;
+ lrkey.state = ex->state;
+ lrkey.allocated_at = ch->where;
+
+ old_lr = VG_(OSetGen_Lookup)(lr_table, &lrkey);
+ if (old_lr) {
+ // We found an existing loss record matching this chunk.
+ // If this is the loss record we are looking for, then output the pointer.
+ if (old_lr == lr_array[loss_record_nr]) {
+ VG_(umsg)("%p[%lu]\n",
+ (void *)ch->data, (unsigned long) ch->szB);
+ if (ex->state != Reachable) {
+ // We can print the clique in all states, except Reachable.
+ // In Unreached state, lc_chunk[i] is the clique leader.
+ // In IndirectLeak, lc_chunk[i] might have been a clique leader
+ // which was later collected in another clique.
+ // For Possible, lc_chunk[i] might be the top of a clique
+ // or an intermediate clique.
+ print_clique(i, 1);
+ }
+ }
+ } else {
+ // No existing loss record matches this chunk ???
+ VG_(umsg)("error: no loss record found for %p[%lu]?????\n",
+ (void *)ch->data, (unsigned long) ch->szB);
+ }
+ }
+ return True;
+}
+
+// If searched = 0, scan memory root set, pushing onto the mark stack the blocks
+// encountered.
+// Otherwise (searched != 0), scan the memory root set searching for ptr pointing
+// inside [searched, searched+szB[.
+static void scan_memory_root_set(Addr searched, SizeT szB)
+{
+ Int i;
+ Int n_seg_starts;
+ Addr* seg_starts = VG_(get_segment_starts)( &n_seg_starts );
+
+ tl_assert(seg_starts && n_seg_starts > 0);
+
+ lc_scanned_szB = 0;
+
+ // VG_(am_show_nsegments)( 0, "leakcheck");
+ for (i = 0; i < n_seg_starts; i++) {
+ SizeT seg_size;
+ NSegment const* seg = VG_(am_find_nsegment)( seg_starts[i] );
+ tl_assert(seg);
+
+ if (seg->kind != SkFileC && seg->kind != SkAnonC) continue;
+ if (!(seg->hasR && seg->hasW)) continue;
+ if (seg->isCH) continue;
+
+ // Don't poke around in device segments as this may cause
+ // hangs. Exclude /dev/zero just in case someone allocated
+ // memory by explicitly mapping /dev/zero.
+ if (seg->kind == SkFileC
+ && (VKI_S_ISCHR(seg->mode) || VKI_S_ISBLK(seg->mode))) {
+ HChar* dev_name = VG_(am_get_filename)( (NSegment*)seg );
+ if (dev_name && 0 == VG_(strcmp)(dev_name, "/dev/zero")) {
+ // Don't skip /dev/zero.
+ } else {
+ // Skip this device mapping.
+ continue;
+ }
+ }
+
+ if (0)
+ VG_(printf)("ACCEPT %2d %#lx %#lx\n", i, seg->start, seg->end);
+
+ // Scan the segment. We use -1 for the clique number, because this
+ // is a root-set.
+ seg_size = seg->end - seg->start + 1;
+ if (VG_(clo_verbosity) > 2) {
+ VG_(message)(Vg_DebugMsg,
+ " Scanning root segment: %#lx..%#lx (%lu)\n",
+ seg->start, seg->end, seg_size);
+ }
+ lc_scan_memory(seg->start, seg_size, /*is_prior_definite*/True,
+ /*clique*/-1, /*cur_clique*/-1,
+ searched, szB);
+ }
+}
+
/*------------------------------------------------------------*/
/*--- Top-level entry point. ---*/
/*------------------------------------------------------------*/
@@ -1066,16 +1291,22 @@
MC_(detect_memory_leaks_last_delta_mode) = lcp->deltamode;
// Get the chunks, stop if there were none.
+ if (lc_chunks) {
+ VG_(free)(lc_chunks);
+ lc_chunks = NULL;
+ }
lc_chunks = find_active_chunks(&lc_n_chunks);
+ lc_chunks_n_frees_marker = MC_(get_cmalloc_n_fr...
[truncated message content] |
|
From: Alexander P. <gl...@go...> - 2012-01-26 15:12:23
|
> There's a couple of things you can try. First you can try to see > if your app is doing some kind of out of range memory access that > Memcheck can't detect. > > * increase the free block queue size as much as you can, with > the --freelist-vol= and --freelist-big-blocks= flags. This > increases Memcheck's ability to detect access-after-free > errors. > > * increase the default redzone size for client (application) heap > blocks by changing MC_MALLOC_REDZONE_SZB in memcheck/mc_include.h > to (eg) 128. This will massively increase Memcheck's memory > consumption, but it will also make it possible to detect overruns > of up to 128 bytes. > > Secondly you can try to see if there is some heap corruption for > non-application blocks. > > * Do the same but for the other arenas, which hold non-application > blocks. Do this by changing the value 4 (3rd param) in the > 7 back-to-back calls to arena_init in m_mallocfree.c. These > red zones are checked at block free time. > > I just tested this using the patch shown below. Unfortunately it > detects underruns of the test block, but not overruns for some > reason. Maybe you can figure out why. > > J Thanks for your comments! So far I've tried redzone sizes up to 256 bytes. Some combinations of application/non-application redzones made the crashes disappear, with others the test would crash at a different place (always in the userspace memory allocation). No memory errors were reported by Memcheck prior to those crashes (I've patched Valgrind to print the suppressed errors as well). I am now trying to add magic bits to the fields of Block and check them on every access. My another guess is that the corruption can be caused by some memory allocation routines we do not wrap, which mess up with Valgrind's allocations. |
|
From: Julian S. <js...@ac...> - 2012-01-26 09:10:07
|
There's a couple of things you can try. First you can try to see
if your app is doing some kind of out of range memory access that
Memcheck can't detect.
* increase the free block queue size as much as you can, with
the --freelist-vol= and --freelist-big-blocks= flags. This
increases Memcheck's ability to detect access-after-free
errors.
* increase the default redzone size for client (application) heap
blocks by changing MC_MALLOC_REDZONE_SZB in memcheck/mc_include.h
to (eg) 128. This will massively increase Memcheck's memory
consumption, but it will also make it possible to detect overruns
of up to 128 bytes.
Secondly you can try to see if there is some heap corruption for
non-application blocks.
* Do the same but for the other arenas, which hold non-application
blocks. Do this by changing the value 4 (3rd param) in the
7 back-to-back calls to arena_init in m_mallocfree.c. These
red zones are checked at block free time.
I just tested this using the patch shown below. Unfortunately it
detects underruns of the test block, but not overruns for some
reason. Maybe you can figure out why.
J
Index: coregrind/m_main.c
===================================================================
--- coregrind/m_main.c (revision 12354)
+++ coregrind/m_main.c (working copy)
@@ -1547,6 +1547,7 @@
//--------------------------------------------------------------
VG_(debugLog)(1, "main", "Starting the dynamic memory manager\n");
{ void* p = VG_(malloc)( "main.vm.1", 12345 );
+ ((UChar*)p)[-1] = 42;
if (p) VG_(free)( p );
}
VG_(debugLog)(1, "main", "Dynamic memory manager is running\n");
On Wednesday, January 25, 2012, Alexander Potapenko wrote:
> Hi all,
>
> We're facing some crashes of the Chromium tests under Memcheck on Mac
> OS, see the log example below.
> Those are generally flaky (e.g. they happen only when a test is ran in
> the cloud, and it's hard to reproduce the crash in an interactive
> shell even on the same machine),
> but they've been occurring for more than a year
> (http://code.google.com/p/chromium/issues/detail?id=51716 contains
> some witnesses, but they're of little interest) for wide ranges of
> Chromium and Valgrind versions.
>
> The Thread 1 stack, together with some other observations, makes me
> think this is a heap corruption.
> My question is whether it's possible to detect any wild writes to
> Memcheck's heap.
> I think the best approach would be to mark all the core data
> structures unaddressable, but it can be hard because VG_(arena_malloc)
> knows nothing about Memcheck.
>
> ==========================================
> --42768-- src/xcodebuild/Release/unit_tests:
> --42768-- dSYM directory is missing; consider using --dsymutil=yes
> --42768-- VALGRIND INTERNAL ERROR: Valgrind received a signal 11
> (SIGSEGV) - exiting
> --42768-- si_code=1; Faulting address: 0x726F7065; sp: 0xf3cbcb24
>
> valgrind: the 'impossible' happened:
> Killed by fatal signal
> ==42768== at 0x3802BB2A: ???
> ==42768== by 0x3802CCA7: ???
> ==42768== by 0x6F666561: ???
>
> sched status:
> running_tid=1
>
> Thread 1: status = VgTs_Runnable
> ==42768== at 0xF5698E2: _Znam (vg_replace_malloc.c:360)
> ==42768== by 0x46C5:
> _ZN7testing8internal6String16ConstructNonNullEPKcm (in
> src/xcodebuild/Release/unit_tests)
> ==42768== by 0x12938: _ZN7testing8internal6StringC2EPKc (in
> src/xcodebuild/Release/unit_tests)
> ==42768== by 0x12539: _ZN7testing8internal6StringaSEPKc (in
> src/xcodebuild/Release/unit_tests)
> ==42768== by 0x1A80A37:
> _ZN7testing8internal15UnitTestOptions17FilterMatchesTestERKNS0_6StringES4_
> (in src/xcodebuild/Release/unit_tests)
> ==42768== by 0x1A87C14:
> _ZN7testing8internal12UnitTestImpl11FilterTestsENS1_18ReactionToShardingE
> (in src/xcodebuild/Release/unit_tests)
> ==42768== by 0x1A873EC:
> _ZN7testing8internal12UnitTestImpl11RunAllTestsEv (in
> src/xcodebuild/Release/unit_tests)
> ==42768== by 0x1A8CD7E:
> _ZN7testing8internal38HandleSehExceptionsInMethodIfSupportedINS0_12UnitTest
> ImplEbEET0_PT_MS4_FS3_vEPKc (in src/xcodebuild/Release/unit_tests)
> ==42768== by 0x1A89F4A:
> _ZN7testing8internal35HandleExceptionsInMethodIfSupportedINS0_12UnitTestImp
> lEbEET0_PT_MS4_FS3_vEPKc (in src/xcodebuild/Release/unit_tests)
> ==42768== by 0x1A87333: _ZN7testing8UnitTest3RunEv (in
> src/xcodebuild/Release/unit_tests)
> ==42768== by 0x3C692D9: _ZN4base9TestSuite3RunEv (in
> src/xcodebuild/Release/unit_tests)
> ==42768== by 0x3CA6448: _ZN17UnitTestTestSuite3RunEv (in
> src/xcodebuild/Release/unit_tests)
> ==42768== by 0x1ADC5C2: main (in src/xcodebuild/Release/unit_tests)
>
> Thread 2: status = VgTs_WaitSys
> ==42768== at 0xF57D1A2: semaphore_wait_trap (in
> /usr/lib/libSystem.B.dylib) ==42768== by 0x22E849F:
> _ZN2v88internal15RuntimeProfiler27WaitForSomeIsolateToEnterJSEv (in
> src/xcodebuild/Release/unit_tests)
> ==42768== by 0x22E8567:
> _ZN2v88internal26RuntimeProfilerRateLimiter18SuspendIfNecessaryEv (in
> src/xcodebuild/Release/unit_tests)
> ==42768== by 0x23C6CCA: _ZN2v88internal13SamplerThread3RunEv (in
> src/xcodebuild/Release/unit_tests)
> ==42768== by 0x23C652E: _ZN2v88internalL11ThreadEntryEPv (in
> src/xcodebuild/Release/unit_tests)
> ==42768== by 0xF5AE054: _pthread_start (in /usr/lib/libSystem.B.dylib)
> ==42768== by 0xF5ADF11: thread_start (in /usr/lib/libSystem.B.dylib)
> ==========================================
>
>
> Thanks in advance,
> Alexander Potapenko
> Software Engineer
> Google Moscow
>
> ---------------------------------------------------------------------------
> --- Keep Your Developer Skills Current with LearnDevNow!
> The most comprehensive online learning library for Microsoft developers
> is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
> Metro Style Apps, more. Free future releases when you subscribe now!
> http://p.sf.net/sfu/learndevnow-d2d
> _______________________________________________
> Valgrind-developers mailing list
> Val...@li...
> https://lists.sourceforge.net/lists/listinfo/valgrind-developers
|
|
From: Philippe W. <phi...@sk...> - 2012-01-26 04:34:50
|
valgrind revision: 12356 VEX revision: 2243 C compiler: gcc (GCC) 4.6.2 20111027 (Red Hat 4.6.2-1) Assembler: GNU assembler version 2.21.53.0.1-3.fc16 20110716 C library: GNU C Library development release version 2.14.90 uname -mrs: Linux 3.1.0-0.rc9.git0.2.fc16.kh.ppc64 ppc64 Vendor version: Fedora release 16 (Verne) Nightly build on gcc110 ( Fedora release 16 (Verne), ppc64 ) Started at 2012-01-25 20:00:07 PST Ended at 2012-01-25 20:34:11 PST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 507 tests, 8 stderr failures, 8 stdout failures, 1 stderrB failure, 1 stdoutB failure, 2 post failures == gdbserver_tests/mcmain_pic (stdout) gdbserver_tests/mcmain_pic (stderr) gdbserver_tests/mcmain_pic (stdoutB) gdbserver_tests/mcmain_pic (stderrB) memcheck/tests/ppc32/power_ISA2_05 (stdout) memcheck/tests/ppc32/power_ISA2_05 (stderr) memcheck/tests/ppc64/power_ISA2_05 (stdout) memcheck/tests/ppc64/power_ISA2_05 (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) massif/tests/big-alloc (post) massif/tests/deep-D (post) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) |
|
From: Rich C. <rc...@wi...> - 2012-01-26 04:26:56
|
valgrind revision: 12356
VEX revision: 2243
C compiler: gcc (SUSE Linux) 4.6.2
Assembler: GNU assembler (GNU Binutils; openSUSE Factory) 2.21.1
C library: GNU C Library stable release version 2.14.1 (20111007), by Roland McGrath et al.
uname -mrs: Linux 3.1.0-1-desktop x86_64
Vendor version: Welcome to openSUSE 12.1 "Asparagus" RC 1 - Kernel %r (%t).
Nightly build on groovy ( gcc 4.6.1 Linux 3.1.0-1-desktop x86_64 )
Started at 2012-01-25 21:55:01 CST
Ended at 2012-01-25 22:26:45 CST
Results unchanged from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 600 tests, 2 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/origin5-bz2 (stderr)
memcheck/tests/overlap (stderr)
=================================================
./valgrind-new/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2012-01-25 22:11:05.191374263 -0600
+++ mssnapshot.stderrB.out 2012-01-25 22:16:41.738645637 -0600
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=f20c99249f5a5776e1377d3bd728502e3f455a3f"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=1f368f83b776815033caab6e389d7030bba4593e"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=3c6112e7d6b5cd8a95263caf838fa495bc4ac337"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2012-01-25 22:11:09.951335653 -0600
+++ origin5-bz2.stderr.out 2012-01-25 22:18:28.961776877 -0600
@@ -75,17 +75,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -131,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2012-01-25 22:11:09.907336010 -0600
+++ origin5-bz2.stderr.out 2012-01-25 22:18:28.961776877 -0600
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2012-01-25 22:11:09.884336194 -0600
+++ origin5-bz2.stderr.out 2012-01-25 22:18:28.961776877 -0600
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2012-01-25 22:11:09.969335507 -0600
+++ origin5-bz2.stderr.out 2012-01-25 22:18:28.961776877 -0600
@@ -12,7 +12,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2012-01-25 22:11:09.880336226 -0600
+++ origin5-bz2.stderr.out 2012-01-25 22:18:28.961776877 -0600
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -39,7 +39,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -50,7 +50,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -61,7 +61,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -72,7 +72,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -83,7 +83,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -94,7 +94,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -105,7 +105,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/overlap.stderr.diff
=================================================
--- overlap.stderr.exp 2012-01-25 22:11:09.917335927 -0600
+++ overlap.stderr.out 2012-01-25 22:18:36.146718677 -0600
@@ -1,9 +1,9 @@
Source and destination overlap in memcpy(0x........, 0x........, 21)
- at 0x........: memcpy (mc_replace_strmem.c:...)
+ at 0x........: memcpy@@GLIBC_2.14 (mc_replace_strmem.c:...)
by 0x........: main (overlap.c:40)
Source and destination overlap in memcpy(0x........, 0x........, 21)
- at 0x........: memcpy (mc_replace_strmem.c:...)
+ at 0x........: memcpy@@GLIBC_2.14 (mc_replace_strmem.c:...)
by 0x........: main (overlap.c:42)
Source and destination overlap in strncpy(0x........, 0x........, 21)
=================================================
./valgrind-old/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2012-01-25 21:55:18.076071244 -0600
+++ mssnapshot.stderrB.out 2012-01-25 22:00:57.708307833 -0600
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=f20c99249f5a5776e1377d3bd728502e3f455a3f"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=1f368f83b776815033caab6e389d7030bba4593e"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=3c6112e7d6b5cd8a95263caf838fa495bc4ac337"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2012-01-25 21:55:30.372971121 -0600
+++ origin5-bz2.stderr.out 2012-01-25 22:02:43.369448907 -0600
@@ -75,17 +75,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -131,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2012-01-25 21:55:30.328971479 -0600
+++ origin5-bz2.stderr.out 2012-01-25 22:02:43.369448907 -0600
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2012-01-25 21:55:30.305971663 -0600
+++ origin5-bz2.stderr.out 2012-01-25 22:02:43.369448907 -0600
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2012-01-25 21:55:30.390970974 -0600
+++ origin5-bz2.stderr.out 2012-01-25 22:02:43.369448907 -0600
@@ -12,7 +12,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2012-01-25 21:55:30.301971695 -0600
+++ origin5-bz2.stderr.out 2012-01-25 22:02:43.369448907 -0600
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -39,7 +39,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -50,7 +50,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -61,7 +61,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -72,7 +72,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -83,7 +83,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -94,7 +94,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -105,7 +105,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
=================================================
./valgrind-old/memcheck/tests/overlap.stderr.diff
=================================================
--- overlap.stderr.exp 2012-01-25 21:55:30.338971396 -0600
+++ overlap.stderr.out 2012-01-25 22:02:50.490391032 -0600
@@ -1,9 +1,9 @@
Source and destination overlap in memcpy(0x........, 0x........, 21)
- at 0x........: memcpy (mc_replace_strmem.c:...)
+ at 0x........: memcpy@@GLIBC_2.14 (mc_replace_strmem.c:...)
by 0x........: main (overlap.c:40)
Source and destination overlap in memcpy(0x........, 0x........, 21)
- at 0x........: memcpy (mc_replace_strmem.c:...)
+ at 0x........: memcpy@@GLIBC_2.14 (mc_replace_strmem.c:...)
by 0x........: main (overlap.c:42)
Source and destination overlap in strncpy(0x........, 0x........, 21)
|
|
From: Tom H. <to...@co...> - 2012-01-26 04:07:46
|
valgrind revision: 12356 VEX revision: 2243 C compiler: gcc (GCC) 4.3.0 20080428 (Red Hat 4.3.0-8) Assembler: GNU assembler version 2.18.50.0.6-2 20080403 C library: GNU C Library stable release version 2.8 uname -mrs: Linux 3.1.0-7.fc16.x86_64 x86_64 Vendor version: Fedora release 9 (Sulphur) Nightly build on bristol ( x86_64, Fedora 9 ) Started at 2012-01-26 03:40:58 GMT Ended at 2012-01-26 04:07:31 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 588 tests, 0 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == none/tests/amd64/sse4-64 (stdout) |
|
From: Tom H. <to...@co...> - 2012-01-26 03:56:50
|
valgrind revision: 12356 VEX revision: 2243 C compiler: gcc (GCC) 4.4.1 20090725 (Red Hat 4.4.1-2) Assembler: GNU assembler version 2.19.51.0.14-3.fc11 20090722 C library: GNU C Library stable release version 2.10.2 uname -mrs: Linux 3.1.0-7.fc16.x86_64 x86_64 Vendor version: Fedora release 11 (Leonidas) Nightly build on bristol ( x86_64, Fedora 11 ) Started at 2012-01-26 03:30:53 GMT Ended at 2012-01-26 03:56:31 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 590 tests, 2 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/linux/stack_switch (stderr) memcheck/tests/long_namespace_xml (stderr) none/tests/amd64/sse4-64 (stdout) |
|
From: Rich C. <rc...@wi...> - 2012-01-26 03:53:55
|
valgrind revision: 12356
VEX revision: 2243
C compiler: gcc (SUSE Linux) 4.5.1 20101208 [gcc-4_5-branch revision 167585]
Assembler: GNU assembler (GNU Binutils; openSUSE 11.4) 2.21
C library: GNU C Library stable release version 2.11.3 (20110203), by Roland McGrath et al.
uname -mrs: Linux 2.6.37.6-0.7-desktop x86_64
Vendor version: Welcome to openSUSE 11.4 "Celadon" - Kernel %r (%t).
Nightly build on ultra ( gcc 4.5.1 Linux 2.6.37.6-0.7-desktop x86_64 )
Started at 2012-01-25 21:30:01 CST
Ended at 2012-01-25 21:53:46 CST
Results unchanged from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 600 tests, 2 stderr failures, 0 stdout failures, 6 stderrB failures, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mcbreak (stderrB)
gdbserver_tests/mcclean_after_fork (stderrB)
gdbserver_tests/mcleak (stderrB)
gdbserver_tests/mcmain_pic (stderrB)
gdbserver_tests/mcvabits (stderrB)
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/linux/stack_switch (stderr)
memcheck/tests/origin5-bz2 (stderr)
=================================================
./valgrind-new/gdbserver_tests/mcbreak.stderrB.diff
=================================================
--- mcbreak.stderrB.exp 2012-01-25 21:42:06.208714545 -0600
+++ mcbreak.stderrB.out 2012-01-25 21:44:57.487282249 -0600
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
vgdb-error value changed from 999999 to 0
n_errs_found 1 (vgdb-error 0)
vgdb-error value changed from 0 to 0
=================================================
./valgrind-new/gdbserver_tests/mcclean_after_fork.stderrB.diff
=================================================
--- mcclean_after_fork.stderrB.exp 2012-01-25 21:42:06.208714545 -0600
+++ mcclean_after_fork.stderrB.out 2012-01-25 21:44:59.118135304 -0600
@@ -1,4 +1,6 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
monitor command request to kill this process
Remote connection closed
=================================================
./valgrind-new/gdbserver_tests/mcleak.stderrB.diff
=================================================
--- mcleak.stderrB.exp 2012-01-25 21:42:06.204714852 -0600
+++ mcleak.stderrB.out 2012-01-25 21:45:17.259500705 -0600
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
10 bytes in 1 blocks are still reachable in loss record ... of ...
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: f (leak-delta.c:14)
=================================================
./valgrind-new/gdbserver_tests/mcmain_pic.stderrB.diff
=================================================
--- mcmain_pic.stderrB.exp 2012-01-25 21:42:06.211714285 -0600
+++ mcmain_pic.stderrB.out 2012-01-25 21:45:18.883354390 -0600
@@ -1,3 +1,5 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
Remote connection closed
=================================================
./valgrind-new/gdbserver_tests/mcvabits.stderrB.diff
=================================================
--- mcvabits.stderrB.exp 2012-01-25 21:42:06.212714193 -0600
+++ mcvabits.stderrB.out 2012-01-25 21:45:23.713919137 -0600
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
Address 0x........ len 10 addressable
Address 0x........ is 0 bytes inside data symbol "undefined"
Address 0x........ len 10 defined
=================================================
./valgrind-new/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2012-01-25 21:42:06.211714285 -0600
+++ mssnapshot.stderrB.out 2012-01-25 21:45:26.817639480 -0600
@@ -1,5 +1,9 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=92ec8fe859846a62345f74696ab349721415587a"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-new/memcheck/tests/linux/stack_switch.stderr.diff
=================================================
--- stack_switch.stderr.exp 2012-01-25 21:42:09.844386983 -0600
+++ stack_switch.stderr.out 2012-01-25 21:46:27.630159973 -0600
@@ -0,0 +1,3 @@
+Syscall param clone(child_tidptr) contains uninitialised byte(s)
+ ...
+
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2012-01-25 21:42:10.778302840 -0600
+++ origin5-bz2.stderr.out 2012-01-25 21:46:52.074957347 -0600
@@ -75,17 +75,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -131,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2012-01-25 21:42:10.746305722 -0600
+++ origin5-bz2.stderr.out 2012-01-25 21:46:52.074957347 -0600
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2012-01-25 21:42:10.729307254 -0600
+++ origin5-bz2.stderr.out 2012-01-25 21:46:52.074957347 -0600
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2012-01-25 21:42:10.792301578 -0600
+++ origin5-bz2.stderr.out 2012-01-25 21:46:52.074957347 -0600
@@ -12,7 +12,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2012-01-25 21:42:10.727307434 -0600
+++ origin5-bz2.stderr.out 2012-01-25 21:46:52.074957347 -0600
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -39,7 +39,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -50,7 +50,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -61,7 +61,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -72,7 +72,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -83,7 +83,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -94,7 +94,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -105,7 +105,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
=================================================
./valgrind-old/gdbserver_tests/mcbreak.stderrB.diff
=================================================
--- mcbreak.stderrB.exp 2012-01-25 21:30:19.437654077 -0600
+++ mcbreak.stderrB.out 2012-01-25 21:33:16.431629508 -0600
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
vgdb-error value changed from 999999 to 0
n_errs_found 1 (vgdb-error 0)
vgdb-error value changed from 0 to 0
=================================================
./valgrind-old/gdbserver_tests/mcclean_after_fork.stderrB.diff
=================================================
--- mcclean_after_fork.stderrB.exp 2012-01-25 21:30:19.437654077 -0600
+++ mcclean_after_fork.stderrB.out 2012-01-25 21:33:18.048483130 -0600
@@ -1,4 +1,6 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
monitor command request to kill this process
Remote connection closed
=================================================
./valgrind-old/gdbserver_tests/mcleak.stderrB.diff
=================================================
--- mcleak.stderrB.exp 2012-01-25 21:30:19.433654436 -0600
+++ mcleak.stderrB.out 2012-01-25 21:33:36.565806730 -0600
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
10 bytes in 1 blocks are still reachable in loss record ... of ...
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: f (leak-delta.c:14)
=================================================
./valgrind-old/gdbserver_tests/mcmain_pic.stderrB.diff
=================================================
--- mcmain_pic.stderrB.exp 2012-01-25 21:30:19.439653894 -0600
+++ mcmain_pic.stderrB.out 2012-01-25 21:33:38.186659993 -0600
@@ -1,3 +1,5 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
Remote connection closed
=================================================
./valgrind-old/gdbserver_tests/mcvabits.stderrB.diff
=================================================
--- mcvabits.stderrB.exp 2012-01-25 21:30:19.440653802 -0600
+++ mcvabits.stderrB.out 2012-01-25 21:33:42.914232003 -0600
@@ -1,5 +1,7 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
Address 0x........ len 10 addressable
Address 0x........ is 0 bytes inside data symbol "undefined"
Address 0x........ len 10 defined
=================================================
./valgrind-old/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2012-01-25 21:30:19.440653802 -0600
+++ mssnapshot.stderrB.out 2012-01-25 21:33:46.013951384 -0600
@@ -1,5 +1,9 @@
relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
+
+
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=92ec8fe859846a62345f74696ab349721415587a"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-old/memcheck/tests/linux/stack_switch.stderr.diff
=================================================
--- stack_switch.stderr.exp 2012-01-25 21:30:22.931337749 -0600
+++ stack_switch.stderr.out 2012-01-25 21:34:45.721546139 -0600
@@ -0,0 +1,3 @@
+Syscall param clone(child_tidptr) contains uninitialised byte(s)
+ ...
+
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2012-01-25 21:30:23.868252918 -0600
+++ origin5-bz2.stderr.out 2012-01-25 21:35:09.692376151 -0600
@@ -75,17 +75,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -131,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2012-01-25 21:30:23.836255816 -0600
+++ origin5-bz2.stderr.out 2012-01-25 21:35:09.692376151 -0600
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2012-01-25 21:30:23.819257354 -0600
+++ origin5-bz2.stderr.out 2012-01-25 21:35:09.692376151 -0600
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2012-01-25 21:30:23.882251651 -0600
+++ origin5-bz2.stderr.out 2012-01-25 21:35:09.692376151 -0600
@@ -12,7 +12,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2012-01-25 21:30:23.816257626 -0600
+++ origin5-bz2.stderr.out 2012-01-25 21:35:09.692376151 -0600
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -39,7 +39,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -50,7 +50,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -61,7 +61,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -72,7 +72,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -83,7 +83,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -94,7 +94,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -105,7 +105,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
|
|
From: Tom H. <to...@co...> - 2012-01-26 03:49:44
|
valgrind revision: 12356 VEX revision: 2243 C compiler: gcc (GCC) 4.4.5 20101112 (Red Hat 4.4.5-2) Assembler: GNU assembler version 2.20.51.0.2-20.fc13 20091009 C library: GNU C Library stable release version 2.12.2 uname -mrs: Linux 3.1.0-7.fc16.x86_64 x86_64 Vendor version: Fedora release 13 (Goddard) Nightly build on bristol ( x86_64, Fedora 13 ) Started at 2012-01-26 03:21:38 GMT Ended at 2012-01-26 03:49:19 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 590 tests, 2 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/linux/stack_switch (stderr) helgrind/tests/pth_barrier3 (stderr) |
|
From: Tom H. <to...@co...> - 2012-01-26 03:41:24
|
valgrind revision: 12356 VEX revision: 2243 C compiler: gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4) Assembler: GNU assembler version 2.20.51.0.7-8.fc14 20100318 C library: GNU C Library stable release version 2.13 uname -mrs: Linux 3.1.0-7.fc16.x86_64 x86_64 Vendor version: Fedora release 14 (Laughlin) Nightly build on bristol ( x86_64, Fedora 14 ) Started at 2012-01-26 03:11:40 GMT Ended at 2012-01-26 03:41:03 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 604 tests, 2 stderr failures, 0 stdout failures, 1 stderrB failure, 2 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallWSRU (stderrB) gdbserver_tests/nlcontrolc (stdoutB) gdbserver_tests/nlpasssigalrm (stdoutB) memcheck/tests/linux/stack_switch (stderr) memcheck/tests/origin5-bz2 (stderr) |
|
From: Tom H. <to...@co...> - 2012-01-26 03:33:04
|
valgrind revision: 12356 VEX revision: 2243 C compiler: gcc (GCC) 4.6.1 20110908 (Red Hat 4.6.1-9) Assembler: GNU assembler version 2.21.51.0.6-6.fc15 20110118 C library: GNU C Library stable release version 2.14.1 uname -mrs: Linux 3.1.0-7.fc16.x86_64 x86_64 Vendor version: Fedora release 15 (Lovelock) Nightly build on bristol ( x86_64, Fedora 15 ) Started at 2012-01-26 03:02:17 GMT Ended at 2012-01-26 03:32:39 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 604 tests, 2 stderr failures, 0 stdout failures, 1 stderrB failure, 2 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallWSRU (stderrB) gdbserver_tests/nlcontrolc (stdoutB) gdbserver_tests/nlpasssigalrm (stdoutB) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) |
|
From: Tom H. <to...@co...> - 2012-01-26 03:24:02
|
valgrind revision: 12356 VEX revision: 2243 C compiler: gcc (GCC) 4.6.2 20111027 (Red Hat 4.6.2-1) Assembler: GNU assembler version 2.21.53.0.1-6.fc16 20110716 C library: GNU C Library development release version 2.14.90 uname -mrs: Linux 3.1.0-7.fc16.x86_64 x86_64 Vendor version: Fedora release 16 (Verne) Nightly build on bristol ( x86_64, Fedora 16 ) Started at 2012-01-26 02:52:18 GMT Ended at 2012-01-26 03:23:46 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 604 tests, 3 stderr failures, 0 stdout failures, 1 stderrB failure, 2 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallWSRU (stderrB) gdbserver_tests/nlcontrolc (stdoutB) gdbserver_tests/nlpasssigalrm (stdoutB) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) memcheck/tests/str_tester (stderr) |
|
From: Christian B. <bor...@de...> - 2012-01-26 03:14:06
|
valgrind revision: 12356 VEX revision: 2243 GCC version: gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973] C library: GNU C Library stable release version 2.11.1 (20100118), by Roland McGrath et al. uname -mrs: Linux 2.6.32.49-0.3-default s390x Vendor version: Welcome to SUSE Linux Enterprise Server 11 SP1 (s390x) - Kernel %r (%t). Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x) ) Started at 2012-01-26 03:45:01 CET Ended at 2012-01-26 04:13:55 CET Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 515 tests, 4 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) |
|
From: Christian B. <bor...@de...> - 2012-01-26 03:05:56
|
valgrind revision: 12356 VEX revision: 2243 GCC version: gcc (GCC) 4.5.3 20110121 (Red Hat 4.5.3-4) C library: GNU C Library stable release version 2.12.1, by Roland McGrath et al. uname -mrs: Linux 3.1.0-rc9-andreas-gde346b6-dirty s390x Vendor version: unknown Nightly build on fedora390 ( Fedora 13/14/15 mix with gcc 3.5.3 on z196 (s390x) ) Started at 2012-01-26 03:45:01 CET Ended at 2012-01-26 04:05:51 CET Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 514 tests, 4 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) |