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
(21) |
|
2
(19) |
3
(33) |
4
(24) |
5
(18) |
6
(13) |
7
(22) |
8
(21) |
|
9
(38) |
10
(25) |
11
(20) |
12
(27) |
13
(43) |
14
(9) |
15
(19) |
|
16
(37) |
17
(19) |
18
(13) |
19
(11) |
20
(8) |
21
(11) |
22
(25) |
|
23
(21) |
24
(30) |
25
(18) |
26
(11) |
27
(10) |
28
(14) |
29
(40) |
|
30
(24) |
31
(14) |
|
|
|
|
|
|
From: <sv...@va...> - 2008-03-22 17:36:19
|
Author: bart
Date: 2008-03-22 17:36:23 +0000 (Sat, 22 Mar 2008)
New Revision: 7757
Log:
Added libX11 and libxcb suppression types.
Modified:
trunk/glibc-2.X-drd.supp
Modified: trunk/glibc-2.X-drd.supp
===================================================================
--- trunk/glibc-2.X-drd.supp 2008-03-22 17:35:56 UTC (rev 7756)
+++ trunk/glibc-2.X-drd.supp 2008-03-22 17:36:23 UTC (rev 7757)
@@ -340,3 +340,15 @@
obj:/usr/lib*/libgomp.so*
obj:/usr/lib*/libgomp.so*
}
+{
+ libxcb-xcb_wait_for_reply
+ exp-drd:CondErr
+ fun:pthread_cond_destroy*
+ fun:xcb_wait_for_reply
+}
+{
+ libX11-XReply
+ exp-drd:CondErr
+ fun:pthread_cond_init*
+ fun:_XReply
+}
|
|
From: <sv...@va...> - 2008-03-22 17:35:51
|
Author: bart
Date: 2008-03-22 17:35:56 +0000 (Sat, 22 Mar 2008)
New Revision: 7756
Log:
Error type CondErr is now recognized when reading a suppression file.
Modified:
trunk/exp-drd/drd_error.c
Modified: trunk/exp-drd/drd_error.c
===================================================================
--- trunk/exp-drd/drd_error.c 2008-03-22 17:35:28 UTC (rev 7755)
+++ trunk/exp-drd/drd_error.c 2008-03-22 17:35:56 UTC (rev 7756)
@@ -257,6 +257,8 @@
if (VG_(strcmp)(name, "ConflictingAccess") == 0)
skind = ConflictingAccessSupp;
+ else if (VG_(strcmp)(name, "CondErr") == 0)
+ skind = CondErr;
else
return False;
|
|
From: <sv...@va...> - 2008-03-22 17:35:25
|
Author: bart
Date: 2008-03-22 17:35:28 +0000 (Sat, 22 Mar 2008)
New Revision: 7755
Log:
Fixed assert when delete[]-ing an array of size zero.
Modified:
trunk/exp-drd/drd_malloc_wrappers.c
Modified: trunk/exp-drd/drd_malloc_wrappers.c
===================================================================
--- trunk/exp-drd/drd_malloc_wrappers.c 2008-03-22 17:09:04 UTC (rev 7754)
+++ trunk/exp-drd/drd_malloc_wrappers.c 2008-03-22 17:35:28 UTC (rev 7755)
@@ -143,7 +143,8 @@
}
else
{
- s_stop_using_mem_callback(mc->data, mc->size);
+ if (mc->size > 0)
+ s_stop_using_mem_callback(mc->data, mc->size);
VG_(free)(mc);
}
}
|
|
From: <sv...@va...> - 2008-03-22 17:09:01
|
Author: bart
Date: 2008-03-22 17:09:04 +0000 (Sat, 22 Mar 2008)
New Revision: 7754
Log:
Added more tl_assert() statements.
Modified:
trunk/exp-drd/drd_segment.c
Modified: trunk/exp-drd/drd_segment.c
===================================================================
--- trunk/exp-drd/drd_segment.c 2008-03-22 17:07:39 UTC (rev 7753)
+++ trunk/exp-drd/drd_segment.c 2008-03-22 17:09:04 UTC (rev 7754)
@@ -192,7 +192,9 @@
void sg_merge(const Segment* const sg1, Segment* const sg2)
{
tl_assert(sg1);
+ tl_assert(sg1->refcnt == 1);
tl_assert(sg2);
+ tl_assert(sg2->refcnt == 1);
if (drd_trace_segment)
{
|
|
From: <sv...@va...> - 2008-03-22 17:07:34
|
Author: bart
Date: 2008-03-22 17:07:39 +0000 (Sat, 22 Mar 2008)
New Revision: 7753
Log:
Added more comments / renamed some variables / bm_print() now also works on 64-bit systems.
Modified:
trunk/exp-drd/drd_bitmap.c
trunk/exp-drd/drd_bitmap.h
Modified: trunk/exp-drd/drd_bitmap.c
===================================================================
--- trunk/exp-drd/drd_bitmap.c 2008-03-22 16:44:03 UTC (rev 7752)
+++ trunk/exp-drd/drd_bitmap.c 2008-03-22 17:07:39 UTC (rev 7753)
@@ -122,13 +122,16 @@
tl_assert(b_start < b_end);
tl_assert((b_start & ADDR0_MASK) <= ((b_end - 1) & ADDR0_MASK));
- for (b0 = b_start & ADDR0_MASK; b0 <= ((b_end - 1) & ADDR0_MASK); b0++)
+ if (access_type == eLoad)
{
- if (access_type == eLoad)
+ for (b0 = b_start & ADDR0_MASK; b0 <= ((b_end - 1) & ADDR0_MASK); b0++)
{
bm0_set(bm2->bm1.bm0_r, b0);
}
- else
+ }
+ else
+ {
+ for (b0 = b_start & ADDR0_MASK; b0 <= ((b_end - 1) & ADDR0_MASK); b0++)
{
bm0_set(bm2->bm1.bm0_w, b0);
}
@@ -708,21 +711,18 @@
for ( ; (bm2 = VG_(OSetGen_Next)(bm->oset)) != 0; )
{
const struct bitmap1* const bm1 = &bm2->bm1;
- unsigned k;
- for (k = 0; k < BITMAP1_UWORD_COUNT; k++)
+ unsigned b;
+ for (b = 0; b < ADDR0_COUNT; b++)
{
- unsigned b;
- for (b = 0; b < BITS_PER_UWORD; b++)
+ const Addr a = (bm2->addr << ADDR0_BITS) | b;
+ const Bool r = bm0_is_set(bm1->bm0_r, b) != 0;
+ const Bool w = bm0_is_set(bm1->bm0_w, b) != 0;
+ if (r || w)
{
- int const r = bm1->bm0_r[k] & bm0_mask(b);
- int const w = bm1->bm0_w[k] & bm0_mask(b);
- Addr const a = MAKE_ADDRESS(bm2->addr, k * BITS_PER_UWORD | b);
- if (r || w)
- {
- VG_(printf)("0x%08lx %c %c\n",
- (Addr)(a),
- w ? 'W' : ' ', r ? 'R' : ' ');
- }
+ VG_(printf)("0x%08lx %c %c\n",
+ a,
+ w ? 'W' : ' ',
+ r ? 'R' : ' ');
}
}
}
@@ -761,21 +761,21 @@
static
struct { Addr address; SizeT size; BmAccessTypeT access_type; }
s_args[] = {
- { 0, 1, eLoad },
- { 666, 4, eLoad },
- { 667, 2, eStore },
- { 1024, 1, eStore },
- { 0x0000ffff, 1, eLoad },
- { 0x0001ffff, 1, eLoad },
- { 0x00ffffff, 1, eLoad },
- { 0xffffffff, 1, eStore },
+ { 0 + ADDR0_COUNT, 1, eLoad },
+ { 666 + ADDR0_COUNT, 4, eLoad },
+ { 667 + ADDR0_COUNT, 2, eStore },
+ { -1 + 2*ADDR0_COUNT, 1, eStore },
+ { 0x0001ffffUL, 1, eLoad },
+ { 0x0002ffffUL, 1, eLoad },
+ { 0x00ffffffUL, 1, eLoad },
+ { 0xffffffffUL, 1, eStore },
};
void bm_test(void)
{
struct bitmap* bm;
struct bitmap* bm2;
- int i, j;
+ unsigned i, j;
VG_(printf)("Start of DRD BM unit test.\n");
@@ -801,10 +801,14 @@
}
VG_(printf)("Merge result:\n");
- bm2 = bm_merge(bm, bm);
+ bm2 = bm_new();
+ bm_merge2(bm2, bm);
+ bm_merge2(bm2, bm);
bm_print(bm);
+ VG_(printf)("Deleting bitmap bm\n");
bm_delete(bm);
+ VG_(printf)("Deleting bitmap bm2\n");
bm_delete(bm2);
VG_(printf)("End of DRD BM unit test.\n");
Modified: trunk/exp-drd/drd_bitmap.h
===================================================================
--- trunk/exp-drd/drd_bitmap.h 2008-03-22 16:44:03 UTC (rev 7752)
+++ trunk/exp-drd/drd_bitmap.h 2008-03-22 17:07:39 UTC (rev 7753)
@@ -75,11 +75,17 @@
#define UWORD_HIGHEST_ADDRESS(a) ((a) | (BITS_PER_UWORD - 1))
-// Local constants.
+/* Local constants. */
static ULong s_bitmap2_creation_count;
+
+/*********************************************************************/
+/* Functions for manipulating a struct bitmap1. */
+/*********************************************************************/
+
+
/* Lowest level, corresponding to the lowest ADDR0_BITS of an address. */
struct bitmap1
{
@@ -139,7 +145,10 @@
}
+
/*********************************************************************/
+/* Functions for manipulating a struct bitmap. */
+/*********************************************************************/
struct bitmap2
@@ -156,6 +165,10 @@
OSet* oset;
};
+/** Look up the address a1 in bitmap bm.
+ * @param a1 client address shifted right by ADDR0_BITS.
+ * @param bm bitmap pointer.
+ */
static __inline__
struct bitmap2* bm2_lookup(const struct bitmap* const bm, const UWord a1)
{
@@ -164,7 +177,7 @@
{
return bm->last_lookup_result;
}
- result = VG_(OSetGen_Lookup)(bm->oset,&a1);
+ result = VG_(OSetGen_Lookup)(bm->oset, &a1);
if (result)
{
((struct bitmap*)bm)->last_lookup_a1 = a1;
@@ -174,41 +187,45 @@
}
static __inline__
-struct bitmap2* bm2_insert(const struct bitmap* const bm,
- const UWord a1)
+struct bitmap2* bm2_insert(const struct bitmap* const bm, const UWord a1)
{
- struct bitmap2* const node = VG_(OSetGen_AllocNode)(bm->oset, sizeof(*node));
- node->addr = a1;
- VG_(memset)(&node->bm1, 0, sizeof(node->bm1));
- VG_(OSetGen_Insert)(bm->oset, node);
+ struct bitmap2* const bm2 = VG_(OSetGen_AllocNode)(bm->oset, sizeof(*bm2));
+ bm2->addr = a1;
+ VG_(memset)(&bm2->bm1, 0, sizeof(bm2->bm1));
+ VG_(OSetGen_Insert)(bm->oset, bm2);
((struct bitmap*)bm)->last_lookup_a1 = a1;
- ((struct bitmap*)bm)->last_lookup_result = node;
+ ((struct bitmap*)bm)->last_lookup_result = bm2;
s_bitmap2_creation_count++;
- return node;
+ return bm2;
}
+/** Look up the address a1 in bitmap bm, and insert it if not found.
+ *
+ * @param a1 client address shifted right by ADDR0_BITS.
+ * @param bm bitmap pointer.
+ */
static __inline__
struct bitmap2* bm2_lookup_or_insert(const struct bitmap* const bm,
const UWord a1)
{
- struct bitmap2* p2;
+ struct bitmap2* bm2;
if (a1 == bm->last_lookup_a1)
{
return bm->last_lookup_result;
}
- p2 = VG_(OSetGen_Lookup)(bm->oset, &a1);
- if (p2 == 0)
+ bm2 = VG_(OSetGen_Lookup)(bm->oset, &a1);
+ if (bm2 == 0)
{
- p2 = bm2_insert(bm, a1);
+ bm2 = bm2_insert(bm, a1);
}
((struct bitmap*)bm)->last_lookup_a1 = a1;
- ((struct bitmap*)bm)->last_lookup_result = p2;
- return p2;
+ ((struct bitmap*)bm)->last_lookup_result = bm2;
+ return bm2;
}
|
|
From: <sv...@va...> - 2008-03-22 16:43:59
|
Author: bart
Date: 2008-03-22 16:44:03 +0000 (Sat, 22 Mar 2008)
New Revision: 7752
Log:
Renamed bm_lookup() into bm2_lookup() and shifted right 2nd argument by ADDR0_BITS.
Modified:
trunk/exp-drd/drd_bitmap.c
trunk/exp-drd/drd_bitmap.h
Modified: trunk/exp-drd/drd_bitmap.c
===================================================================
--- trunk/exp-drd/drd_bitmap.c 2008-03-22 09:49:40 UTC (rev 7751)
+++ trunk/exp-drd/drd_bitmap.c 2008-03-22 16:44:03 UTC (rev 7752)
@@ -280,7 +280,7 @@
for (b = a1; b < a2; b = b_next)
{
- struct bitmap2* bm2 = bm_lookup(bm, b);
+ struct bitmap2* bm2 = bm2_lookup(bm, b >> ADDR0_BITS);
b_next = (b & ~ADDR0_MASK) + ADDR0_COUNT;
if (b_next > a2)
@@ -342,7 +342,7 @@
tl_assert(bm);
- p2 = bm_lookup(bm, a);
+ p2 = bm2_lookup(bm, a >> ADDR0_BITS);
if (p2)
{
p1 = &p2->bm1;
@@ -401,7 +401,7 @@
for (b = a1; b < a2; b = b_next)
{
- struct bitmap2* const p2 = bm_lookup(bm, b);
+ struct bitmap2* const p2 = bm2_lookup(bm, b >> ADDR0_BITS);
b_next = (b & ~ADDR0_MASK) + ADDR0_COUNT;
if (b_next > a2)
@@ -453,7 +453,7 @@
for (b = a1; b < a2; b = b_next)
{
- struct bitmap2* bm2 = bm_lookup(bm, b);
+ struct bitmap2* bm2 = bm2_lookup(bm, b >> ADDR0_BITS);
b_next = (b & ~ADDR0_MASK) + ADDR0_COUNT;
if (b_next > a2)
@@ -515,7 +515,7 @@
{
struct bitmap2* bm2;
- bm2 = bm_lookup(bm, a1);
+ bm2 = bm2_lookup(bm, a1 >> ADDR0_BITS);
return (bm2 && bm0_is_any_set(bm2->bm1.bm0_w, a1 & ADDR0_MASK, size));
}
@@ -526,7 +526,7 @@
{
struct bitmap2* bm2;
- bm2 = bm_lookup(bm, a1);
+ bm2 = bm2_lookup(bm, a1 >> ADDR0_BITS);
if (bm2)
{
Modified: trunk/exp-drd/drd_bitmap.h
===================================================================
--- trunk/exp-drd/drd_bitmap.h 2008-03-22 09:49:40 UTC (rev 7751)
+++ trunk/exp-drd/drd_bitmap.h 2008-03-22 16:44:03 UTC (rev 7752)
@@ -157,10 +157,9 @@
};
static __inline__
-struct bitmap2* bm_lookup(const struct bitmap* const bm, const Addr a)
+struct bitmap2* bm2_lookup(const struct bitmap* const bm, const UWord a1)
{
struct bitmap2* result;
- const UWord a1 = a >> ADDR0_BITS;
if (a1 == bm->last_lookup_a1)
{
return bm->last_lookup_result;
|
|
From: Julian S. <js...@ac...> - 2008-03-22 11:09:12
|
On Saturday 22 March 2008 09:58, Bart Van Assche wrote: > How about the patch below ? It adds branch prediction hints to the > expressions in assert statements. Probably not worth bothering. gcc understands that paths that lead to __attribute__((noreturn)) functions (as VG_(assert_fail) is, or at least should be) are unlikely to be taken. So in this case the branch prediction hints don't tell it anything it doesn't already know. I think what you're looking at here is more in the measurement noise level - I certainly see a lot of similar variance in run times on my Core 2. J |
|
From: <sv...@va...> - 2008-03-22 09:49:37
|
Author: bart
Date: 2008-03-22 09:49:40 +0000 (Sat, 22 Mar 2008)
New Revision: 7751
Log:
Minor optimization.
Modified:
trunk/exp-drd/drd_thread.c
Modified: trunk/exp-drd/drd_thread.c
===================================================================
--- trunk/exp-drd/drd_thread.c 2008-03-22 09:38:48 UTC (rev 7750)
+++ trunk/exp-drd/drd_thread.c 2008-03-22 09:49:40 UTC (rev 7751)
@@ -416,7 +416,7 @@
{
tl_assert(0 <= tid && tid < DRD_N_THREADS
&& tid != DRD_INVALID_THREADID);
- tl_assert(sane_ThreadInfo(&s_threadinfo[tid]));
+ //tl_assert(sane_ThreadInfo(&s_threadinfo[tid]));
if (sg->prev)
sg->prev->next = sg->next;
@@ -427,7 +427,8 @@
if (sg == s_threadinfo[tid].last)
s_threadinfo[tid].last = sg->prev;
sg_put(sg);
- tl_assert(sane_ThreadInfo(&s_threadinfo[tid]));
+
+ //tl_assert(sane_ThreadInfo(&s_threadinfo[tid]));
}
VectorClock* thread_get_vc(const DrdThreadId tid)
|
|
From: <sv...@va...> - 2008-03-22 09:38:46
|
Author: bart
Date: 2008-03-22 09:38:48 +0000 (Sat, 22 Mar 2008)
New Revision: 7750
Log:
Implemented segment merging.
Modified:
trunk/exp-drd/drd_main.c
trunk/exp-drd/drd_segment.c
trunk/exp-drd/drd_segment.h
trunk/exp-drd/drd_thread.c
trunk/exp-drd/drd_thread.h
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-03-22 09:37:38 UTC (rev 7749)
+++ trunk/exp-drd/drd_main.c 2008-03-22 09:38:48 UTC (rev 7750)
@@ -71,20 +71,22 @@
static Bool drd_process_cmd_line_option(Char* arg)
{
- Bool show_confl_seg = True;
- Bool trace_barrier = False;
- Bool trace_clientobj = False;
- Bool trace_cond = False;
- Bool trace_csw = False;
- Bool trace_danger_set = False;
- Bool trace_mutex = False;
- Bool trace_rwlock = False;
- Bool trace_segment = False;
- Bool trace_semaphore = False;
- Bool trace_suppression = False;
- Char* trace_address = 0;
+ int segment_merging = -1;
+ int show_confl_seg = -1;
+ int trace_barrier = -1;
+ int trace_clientobj = -1;
+ int trace_cond = -1;
+ int trace_csw = -1;
+ int trace_danger_set = -1;
+ int trace_mutex = -1;
+ int trace_rwlock = -1;
+ int trace_segment = -1;
+ int trace_semaphore = -1;
+ int trace_suppression = -1;
+ Char* trace_address = 0;
VG_BOOL_CLO (arg, "--drd-stats", drd_print_stats)
+ else VG_BOOL_CLO(arg, "--segment-merging", segment_merging)
else VG_BOOL_CLO(arg, "--show-confl-seg", show_confl_seg)
else VG_BOOL_CLO(arg, "--trace-barrier", trace_barrier)
else VG_BOOL_CLO(arg, "--trace-clientobj", trace_clientobj)
@@ -102,31 +104,33 @@
else
return False;
- if (! show_confl_seg)
+ if (segment_merging != -1)
+ thread_set_segment_merging(segment_merging);
+ if (show_confl_seg != -1)
set_show_conflicting_segments(show_confl_seg);
if (trace_address)
{
drd_trace_address = VG_(strtoll16)(trace_address, 0);
}
- if (trace_barrier)
+ if (trace_barrier != -1)
barrier_set_trace(trace_barrier);
- if (trace_clientobj)
+ if (trace_clientobj != -1)
clientobj_set_trace(trace_clientobj);
- if (trace_cond)
+ if (trace_cond != -1)
cond_set_trace(trace_cond);
- if (trace_csw)
+ if (trace_csw != -1)
thread_trace_context_switches(trace_csw);
- if (trace_danger_set)
+ if (trace_danger_set != -1)
thread_trace_danger_set(trace_danger_set);
- if (trace_mutex)
+ if (trace_mutex != -1)
mutex_set_trace(trace_mutex);
- if (trace_rwlock)
+ if (trace_rwlock != -1)
rwlock_set_trace(trace_rwlock);
- if (trace_segment)
+ if (trace_segment != -1)
sg_set_trace(trace_segment);
- if (trace_semaphore)
+ if (trace_semaphore != -1)
semaphore_set_trace(trace_semaphore);
- if (trace_suppression)
+ if (trace_suppression != -1)
suppression_set_trace(trace_suppression);
return True;
Modified: trunk/exp-drd/drd_segment.c
===================================================================
--- trunk/exp-drd/drd_segment.c 2008-03-22 09:37:38 UTC (rev 7749)
+++ trunk/exp-drd/drd_segment.c 2008-03-22 09:38:48 UTC (rev 7750)
@@ -188,6 +188,32 @@
}
}
+/** Merge sg1 and sg2 into sg1. */
+void sg_merge(const Segment* const sg1, Segment* const sg2)
+{
+ tl_assert(sg1);
+ tl_assert(sg2);
+
+ if (drd_trace_segment)
+ {
+ char msg[256];
+
+ VG_(snprintf)(msg, sizeof(msg), "Merging segments with vector clocks ");
+ vc_snprint(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
+ &sg1->vc);
+ VG_(snprintf)(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
+ " and ");
+ vc_snprint(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
+ &sg2->vc);
+ VG_(message)(Vg_UserMsg, "%s", msg);
+ }
+
+ // Keep sg1->stacktrace.
+ // Keep sg1->vc.
+ // Merge sg2->bm into sg1->bm.
+ bm_merge2(sg1->bm, sg2->bm);
+}
+
void sg_print(const Segment* const sg)
{
tl_assert(sg);
Modified: trunk/exp-drd/drd_segment.h
===================================================================
--- trunk/exp-drd/drd_segment.h 2008-03-22 09:37:38 UTC (rev 7749)
+++ trunk/exp-drd/drd_segment.h 2008-03-22 09:38:48 UTC (rev 7750)
@@ -53,6 +53,7 @@
int sg_get_refcnt(const Segment* const sg);
Segment* sg_get(Segment* const sg);
void sg_put(Segment* const sg);
+void sg_merge(const Segment* const sg1, Segment* const sg2);
void sg_print(const Segment* const sg);
Bool sg_get_trace(void);
void sg_set_trace(const Bool trace_segment);
Modified: trunk/exp-drd/drd_thread.c
===================================================================
--- trunk/exp-drd/drd_thread.c 2008-03-22 09:37:38 UTC (rev 7749)
+++ trunk/exp-drd/drd_thread.c 2008-03-22 09:38:48 UTC (rev 7750)
@@ -59,6 +59,7 @@
struct bitmap* s_danger_set;
static Bool s_trace_context_switches = False;
static Bool s_trace_danger_set = False;
+static Bool s_segment_merging = True;
// Function definitions.
@@ -73,6 +74,11 @@
s_trace_danger_set = t;
}
+void thread_set_segment_merging(const Bool m)
+{
+ s_segment_merging = m;
+}
+
__inline__ Bool IsValidDrdThreadId(const DrdThreadId tid)
{
return (0 <= tid && tid < DRD_N_THREADS && tid != DRD_INVALID_THREADID
@@ -538,6 +544,41 @@
vc_cleanup(&thread_vc_min);
}
+/** Merge all segments that may be merged without triggering false positives
+ * or discarding real data races. For the theoretical background of segment
+ * merging, see also the following paper:
+ * Mark Christiaens, Michiel Ronsse and Koen De Bosschere.
+ * Bounding the number of segment histories during data race detection.
+ * Parallel Computing archive, Volume 28, Issue 9, pp 1221-1238,
+ * September 2002.
+ */
+static void thread_merge_segments(void)
+{
+ unsigned i;
+
+ for (i = 0; i < sizeof(s_threadinfo) / sizeof(s_threadinfo[0]); i++)
+ {
+ Segment* sg;
+
+ tl_assert(sane_ThreadInfo(&s_threadinfo[i]));
+
+ for (sg = s_threadinfo[i].first; sg; sg = sg->next)
+ {
+ if (sg_get_refcnt(sg) == 1
+ && sg->next
+ && sg_get_refcnt(sg->next) == 1
+ && sg->next->next)
+ {
+ /* Merge sg and sg->next into sg. */
+ sg_merge(sg, sg->next);
+ thread_discard_segment(i, sg->next);
+ }
+ }
+
+ tl_assert(sane_ThreadInfo(&s_threadinfo[i]));
+ }
+}
+
/** Create a new segment for the specified thread, and discard any segments
* that cannot cause races anymore.
*/
@@ -549,6 +590,9 @@
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 */
Modified: trunk/exp-drd/drd_thread.h
===================================================================
--- trunk/exp-drd/drd_thread.h 2008-03-22 09:37:38 UTC (rev 7749)
+++ trunk/exp-drd/drd_thread.h 2008-03-22 09:38:48 UTC (rev 7750)
@@ -89,6 +89,7 @@
void thread_trace_context_switches(const Bool t);
void thread_trace_danger_set(const Bool t);
+void thread_set_segment_merging(const Bool m);
Bool IsValidDrdThreadId(const DrdThreadId tid);
DrdThreadId VgThreadIdToDrdThreadId(const ThreadId tid);
|
|
From: <sv...@va...> - 2008-03-22 09:37:33
|
Author: bart Date: 2008-03-22 09:37:38 +0000 (Sat, 22 Mar 2008) New Revision: 7749 Log: Minor documentation changes. Modified: trunk/exp-drd/docs/README.txt Modified: trunk/exp-drd/docs/README.txt =================================================================== --- trunk/exp-drd/docs/README.txt 2008-03-22 09:36:23 UTC (rev 7748) +++ trunk/exp-drd/docs/README.txt 2008-03-22 09:37:38 UTC (rev 7749) @@ -198,7 +198,8 @@ take. Exmples for Linux of actions with an unknown call time are: - Locking a mutex. - Dynamic memory allocation via e.g. malloc() since malloc() internally -uses mutexes. +uses mutexes and since malloc() may trigger TLB modifications via the +kernel. - File I/O, since file I/O uses several resources that are shared over threads and even over processes. @@ -407,7 +408,7 @@ [Christiaens 2002] Mark Christiaens, Michiel Ronsse, Koen De Bosschere. Bounding the number of segment histories during data race detection. - Parallel Computing archive, Volume 28, Issue 9, pp 1221-1238, + Parallel Computing archive, Volume 28, Issue 9, pp 1221-1238, September 2002. http://portal.acm.org/citation.cfm?id=638124 |
|
From: <sv...@va...> - 2008-03-22 09:36:18
|
Author: bart
Date: 2008-03-22 09:36:23 +0000 (Sat, 22 Mar 2008)
New Revision: 7748
Log:
Make the run_openmp_test work again with bash, and optimize it slightly.
Modified:
trunk/exp-drd/tests/run_openmp_test
Modified: trunk/exp-drd/tests/run_openmp_test
===================================================================
--- trunk/exp-drd/tests/run_openmp_test 2008-03-22 09:05:04 UTC (rev 7747)
+++ trunk/exp-drd/tests/run_openmp_test 2008-03-22 09:36:23 UTC (rev 7748)
@@ -18,14 +18,16 @@
# nothing. The second case occurs if gcc has been compiled with
# --disable-linux-futex, and the last case occurs if gcc has been compiled
# with --enable-linux-futex.
- rc="$(nm "${libgomp_path}" 2>&1
+ rc="$(nm "${libgomp_path}" 2>&1 \
|
while read line
do
if [ "${line%: no symbols}" != "${line}" ]; then
echo 1
+ break
elif [ "${line% gomp_barrier_init}" != "${line}" ]; then
echo 0
+ break
fi
done)"
exit ${rc:-1}
|
|
From: <sv...@va...> - 2008-03-22 09:05:00
|
Author: bart Date: 2008-03-22 09:05:04 +0000 (Sat, 22 Mar 2008) New Revision: 7747 Log: Removed filter statements that overlap with tests/filter_stderr_basic. Modified: trunk/exp-drd/tests/filter_stderr Modified: trunk/exp-drd/tests/filter_stderr =================================================================== --- trunk/exp-drd/tests/filter_stderr 2008-03-22 08:08:58 UTC (rev 7746) +++ trunk/exp-drd/tests/filter_stderr 2008-03-22 09:05:04 UTC (rev 7747) @@ -10,9 +10,6 @@ # Remove line numbers from stack traces. sed \ -e "/^exp-drd, a data race detector\.$/d" \ --e "/^Alarm clock$/d" \ --e "/^Aborted$/d" \ --e "/^Aborted (core dumped)$/d" \ -e "s/^Allocation context: stack of thread \([0-9]*\), offset -[0-9]*$/Allocation context: stack of thread \1, offset .../" \ -e "/^warning: evaluate_Dwarf3_Expr: unhandled DW_OP_.*/d" \ -e "s/, in frame #[0-9]* of thread /, in frame #? of thread /" \ |
|
From: Bart V. A. <bar...@gm...> - 2008-03-22 08:58:11
|
How about the patch below ? It adds branch prediction hints to the
expressions in assert statements. What I do not understand is that
this results in a small slowdown for some tests and a speedup for
other tests. The tests were run on a Core 2 Duo CPU in 64-bit mode.
Bart.
$ perl perf/vg_perf --vg=../../t/previous --vg=. perf
-- Running tests in perf ----------------------------------------------
-- bigcode1 --
bigcode1 previous :0.17s no: 2.8s (16.6x, -----) me: 5.0s (29.5x, -----)
bigcode1 . :0.17s no: 2.8s (16.7x, -0.7%) me: 5.0s (29.3x, 0.8%)
-- bigcode2 --
bigcode2 previous :0.16s no: 6.0s (37.8x, -----) me:12.1s (75.8x, -----)
bigcode2 . :0.16s no: 6.1s (37.9x, -0.3%) me:11.9s (74.6x, 1.6%)
-- bz2 --
bz2 previous :0.72s no: 4.5s ( 6.2x, -----) me:11.0s (15.3x, -----)
bz2 . :0.72s no: 4.5s ( 6.3x, -1.3%) me:10.8s (15.0x, 2.0%)
-- fbench --
fbench previous :0.41s no: 2.1s ( 5.0x, -----) me: 6.6s (16.0x, -----)
fbench . :0.41s no: 2.0s ( 4.9x, 1.9%) me: 6.5s (15.9x, 0.6%)
-- ffbench --
ffbench previous :0.29s no: 1.1s ( 3.8x, -----) me: 4.2s (14.5x, -----)
ffbench . :0.29s no: 1.1s ( 3.9x, -0.9%) me: 4.4s (15.3x, -5.5%)
-- heap --
heap previous :0.13s no: 1.2s ( 9.1x, -----) me: 9.6s (73.7x, -----)
heap . :0.13s no: 1.1s ( 8.6x, 5.1%) me: 9.7s (74.5x, -1.0%)
-- sarp --
sarp previous :0.02s no: 0.2s (12.5x, -----) me: 2.6s (132.0x, -----)
sarp . :0.02s no: 0.2s (12.0x, 4.0%) me: 2.6s (130.5x, 1.1%)
-- tinycc --
tinycc previous :0.24s no: 3.4s (14.0x, -----) me:15.0s (62.6x, -----)
tinycc . :0.24s no: 3.4s (14.2x, -1.5%) me:15.4s (64.0x, -2.3%)
-- Finished tests in perf ----------------------------------------------
== 8 programs, 32 timings =================
Index: include/pub_tool_libcassert.h
===================================================================
--- include/pub_tool_libcassert.h (revision 7743)
+++ include/pub_tool_libcassert.h (working copy)
@@ -31,15 +31,19 @@
#ifndef __PUB_TOOL_LIBCBASSERT_H
#define __PUB_TOOL_LIBCBASSERT_H
+
+#include "pub_tool_basics.h" /* LIKELY() */
+
+
#define tl_assert(expr) \
- ((void) ((expr) ? 0 : \
+ ((void) (LIKELY(expr) ? 0 : \
(VG_(assert_fail) (/*isCore?*/False, #expr, \
__FILE__, __LINE__, __PRETTY_FUNCTION__, \
""), \
0)))
#define tl_assert2(expr, format, args...) \
- ((void) ((expr) ? 0 : \
+ ((void) (LIKELY(expr) ? 0 : \
(VG_(assert_fail) (/*isCore?*/False, #expr, \
__FILE__, __LINE__, __PRETTY_FUNCTION__, \
format, ##args), \
Index: coregrind/m_aspacemgr/priv_aspacemgr.h
===================================================================
--- coregrind/m_aspacemgr/priv_aspacemgr.h (revision 7743)
+++ coregrind/m_aspacemgr/priv_aspacemgr.h (working copy)
@@ -73,7 +73,7 @@
const Char* fn );
#define aspacem_assert(expr) \
- ((void) ((expr) ? 0 : \
+ ((void) (LIKELY(expr) ? 0 : \
(ML_(am_assert_fail)(#expr, \
__FILE__, __LINE__, \
__PRETTY_FUNCTION__))))
Index: coregrind/pub_core_libcassert.h
===================================================================
--- coregrind/pub_core_libcassert.h (revision 7743)
+++ coregrind/pub_core_libcassert.h (working copy)
@@ -47,14 +47,14 @@
"valgrind", VG_BUGS_TO, "")
#define vg_assert(expr) \
- ((void) ((expr) ? 0 : \
+ ((void) (LIKELY(expr) ? 0 : \
(VG_(assert_fail) (/*isCore*/True, #expr, \
__FILE__, __LINE__, __PRETTY_FUNCTION__, \
""), \
0)))
#define vg_assert2(expr, format, args...) \
- ((void) ((expr) ? 0 : \
+ ((void) (LIKELY(expr) ? 0 : \
(VG_(assert_fail) (/*isCore*/True, #expr, \
__FILE__, __LINE__, __PRETTY_FUNCTION__, \
format, ##args), \
|
|
From: <sv...@va...> - 2008-03-22 08:08:52
|
Author: bart
Date: 2008-03-22 08:08:58 +0000 (Sat, 22 Mar 2008)
New Revision: 7746
Log:
Modified the run_openmp_test script such that it can be run by Ubuntu's dash shell.
Modified:
trunk/exp-drd/tests/run_openmp_test
Modified: trunk/exp-drd/tests/run_openmp_test
===================================================================
--- trunk/exp-drd/tests/run_openmp_test 2008-03-22 08:04:29 UTC (rev 7745)
+++ trunk/exp-drd/tests/run_openmp_test 2008-03-22 08:08:58 UTC (rev 7746)
@@ -4,25 +4,6 @@
# with status 0 if the OpenMP test program should be run and that exits with
# status 1 if the OpenMP test program should not be run.
-# Inspect the output of nm. If nm does not find any symbol information,
-# echo 1. If the symbol gomp_barrier_init is found, echo 0. Otherwise echo
-# nothing. The second case occurs if gcc has been compiled with
-# --disable-linux-futex, and the last case occurs if gcc has been compiled with
-# --enable-linux-futex.
-function parse_libgomp {
- nm "$1" 2>&1 \
- |
- while read line
- do
- if [ "${line%: no symbols}" != "${line}" ]; then
- echo 1
- elif [ "${line% gomp_barrier_init}" != "${line}" ]; then
- echo 0
- fi
- done
-}
-
-
test -e "$1" || exit $?
if [ "$(uname)" = Linux ]; then
@@ -32,7 +13,21 @@
| while read soname arrow path offset; \
do if [ "${soname#libgomp.so}" != "${soname}" ]; then echo $path; fi; done)"
- rc="$(parse_libgomp "${libgomp_path}")"
+ # Inspect the output of nm. If nm does not find any symbol information,
+ # echo 1. If the symbol gomp_barrier_init is found, echo 0. Otherwise echo
+ # nothing. The second case occurs if gcc has been compiled with
+ # --disable-linux-futex, and the last case occurs if gcc has been compiled
+ # with --enable-linux-futex.
+ rc="$(nm "${libgomp_path}" 2>&1
+ |
+ while read line
+ do
+ if [ "${line%: no symbols}" != "${line}" ]; then
+ echo 1
+ elif [ "${line% gomp_barrier_init}" != "${line}" ]; then
+ echo 0
+ fi
+ done)"
exit ${rc:-1}
fi
|
|
From: <sv...@va...> - 2008-03-22 08:04:27
|
Author: bart
Date: 2008-03-22 08:04:29 +0000 (Sat, 22 Mar 2008)
New Revision: 7745
Log:
Moved macro's that specify branch prediction hints to include/pub_tool_basics.h
Modified:
trunk/coregrind/m_debuginfo/priv_misc.h
trunk/helgrind/hg_main.c
trunk/include/pub_tool_basics.h
trunk/memcheck/mc_main.c
Modified: trunk/coregrind/m_debuginfo/priv_misc.h
===================================================================
--- trunk/coregrind/m_debuginfo/priv_misc.h 2008-03-22 07:52:44 UTC (rev 7744)
+++ trunk/coregrind/m_debuginfo/priv_misc.h 2008-03-22 08:04:29 UTC (rev 7745)
@@ -37,15 +37,6 @@
#define __PRIV_MISC_H
-#ifdef HAVE_BUILTIN_EXPECT
-#define LIKELY(cond) __builtin_expect(!!(cond),1)
-#define UNLIKELY(cond) __builtin_expect(!!(cond),0)
-#else
-#define LIKELY(cond) (cond)
-#define UNLIKELY(cond) (cond)
-#endif
-
-
/* Allocate(zeroed), free, strdup, all in VG_AR_DINFO. */
void* ML_(dinfo_zalloc)( SizeT szB );
void ML_(dinfo_free)( void* v );
Modified: trunk/helgrind/hg_main.c
===================================================================
--- trunk/helgrind/hg_main.c 2008-03-22 07:52:44 UTC (rev 7744)
+++ trunk/helgrind/hg_main.c 2008-03-22 08:04:29 UTC (rev 7745)
@@ -226,15 +226,7 @@
/* Round a down to the next multiple of N. N must be a power of 2 */
#define ROUNDDN(a, N) ((a) & ~(N-1))
-#ifdef HAVE_BUILTIN_EXPECT
-#define LIKELY(cond) __builtin_expect(!!(cond),1)
-#define UNLIKELY(cond) __builtin_expect(!!(cond),0)
-#else
-#define LIKELY(cond) (cond)
-#define UNLIKELY(cond) (cond)
-#endif
-
/*----------------------------------------------------------------*/
/*--- Primary data definitions ---*/
/*----------------------------------------------------------------*/
Modified: trunk/include/pub_tool_basics.h
===================================================================
--- trunk/include/pub_tool_basics.h 2008-03-22 07:52:44 UTC (rev 7744)
+++ trunk/include/pub_tool_basics.h 2008-03-22 08:04:29 UTC (rev 7745)
@@ -52,7 +52,10 @@
// For varargs types
#include <stdarg.h>
+/* For HAVE_BUILTIN_EXPECT */
+#include "config.h"
+
/* ---------------------------------------------------------------------
builtin types
------------------------------------------------------------------ */
@@ -155,6 +158,16 @@
// Where to send bug reports to.
#define VG_BUGS_TO "www.valgrind.org"
+/* Branch prediction hints. */
+#if HAVE_BUILTIN_EXPECT
+# define LIKELY(x) __builtin_expect(!!(x), 1)
+# define UNLIKELY(x) __builtin_expect((x), 0)
+#else
+# define LIKELY(x) (x)
+# define UNLIKELY(x) (x)
+#endif
+
+
#endif /* __PUB_TOOL_BASICS_H */
/*--------------------------------------------------------------------*/
Modified: trunk/memcheck/mc_main.c
===================================================================
--- trunk/memcheck/mc_main.c 2008-03-22 07:52:44 UTC (rev 7744)
+++ trunk/memcheck/mc_main.c 2008-03-22 08:04:29 UTC (rev 7745)
@@ -49,13 +49,6 @@
#include "mc_include.h"
#include "memcheck.h" /* for client requests */
-#ifdef HAVE_BUILTIN_EXPECT
-#define EXPECTED_TAKEN(cond) __builtin_expect((cond),1)
-#define EXPECTED_NOT_TAKEN(cond) __builtin_expect((cond),0)
-#else
-#define EXPECTED_TAKEN(cond) (cond)
-#define EXPECTED_NOT_TAKEN(cond) (cond)
-#endif
/* Set to 1 to do a little more sanity checking */
#define VG_DEBUG_MEMORY 0
@@ -503,9 +496,9 @@
/* First search the front-cache, which is a self-organising
list containing the most popular entries. */
- if (EXPECTED_TAKEN(auxmap_L1[0].base == a))
+ if (LIKELY(auxmap_L1[0].base == a))
return auxmap_L1[0].ent;
- if (EXPECTED_TAKEN(auxmap_L1[1].base == a)) {
+ if (LIKELY(auxmap_L1[1].base == a)) {
Addr t_base = auxmap_L1[0].base;
AuxMapEnt* t_ent = auxmap_L1[0].ent;
auxmap_L1[0].base = auxmap_L1[1].base;
@@ -557,7 +550,7 @@
/* First see if we already have it. */
res = maybe_find_in_auxmap( a );
- if (EXPECTED_TAKEN(res))
+ if (LIKELY(res))
return res;
/* Ok, there's no entry in the secondary map, so we'll have
@@ -614,7 +607,7 @@
static INLINE SecMap* get_secmap_for_writing_low(Addr a)
{
SecMap** p = get_secmap_low_ptr(a);
- if (EXPECTED_NOT_TAKEN(is_distinguished_sm(*p)))
+ if (UNLIKELY(is_distinguished_sm(*p)))
*p = copy_for_writing(*p);
return *p;
}
@@ -622,7 +615,7 @@
static INLINE SecMap* get_secmap_for_writing_high ( Addr a )
{
SecMap** p = get_secmap_high_ptr(a);
- if (EXPECTED_NOT_TAKEN(is_distinguished_sm(*p)))
+ if (UNLIKELY(is_distinguished_sm(*p)))
*p = copy_for_writing(*p);
return *p;
}
@@ -1029,7 +1022,7 @@
static INLINE Bool in_ignored_range ( Addr a )
{
Int i;
- if (EXPECTED_TAKEN(ignoreRanges.used == 0))
+ if (LIKELY(ignoreRanges.used == 0))
return False;
for (i = 0; i < ignoreRanges.used; i++) {
if (a >= ignoreRanges.start[i] && a < ignoreRanges.end[i])
@@ -1174,25 +1167,25 @@
folded out by compilers on 32-bit platforms. These are derived
from LOADV64 and LOADV32.
*/
- if (EXPECTED_TAKEN(sizeof(void*) == 8
+ if (LIKELY(sizeof(void*) == 8
&& nBits == 64 && VG_IS_8_ALIGNED(a))) {
SecMap* sm = get_secmap_for_reading(a);
UWord sm_off16 = SM_OFF_16(a);
UWord vabits16 = ((UShort*)(sm->vabits8))[sm_off16];
- if (EXPECTED_TAKEN(vabits16 == VA_BITS16_DEFINED))
+ if (LIKELY(vabits16 == VA_BITS16_DEFINED))
return V_BITS64_DEFINED;
- if (EXPECTED_TAKEN(vabits16 == VA_BITS16_UNDEFINED))
+ if (LIKELY(vabits16 == VA_BITS16_UNDEFINED))
return V_BITS64_UNDEFINED;
/* else fall into the slow case */
}
- if (EXPECTED_TAKEN(sizeof(void*) == 8
+ if (LIKELY(sizeof(void*) == 8
&& nBits == 32 && VG_IS_4_ALIGNED(a))) {
SecMap* sm = get_secmap_for_reading(a);
UWord sm_off = SM_OFF(a);
UWord vabits8 = sm->vabits8[sm_off];
- if (EXPECTED_TAKEN(vabits8 == VA_BITS8_DEFINED))
+ if (LIKELY(vabits8 == VA_BITS8_DEFINED))
return ((UWord)0xFFFFFFFF00000000ULL | (UWord)V_BITS32_DEFINED);
- if (EXPECTED_TAKEN(vabits8 == VA_BITS8_UNDEFINED))
+ if (LIKELY(vabits8 == VA_BITS8_UNDEFINED))
return ((UWord)0xFFFFFFFF00000000ULL | (UWord)V_BITS32_UNDEFINED);
/* else fall into slow case */
}
@@ -1256,18 +1249,18 @@
folded out by compilers on 32-bit platforms. These are derived
from STOREV64 and STOREV32.
*/
- if (EXPECTED_TAKEN(sizeof(void*) == 8
+ if (LIKELY(sizeof(void*) == 8
&& nBits == 64 && VG_IS_8_ALIGNED(a))) {
SecMap* sm = get_secmap_for_reading(a);
UWord sm_off16 = SM_OFF_16(a);
UWord vabits16 = ((UShort*)(sm->vabits8))[sm_off16];
- if (EXPECTED_TAKEN( !is_distinguished_sm(sm) &&
+ if (LIKELY( !is_distinguished_sm(sm) &&
(VA_BITS16_DEFINED == vabits16 ||
VA_BITS16_UNDEFINED == vabits16) )) {
/* Handle common case quickly: a is suitably aligned, */
/* is mapped, and is addressible. */
// Convert full V-bits in register to compact 2-bit form.
- if (EXPECTED_TAKEN(V_BITS64_DEFINED == vbytes)) {
+ if (LIKELY(V_BITS64_DEFINED == vbytes)) {
((UShort*)(sm->vabits8))[sm_off16] = (UShort)VA_BITS16_DEFINED;
return;
} else if (V_BITS64_UNDEFINED == vbytes) {
@@ -1278,18 +1271,18 @@
}
/* else fall into the slow case */
}
- if (EXPECTED_TAKEN(sizeof(void*) == 8
+ if (LIKELY(sizeof(void*) == 8
&& nBits == 32 && VG_IS_4_ALIGNED(a))) {
SecMap* sm = get_secmap_for_reading(a);
UWord sm_off = SM_OFF(a);
UWord vabits8 = sm->vabits8[sm_off];
- if (EXPECTED_TAKEN( !is_distinguished_sm(sm) &&
+ if (LIKELY( !is_distinguished_sm(sm) &&
(VA_BITS8_DEFINED == vabits8 ||
VA_BITS8_UNDEFINED == vabits8) )) {
/* Handle common case quickly: a is suitably aligned, */
/* is mapped, and is addressible. */
// Convert full V-bits in register to compact 2-bit form.
- if (EXPECTED_TAKEN(V_BITS32_DEFINED == (vbytes & 0xFFFFFFFF))) {
+ if (LIKELY(V_BITS32_DEFINED == (vbytes & 0xFFFFFFFF))) {
sm->vabits8[sm_off] = VA_BITS8_DEFINED;
return;
} else if (V_BITS32_UNDEFINED == (vbytes & 0xFFFFFFFF)) {
@@ -1588,7 +1581,7 @@
DEBUG("make_mem_defined_if_addressable(%p, %llu)\n", a, (ULong)len);
for (i = 0; i < len; i++) {
vabits2 = get_vabits2( a+i );
- if (EXPECTED_TAKEN(VA_BITS2_NOACCESS != vabits2)) {
+ if (LIKELY(VA_BITS2_NOACCESS != vabits2)) {
set_vabits2(a+i, VA_BITS2_DEFINED);
}
}
@@ -1621,7 +1614,7 @@
while (len >= 4) {
vabits8 = get_vabits8_for_aligned_word32( src+i );
set_vabits8_for_aligned_word32( dst+i, vabits8 );
- if (EXPECTED_TAKEN(VA_BITS8_DEFINED == vabits8
+ if (LIKELY(VA_BITS8_DEFINED == vabits8
|| VA_BITS8_UNDEFINED == vabits8
|| VA_BITS8_NOACCESS == vabits8)) {
/* do nothing */
@@ -1692,7 +1685,7 @@
#ifndef PERF_FAST_STACK2
MC_(make_mem_undefined)(a, 4);
#else
- if (EXPECTED_NOT_TAKEN(a > MAX_PRIMARY_ADDRESS)) {
+ if (UNLIKELY(a > MAX_PRIMARY_ADDRESS)) {
PROF_EVENT(301, "make_aligned_word32_undefined-slow1");
MC_(make_mem_undefined)(a, 4);
return;
@@ -1716,7 +1709,7 @@
#ifndef PERF_FAST_STACK2
MC_(make_mem_noaccess)(a, 4);
#else
- if (EXPECTED_NOT_TAKEN(a > MAX_PRIMARY_ADDRESS)) {
+ if (UNLIKELY(a > MAX_PRIMARY_ADDRESS)) {
PROF_EVENT(311, "make_aligned_word32_noaccess-slow1");
MC_(make_mem_noaccess)(a, 4);
return;
@@ -1741,7 +1734,7 @@
#ifndef PERF_FAST_STACK2
MC_(make_mem_undefined)(a, 8);
#else
- if (EXPECTED_NOT_TAKEN(a > MAX_PRIMARY_ADDRESS)) {
+ if (UNLIKELY(a > MAX_PRIMARY_ADDRESS)) {
PROF_EVENT(321, "make_aligned_word64_undefined-slow1");
MC_(make_mem_undefined)(a, 8);
return;
@@ -1765,7 +1758,7 @@
#ifndef PERF_FAST_STACK2
MC_(make_mem_noaccess)(a, 8);
#else
- if (EXPECTED_NOT_TAKEN(a > MAX_PRIMARY_ADDRESS)) {
+ if (UNLIKELY(a > MAX_PRIMARY_ADDRESS)) {
PROF_EVENT(331, "make_aligned_word64_noaccess-slow1");
MC_(make_mem_noaccess)(a, 8);
return;
@@ -2207,7 +2200,7 @@
# if 0
/* Slow(ish) version, which is fairly easily seen to be correct.
*/
- if (EXPECTED_TAKEN( VG_IS_8_ALIGNED(base) && len==128 )) {
+ if (LIKELY( VG_IS_8_ALIGNED(base) && len==128 )) {
make_aligned_word64_undefined(base + 0);
make_aligned_word64_undefined(base + 8);
make_aligned_word64_undefined(base + 16);
@@ -2240,7 +2233,7 @@
directly into the vabits array. (If the sm was distinguished, this
will make a copy and then write to it.)
*/
- if (EXPECTED_TAKEN( len == 128 && VG_IS_8_ALIGNED(base) )) {
+ if (LIKELY( len == 128 && VG_IS_8_ALIGNED(base) )) {
/* Now we know the address range is suitably sized and aligned. */
UWord a_lo = (UWord)(base);
UWord a_hi = (UWord)(base + 128 - 1);
@@ -2252,7 +2245,7 @@
/* Now we know that the entire address range falls within a
single secondary map, and that that secondary 'lives' in
the main primary map. */
- if (EXPECTED_TAKEN(sm == sm_hi)) {
+ if (LIKELY(sm == sm_hi)) {
// Finally, we know that the range is entirely within one secmap.
UWord v_off = SM_OFF(a_lo);
UShort* p = (UShort*)(&sm->vabits8[v_off]);
@@ -2278,7 +2271,7 @@
}
/* 288 bytes (36 ULongs) is the magic value for ELF ppc64. */
- if (EXPECTED_TAKEN( len == 288 && VG_IS_8_ALIGNED(base) )) {
+ if (LIKELY( len == 288 && VG_IS_8_ALIGNED(base) )) {
/* Now we know the address range is suitably sized and aligned. */
UWord a_lo = (UWord)(base);
UWord a_hi = (UWord)(base + 288 - 1);
@@ -2290,7 +2283,7 @@
/* Now we know that the entire address range falls within a
single secondary map, and that that secondary 'lives' in
the main primary map. */
- if (EXPECTED_TAKEN(sm == sm_hi)) {
+ if (LIKELY(sm == sm_hi)) {
// Finally, we know that the range is entirely within one secmap.
UWord v_off = SM_OFF(a_lo);
UShort* p = (UShort*)(&sm->vabits8[v_off]);
@@ -3755,7 +3748,7 @@
#ifndef PERF_FAST_LOADV
return mc_LOADVn_slow( a, 64, isBigEndian );
#else
- if (EXPECTED_NOT_TAKEN( UNALIGNED_OR_HIGH(a,64) )) {
+ if (UNLIKELY( UNALIGNED_OR_HIGH(a,64) )) {
PROF_EVENT(201, "mc_LOADV64-slow1");
return (ULong)mc_LOADVn_slow( a, 64, isBigEndian );
}
@@ -3767,9 +3760,9 @@
// Handle common case quickly: a is suitably aligned, is mapped, and
// addressible.
// Convert V bits from compact memory form to expanded register form.
- if (EXPECTED_TAKEN(vabits16 == VA_BITS16_DEFINED)) {
+ if (LIKELY(vabits16 == VA_BITS16_DEFINED)) {
return V_BITS64_DEFINED;
- } else if (EXPECTED_TAKEN(vabits16 == VA_BITS16_UNDEFINED)) {
+ } else if (LIKELY(vabits16 == VA_BITS16_UNDEFINED)) {
return V_BITS64_UNDEFINED;
} else {
/* Slow case: the 8 bytes are not all-defined or all-undefined. */
@@ -3802,7 +3795,7 @@
// Investigate further.
mc_STOREVn_slow( a, 64, vbits64, isBigEndian );
#else
- if (EXPECTED_NOT_TAKEN( UNALIGNED_OR_HIGH(a,64) )) {
+ if (UNLIKELY( UNALIGNED_OR_HIGH(a,64) )) {
PROF_EVENT(211, "mc_STOREV64-slow1");
mc_STOREVn_slow( a, 64, vbits64, isBigEndian );
return;
@@ -3812,7 +3805,7 @@
sm_off16 = SM_OFF_16(a);
vabits16 = ((UShort*)(sm->vabits8))[sm_off16];
- if (EXPECTED_TAKEN( !is_distinguished_sm(sm) &&
+ if (LIKELY( !is_distinguished_sm(sm) &&
(VA_BITS16_DEFINED == vabits16 ||
VA_BITS16_UNDEFINED == vabits16) ))
{
@@ -3859,7 +3852,7 @@
#ifndef PERF_FAST_LOADV
return (UWord)mc_LOADVn_slow( a, 32, isBigEndian );
#else
- if (EXPECTED_NOT_TAKEN( UNALIGNED_OR_HIGH(a,32) )) {
+ if (UNLIKELY( UNALIGNED_OR_HIGH(a,32) )) {
PROF_EVENT(221, "mc_LOADV32-slow1");
return (UWord)mc_LOADVn_slow( a, 32, isBigEndian );
}
@@ -3873,9 +3866,9 @@
// Convert V bits from compact memory form to expanded register form.
// For 64-bit platforms, set the high 32 bits of retval to 1 (undefined).
// Almost certainly not necessary, but be paranoid.
- if (EXPECTED_TAKEN(vabits8 == VA_BITS8_DEFINED)) {
+ if (LIKELY(vabits8 == VA_BITS8_DEFINED)) {
return ((UWord)0xFFFFFFFF00000000ULL | (UWord)V_BITS32_DEFINED);
- } else if (EXPECTED_TAKEN(vabits8 == VA_BITS8_UNDEFINED)) {
+ } else if (LIKELY(vabits8 == VA_BITS8_UNDEFINED)) {
return ((UWord)0xFFFFFFFF00000000ULL | (UWord)V_BITS32_UNDEFINED);
} else {
/* Slow case: the 4 bytes are not all-defined or all-undefined. */
@@ -3906,7 +3899,7 @@
#ifndef PERF_FAST_STOREV
mc_STOREVn_slow( a, 32, (ULong)vbits32, isBigEndian );
#else
- if (EXPECTED_NOT_TAKEN( UNALIGNED_OR_HIGH(a,32) )) {
+ if (UNLIKELY( UNALIGNED_OR_HIGH(a,32) )) {
PROF_EVENT(231, "mc_STOREV32-slow1");
mc_STOREVn_slow( a, 32, (ULong)vbits32, isBigEndian );
return;
@@ -3948,7 +3941,7 @@
}
//---------------------------------------------------------------------------
#else
- if (EXPECTED_TAKEN( !is_distinguished_sm(sm) &&
+ if (LIKELY( !is_distinguished_sm(sm) &&
(VA_BITS8_DEFINED == vabits8 ||
VA_BITS8_UNDEFINED == vabits8) ))
{
@@ -3997,7 +3990,7 @@
#ifndef PERF_FAST_LOADV
return (UWord)mc_LOADVn_slow( a, 16, isBigEndian );
#else
- if (EXPECTED_NOT_TAKEN( UNALIGNED_OR_HIGH(a,16) )) {
+ if (UNLIKELY( UNALIGNED_OR_HIGH(a,16) )) {
PROF_EVENT(241, "mc_LOADV16-slow1");
return (UWord)mc_LOADVn_slow( a, 16, isBigEndian );
}
@@ -4046,7 +4039,7 @@
#ifndef PERF_FAST_STOREV
mc_STOREVn_slow( a, 16, (ULong)vbits16, isBigEndian );
#else
- if (EXPECTED_NOT_TAKEN( UNALIGNED_OR_HIGH(a,16) )) {
+ if (UNLIKELY( UNALIGNED_OR_HIGH(a,16) )) {
PROF_EVENT(251, "mc_STOREV16-slow1");
mc_STOREVn_slow( a, 16, (ULong)vbits16, isBigEndian );
return;
@@ -4055,7 +4048,7 @@
sm = get_secmap_for_reading_low(a);
sm_off = SM_OFF(a);
vabits8 = sm->vabits8[sm_off];
- if (EXPECTED_TAKEN( !is_distinguished_sm(sm) &&
+ if (LIKELY( !is_distinguished_sm(sm) &&
(VA_BITS8_DEFINED == vabits8 ||
VA_BITS8_UNDEFINED == vabits8) ))
{
@@ -4105,7 +4098,7 @@
#ifndef PERF_FAST_LOADV
return (UWord)mc_LOADVn_slow( a, 8, False/*irrelevant*/ );
#else
- if (EXPECTED_NOT_TAKEN( UNALIGNED_OR_HIGH(a,8) )) {
+ if (UNLIKELY( UNALIGNED_OR_HIGH(a,8) )) {
PROF_EVENT(261, "mc_LOADV8-slow1");
return (UWord)mc_LOADVn_slow( a, 8, False/*irrelevant*/ );
}
@@ -4145,7 +4138,7 @@
#ifndef PERF_FAST_STOREV
mc_STOREVn_slow( a, 8, (ULong)vbits8, False/*irrelevant*/ );
#else
- if (EXPECTED_NOT_TAKEN( UNALIGNED_OR_HIGH(a,8) )) {
+ if (UNLIKELY( UNALIGNED_OR_HIGH(a,8) )) {
PROF_EVENT(271, "mc_STOREV8-slow1");
mc_STOREVn_slow( a, 8, (ULong)vbits8, False/*irrelevant*/ );
return;
@@ -4154,7 +4147,7 @@
sm = get_secmap_for_reading_low(a);
sm_off = SM_OFF(a);
vabits8 = sm->vabits8[sm_off];
- if (EXPECTED_TAKEN
+ if (LIKELY
( !is_distinguished_sm(sm) &&
( (VA_BITS8_DEFINED == vabits8 || VA_BITS8_UNDEFINED == vabits8)
|| (VA_BITS2_NOACCESS != extract_vabits2_from_vabits8(a, vabits8))
|
|
From: <sv...@va...> - 2008-03-22 07:52:44
|
Author: bart Date: 2008-03-22 07:52:44 +0000 (Sat, 22 Mar 2008) New Revision: 7744 Log: Filtered out platform-dependent error messages. Modified: trunk/tests/filter_stderr_basic Modified: trunk/tests/filter_stderr_basic =================================================================== --- trunk/tests/filter_stderr_basic 2008-03-21 17:08:12 UTC (rev 7743) +++ trunk/tests/filter_stderr_basic 2008-03-22 07:52:44 UTC (rev 7744) @@ -41,6 +41,12 @@ # Remove line info out of order warnings sed "/warning: line info addresses out of order/d" | +# Older bash versions print abnormal termination messages on the stderr +# of the bash process. Newer bash versions redirect such messages properly. +# Suppress any redirected abnormal termination messages. You can find the +# complete list of messages in the bash source file siglist.c. +sed -r "/^(Segmentation fault|Alarm clock|Aborted)( \(core dumped\))?$/d" | + # Remove any ": dumping core" message as the user might have a # limit set that prevents the core dump sed "s/\(signal [0-9]* (SIG[A-Z]*)\): dumping core/\1/" |
|
From: Tom H. <th...@cy...> - 2008-03-22 05:10:51
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-03-22 03:15:03 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 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-03-22 04:23:46
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-03-22 03:05:04 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 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-03-22 03:53:11
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-03-22 03:20:10 GMT 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 == 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) ================================================= == 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 == 419 tests, 9 stderr failures, 2 stdout failures, 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) exp-drd/tests/tc08_hbl2 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Mar 22 03:36:55 2008 --- new.short Sat Mar 22 03:53:14 2008 *************** *** 8,10 **** ! == 419 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 419 tests, 9 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 19,21 **** helgrind/tests/tc22_exit_w_lock (stderr) - exp-drd/tests/tc08_hbl2 (stdout) --- 19,20 ---- |
|
From: Tom H. <th...@cy...> - 2008-03-22 03:40:18
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-03-22 03:25:06 GMT 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 == 417 tests, 9 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/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 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) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Mar 22 03:32:47 2008 --- new.short Sat Mar 22 03:40:21 2008 *************** *** 8,10 **** ! == 417 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 417 tests, 9 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 19,20 **** --- 19,21 ---- none/tests/mremap2 (stdout) + helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) |
|
From: Tom H. <th...@cy...> - 2008-03-22 03:33:37
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-03-22 03:10:05 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 413 tests, 8 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/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-03-22 03:17:15
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-03-22 03:00:02 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 419 tests, 32 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) exp-drd/tests/pth_create_chain (stderr) |
|
From: Nicholas N. <nj...@cs...> - 2008-03-22 01:10:06
|
On Fri, 21 Mar 2008, Bart Van Assche wrote: > On Fri, Mar 21, 2008 at 10:08 AM, Nicholas Nethercote > <nj...@cs...> wrote: >> >> The idea seems ok to me. I'd probably put it in pub_tool_basics.h, though. >> It would be good if the various other macros were changed to use this one, too. > > By this time I have reworked the patch -- see also below. Any feedback > is welcome. Looks good -- please commit. Nick |
|
From: Nicholas N. <nj...@cs...> - 2008-03-22 00:34:16
|
On Fri, 21 Mar 2008, Bart Van Assche wrote: > By running the exp-drd regression tests on different Linux platforms I > found out that some shells redirect abnormal termination messages if > stderr is redirected and some do not. This can cause regression tests > to fail while they should not. The patch below fixes this. Comments > are welcome. If I do not receive any comments, I will apply this patch > next week. Looks ok to me -- feel free to commit. N > Index: tests/filter_stderr_basic > =================================================================== > --- tests/filter_stderr_basic (revision 7740) > +++ tests/filter_stderr_basic (working copy) > @@ -41,6 +41,12 @@ > # Remove line info out of order warnings > sed "/warning: line info addresses out of order/d" | > > +# Older bash versions print abnormal termination messages on the stderr > +# of the bash process. Newer bash versions redirect such messages properly. > +# Suppress any redirected abnormal termination messages. You can find the > +# complete list of messages in the bash source file siglist.c. > +sed -r "/^(Segmentation fault|Alarm clock|Aborted)( \(core dumped\))?$/d" | > + > # Remove any ": dumping core" message as the user might have a > # limit set that prevents the core dump > sed "s/\(signal [0-9]* (SIG[A-Z]*)\): dumping core/\1/" > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers > |
|
From: Nicholas N. <nj...@cs...> - 2008-03-22 00:27:54
|
On Sat, 15 Mar 2008, Philippe Waroquiers wrote: > I started working on this in February, and obtained a "basic" working gdb > stub. For more details about the current state, see my post of 17 Feb > 2008. All this work was done based on valgrind 3.3.0, using gdbserver code > from gdb 6.7.. > > I have been (privately) contacted by someone telling that a contribution > of a port (and a stub more complete than what I did) should be contributed > soon. Since then, I have put this work on hold, waiting for the above to > be integrated, and continue based on that (e.g. to implement breakpoints > which are done neither in what I did, nor in what should be contributed > soon). > > That was more than one month ago but it has not yet materialised (all the > legal paper takes time, I guess). If the port and stub is not contributed > (for whatever reason), then I can provide the state I have reached as a > starting point. > > However, for this: > * I suppose some papers have to be signed (?) > * I suppose some patch files have to be then prepared > * and someone with write access has to put it in the repository (in a > branch I guess) All this is news to me. Nick |