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: 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 ---- |