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
(16) |
2
(7) |
3
(9) |
4
(12) |
5
(20) |
|
6
(24) |
7
(10) |
8
(7) |
9
(17) |
10
(9) |
11
(7) |
12
(8) |
|
13
(12) |
14
(17) |
15
(15) |
16
(15) |
17
(21) |
18
(9) |
19
(17) |
|
20
(16) |
21
(12) |
22
(18) |
23
(8) |
24
(2) |
25
(17) |
26
(23) |
|
27
(30) |
28
(19) |
29
(14) |
30
(11) |
|
|
|
|
From: <sv...@va...> - 2008-04-06 19:55:02
|
Author: sewardj
Date: 2008-04-06 20:55:06 +0100 (Sun, 06 Apr 2008)
New Revision: 7858
Log:
* improve performance of the nia-to-otag cache, which improves
performance overall on amd64
* initialise the cache correctly, so it doesn't assert when
looking up address zero
Modified:
branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c
Modified: branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c 2008-04-06 15:02:58 UTC (rev 7857)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c 2008-04-06 19:55:06 UTC (rev 7858)
@@ -1965,6 +1965,23 @@
}
+static inline void set_aligned_word64_Origin_to_undef ( Addr a, UInt otag )
+{
+ //// BEGIN inlined, specialised version of MC_(helperc_b_store8)
+ //// Set the origins for a+0 .. a+7
+ { OCacheLine* line;
+ UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
+ tl_assert(lineoff >= 0
+ && lineoff < OC_W32S_PER_LINE -1/*'cos 8-aligned*/);
+ line = find_OCacheLine( a );
+ line->descr[lineoff+0] = 0xF;
+ line->descr[lineoff+1] = 0xF;
+ line->w32[lineoff+0] = otag;
+ line->w32[lineoff+1] = otag;
+ }
+ //// END inlined, specialised version of MC_(helperc_b_store8)
+}
+
/*------------------------------------------------------------*/
/*--- Stack pointer adjustment ---*/
/*------------------------------------------------------------*/
@@ -2389,15 +2406,33 @@
static UWord stats__nia_cache_misses = 0;
typedef
- struct { UWord arg1; UWord res; }
+ struct { UWord arg0; UWord res0;
+ UWord arg1; UWord res1; }
WCacheEnt;
#define N_NIA_TO_OTAG_CACHE 511
static WCacheEnt nia_to_otag_cache[N_NIA_TO_OTAG_CACHE];
-static void init_nia_to_otag_cache ( void ) {
- VG_(memset)( &nia_to_otag_cache, 0, sizeof(nia_to_otag_cache) );
+static void init_nia_to_otag_cache ( void )
+{
+ UWord i;
+ Addr zero_addr = 0;
+ ExeContext* zero_ec;
+ UInt zero_otag;
+ /* Fill all the slots with an entry for address zero, and the
+ relevant otags accordingly. Hence the cache is initially filled
+ with valid data. */
+ zero_ec = VG_(make_depth_1_ExeContext_from_Addr)(zero_addr);
+ tl_assert(zero_ec);
+ zero_otag = VG_(get_ExeContext_uniq)(zero_ec);
+ tl_assert(zero_otag > 0);
+ for (i = 0; i < N_NIA_TO_OTAG_CACHE; i++) {
+ nia_to_otag_cache[i].arg0 = zero_addr;
+ nia_to_otag_cache[i].res0 = zero_otag;
+ nia_to_otag_cache[i].arg1 = zero_addr;
+ nia_to_otag_cache[i].res1 = zero_otag;
+ }
}
static inline UInt convert_nia_to_otag ( Addr nia )
@@ -2412,17 +2447,28 @@
i = nia % N_NIA_TO_OTAG_CACHE;
tl_assert(i >= 0 && i < N_NIA_TO_OTAG_CACHE);
- if (LIKELY( nia_to_otag_cache[i].arg1 == nia ))
- return nia_to_otag_cache[i].res;
+ if (LIKELY( nia_to_otag_cache[i].arg0 == nia ))
+ return nia_to_otag_cache[i].res0;
+ if (LIKELY( nia_to_otag_cache[i].arg1 == nia )) {
+# define SWAP(_w1,_w2) { UWord _t = _w1; _w1 = _w2; _w2 = _t; }
+ SWAP( nia_to_otag_cache[i].arg0, nia_to_otag_cache[i].arg1 );
+ SWAP( nia_to_otag_cache[i].res0, nia_to_otag_cache[i].res1 );
+# undef SWAP
+ return nia_to_otag_cache[i].res0;
+ }
+
stats__nia_cache_misses++;
ec = VG_(make_depth_1_ExeContext_from_Addr)(nia);
tl_assert(ec);
otag = VG_(get_ExeContext_uniq)(ec);
tl_assert(otag > 0);
- nia_to_otag_cache[i].arg1 = nia;
- nia_to_otag_cache[i].res = (UWord)otag;
+ nia_to_otag_cache[i].arg1 = nia_to_otag_cache[i].arg0;
+ nia_to_otag_cache[i].res1 = nia_to_otag_cache[i].res0;
+
+ nia_to_otag_cache[i].arg0 = nia;
+ nia_to_otag_cache[i].res0 = (UWord)otag;
return otag;
}
@@ -2444,7 +2490,7 @@
MC_(make_mem_undefined)(base, len, otag);
# endif
-# if 1
+# if 0
/* Slow(ish) version, which is fairly easily seen to be correct.
*/
if (LIKELY( VG_IS_8_ALIGNED(base) && len==128 )) {
@@ -2480,7 +2526,6 @@
directly into the vabits array. (If the sm was distinguished, this
will make a copy and then write to it.)
*/
- goto slowcase; /* FIXME */
if (LIKELY( len == 128 && VG_IS_8_ALIGNED(base) )) {
/* Now we know the address range is suitably sized and aligned. */
@@ -2514,6 +2559,24 @@
p[13] = VA_BITS16_UNDEFINED;
p[14] = VA_BITS16_UNDEFINED;
p[15] = VA_BITS16_UNDEFINED;
+
+ set_aligned_word64_Origin_to_undef( base + 8 * 0, otag );
+ set_aligned_word64_Origin_to_undef( base + 8 * 1, otag );
+ set_aligned_word64_Origin_to_undef( base + 8 * 2, otag );
+ set_aligned_word64_Origin_to_undef( base + 8 * 3, otag );
+ set_aligned_word64_Origin_to_undef( base + 8 * 4, otag );
+ set_aligned_word64_Origin_to_undef( base + 8 * 5, otag );
+ set_aligned_word64_Origin_to_undef( base + 8 * 6, otag );
+ set_aligned_word64_Origin_to_undef( base + 8 * 7, otag );
+ set_aligned_word64_Origin_to_undef( base + 8 * 8, otag );
+ set_aligned_word64_Origin_to_undef( base + 8 * 9, otag );
+ set_aligned_word64_Origin_to_undef( base + 8 * 10, otag );
+ set_aligned_word64_Origin_to_undef( base + 8 * 11, otag );
+ set_aligned_word64_Origin_to_undef( base + 8 * 12, otag );
+ set_aligned_word64_Origin_to_undef( base + 8 * 13, otag );
+ set_aligned_word64_Origin_to_undef( base + 8 * 14, otag );
+ set_aligned_word64_Origin_to_undef( base + 8 * 15, otag );
+
return;
}
}
@@ -2524,6 +2587,7 @@
/* Now we know the address range is suitably sized and aligned. */
UWord a_lo = (UWord)(base);
UWord a_hi = (UWord)(base + 288 - 1);
+tl_assert(0); //FIXME
tl_assert(a_lo < a_hi); // paranoia: detect overflow
if (a_hi < MAX_PRIMARY_ADDRESS) {
// Now we know the entire range is within the main primary map.
@@ -2578,7 +2642,6 @@
}
/* else fall into slow case */
- slowcase:
MC_(make_mem_undefined)(base, len, otag);
}
|
|
From: Julian S. <js...@ac...> - 2008-04-06 17:25:36
|
Could you instead try stopping the unwind when fp == 0, and no other changes? As per the AMD64 ABI Draft 0.98 page 28, %rbp should be zero for the deepest frame in the stack. J |
|
From: <sv...@va...> - 2008-04-06 15:02:58
|
Author: bart
Date: 2008-04-06 16:02:58 +0100 (Sun, 06 Apr 2008)
New Revision: 7857
Log:
More statistics are now printed about DRD's behavior.
Modified:
trunk/exp-drd/drd_main.c
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-04-06 15:02:17 UTC (rev 7856)
+++ trunk/exp-drd/drd_main.c 2008-04-06 15:02:58 UTC (rev 7857)
@@ -1055,12 +1055,24 @@
// thread_print_all();
if (VG_(clo_verbosity) > 1 || s_drd_print_stats)
{
+ ULong update_danger_set_count;
+ ULong dsnsc;
+ ULong dscvc;
+
+ update_danger_set_count
+ = thread_get_update_danger_set_count(&dsnsc, &dscvc);
+
VG_(message)(Vg_UserMsg,
" thread: %lld context switches"
- " / %lld updates of the danger set.",
+ " / %lld updates of the danger set",
thread_get_context_switch_count(),
- thread_get_update_danger_set_count());
+ update_danger_set_count);
VG_(message)(Vg_UserMsg,
+ " (%lld new sg + %lld combine vc + %lld csw).",
+ dsnsc,
+ dscvc,
+ update_danger_set_count - dsnsc - dscvc);
+ VG_(message)(Vg_UserMsg,
" segments: created %lld segments, max %lld alive,"
" %lld discard points.",
sg_get_created_segments_count(),
|
|
From: <sv...@va...> - 2008-04-06 15:02:14
|
Author: bart
Date: 2008-04-06 16:02:17 +0100 (Sun, 06 Apr 2008)
New Revision: 7856
Log:
Added more counters. Reduced number of danger set updates slightly.
Modified:
trunk/exp-drd/drd_thread.c
trunk/exp-drd/drd_thread.h
Modified: trunk/exp-drd/drd_thread.c
===================================================================
--- trunk/exp-drd/drd_thread.c 2008-04-06 14:57:41 UTC (rev 7855)
+++ trunk/exp-drd/drd_thread.c 2008-04-06 15:02:17 UTC (rev 7856)
@@ -51,6 +51,8 @@
static ULong s_context_switch_count;
static ULong s_discard_ordered_segments_count;
static ULong s_update_danger_set_count;
+static ULong s_danger_set_new_segment_count;
+static ULong s_danger_set_combine_vc_count;
static ULong s_danger_set_bitmap_creation_count;
static ULong s_danger_set_bitmap2_creation_count;
static ThreadId s_vg_running_tid = VG_INVALID_THREADID;
@@ -599,28 +601,91 @@
}
}
+/** Every change in the vector clock of a thread may cause segments that
+ * were previously ordered to this thread to become unordered. Hence,
+ * it may be necessary to recalculate the danger set if the vector clock
+ * of the current thread is updated. This function check whether such a
+ * recalculation is necessary.
+ *
+ * @param tid Thread ID of the thread to which a new segment has been
+ * appended.
+ * @param new_sg Pointer to the most recent segment of thread tid.
+ */
+static Bool danger_set_update_needed(const DrdThreadId tid,
+ const Segment* const new_sg)
+{
+ unsigned i;
+ const Segment* old_sg;
+
+ tl_assert(new_sg);
+
+ /* If a new segment was added to another thread than the running thread, */
+ /* just tell the caller to update the danger set. */
+ if (tid != s_drd_running_tid)
+ return True;
+
+ /* Always let the caller update the danger set after creation of the */
+ /* first segment. */
+ old_sg = new_sg->prev;
+ if (old_sg == 0)
+ return True;
+
+ for (i = 0; i < sizeof(s_threadinfo) / sizeof(s_threadinfo[0]); i++)
+ {
+ Segment* q;
+
+ if (i == s_drd_running_tid)
+ continue;
+
+ for (q = s_threadinfo[i].last; q; q = q->prev)
+ {
+ /* If the expression below evaluates to false, this expression will */
+ /* also evaluate to false for all subsequent iterations. So stop */
+ /* iterating. */
+ if (vc_lte(&q->vc, &old_sg->vc))
+ break;
+ /* If the vector clock of the 2nd the last segment is not ordered */
+ /* to the vector clock of segment q, and the last segment is, ask */
+ /* the caller to update the danger set. */
+ if (! vc_lte(&old_sg->vc, &q->vc))
+ {
+ return True;
+ }
+ /* If the vector clock of the last segment is not ordered to the */
+ /* vector clock of segment q, ask the caller to update the danger */
+ /* set. */
+ if (! vc_lte(&q->vc, &new_sg->vc) && ! vc_lte(&new_sg->vc, &q->vc))
+ {
+ return True;
+ }
+ }
+ }
+
+ return False;
+}
+
/** Create a new segment for the specified thread, and discard any segments
* that cannot cause races anymore.
*/
void thread_new_segment(const DrdThreadId tid)
{
+ Segment* new_sg;
+
tl_assert(0 <= tid && tid < DRD_N_THREADS && tid != DRD_INVALID_THREADID);
- thread_append_segment(tid, sg_new(tid, tid));
+ new_sg = sg_new(tid, tid);
+ thread_append_segment(tid, new_sg);
+ if (danger_set_update_needed(tid, new_sg))
+ {
+ thread_update_danger_set(s_drd_running_tid);
+ s_danger_set_new_segment_count++;
+ }
+
thread_discard_ordered_segments();
if (s_segment_merging)
thread_merge_segments();
-
- if (tid == s_drd_running_tid)
- {
- /* Every change in the vector clock of the current thread may cause */
- /* segments that were previously ordered to this thread to become */
- /* unordered. Hence, recalculate the danger set if the vector clock */
- /* of the current thread is updated. */
- thread_update_danger_set(tid);
- }
}
/** Call this function after thread 'joiner' joined thread 'joinee'. */
@@ -652,7 +717,9 @@
tl_assert(s_threadinfo[tid].last);
tl_assert(vc);
vc_combine(&s_threadinfo[tid].last->vc, vc);
+ thread_update_danger_set(tid);
thread_discard_ordered_segments();
+ s_danger_set_combine_vc_count++;
}
/** Call this function whenever a thread is no longer using the memory
@@ -873,12 +940,12 @@
for (j = 0; j < sizeof(s_threadinfo) / sizeof(s_threadinfo[0]); j++)
{
- if (IsValidDrdThreadId(j))
+ if (j != tid && IsValidDrdThreadId(j))
{
const Segment* q;
for (q = s_threadinfo[j].last; q; q = q->prev)
- if (j != tid && q != 0
- && ! vc_lte(&q->vc, &p->vc) && ! vc_lte(&p->vc, &q->vc))
+ {
+ if (! vc_lte(&q->vc, &p->vc) && ! vc_lte(&p->vc, &q->vc))
{
if (s_trace_danger_set)
{
@@ -905,6 +972,7 @@
VG_(message)(Vg_UserMsg, "%s", msg);
}
}
+ }
}
}
}
@@ -930,8 +998,12 @@
return s_discard_ordered_segments_count;
}
-ULong thread_get_update_danger_set_count(void)
+ULong thread_get_update_danger_set_count(ULong* dsnsc, ULong* dscvc)
{
+ tl_assert(dsnsc);
+ tl_assert(dscvc);
+ *dsnsc = s_danger_set_new_segment_count;
+ *dscvc = s_danger_set_combine_vc_count;
return s_update_danger_set_count;
}
Modified: trunk/exp-drd/drd_thread.h
===================================================================
--- trunk/exp-drd/drd_thread.h 2008-04-06 14:57:41 UTC (rev 7855)
+++ trunk/exp-drd/drd_thread.h 2008-04-06 15:02:17 UTC (rev 7856)
@@ -137,7 +137,7 @@
ULong thread_get_context_switch_count(void);
ULong thread_get_report_races_count(void);
ULong thread_get_discard_ordered_segments_count(void);
-ULong thread_get_update_danger_set_count(void);
+ULong thread_get_update_danger_set_count(ULong* dsnsc, ULong* dscvc);
ULong thread_get_danger_set_bitmap_creation_count(void);
ULong thread_get_danger_set_bitmap2_creation_count(void);
|
|
From: <sv...@va...> - 2008-04-06 14:57:36
|
Author: bart
Date: 2008-04-06 15:57:41 +0100 (Sun, 06 Apr 2008)
New Revision: 7855
Log:
Added vc_combine2().
Modified:
trunk/exp-drd/drd_vc.h
Modified: trunk/exp-drd/drd_vc.h
===================================================================
--- trunk/exp-drd/drd_vc.h 2008-04-06 14:57:37 UTC (rev 7854)
+++ trunk/exp-drd/drd_vc.h 2008-04-06 14:57:41 UTC (rev 7855)
@@ -69,6 +69,7 @@
const VectorClock* const rhs);
void vc_assign(VectorClock* const lhs,
const VectorClock* const rhs);
+UInt vc_get(VectorClock* const vc, const ThreadId tid);
void vc_increment(VectorClock* const vc, ThreadId const threadid);
Bool vc_lte(const VectorClock* const vc1,
const VectorClock* const vc2);
@@ -78,6 +79,9 @@
const VectorClock* const rhs);
void vc_combine(VectorClock* const result,
const VectorClock* const rhs);
+Bool vc_combine2(VectorClock* const result,
+ const VectorClock* const rhs,
+ const ThreadId tid);
void vc_print(const VectorClock* const vc);
void vc_snprint(Char* const str, Int const size,
const VectorClock* const vc);
|
|
From: <sv...@va...> - 2008-04-06 14:57:34
|
Author: bart
Date: 2008-04-06 15:57:37 +0100 (Sun, 06 Apr 2008)
New Revision: 7854
Log:
Added vc_combine2().
Modified:
trunk/exp-drd/drd_vc.c
Modified: trunk/exp-drd/drd_vc.c
===================================================================
--- trunk/exp-drd/drd_vc.c 2008-04-06 13:08:32 UTC (rev 7853)
+++ trunk/exp-drd/drd_vc.c 2008-04-06 14:57:37 UTC (rev 7854)
@@ -178,10 +178,23 @@
void vc_combine(VectorClock* const result,
const VectorClock* const rhs)
{
+ vc_combine2(result, rhs, -1);
+}
+
+/** Compute elementwise maximum.
+ *
+ * @return True if *result and *rhs are equal, or if *result and *rhs only
+ * differ in the component with thread ID tid.
+ */
+Bool vc_combine2(VectorClock* const result,
+ const VectorClock* const rhs,
+ const ThreadId tid)
+{
unsigned i;
unsigned j;
unsigned shared;
unsigned new_size;
+ Bool almost_equal = True;
tl_assert(result);
tl_assert(rhs);
@@ -211,13 +224,27 @@
i = 0;
for (j = 0; j < rhs->size; j++)
{
+ /* First of all, skip those clocks in result->vc[] for which there */
+ /* is no corresponding clock in rhs->vc[]. */
while (i < result->size && result->vc[i].threadid < rhs->vc[j].threadid)
+ {
+ if (result->vc[i].threadid != tid)
+ {
+ almost_equal = False;
+ }
i++;
+ }
+ /* If the end of *result is met, append rhs->vc[j] to *result. */
if (i >= result->size)
{
result->size++;
result->vc[i] = rhs->vc[j];
+ if (result->vc[i].threadid != tid)
+ {
+ almost_equal = False;
+ }
}
+ /* If clock rhs->vc[j] is not in *result, insert it. */
else if (result->vc[i].threadid > rhs->vc[j].threadid)
{
unsigned k;
@@ -227,10 +254,21 @@
}
result->size++;
result->vc[i] = rhs->vc[j];
+ if (result->vc[i].threadid != tid)
+ {
+ almost_equal = False;
+ }
}
+ /* Otherwise, both *result and *rhs have a clock for thread */
+ /* result->vc[i].threadid == rhs->vc[j].threadid. Compute the maximum. */
else
{
tl_assert(result->vc[i].threadid == rhs->vc[j].threadid);
+ if (result->vc[i].threadid != tid
+ && rhs->vc[j].count != result->vc[i].count)
+ {
+ almost_equal = False;
+ }
if (rhs->vc[j].count > result->vc[i].count)
{
result->vc[i].count = rhs->vc[j].count;
@@ -239,6 +277,8 @@
}
vc_check(result);
tl_assert(result->size == new_size);
+
+ return almost_equal;
}
void vc_print(const VectorClock* const vc)
|
|
From: <sv...@va...> - 2008-04-06 13:08:26
|
Author: bart
Date: 2008-04-06 14:08:32 +0100 (Sun, 06 Apr 2008)
New Revision: 7853
Log:
Added and commented out code for printing the result of VG_(get_StackTrace)().
Modified:
trunk/exp-drd/drd_clientreq.c
Modified: trunk/exp-drd/drd_clientreq.c
===================================================================
--- trunk/exp-drd/drd_clientreq.c 2008-04-06 13:07:45 UTC (rev 7852)
+++ trunk/exp-drd/drd_clientreq.c 2008-04-06 13:08:32 UTC (rev 7853)
@@ -122,6 +122,21 @@
case VG_USERREQ__DRD_SUPPRESS_CURRENT_STACK:
{
const Addr topmost_sp = highest_used_stack_address(vg_tid);
+#if 0
+ UInt nframes;
+ const UInt n_ips = 20;
+ Addr ips[n_ips], sps[n_ips], fps[n_ips];
+ unsigned i;
+
+ nframes = VG_(get_StackTrace)(vg_tid, ips, n_ips, sps, fps, 0);
+
+ VG_(message)(Vg_DebugMsg, "thread %d/%d", vg_tid, drd_tid);
+ for (i = 0; i < nframes; i++)
+ {
+ VG_(message)(Vg_DebugMsg, "[%2d] 0x%09lx 0x%09lx 0x%09lx",
+ i, ips[i], sps[i], fps[i]);
+ }
+#endif
thread_set_stack_startup(drd_tid, VG_(get_SP)(vg_tid));
drd_start_suppression(topmost_sp, VG_(thread_get_stack_max)(vg_tid),
"stack top");
|
|
From: <sv...@va...> - 2008-04-06 13:07:40
|
Author: bart
Date: 2008-04-06 14:07:45 +0100 (Sun, 06 Apr 2008)
New Revision: 7852
Log:
Trace lines enabled by --trace-segment=yes now include the thread ID of the created thread instead of the creator thread.
Modified:
trunk/exp-drd/drd_segment.c
Modified: trunk/exp-drd/drd_segment.c
===================================================================
--- trunk/exp-drd/drd_segment.c 2008-04-06 13:06:36 UTC (rev 7851)
+++ trunk/exp-drd/drd_segment.c 2008-04-06 13:07:45 UTC (rev 7852)
@@ -83,11 +83,11 @@
{
char msg[256];
VG_(snprintf)(msg, sizeof(msg),
- "New segment for thread %d/%d for vc ",
- creator != VG_INVALID_THREADID
- ? DrdThreadIdToVgThreadId(creator)
+ "New segment for thread %d/%d with vc ",
+ created != VG_INVALID_THREADID
+ ? DrdThreadIdToVgThreadId(created)
: DRD_INVALID_THREADID,
- creator);
+ created);
vc_snprint(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
&sg->vc);
VG_(message)(Vg_UserMsg, "%s", msg);
|
|
From: <sv...@va...> - 2008-04-06 13:06:33
|
Author: bart
Date: 2008-04-06 14:06:36 +0100 (Sun, 06 Apr 2008)
New Revision: 7851
Log:
Renamed command-line option --trace-address into --trace-addr. Made bitmap statistics more detailed.
Modified:
trunk/exp-drd/drd_main.c
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-04-06 13:05:58 UTC (rev 7850)
+++ trunk/exp-drd/drd_main.c 2008-04-06 13:06:36 UTC (rev 7851)
@@ -106,7 +106,7 @@
else VG_BOOL_CLO(arg, "--trace-semaphore", trace_semaphore)
else VG_BOOL_CLO(arg, "--trace-suppr", trace_suppression)
else VG_BOOL_CLO(arg, "--var-info", s_drd_var_info)
- else VG_STR_CLO (arg, "--trace-address", trace_address)
+ else VG_STR_CLO (arg, "--trace-addr", trace_address)
else
return VG_(replacement_malloc_process_cmd_line_option)(arg);
@@ -162,7 +162,7 @@
" cause an out of memory error [no].\n"
"\n"
" exp-drd options for monitoring process behavior:\n"
-" --trace-address=<address> Trace all load and store activity for the.\n"
+" --trace-addr=<address> Trace all load and store activity for the.\n"
" specified address [off].\n"
" --trace-barrier=yes|no Trace all barrier activity [no].\n"
" --trace-cond=yes|no Trace all condition variable activity [no].\n"
@@ -1067,9 +1067,11 @@
sg_get_max_alive_segments_count(),
thread_get_discard_ordered_segments_count());
VG_(message)(Vg_UserMsg,
- " bitmaps: %lld level 3 / %lld level 2 bitmaps were"
- " allocated.",
+ " bitmaps: %lld level 1 / %lld level 2 bitmap refs",
bm_get_bitmap_creation_count(),
+ bm_get_bitmap2_node_creation_count());
+ VG_(message)(Vg_UserMsg,
+ " and %lld level 2 bitmaps were allocated.",
bm_get_bitmap2_creation_count());
VG_(message)(Vg_UserMsg,
" mutex: %lld non-recursive lock/unlock events.",
|
|
From: <sv...@va...> - 2008-04-06 13:05:54
|
Author: bart
Date: 2008-04-06 14:05:58 +0100 (Sun, 06 Apr 2008)
New Revision: 7850
Log:
Added bm_get_bitmap2_node_creation_count().
Modified:
trunk/exp-drd/drd_bitmap.c
trunk/exp-drd/drd_bitmap.h
trunk/exp-drd/pub_drd_bitmap.h
Modified: trunk/exp-drd/drd_bitmap.c
===================================================================
--- trunk/exp-drd/drd_bitmap.c 2008-04-06 13:03:49 UTC (rev 7849)
+++ trunk/exp-drd/drd_bitmap.c 2008-04-06 13:05:58 UTC (rev 7850)
@@ -879,6 +879,11 @@
return s_bitmap_creation_count;
}
+ULong bm_get_bitmap2_node_creation_count(void)
+{
+ return s_bitmap2_creation_count;
+}
+
ULong bm_get_bitmap2_creation_count(void)
{
return s_bitmap2_creation_count;
Modified: trunk/exp-drd/drd_bitmap.h
===================================================================
--- trunk/exp-drd/drd_bitmap.h 2008-04-06 13:03:49 UTC (rev 7849)
+++ trunk/exp-drd/drd_bitmap.h 2008-04-06 13:05:58 UTC (rev 7850)
@@ -78,6 +78,7 @@
/* Local variables. */
static ULong s_bitmap2_creation_count;
+static ULong s_node_creation_count;
@@ -386,6 +387,7 @@
struct bitmap2ref* bm2ref;
struct bitmap2* bm2;
+ s_node_creation_count++;
bm2ref = VG_(OSetGen_AllocNode)(bm->oset, sizeof(*bm2ref));
bm2ref->addr = a1;
bm2 = bm2_new(a1);
@@ -409,6 +411,8 @@
tl_assert(bm);
//tl_assert(VG_(OSetGen_Lookup)(bm->oset, &bm2->addr) == 0);
+
+ s_node_creation_count++;
bm2ref = VG_(OSetGen_AllocNode)(bm->oset, sizeof(*bm2ref));
bm2ref->addr = bm2->addr;
bm2ref->bm2 = bm2;
Modified: trunk/exp-drd/pub_drd_bitmap.h
===================================================================
--- trunk/exp-drd/pub_drd_bitmap.h 2008-04-06 13:03:49 UTC (rev 7849)
+++ trunk/exp-drd/pub_drd_bitmap.h 2008-04-06 13:05:58 UTC (rev 7850)
@@ -112,7 +112,9 @@
const struct bitmap* const bm2);
void bm_print(const struct bitmap* bm);
ULong bm_get_bitmap_creation_count(void);
+ULong bm_get_bitmap2_node_creation_count(void);
ULong bm_get_bitmap2_creation_count(void);
+
void bm_test(void);
|
|
From: <sv...@va...> - 2008-04-06 13:03:46
|
Author: bart
Date: 2008-04-06 14:03:49 +0100 (Sun, 06 Apr 2008)
New Revision: 7849
Log:
Simplified format in which a vector clock is printed.
Modified:
trunk/exp-drd/drd_vc.c
Modified: trunk/exp-drd/drd_vc.c
===================================================================
--- trunk/exp-drd/drd_vc.c 2008-04-06 07:51:24 UTC (rev 7848)
+++ trunk/exp-drd/drd_vc.c 2008-04-06 13:03:49 UTC (rev 7849)
@@ -260,15 +260,20 @@
const VectorClock* const vc)
{
unsigned i;
+ unsigned j = 1;
tl_assert(vc);
VG_(snprintf)(str, size, "[");
for (i = 0; i < vc->size; i++)
{
tl_assert(vc->vc);
- VG_(snprintf)(str + VG_(strlen)(str), size - VG_(strlen)(str),
- "%s %d: %d", i > 0 ? "," : "",
- vc->vc[i].threadid, vc->vc[i].count);
+ for ( ; j <= vc->vc[i].threadid; j++)
+ {
+ VG_(snprintf)(str + VG_(strlen)(str), size - VG_(strlen)(str),
+ "%s %d",
+ i > 0 ? "," : "",
+ (j == vc->vc[i].threadid) ? vc->vc[i].count : 0);
+ }
}
VG_(snprintf)(str + VG_(strlen)(str), size - VG_(strlen)(str), " ]");
}
|
|
From: Bart V. A. <bar...@gm...> - 2008-04-06 11:30:34
|
On Sat, Apr 5, 2008 at 10:23 PM, Julian Seward <js...@ac...> wrote: > > > Because of performance reasons. When e.g. allocating memory for > > bitmaps, such memory is first allocated with VG_(malloc)(), > > initialized to 0xdd inside VG_(malloc)(), and then reinitialized to > > 0x00 by the caller of VG_(malloc)(). This is a waste of CPU cycles. > > This is true. (Except the 0xDD fill is done at deallocation time, > not allocation time). > > But the question is, can you reliably, repeatably, measure any > performance loss? I suspect you'd have to deallocate at the rate > of several tens of megabytes per second to see much difference, in > which case > > 1. at least for small deallocations, the overhead of the allocator > itself is much larger (it generates many cache misses) > > 2. if you really need to allocate/deallocate that fast, it might > be a sign that some higher-level algorithmic fix might be more > effective > > VG_(memset)'s main loop is vectorised and unrolled in an attempt > to minimise the cost. > > Really it depends on the actual performance numbers. Some numbers (obtained by tracing an exp-drd run of Firefox with callgrind): * VG_(malloc)() took up about 2% of the time for this run. * VG_(free)() took up about 11% of the time for this run. * 82% of the execution time of VG_(free)() was spent in VG_(memset)(). Based on these numbers I expect that the effect of commenting out the VG_(memset)() call will be measurable. Note: I'm still working on decreasing the number of VG_(malloc)() / VG_(free)() calls in exp-drd. Bart. |
|
From: <sv...@va...> - 2008-04-06 07:51:26
|
Author: bart
Date: 2008-04-06 08:51:24 +0100 (Sun, 06 Apr 2008)
New Revision: 7848
Log:
Data races on *stdout / *stderr are now suppressed via these objects itselves instead of via suppression patterns.
Modified:
trunk/exp-drd/drd_pthread_intercepts.c
trunk/glibc-2.X-drd.supp
Modified: trunk/exp-drd/drd_pthread_intercepts.c
===================================================================
--- trunk/exp-drd/drd_pthread_intercepts.c 2008-04-05 12:57:01 UTC (rev 7847)
+++ trunk/exp-drd/drd_pthread_intercepts.c 2008-04-06 07:51:24 UTC (rev 7848)
@@ -98,6 +98,11 @@
{
check_threading_library();
vg_set_main_thread_state();
+ /* glibc up to and including version 2.7 triggers conflicting accesses */
+ /* on stdout and stderr when sending output to one of these streams from */
+ /* more than one thread. Suppress data race reports on these objects. */
+ DRD_IGNORE_VAR(*stdout);
+ DRD_IGNORE_VAR(*stderr);
}
static MutexT pthread_to_drd_mutex_type(const int kind)
Modified: trunk/glibc-2.X-drd.supp
===================================================================
--- trunk/glibc-2.X-drd.supp 2008-04-05 12:57:01 UTC (rev 7847)
+++ trunk/glibc-2.X-drd.supp 2008-04-06 07:51:24 UTC (rev 7848)
@@ -76,29 +76,6 @@
obj:/lib*/libc-*
}
{
- libc-race-in-vfprintf
- exp-drd:ConflictingAccess
- fun:vfprintf
-}
-{
- libc-race-in-vsnprintf
- exp-drd:ConflictingAccess
- fun:vsnprintf
-}
-{
- libc-race-in-vsnprintf
- exp-drd:ConflictingAccess
- obj:/lib*/libc-*
- fun:vsnprintf
-}
-{
- libc-race-in-vsnprintf
- exp-drd:ConflictingAccess
- obj:/lib*/libc-*
- obj:/lib*/libc-*
- fun:vsnprintf
-}
-{
librt
exp-drd:ConflictingAccess
fun:__librt_enable_asynccancel
|
|
From: Bart V. A. <bar...@gm...> - 2008-04-06 07:49:31
|
On Sun, Apr 6, 2008 at 9:32 AM, Tom Hughes <to...@co...> wrote:
> That description is incorrect, or at least misleading.
>
> It never actually says that constructors don't work in shared
> objects (they do) it just implies that by saying that they are
> run before main is entered.
>
> That is only true for constructors in the main executable and
> any shared objects it is linked against however - constructors
> in a shared object that it dlopened will be run when the object
> is first opened.
>
> In short that attribute is doing something, and shouldn't be
> removed.
Thanks for the info, I wasn't aware that __attribute__((constructor))
should work in shared objects. By this time I had a look at the
dlopen() man page, and found the following paragraph:
Using ... the gcc -nostartfiles or -nostdlib options, is
not recommended. Their use may result in undesired behavior, since the
constructor/destructor routines will not be executed (unless special
measures are taken).
Is it correct that preloaded Valgrind shared objects are linked with
-nostdlib ? I noticed that
all Valgrind tools still work fine if I apply the following patch:
Index: coregrind/m_replacemalloc/vg_replace_malloc.c
===================================================================
@@ -668,6 +680,11 @@
0, 0, 0, 0);
}
+#include <stdlib.h>
+static void test(void) __attribute__((constructor));
+void test(void)
+{ abort(); }
+
/*--------------------------------------------------------------------*/
/*--- end vg_replace_malloc.c ---*/
/*--------------------------------------------------------------------*/
Bart.
|
|
From: Bart V. A. <bar...@gm...> - 2008-04-06 07:34:28
|
On Sat, Apr 5, 2008 at 5:39 PM, Bart Van Assche
<bar...@gm...> wrote:
> Hello,
>
> I developed a patch to solve the issue explained below. Is it OK if I
> commit this patch ?
> The patch checks that a filename refers to a regular file before
> trying to read ELF information
> from the file, and ignores regular files for which Valgrind does not
> have read access.
The vg_assert() statement in the previous patch I sent did not make
sense -- this should be fixed in the patch below. The number of
regression test failures reported on my PC by make regtest is reduced
from 10 to 9 by this patch, and it is still possible to run Amarok
under Valgrind.
Bart.
Index: coregrind/m_debuginfo/debuginfo.c
===================================================================
--- coregrind/m_debuginfo/debuginfo.c (revision 7844)
+++ coregrind/m_debuginfo/debuginfo.c (working copy)
@@ -491,6 +491,8 @@
Int nread;
HChar buf1k[1024];
Bool debug = False;
+ SysRes statres;
+ struct vki_stat statbuf;
/* In short, figure out if this mapping is of interest to us, and
if so, try to guess what ld.so is doing and when/if we should
@@ -520,44 +522,29 @@
if (debug)
VG_(printf)("di_notify_mmap-2: %s\n", filename);
- /* XXXX begin KLUDGE */
- /* Skip filenames in /dev/. Don't even bother to try opening them.
- Why?
-
- Suppose the client opens and then mmaps the file specified by
- 'filename' and puts some kind of lock on it, so nobody else can
- open it. If we now try to open it to peer at the ELF header,
- the system can hang, because the VG_(open) call blocks.
- Precisely this happed when running Amarok, which opened and then
- mmap'd /dev/snd/pcmC0D0c.
-
- A clean(er) solution is to open the file with VKI_O_NONBLOCK, so
- that if it is locked, we simply fail immediately and don't hang
- the whole system. But "man 2 open" gives only a sketchy
- description of the resulting file semantics. So for the
- meantime, just skip files in /dev/ as (1) they are likely to be
- subject to wierd-ass locking stuff, and (2) they won't contain
- useful debug info anyway.
-
- But that's a kludge; in principle the same problem could occur
- with *any* file.
- */
- if (0 == VG_(strncmp)(filename, "/dev/", 5)) {
- if (debug)
- VG_(printf)("di_notify_mmap-2: skipping %s\n", filename);
+ /* Only try to read debug information from regular files. */
+ statres = VG_(stat)(filename, &statbuf);
+ /* If the assert below ever fails, replace the VG_(stat)() call above */
+ /* by a VG_(lstat)() call. */
+ vg_assert(statres.isError || ! VKI_S_ISLNK(statbuf.st_mode));
+ if (statres.isError || ! VKI_S_ISREG(statbuf.st_mode))
+ {
return;
}
- /* XXXX end KLUDGE */
- /* Peer at the first few bytes of the file, to see if it is an ELF
- object file. */
+
+ /* Peer at the first few bytes of the file, to see if it is an ELF */
+ /* object file. Ignore the file if we do not have read permission. */
VG_(memset)(buf1k, 0, sizeof(buf1k));
fd = VG_(open)( filename, VKI_O_RDONLY, 0 );
if (fd.isError) {
DebugInfo fake_di;
- VG_(memset)(&fake_di, 0, sizeof(fake_di));
- fake_di.filename = filename;
- ML_(symerr)(&fake_di, True, "can't open file to inspect ELF header");
+ if (fd.err != VKI_EACCES)
+ {
+ VG_(memset)(&fake_di, 0, sizeof(fake_di));
+ fake_di.filename = filename;
+ ML_(symerr)(&fake_di, True, "can't open file to inspect ELF header");
+ }
return;
}
nread = VG_(read)( fd.res, buf1k, sizeof(buf1k) );
|
|
From: Tom H. <to...@co...> - 2008-04-06 07:32:55
|
In message <e2e...@ma...>
"Bart Van Assche" <bar...@gm...> wrote:
> The comments in coregrind/m_replacemalloc/vg_replace_malloc.c suggest
> that the init() function in that file is called just after the shared
> library this file is linked with has been loaded. This is not correct:
> __attribute__((constructor)) only makes sense in object files that are
> linked into an executable, not in object files that are linked into a
> shared library. See also the gcc manual about this attribute
> (http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gcc/Function-Attributes.html#Function-Attributes).
That description is incorrect, or at least misleading.
It never actually says that constructors don't work in shared
objects (they do) it just implies that by saying that they are
run before main is entered.
That is only true for constructors in the main executable and
any shared objects it is linked against however - constructors
in a shared object that it dlopened will be run when the object
is first opened.
In short that attribute is doing something, and shouldn't be
removed.
Tom
--
Tom Hughes (to...@co...)
http://www.compton.nu/
|
|
From: Bart V. A. <bar...@gm...> - 2008-04-06 07:22:51
|
The comments in coregrind/m_replacemalloc/vg_replace_malloc.c suggest that the init() function in that file is called just after the shared library this file is linked with has been loaded. This is not correct: __attribute__((constructor)) only makes sense in object files that are linked into an executable, not in object files that are linked into a shared library. See also the gcc manual about this attribute (http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gcc/Function-Attributes.html#Function-Attributes). Please review. Index: coregrind/m_replacemalloc/vg_replace_malloc.c =================================================================== --- coregrind/m_replacemalloc/vg_replace_malloc.c (revision 7844) +++ coregrind/m_replacemalloc/vg_replace_malloc.c (working copy) @@ -134,8 +138,8 @@ static struct vg_mallocfunc_info info; static int init_done; -/* Startup hook - called as init section */ -static void init(void) __attribute__((constructor)); +/* Initialization function */ +static void init(void); #define MALLOC_TRACE(format, args...) \ if (info.clo_trace_malloc) \ @@ -653,7 +665,7 @@ MALLINFO(m_libc_soname, mallinfo); -/* All the code in here is unused until this function is called */ +/* Call this function before dereferencing any members of 'info'. */ static void init(void) { |
|
From: Tom H. <th...@cy...> - 2008-04-06 03:18:46
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-04-06 03:15:13 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 == 330 tests, 76 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (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/mremap (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) |
|
From: Tom H. <th...@cy...> - 2008-04-06 03:05:52
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-04-06 03:15: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 == 326 tests, 76 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (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/mremap (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) |
|
From: Tom H. <th...@cy...> - 2008-04-06 02:54:46
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-04-06 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 == 419 tests, 9 stderr failures, 1 stdout failure, 0 post failures == 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/mremap (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-04-06 02:53:45
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-04-06 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 == 413 tests, 6 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-06 02:39:58
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-04-06 03:25: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 == 417 tests, 8 stderr failures, 5 stdout failures, 0 post failures == 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/mremap (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-04-06 02:32:28
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-04-06 03:10: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 == 413 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-06 02:19:31
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-04-06 03:00: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 == 419 tests, 31 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (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/mremap (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) |