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
(9) |
2
(19) |
|
3
(5) |
4
(20) |
5
(5) |
6
(9) |
7
(6) |
8
(8) |
9
(5) |
|
10
(5) |
11
(5) |
12
(7) |
13
(7) |
14
(6) |
15
(5) |
16
(5) |
|
17
(5) |
18
(7) |
19
(21) |
20
(9) |
21
(6) |
22
(8) |
23
(6) |
|
24
(9) |
25
(9) |
26
(8) |
27
(19) |
28
(15) |
29
(8) |
30
(5) |
|
31
(6) |
|
|
|
|
|
|
|
From: Tom H. <th...@cy...> - 2008-08-27 02:45:07
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-08-27 03:05:05 BST 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 == 437 tests, 6 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-08-27 02:43:35
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-08-27 03:25:06 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 441 tests, 9 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 441 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Aug 27 03:33:30 2008 --- new.short Wed Aug 27 03:43:43 2008 *************** *** 8,10 **** ! == 441 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) --- 8,10 ---- ! == 441 tests, 9 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) *************** *** 19,20 **** --- 19,21 ---- none/tests/mremap2 (stdout) + helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) |
|
From: Tom H. <th...@cy...> - 2008-08-27 02:26:59
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-08-27 03:00:03 BST 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 == 443 tests, 31 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: Dave N. <dc...@us...> - 2008-08-26 22:50:57
|
Is there a *.xsd or *.dtd that describes the XML that is output by the --xml option? Are there any consumers of valgrind's xml in the valgrind source tree? Other consumers? Is there any documentation or suggestions for developing an XML consumer of valgrind --xml ? |
|
From: <sv...@va...> - 2008-08-26 15:33:33
|
Author: sewardj
Date: 2008-08-26 16:33:36 +0100 (Tue, 26 Aug 2008)
New Revision: 8549
Log:
Change representation of thread shadow stacks, from an XArray of
StackFrame to a doubly linked list of StackFrames. This removes a
large number of VG_(sizeXA) and VG_(indexXA) operations from the fast
path.
Modified:
branches/SGCHECK/exp-sgcheck/sg_main.c
Modified: branches/SGCHECK/exp-sgcheck/sg_main.c
===================================================================
--- branches/SGCHECK/exp-sgcheck/sg_main.c 2008-08-26 11:12:21 UTC (rev 8548)
+++ branches/SGCHECK/exp-sgcheck/sg_main.c 2008-08-26 15:33:36 UTC (rev 8549)
@@ -652,12 +652,12 @@
//////////////////////////////////////////////////////////////
/* Each thread has:
- * a shadow stack of StackFrames
+ * a shadow stack of StackFrames, which is a double-linked list
* an stack block interval tree
*/
-static XArray* /* StackFrame */ shadowStacks[VG_N_THREADS];
+static struct _StackFrame* shadowStacks[VG_N_THREADS];
-static WordFM* /* StackTreeNode */ siTrees[VG_N_THREADS];
+static WordFM* /* StackTreeNode */ siTrees[VG_N_THREADS];
/* Additionally, there is one global variable interval tree
for the entire process.
@@ -897,10 +897,21 @@
typedef
- struct {
+ struct _StackFrame {
/* The sp when the frame was created, so we know when to get rid
of it. */
Addr creation_sp;
+ /* The stack frames for a thread are arranged as a doubly linked
+ list. Obviously the outermost frame in the stack has .outer
+ as NULL and the innermost in theory has .inner as NULL.
+ However, when a function returns, we don't delete the
+ just-vacated StackFrame. Instead, it is retained in the list
+ and will be re-used when the next call happens. This is so
+ as to avoid constantly having to dynamically allocate and
+ deallocate frames. */
+ struct _StackFrame* inner;
+ struct _StackFrame* outer;
+ Word depth; /* 0 for outermost; increases inwards */
/* Information for each memory referencing instruction, for this
instantiation of the function. The iinstances array is
operated as a simple linear-probe hash table, which is
@@ -974,6 +985,7 @@
StackFrame* frame;
tl_assert(len > 0);
for (i = 0; i < VG_N_THREADS; i++) {
+tl_assert(0);
stack = shadowStacks[i];
if (!stack)
continue;
@@ -1151,8 +1163,7 @@
ThreadId tid,
Addr ea, Addr sp, Addr fp,
UWord szB,
- XArray* /* of StackBlock */ thisInstrBlocks,
- XArray* /* of StackFrame */ thisThreadFrames )
+ XArray* /* of StackBlock */ thisInstrBlocks )
{
tl_assert(szB > 0);
/* First, look in the stack blocks accessible in this instruction's
@@ -1222,9 +1233,7 @@
/* Known at translation time: */
Word sszB, Addr ip, XArray* ip_frameBlocks )
{
- Word nFrames;
UWord szB;
- XArray* /* of StackFrame */ frames;
IInstance* iinstance;
Invar* inv;
Invar new_inv;
@@ -1235,13 +1244,9 @@
stats__total_accesses++;
tl_assert(is_sane_TId(tid));
- frames = shadowStacks[tid];
- tl_assert(frames != NULL);
- nFrames = VG_(sizeXA)( frames );
- tl_assert(nFrames > 0);
+ frame = shadowStacks[tid];
+ tl_assert(frame);
- frame = VG_(indexXA)( frames, nFrames-1 );
-
/* Find the instance info for this instruction. */
tl_assert(ip_frameBlocks);
iinstance = find_or_create_IInstance( frame, ip, ip_frameBlocks );
@@ -1260,8 +1265,7 @@
can compare it against what happens for 2nd and subsequent
accesses. */
classify_address( inv,
- tid, ea, sp, fp, szB,
- iinstance->blocks, frames );
+ tid, ea, sp, fp, szB, iinstance->blocks );
tl_assert(inv->tag != Inv_Unset);
return;
}
@@ -1269,8 +1273,7 @@
/* So generate an Invar and see if it's different from what
we had before. */
classify_address( &new_inv,
- tid, ea, sp, fp, szB,
- iinstance->blocks, frames );
+ tid, ea, sp, fp, szB, iinstance->blocks );
tl_assert(new_inv.tag != Inv_Unset);
/* Did we see something different from before? If no, then there's
@@ -1281,10 +1284,10 @@
tl_assert(inv->tag != Inv_Unset);
VG_(memset)(bufE, 0, sizeof(bufE));
- show_Invar( bufE, sizeof(bufE)-1, inv, nFrames );
+ show_Invar( bufE, sizeof(bufE)-1, inv, frame->depth );
VG_(memset)(bufA, 0, sizeof(bufA));
- show_Invar( bufA, sizeof(bufA)-1, &new_inv, nFrames );
+ show_Invar( bufA, sizeof(bufA)-1, &new_inv, frame->depth );
record_error_SorG( tid, ea, sszB, bufE, bufA );
@@ -1309,19 +1312,21 @@
Addr ip_post_call_insn,
XArray* descrs_at_call_insn )
{
- Word n;
- StackFrame callee, *caller;
+ StackFrame *callee, *caller;
tl_assert(is_sane_TId(tid));
- tl_assert(shadowStacks[tid] != NULL);
- n = VG_(sizeXA)( shadowStacks[tid] );
- tl_assert(n > 0);
+ caller = shadowStacks[tid];
+ tl_assert(caller);
- if (n > 1)
+ if (caller->outer) { /* "this is not the outermost frame" */
tl_assert(descrs_at_call_insn);
+ tl_assert(caller->outer->inner == caller);
+ tl_assert(caller->outer->depth >= 0);
+ tl_assert(1 + caller->outer->depth == caller->depth);
+ } else {
+ tl_assert(caller->depth == 0);
+ }
- caller = VG_(indexXA)( shadowStacks[tid], n-1 );
-
caller->sp_at_call = sp_at_call_insn;
caller->fp_at_call = fp_at_call_insn;
@@ -1332,17 +1337,19 @@
add_blocks_to_StackTree( siTrees[tid],
descrs_at_call_insn,
caller->blocks_added_by_call,
- n-1 /* stack depth at which these
- blocks are considered to exist*/ );
- if (0) { UWord s = VG_(sizeFM)( siTrees[tid] );
- UWord g = VG_(sizeFM)( giTree );
- Bool sb = s > stats__max_sitree_size;
- Bool gb = g > stats__max_gitree_size;
- if (sb) stats__max_sitree_size = s;
- if (gb) stats__max_gitree_size = g;
- if (sb || gb)
- VG_(printf)("new max tree sizes: S size %ld, G size %ld\n",
- stats__max_sitree_size, stats__max_gitree_size );
+ caller->depth /* stack depth at which
+ these blocks are
+ considered to exist*/ );
+ if (0) {
+ UWord s = VG_(sizeFM)( siTrees[tid] );
+ UWord g = VG_(sizeFM)( giTree );
+ Bool sb = s > stats__max_sitree_size;
+ Bool gb = g > stats__max_gitree_size;
+ if (sb) stats__max_sitree_size = s;
+ if (gb) stats__max_gitree_size = g;
+ if (sb || gb)
+ VG_(printf)("new max tree sizes: S size %ld, G size %ld\n",
+ stats__max_sitree_size, stats__max_gitree_size );
}
} else {
caller->blocks_added_by_call = NULL;
@@ -1351,18 +1358,29 @@
/* caller->blocks_added_by_call is used again (and then freed) when
this frame is removed from the stack. */
+ if (caller->inner) {
+ callee = caller->inner;
+ } else {
+ callee = pc_malloc(sizeof(StackFrame));
+ VG_(memset)(callee, 0, sizeof(StackFrame));
+ callee->outer = caller;
+ caller->inner = callee;
+ callee->depth = 1 + caller->depth;
+ tl_assert(callee->inner == NULL);
+ }
+
/* This sets up .htab, .htab_size and .htab_used */
- initialise_hash_table( &callee );
+ initialise_hash_table( callee );
- callee.creation_sp = sp_post_call_insn;
- callee.sp_at_call = 0; // not actually required ..
- callee.fp_at_call = 0; // .. these 3 initialisations are ..
- callee.blocks_added_by_call = NULL; // .. just for cleanness
+ callee->creation_sp = sp_post_call_insn;
+ callee->sp_at_call = 0; // not actually required ..
+ callee->fp_at_call = 0; // .. these 3 initialisations are ..
+ callee->blocks_added_by_call = NULL; // .. just for cleanness
- VG_(addToXA)( shadowStacks[tid], &callee );
+ shadowStacks[tid] = callee;
if (0)
- { Word d = VG_(sizeXA)( shadowStacks[tid] );
+ { Word d = callee->depth;
HChar fnname[80];
Bool ok;
Addr ip = ip_post_call_insn;
@@ -1399,17 +1417,20 @@
/* Primary remove-frame(s) routine. Called indirectly from
generated code. */
+__attribute__((noinline))
static void shadowStack_unwind ( ThreadId tid, Addr sp_now )
{
StackFrame* innermost;
tl_assert(is_sane_TId(tid));
- tl_assert(shadowStacks[tid] != NULL);
+ innermost = shadowStacks[tid];
+ tl_assert(innermost);
//VG_(printf)("UNWIND sp_new = %p\n", sp_now);
while (1) {
- Word nFrames = VG_(sizeXA)( shadowStacks[tid] );
- tl_assert(nFrames >= 0);
- if (nFrames == 0) break;
- innermost = VG_(indexXA)( shadowStacks[tid], nFrames-1 );
+ if (!innermost->outer)
+ break;
+ if (innermost->inner)
+ tl_assert(innermost->inner->outer == innermost);
+ tl_assert(innermost->outer->inner == innermost);
tl_assert(innermost->blocks_added_by_call == NULL);
if (sp_now <= innermost->creation_sp) break;
//VG_(printf)("UNWIND dump %p\n", innermost->creation_sp);
@@ -1423,14 +1444,13 @@
innermost->sp_at_call = 0;
innermost->fp_at_call = 0;
innermost->blocks_added_by_call = NULL;
- VG_(dropTailXA)( shadowStacks[tid], 1 );
+ innermost = innermost->outer;
/* So now we're "back" in the calling frame. Remove from this
thread's stack-interval-tree, the blocks added at the time of
the call. */
- nFrames = VG_(sizeXA)( shadowStacks[tid] );
- if (nFrames > 0) {
- innermost = VG_(indexXA)( shadowStacks[tid], nFrames-1 );
+
+ if (innermost->outer) { /* not at the outermost frame */
tl_assert(innermost->blocks_added_by_call != NULL);
del_blocks_from_StackTree( siTrees[tid],
innermost->blocks_added_by_call );
@@ -1441,7 +1461,7 @@
associated with the frame we just removed. */
if (0) {
- Word d = nFrames;
+ Word d = innermost->depth;
while (d > 0) {
VG_(printf)(" ");
d--;
@@ -1450,6 +1470,9 @@
}
}
+
+ tl_assert(innermost);
+ shadowStacks[tid] = innermost;
}
@@ -1742,20 +1765,21 @@
// //
//////////////////////////////////////////////////////////////
-/* Make a new shadow stack, with a creation_sp of effectively infinity,
- so that the top frame can never be removed. */
-static XArray* /* of StackFrame */ new_empty_Stack ( void )
+/* Make a new empty stack frame that is suitable for being the
+ outermost frame in a stack. It has a creation_sp of effectively
+ infinity, so it can never be removed. */
+static StackFrame* new_root_StackFrame ( void )
{
- StackFrame sframe;
- XArray* st = VG_(newXA)( pc_malloc, pc_free, sizeof(StackFrame) );
- VG_(memset)( &sframe, 0, sizeof(sframe) );
- sframe.creation_sp = ~0UL;
+ StackFrame* sframe = pc_malloc(sizeof(StackFrame));
+ VG_(memset)( sframe, 0, sizeof(*sframe) );
+ sframe->creation_sp = ~0UL;
/* This sets up .htab, .htab_size and .htab_used */
- initialise_hash_table( &sframe );
+ initialise_hash_table( sframe );
- VG_(addToXA)( st, &sframe );
- return st;
+ /* ->depth, ->outer, ->inner are 0, NULL, NULL */
+
+ return sframe;
}
/* Primary routine for setting up the shadow stack for a new thread.
@@ -1771,17 +1795,45 @@
if (parent == VG_INVALID_THREADID) {
/* creating the main thread's stack */
} else {
- tl_assert(0);
+ tl_assert(is_sane_TId(parent));
+ tl_assert(parent != child);
tl_assert(shadowStacks[parent] != NULL);
+ tl_assert(siTrees[parent] != NULL);
}
- if (shadowStacks[child] != NULL) {
+
+ /* Create the child's stack. Bear in mind we may be re-using
+ it. */
+ if (shadowStacks[child] == NULL) {
+ /* First use of this stack. Just allocate an initial frame. */
+ tl_assert(siTrees[child] == NULL);
+ } else {
+ StackFrame *frame, *frame2;
+ /* re-using a stack. */
+ /* get rid of the interval tree */
tl_assert(siTrees[child] != NULL);
- VG_(deleteXA)( shadowStacks[child] );
delete_StackTree( siTrees[child] );
- } else {
- tl_assert(siTrees[child] == NULL);
+ siTrees[child] = NULL;
+ /* Throw away all existing frames. */
+ frame = shadowStacks[child];
+ while (frame->outer)
+ frame = frame->outer;
+ tl_assert(frame->depth == 0);
+ while (frame) {
+ frame2 = frame->inner;
+ if (frame2) tl_assert(1 + frame->depth == frame2->depth);
+ pc_free(frame);
+ frame = frame2;
+ }
+ shadowStacks[child] = NULL;
}
- shadowStacks[child] = new_empty_Stack();
+
+ tl_assert(shadowStacks[child] == NULL);
+ tl_assert(siTrees[child] == NULL);
+
+ /* Set up the initial stack frame. */
+ shadowStacks[child] = new_root_StackFrame();
+
+ /* and set up the child's stack block interval tree. */
siTrees[child] = new_StackTree();
}
@@ -1792,12 +1844,13 @@
frame for the thread. */
static void shadowStack_set_initial_SP ( ThreadId tid )
{
- StackFrame* sfp;
+ StackFrame* sf;
tl_assert(is_sane_TId(tid));
- tl_assert(shadowStacks[tid] != NULL);
- tl_assert( VG_(sizeXA)(shadowStacks[tid]) == 1 );
- sfp = VG_(indexXA)( shadowStacks[tid], 0 );
- tl_assert(sfp->creation_sp == ~0UL);
+ sf = shadowStacks[tid];
+ tl_assert(sf != NULL);
+ tl_assert(sf->outer == NULL);
+ tl_assert(sf->inner == NULL);
+ tl_assert(sf->creation_sp == ~0UL);
shadowStack_new_frame( tid, 0, VG_(get_SP)(tid),
0, VG_(get_IP)(tid), NULL );
}
|
|
From: <sv...@va...> - 2008-08-26 11:12:16
|
Author: sewardj
Date: 2008-08-26 12:12:21 +0100 (Tue, 26 Aug 2008)
New Revision: 8548
Log:
Quick-n-dirty hack which limits the size of the trees used to store
conflicting-access history information to about 4 million elements.
This is intended to reduce the space needed to store access histories,
by discarding very old history. Also contains #if 0'd beginnings of a
better solution.
Modified:
branches/YARD/helgrind/libhb_core.c
Modified: branches/YARD/helgrind/libhb_core.c
===================================================================
--- branches/YARD/helgrind/libhb_core.c 2008-08-25 12:10:14 UTC (rev 8547)
+++ branches/YARD/helgrind/libhb_core.c 2008-08-26 11:12:21 UTC (rev 8548)
@@ -627,8 +627,8 @@
/* Add (k,v,w) to fm. If a binding for k already exists, it is
updated to map to this new (v,w). In that case we should really
return the previous (v,w) so that caller can finalise them. Oh
- well. */
-void HG_(addToFM) ( WordFM* fm, UWord k, UWord v, UWord w );
+ well. Returns True if a binding for k already exists.*/
+Bool HG_(addToFM) ( WordFM* fm, UWord k, UWord v, UWord w );
// Delete key from fm, returning associated key and vals if found
Bool HG_(delFromFM) ( WordFM* fm,
@@ -1371,7 +1371,7 @@
}
/* Add (k,v,w) to fm. */
-void HG_(addToFM) ( WordFM* fm, UWord k, UWord v, UWord w )
+Bool HG_(addToFM) ( WordFM* fm, UWord k, UWord v, UWord w )
{
MaybeWord oldV;
AvlNode* node;
@@ -1386,6 +1386,7 @@
// fm->vFin( oldV.w );
if (oldV.b)
fm->dealloc(node);
+ return oldV.b;
}
// Delete key from fm, returning associated key and vals if found
@@ -5165,36 +5166,218 @@
// //
/////////////////////////////////////////////////////////
-static WordFM* /* Addr -> struct EC_* */ event_map = NULL;
+#define N_EVENT_MAPS 4
+#define N_EVENTS_PER_MAP (1*1000*1000)
-static void event_map_init ( void ) {
- tl_assert(event_map == NULL);
- event_map = HG_(newFM)( main_zalloc, main_dealloc,
- NULL/*unboxed word cmp*/ );
- tl_assert(event_map != NULL);
+static WordFM* /* Addr -> (struct EC_*, Thr*) */
+ event_map[N_EVENT_MAPS];
+
+static Word event_map_n[N_EVENT_MAPS];
+
+static Word event_map_curr;
+
+
+
+static void event_map_init ( void )
+{
+ Word i;
+ for (i = 0; i < N_EVENT_MAPS; i++) {
+ event_map[i] = NULL;
+ event_map_n[i] = 0;
+ }
+
+ event_map_curr = 0;
+ event_map[event_map_curr]
+ = HG_(newFM)( main_zalloc, main_dealloc,
+ NULL/*unboxed word cmp*/ );
+ VG_(printf)("libhb: event map %ld in use\n", event_map_curr);
}
-static void event_map_bind ( Addr a, struct EC_* ec, Thr* thr ) {
- if (0) return;
- HG_(addToFM)( event_map, (UWord)a, (UWord)ec, (UWord)thr );
+static void event_map_bind ( Addr a, struct EC_* ec, Thr* thr )
+{
+ Bool b;
+ if (0) return;
+ b = HG_(addToFM)( event_map[event_map_curr],
+ (UWord)a, (UWord)ec, (UWord)thr );
+ if (!b) {
+ /* not already present */
+ event_map_n[event_map_curr]++;
+
+ if (event_map_n[event_map_curr] >= N_EVENTS_PER_MAP) {
+ /* this tree is full. move on to the next one. */
+ event_map_curr++;
+ if (event_map_curr == N_EVENT_MAPS) event_map_curr = 0;
+ tl_assert(event_map_curr >= 0 && event_map_curr < N_EVENT_MAPS);
+ /* Throw away the contents of the oldest tree we have, if any. */
+ if (event_map[event_map_curr]) {
+ VG_(printf)("libhb: event map %ld dumped\n", event_map_curr);
+ /* check the counting mechanism is working correctly */
+ tl_assert(HG_(sizeFM)(event_map[event_map_curr])
+ == event_map_n[event_map_curr]);
+ HG_(deleteFM)(event_map[event_map_curr], NULL, NULL, NULL);
+ event_map[event_map_curr] = NULL;
+ event_map_n[event_map_curr] = 0;
+ } else {
+ tl_assert(event_map_n[event_map_curr] == 0);
+ }
+
+ VG_(printf)("libhb: event map %ld in use\n", event_map_curr);
+ event_map[event_map_curr]
+ = HG_(newFM)( main_zalloc, main_dealloc,
+ NULL/*unboxed word cmp*/ );
+ }
+
+ }
}
static
-Bool event_map_lookup ( struct EC_** resEC, Thr** resThr, Addr a ) {
+Bool event_map_lookup ( struct EC_** resEC, Thr** resThr, Addr a )
+{
+ /* Look through all the event maps, from youngest to oldest. */
UWord key, val, wal;
- if (HG_(lookupFM)( event_map, &key, &val, &wal, (UWord)a )) {
- tl_assert(key == a);
- *resEC = (struct EC_*)val;
- *resThr = (Thr*)wal;
- return True;
- } else {
- return False;
+ Word i, n;
+ n = event_map_curr;
+ for (i = 0; i < N_EVENT_MAPS; i++) {
+ WordFM* map = event_map[n];
+ if (map && HG_(lookupFM)( map, &key, &val, &wal, (UWord)a )) {
+ tl_assert(key == a);
+ *resEC = (struct EC_*)val;
+ *resThr = (Thr*)wal;
+ return True;
+ }
+ n++;
+ if (n == N_EVENT_MAPS) n = 0;
+ tl_assert(n >= 0 && n < N_EVENT_MAPS);
}
+ return False;
}
+#if 0
/////////////////////////////////////////////////////////
// //
+// Change-event map2 //
+// //
+/////////////////////////////////////////////////////////
+
+#define N_FRAMES 8
+#define N_TREES 4
+
+typedef
+ struct {
+ /* Put .frames first so that it has offset zero within the
+ element. This allows us to use RCEC__cmp as the comparison
+ fn in the oset. */
+ UWord frames[N_FRAMES];
+ UWord rc;
+ }
+ RCEC;
+
+static OSet* contextTree = NULL; /* OSet* of RC_EC */
+
+
+/* Gives an arbitrary total order on RCEC .frames fields */
+static Word RCEC__cmp ( RCEC* ec1, RCEC* ec2 ) {
+ Word i;
+ for (i = 0; i < N_FRAMES; i++) {
+ if (ec1->frames[i] < ec2->frames[i]) return -1;
+ if (ec1->frames[i] > ec2->frames[i]) return 1;
+ }
+ return 0;
+}
+
+
+/* Dec the ref of this EC_RC, and if it becomes zero,
+ delete it from the contextTree. */
+static void ctxt__rcdec ( RC_EC* ec )
+{
+ tl_assert(ec->rc > 0);
+ ec->rc--;
+ if (ec->rc == 0) {
+ void* nd = OSetGen_Remove( contextTree, ec );
+ tl_assert(nd); /* must be in the tree */
+ VG_(OSetGen_FreeNode)( contextTree, nd );
+ }
+}
+
+static void ctxt__rcinc ( RC_EC* ec )
+{
+ ec->rc++;
+}
+
+/* Find the given RCEC in the tree, and return a pointer to it. Or,
+ if not present, add the given one to the tree (by making a copy of
+ it, so the caller can immediately deallocate the original) and
+ return a pointer to the copy. Note that the inserted node will
+ have .rc of zero and so the caller must immediatly increment it. */
+static RCEC* ctxt__find_or_add ( RCEC* example )
+{
+ tl_assert(example->rc == 0);
+ RCEC* copy = VG_(OSetGen_Lookup)( contextTree, example );
+ if (!copy) {
+ copy = VG_(OSetGen_AllocNode)( contextTree, sizeof(RCEC) );
+ VG_(memcpy)(copy, example, sizeof(RCEC));
+ VG_(OSetGen_Insert)( contextTree, copy );
+ }
+ return copy;
+}
+
+/////////////////////////////////////////////////////////
+
+typedef
+ struct {
+ Addr ea;
+ RCEC* rcec;
+ Thr* thr;
+ }
+ OldRef;
+
+static Word OldRef__cmp ( OldRef* r1, OldRef* r2 ) {
+ if (r1->ea < r2->ea) return -1;
+ if (r1->ea > r2->ea) return 1;
+ return 0;
+}
+
+static OSet* oldrefTrees[N_TREES]; /* OSet* of OldRef */
+static Word oldrefTSizes[N_TREES]; /* # elements in corresponding OSet */
+static Word oldrefCurr;
+
+static void event_map_bind ( Addr a, struct EC_* ec, Thr* thr ) {
+ OldRef* prev = VG_(OSetGen_Lookup)( oldrefTrees[oldrefCurr],
+ &a );
+ if (prev) {
+
+ }
+}
+
+/////////////////////////////////////////////////////////
+
+static void event_map2_init ( void )
+{
+ Word i;
+ tl_assert(offsetof(RCEC,frames) == 0);
+ tl_assert(!contextTree);
+ contextTree = OSetGen_Create( offsetof(RCEC,frames), RCEC__cmp,
+ main_zalloc, main_free );
+ tl_assert(contextTree);
+
+ for (i = 0; i < N_TREES; i++) {
+ oldrefTrees[i] = NULL;
+ oldrefTSizes[i] = 0;
+ }
+
+ tl_assert(offsetof(OldRef,ea) == 0);
+ oldrefCurr = 0;
+ oldrefTrees[oldrefCurr] = VG_(OSetGen_Create)( offsetof(OldRef,ea),
+ OldRef__cmp,
+ main_zalloc, main_free );
+ tl_assert(oldrefTrees[oldrefCurr]);
+}
+#endif
+
+
+/////////////////////////////////////////////////////////
+// //
// Core MSM //
// //
/////////////////////////////////////////////////////////
@@ -5203,7 +5386,7 @@
#define MSM_RACE2ERR 1
-#define MSM_CHECK 1
+#define MSM_CHECK 0
static ULong stats__msm_read = 0;
static ULong stats__msm_read_change = 0;
@@ -5603,8 +5786,8 @@
);
VG_(printf)( " libhb: %lu entries in vts_set\n",
HG_(sizeFM)( vts_set ) );
- VG_(printf)( " libhb: %lu entries in event_map\n",
- HG_(sizeFM)( event_map ) );
+ //VG_(printf)( " libhb: %lu entries in event_map\n",
+ // HG_(sizeFM)( event_map ) );
mem_report();
#if 0
|
|
From: Tom H. <th...@cy...> - 2008-08-26 03:07:31
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-08-26 03:15:02 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 345 tests, 60 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin1-yes (stderr) memcheck/tests/origin4-many (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 345 tests, 61 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin1-yes (stderr) memcheck/tests/origin4-many (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Aug 26 03:48:21 2008 --- new.short Tue Aug 26 04:07:40 2008 *************** *** 8,10 **** ! == 345 tests, 61 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/file_locking (stderr) --- 8,10 ---- ! == 345 tests, 60 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/file_locking (stderr) *************** *** 68,70 **** none/tests/blockfault (stderr) - none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) --- 68,69 ---- |
|
From: Tom H. <th...@cy...> - 2008-08-26 03:03:05
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-08-26 03:20:06 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 443 tests, 7 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 443 tests, 9 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Aug 26 03:42:29 2008 --- new.short Tue Aug 26 04:03:11 2008 *************** *** 8,10 **** ! == 443 tests, 9 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/file_locking (stderr) --- 8,10 ---- ! == 443 tests, 7 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/file_locking (stderr) *************** *** 14,19 **** none/tests/blockfault (stderr) - none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) - helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) --- 14,17 ---- |
|
From: Tom H. <th...@cy...> - 2008-08-26 02:50:01
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-08-26 03:05:06 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 437 tests, 6 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) drd/tests/pth_detached2 (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 437 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Aug 26 03:28:04 2008 --- new.short Tue Aug 26 03:50:09 2008 *************** *** 8,10 **** ! == 437 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) --- 8,10 ---- ! == 437 tests, 6 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) *************** *** 14,16 **** memcheck/tests/x86/scalar (stderr) - none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) --- 14,15 ---- *************** *** 18,19 **** --- 17,19 ---- helgrind/tests/tc22_exit_w_lock (stderr) + drd/tests/pth_detached2 (stdout) |
|
From: Tom H. <th...@cy...> - 2008-08-26 02:42:09
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-08-26 03:25:03 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 441 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 441 tests, 9 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Aug 26 03:34:06 2008 --- new.short Tue Aug 26 03:42:18 2008 *************** *** 8,10 **** ! == 441 tests, 9 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) --- 8,10 ---- ! == 441 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) *************** *** 18,20 **** none/tests/cmdline2 (stdout) - none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) --- 18,19 ---- |
|
From: Tom H. <th...@cy...> - 2008-08-26 02:24:13
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-08-26 03:00:04 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 443 tests, 31 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 443 tests, 32 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Aug 26 03:11:59 2008 --- new.short Tue Aug 26 03:24:18 2008 *************** *** 8,10 **** ! == 443 tests, 32 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) --- 8,10 ---- ! == 443 tests, 31 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) *************** *** 21,23 **** none/tests/blockfault (stderr) - none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) --- 21,22 ---- |
|
From: Xiachen D. <xia...@ho...> - 2008-08-25 21:30:37
|
Hi all: We are also trying to port Valgrind to ARM. We are not sure whether we shall proceed because right now we have no idea how much time it is going to take. I've read the following Documentation: 1) Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation; 2) How to Shadow Every Byte of Memory Used by a Program; Here's my understanding and questions about porting Valgrind to ARM. Please correct me if I am wrong: How Valgrind works: Valgrind core will first convert the user executable into a standard Valgrind intermediate code (somewhat similar to the JAVA byte code). After that, Valgrind will do some optimization on the intermediate code. Then the Valgrind tools such as memcheck will instrument (massage) the intermediate code to implement the tools' own functionality, e.g., memory leak detection. Since this step is based on intermediate code (architecture independent), theoretically, we don't need to do extra work on Valgrind tools. When Valgrind tools finish massaging the intermediate code, Valgrind core will optimize the intermediate code again, allocate architecture dependant registers, and then convert the optimized intermediate code back to the architecture specific machine code (ARM binary code). To port Valgrind to ARM, we need to do the following: a) Convert ARM executable to IR code. This part is already available inVEX/priv/guest-arm/toIR.c and Ivan has the path for it. This is the client's side. b) Convert the optimized Valgrind intermediate code back to the ARM binary executable. There's a lot of work to do here inVEX/priv/host-arm/hdefs.c. Basically we have to implement corresponding functions for ARM as listed in vex_main.c for PPC32: case VexArchPPC32: mode64 = False; getAllocableRegs_PPC ( &n_available_real_regs,&available_real_regs, mode64 ); isMove = (Bool(*)(HInstr*,HReg*,HReg*)) isMove_PPCInstr; getRegUsage = (void(*)(HRegUsage*,HInstr*,Bool))getRegUsage_PPCInstr; mapRegs = (void(*)(HRegRemap*,HInstr*,Bool)) mapRegs_PPCInstr; genSpill = (HInstr*(*)(HReg,Int,Bool)) genSpill_PPC; genReload = (HInstr*(*)(HReg,Int,Bool)) genReload_PPC; ppInstr = (void(*)(HInstr*,Bool)) ppPPCInstr; ppReg = (void(*)(HReg)) ppHRegPPC;iselSB = iselSB_PPC; emit = (Int(*)(UChar*,Int,HInstr*,Bool,void*))emit_PPCInstr; host_is_bigendian = True; host_word_type = Ity_I32; vassert(are_valid_hwcaps(VexArchPPC32, vta->archinfo_host.hwcaps)); vassert(vta->dispatch == NULL); /* return-to-dispatcher scheme */ break; Of course we need to implement other functions such as scheduler, dispatcher, c_main startup code, etc..., but the above mentioned two parts are the key steps to the porting. My biggest concern is that according to my understanding, porting to ARM does not require extra work on memcheck, callgrind, helgrind and other Valgrind tools since these tools work on Valgrind IR code and the IR code is architecture independent. Can anyone tell me whether the porting requires extra work on Valgrind tools? Thanks Shachen _________________________________________________________________ |
|
From: Xiachen D. <xia...@ho...> - 2008-08-25 20:32:22
|
Hi all: We are also trying to port Valgrind to ARM. We are not sure whether we shall proceed because right now we have no idea how much time it is going to take. I've read the following Documentation: 1) Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation; 2) How to Shadow Every Byte of Memory Used by a Program; Here's my understanding and questions about porting Valgrind to ARM. Please correct me if I am wrong: How Valgrind works: Valgrind core will first convert the user executable into a standard Valgrind intermediate code (somewhat similar to the JAVA byte code). After that, Valgrind will do some optimization on the intermediate code. Then the Valgrind tools such as memcheck will instrument (massage) the intermediate code to implement the tools' own functionality, e.g., memory leak detection. Since this step is based on intermediate code (architecture independent), theoretically, we don't need to do extra work on Valgrind tools. When Valgrind tools finish massaging the intermediate code, Valgrind core will optimize the intermediate code again, allocate architecture dependant registers, and then convert the optimized intermediate code back to the architecture specific machine code (ARM binary code). To port Valgrind to ARM, we need to do the following: a) Convert ARM executable to IR code. This part is already available inVEX/priv/guest-arm/toIR.c and Ivan has the path for it. This is the client's side. b) Convert the optimized Valgrind intermediate code back to the ARM binary executable. There's a lot of work to do here inVEX/priv/host-arm/hdefs.c. Basically we have to implement corresponding functions for ARM as listed in vex_main.c for PPC32: case VexArchPPC32:mode64 = False;getAllocableRegs_PPC ( &n_available_real_regs,&available_real_regs, mode64 ); isMove = (Bool(*)(HInstr*,HReg*,HReg*)) isMove_PPCInstr; getRegUsage = (void(*)(HRegUsage*,HInstr*,Bool))getRegUsage_PPCInstr;mapRegs = (void(*)(HRegRemap*,HInstr*,Bool)) mapRegs_PPCInstr; genSpill = (HInstr*(*)(HReg,Int,Bool)) genSpill_PPC; genReload = (HInstr*(*)(HReg,Int,Bool)) genReload_PPC; ppInstr = (void(*)(HInstr*,Bool)) ppPPCInstr; ppReg = (void(*)(HReg)) ppHRegPPC;iselSB = iselSB_PPC; emit = (Int(*)(UChar*,Int,HInstr*,Bool,void*))emit_PPCInstr;host_is_bigendian = True;host_word_type = Ity_I32; vassert(are_valid_hwcaps(VexArchPPC32, vta->archinfo_host.hwcaps)); vassert(vta->dispatch == NULL); /* return-to-dispatcher scheme */ break; Of course we need to implement other functions such as scheduler, dispatcher, c_main startup code, etc..., but the above mentioned two parts are the key steps to the porting. My biggest concern is that according to my understanding, porting to ARM does not require extra work on memcheck, callgrind, helgrind and other Valgrind tools since these tools work on Valgrind IR code and the IR code is architecture independent. Can anyone tell me whether the porting requires extra work on Valgrind tools? Thanks Shachen _________________________________________________________________ |
|
From: <sv...@va...> - 2008-08-25 12:10:07
|
Author: sewardj
Date: 2008-08-25 13:10:14 +0100 (Mon, 25 Aug 2008)
New Revision: 8547
Log:
Fix regression on none/tests/faultstatus caused by r8522.
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2008-08-25 11:45:31 UTC (rev 8546)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2008-08-25 12:10:14 UTC (rev 8547)
@@ -545,7 +545,7 @@
if (statres.isError) {
DebugInfo fake_di;
Bool quiet = VG_(strstr)(filename, "/var/run/nscd/") != NULL;
- if (!quiet) {
+ if (!quiet && VG_(clo_verbosity) > 1) {
VG_(memset)(&fake_di, 0, sizeof(fake_di));
fake_di.filename = filename;
ML_(symerr)(&fake_di, True, "failed to stat64/stat this file");
|
|
From: <sv...@va...> - 2008-08-25 11:45:27
|
Author: sewardj
Date: 2008-08-25 12:45:31 +0100 (Mon, 25 Aug 2008)
New Revision: 8546
Log:
Fix incorrect stack boundary checks, one of which was observed to
cause segfaults on amd64-linux on rare occasions.
Modified:
branches/YARD/coregrind/m_stacktrace.c
Modified: branches/YARD/coregrind/m_stacktrace.c
===================================================================
--- branches/YARD/coregrind/m_stacktrace.c 2008-08-24 08:31:35 UTC (rev 8545)
+++ branches/YARD/coregrind/m_stacktrace.c 2008-08-25 11:45:31 UTC (rev 8546)
@@ -161,7 +161,8 @@
fails, and is expensive. */
/* Deal with frames resulting from functions which begin "pushl%
ebp ; movl %esp, %ebp" which is the ABI-mandated preamble. */
- if (fp_min <= fp && fp <= fp_max) {
+ if (fp_min <= fp && fp <= fp_max
+ - 1 * sizeof(UWord)/*see comment below*/) {
/* fp looks sane, so use it. */
ip = (((UWord*)fp)[1]);
sp = fp + sizeof(Addr) /*saved %ebp*/
@@ -251,7 +252,11 @@
the start of the fn, like GDB does, there's no reliable way
to tell. Hence the hack of first trying out CFI, and if that
fails, then use this as a fallback. */
- if (fp_min <= fp && fp <= fp_max) {
+ /* Note: re "- 1 * sizeof(UWord)", need to take account of the
+ fact that we are prodding at & ((UWord*)fp)[1] and so need to
+ adjust the limit check accordingly. Omitting this has been
+ observed to cause segfaults on rare occasions. */
+ if (fp_min <= fp && fp <= fp_max - 1 * sizeof(UWord)) {
/* fp looks sane, so use it. */
ip = (((UWord*)fp)[1]);
sp = fp + sizeof(Addr) /*saved %rbp*/
@@ -371,7 +376,7 @@
/* Try to derive a new (ip,fp) pair from the current set. */
- if (fp_min <= fp && fp <= fp_max) {
+ if (fp_min <= fp && fp <= fp_max - lr_offset * sizeof(UWord)) {
/* fp looks sane, so use it. */
if (i == 1 && lr_is_first_RA)
|
|
From: Tom H. <th...@cy...> - 2008-08-25 03:04:39
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-08-25 03:15:02 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 345 tests, 61 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin1-yes (stderr) memcheck/tests/origin4-many (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 345 tests, 62 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin1-yes (stderr) memcheck/tests/origin4-many (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) drd/tests/linuxthreads_det (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Aug 25 03:45:42 2008 --- new.short Mon Aug 25 04:04:45 2008 *************** *** 8,10 **** ! == 345 tests, 62 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/file_locking (stderr) --- 8,10 ---- ! == 345 tests, 61 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/file_locking (stderr) *************** *** 100,102 **** helgrind/tests/tc24_nonzero_sem (stderr) - drd/tests/linuxthreads_det (stderr) --- 100,101 ---- |
|
From: Tom H. <th...@cy...> - 2008-08-25 02:54:38
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-08-25 03:20:07 BST 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 == 443 tests, 9 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-08-25 02:42:13
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-08-25 03:05:05 BST 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 == 437 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-08-25 02:41:42
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-08-25 03:25:03 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 441 tests, 10 stderr failures, 6 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) drd/tests/tc08_hbl2 (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 441 tests, 10 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Aug 25 03:33:31 2008 --- new.short Mon Aug 25 03:41:47 2008 *************** *** 8,10 **** ! == 441 tests, 10 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) --- 8,10 ---- ! == 441 tests, 10 stderr failures, 6 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) *************** *** 24,25 **** --- 24,26 ---- helgrind/tests/tc22_exit_w_lock (stderr) + drd/tests/tc08_hbl2 (stdout) |
|
From: Tom H. <th...@cy...> - 2008-08-25 02:23:35
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-08-25 03:00:04 BST 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 == 443 tests, 32 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: <sv...@va...> - 2008-08-24 08:31:26
|
Author: sewardj
Date: 2008-08-24 09:31:35 +0100 (Sun, 24 Aug 2008)
New Revision: 8545
Log:
When observing destructions of pthread_mutex_t, pthread_rwlock_t,
pthread_cond_t and sem_t objects, call libhb_so_dealloc on any
associated SOs (synchronisation objects) in the hope of reducing the
tendency of libhb to leak VTSs internally.
As part of this, intercept pthread_cond_destroy.
Modified:
branches/YARD/helgrind/helgrind.h
branches/YARD/helgrind/hg_intercepts.c
branches/YARD/helgrind/hg_main.c
Modified: branches/YARD/helgrind/helgrind.h
===================================================================
--- branches/YARD/helgrind/helgrind.h 2008-08-24 08:28:42 UTC (rev 8544)
+++ branches/YARD/helgrind/helgrind.h 2008-08-24 08:31:35 UTC (rev 8545)
@@ -82,6 +82,7 @@
_VG_USERREQ__HG_PTHREAD_COND_BROADCAST_PRE, /* pth_cond_t* */
_VG_USERREQ__HG_PTHREAD_COND_WAIT_PRE, /* pth_cond_t*, pth_mx_t* */
_VG_USERREQ__HG_PTHREAD_COND_WAIT_POST, /* pth_cond_t*, pth_mx_t* */
+ _VG_USERREQ__HG_PTHREAD_COND_DESTROY_PRE, /* pth_cond_t* */
_VG_USERREQ__HG_PTHREAD_RWLOCK_INIT_POST, /* pth_rwlk_t* */
_VG_USERREQ__HG_PTHREAD_RWLOCK_DESTROY_PRE, /* pth_rwlk_t* */
_VG_USERREQ__HG_PTHREAD_RWLOCK_LOCK_PRE, /* pth_rwlk_t*, long isW */
Modified: branches/YARD/helgrind/hg_intercepts.c
===================================================================
--- branches/YARD/helgrind/hg_intercepts.c 2008-08-24 08:28:42 UTC (rev 8544)
+++ branches/YARD/helgrind/hg_intercepts.c 2008-08-24 08:31:35 UTC (rev 8545)
@@ -534,9 +534,10 @@
/* Handled: pthread_cond_wait pthread_cond_timedwait
pthread_cond_signal pthread_cond_broadcast
+ pthread_cond_destroy
- Unhandled: pthread_cond_init pthread_cond_destroy
- -- are these important?
+ Unhandled: pthread_cond_init
+ -- is this important?
*/
// pthread_cond_wait
@@ -719,6 +720,37 @@
}
+// pthread_cond_destroy
+PTH_FUNC(int, pthreadZucondZudestroyZAZa, // pthread_cond_destroy@*
+ pthread_cond_t* cond)
+{
+ int ret;
+ OrigFn fn;
+
+ VALGRIND_GET_ORIG_FN(fn);
+
+ if (TRACE_PTH_FNS) {
+ fprintf(stderr, "<< pthread_cond_destroy %p", cond);
+ fflush(stderr);
+ }
+
+ DO_CREQ_v_W(_VG_USERREQ__HG_PTHREAD_COND_DESTROY_PRE,
+ pthread_cond_t*,cond);
+
+ CALL_FN_W_W(ret, fn, cond);
+
+ if (ret != 0) {
+ DO_PthAPIerror( "pthread_cond_destroy", ret );
+ }
+
+ if (TRACE_PTH_FNS) {
+ fprintf(stderr, " codestr -> %d >>\n", ret);
+ }
+
+ return ret;
+}
+
+
/*----------------------------------------------------------------*/
/*--- pthread_rwlock_t functions ---*/
/*----------------------------------------------------------------*/
Modified: branches/YARD/helgrind/hg_main.c
===================================================================
--- branches/YARD/helgrind/hg_main.c 2008-08-24 08:28:42 UTC (rev 8544)
+++ branches/YARD/helgrind/hg_main.c 2008-08-24 08:31:35 UTC (rev 8545)
@@ -462,6 +462,7 @@
static void del_LockN ( Lock* lk )
{
tl_assert(is_sane_LockN(lk));
+ tl_assert(lk->hbso);
libhb_so_dealloc(lk->hbso);
if (lk->heldBy)
VG_(deleteBag)( lk->heldBy );
@@ -2232,6 +2233,9 @@
}
tl_assert( !lk->heldBy );
tl_assert( is_sane_LockN(lk) );
+
+ map_locks_delete( lk->guestaddr );
+ del_LockN( lk );
}
if (clo_sanity_flags & SCE_LOCKS)
@@ -2353,6 +2357,16 @@
}
}
+static void map_cond_to_SO_delete ( void* cond ) {
+ UWord keyW, valW;
+ map_cond_to_SO_INIT();
+ if (VG_(delFromFM)( map_cond_to_SO, &keyW, &valW, (UWord)cond )) {
+ SO* so = (SO*)valW;
+ tl_assert(keyW == (UWord)cond);
+ libhb_so_dealloc(so);
+ }
+}
+
static void evh__HG_PTHREAD_COND_SIGNAL_PRE ( ThreadId tid, void* cond )
{
/* 'tid' has signalled on 'cond'. As per the comment above, bind
@@ -2469,7 +2483,21 @@
libhb_so_recv( thr->hbthr, so, True/*strong_recv*/ );
}
+static void evh__HG_PTHREAD_COND_DESTROY_PRE ( ThreadId tid,
+ void* cond )
+{
+ /* Deal with destroy events. The only purpose is to free storage
+ associated with the CV, so as to avoid any possible resource
+ leaks. */
+ if (SHOW_EVENTS >= 1)
+ VG_(printf)("evh__HG_PTHREAD_COND_DESTROY_PRE"
+ "(ctid=%d, cond=%p)\n",
+ (Int)tid, (void*)cond );
+ map_cond_to_SO_delete( cond );
+}
+
+
/* -------------- events to do with rwlocks -------------- */
/* EXPOSITION only */
@@ -2519,6 +2547,9 @@
}
tl_assert( !lk->heldBy );
tl_assert( is_sane_LockN(lk) );
+
+ map_locks_delete( lk->guestaddr );
+ del_LockN( lk );
}
if (clo_sanity_flags & SCE_LOCKS)
@@ -2647,11 +2678,13 @@
}
static void push_SO_for_sem ( void* sem, SO* so ) {
+ UWord keyW;
XArray* xa;
tl_assert(so);
map_sem_to_SO_stack_INIT();
if (VG_(lookupFM)( map_sem_to_SO_stack,
- NULL, (UWord*)&xa, (UWord)sem )) {
+ &keyW, (UWord*)&xa, (UWord)sem )) {
+ tl_assert(keyW == (UWord)sem);
tl_assert(xa);
VG_(addToXA)( xa, &so );
} else {
@@ -2662,13 +2695,16 @@
}
static SO* mb_pop_SO_for_sem ( void* sem ) {
+ UWord keyW;
XArray* xa;
SO* so;
map_sem_to_SO_stack_INIT();
if (VG_(lookupFM)( map_sem_to_SO_stack,
- NULL, (UWord*)&xa, (UWord)sem )) {
+ &keyW, (UWord*)&xa, (UWord)sem )) {
/* xa is the stack for this semaphore. */
- Word sz = VG_(sizeXA)( xa );
+ Word sz;
+ tl_assert(keyW == (UWord)sem);
+ sz = VG_(sizeXA)( xa );
tl_assert(sz >= 0);
if (sz == 0)
return NULL; /* odd, the stack is empty */
@@ -2684,12 +2720,15 @@
static void evh__HG_POSIX_SEM_DESTROY_PRE ( ThreadId tid, void* sem )
{
- SO* so;
+ UWord keyW, valW;
+ SO* so;
if (SHOW_EVENTS >= 1)
VG_(printf)("evh__HG_POSIX_SEM_DESTROY_PRE(ctid=%d, sem=%p)\n",
(Int)tid, (void*)sem );
+ map_sem_to_SO_stack_INIT();
+
/* Empty out the semaphore's SO stack. This way of doing it is
stupid, but at least it's easy. */
while (1) {
@@ -2697,6 +2736,14 @@
if (!so) break;
libhb_so_dealloc(so);
}
+
+ if (VG_(delFromFM)( map_sem_to_SO_stack, &keyW, &valW, (UWord)sem )) {
+ XArray* xa = (XArray*)valW;
+ tl_assert(keyW == (UWord)sem);
+ tl_assert(xa);
+ tl_assert(VG_(sizeXA)(xa) == 0); /* preceding loop just emptied it */
+ VG_(deleteXA)(xa);
+ }
}
static
@@ -3909,6 +3956,11 @@
break;
}
+ /* cond=arg[1] */
+ case _VG_USERREQ__HG_PTHREAD_COND_DESTROY_PRE:
+ evh__HG_PTHREAD_COND_DESTROY_PRE( tid, (void*)args[1] );
+ break;
+
/* Thread successfully completed pthread_cond_wait, cond=arg[1],
mutex=arg[2] */
case _VG_USERREQ__HG_PTHREAD_COND_WAIT_POST:
|
|
From: <sv...@va...> - 2008-08-24 08:28:33
|
Author: sewardj
Date: 2008-08-24 09:28:42 +0100 (Sun, 24 Aug 2008)
New Revision: 8544
Log:
Add a magic number to 'struct _SO' to catch cases where the library's
client screws up its management thereof.
Modified:
branches/YARD/helgrind/libhb_core.c
Modified: branches/YARD/helgrind/libhb_core.c
===================================================================
--- branches/YARD/helgrind/libhb_core.c 2008-08-24 08:27:46 UTC (rev 8543)
+++ branches/YARD/helgrind/libhb_core.c 2008-08-24 08:28:42 UTC (rev 8544)
@@ -5391,18 +5391,25 @@
// //
/////////////////////////////////////////////////////////
+// (UInt) `echo "Synchronisation object" | md5sum`
+#define SO_MAGIC 0x56b3c5b0
+
struct _SO {
VtsID viR; /* r-clock of sender */
VtsID viW; /* w-clock of sender */
+ UInt magic;
};
static SO* SO__Alloc ( void ) {
SO* so = main_zalloc( sizeof(SO) );
- so->viR = VtsID_INVALID;
- so->viW = VtsID_INVALID;
+ so->viR = VtsID_INVALID;
+ so->viW = VtsID_INVALID;
+ so->magic = SO_MAGIC;
return so;
}
static void SO__Dealloc ( SO* so ) {
+ tl_assert(so);
+ tl_assert(so->magic == SO_MAGIC);
if (so->viR == VtsID_INVALID) {
tl_assert(so->viW == VtsID_INVALID);
} else {
@@ -5410,6 +5417,7 @@
VtsID__rcdec(so->viR);
VtsID__rcdec(so->viW);
}
+ so->magic = 0;
main_dealloc( so );
}
@@ -5643,6 +5651,8 @@
void libhb_so_dealloc ( SO* so )
{
+ tl_assert(so);
+ tl_assert(so->magic == SO_MAGIC);
SO__Dealloc(so);
}
@@ -5653,6 +5663,9 @@
/* Copy the VTSs from 'thr' into the sync object, and then move
the thread along one step. */
+ tl_assert(so);
+ tl_assert(so->magic == SO_MAGIC);
+
/* stay sane .. a thread's read-clock must always lead or be the
same as its write-clock */
{ POrd ord = VtsID__getOrdering(thr->viW, thr->viR);
@@ -5695,6 +5708,9 @@
void libhb_so_recv ( Thr* thr, SO* so, Bool strong_recv )
{
+ tl_assert(so);
+ tl_assert(so->magic == SO_MAGIC);
+
if (so->viR != VtsID_INVALID) {
tl_assert(so->viW != VtsID_INVALID);
|
|
From: <sv...@va...> - 2008-08-24 08:27:40
|
Author: sewardj
Date: 2008-08-24 09:27:46 +0100 (Sun, 24 Aug 2008)
New Revision: 8543
Log:
Apparently a new suppression is required, to do with thread creation
races in hg_intercepts.c.
Modified:
branches/YARD/glibc-2.34567-NPTL-helgrind.supp
Modified: branches/YARD/glibc-2.34567-NPTL-helgrind.supp
===================================================================
--- branches/YARD/glibc-2.34567-NPTL-helgrind.supp 2008-08-24 08:26:52 UTC (rev 8542)
+++ branches/YARD/glibc-2.34567-NPTL-helgrind.supp 2008-08-24 08:27:46 UTC (rev 8543)
@@ -210,6 +210,11 @@
Helgrind:Race
fun:__lll_*lock_*
}
+{
+ helgrind-glibc28-112
+ Helgrind:Race
+ fun:pthread_create@*
+}
######------------ glibc-2.7 specific ---------######
#
|
|
From: <sv...@va...> - 2008-08-24 08:26:47
|
Author: sewardj Date: 2008-08-24 09:26:52 +0100 (Sun, 24 Aug 2008) New Revision: 8542 Log: Make sure this branch is not mistaken for the trunk. Modified: branches/YARD/configure.in Modified: branches/YARD/configure.in =================================================================== --- branches/YARD/configure.in 2008-08-23 21:59:22 UTC (rev 8541) +++ branches/YARD/configure.in 2008-08-24 08:26:52 UTC (rev 8542) @@ -8,7 +8,7 @@ ##------------------------------------------------------------## # Process this file with autoconf to produce a configure script. -AC_INIT(Valgrind, 3.4.0.SVN, val...@li...) +AC_INIT(Valgrind, 3.4.0.SVN-YARD, val...@li...) AC_CONFIG_SRCDIR(coregrind/m_main.c) AM_CONFIG_HEADER(config.h) AM_INIT_AUTOMAKE([foreign]) |
|
From: Tom H. <th...@cy...> - 2008-08-24 03:04:32
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-08-24 03:15:02 BST 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 == 345 tests, 61 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin1-yes (stderr) memcheck/tests/origin4-many (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) |