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
(33) |
2
(15) |
3
(20) |
4
(22) |
5
(13) |
|
6
(12) |
7
(32) |
8
(17) |
9
(31) |
10
(21) |
11
(7) |
12
(13) |
|
13
(13) |
14
(12) |
15
(10) |
16
(8) |
17
(7) |
18
(28) |
19
(5) |
|
20
(5) |
21
(7) |
22
(11) |
23
(7) |
24
(13) |
25
(7) |
26
(7) |
|
27
(7) |
28
(15) |
29
(30) |
30
(21) |
31
(6) |
|
|
|
From: Julian S. <js...@ac...> - 2008-07-10 18:07:10
|
On Thursday 10 July 2008 08:25, Bart Van Assche wrote: > By the way, I noticed that GLib library uses several global variables > which are shared over threads and which are not protected by a mutex, > e.g. g_threads_got_initialized and g_mem_initialized. While this is > correct, it is annoying for tools like Helgrind or DRD. Suppression > patterns have to be added for every call stack and every access to any > of these global variables to prevent that these appear in race > reports. Can you show an example of how they are used across multiple threads? I would have thought that drd should not show any race in such a case, if Glib is really correct. J |
|
From: <sv...@va...> - 2008-07-10 15:44:36
|
Author: bart
Date: 2008-07-10 16:44:39 +0100 (Thu, 10 Jul 2008)
New Revision: 8419
Log:
Added more comments. Refactoring: made sure there are no more bit-manipulations on client addresses in drd_bitmap.c.
Modified:
branches/DRDDEV/drd/drd_bitmap.c
branches/DRDDEV/drd/drd_bitmap.h
Modified: branches/DRDDEV/drd/drd_bitmap.c
===================================================================
--- branches/DRDDEV/drd/drd_bitmap.c 2008-07-10 14:07:22 UTC (rev 8418)
+++ branches/DRDDEV/drd/drd_bitmap.c 2008-07-10 15:44:39 UTC (rev 8419)
@@ -118,16 +118,17 @@
/* ADDR0_COUNT highest addresses in the address range. At least on Linux */
/* this is not a problem since the upper part of the address space is */
/* reserved for the kernel. */
- tl_assert(a2 + ADDR0_COUNT > a2);
+ tl_assert(a2 < first_address_with_higher_lsb(a2));
for (b = a1; b < a2; b = b_next)
{
Addr b_start;
Addr b_end;
struct bitmap2* bm2;
- SPLIT_ADDRESS(b);
+ UWord b0 = address_lsb(b);
+ const UWord b1 = address_msb(b);
- b_next = (b & ~ADDR0_MASK) + ADDR0_COUNT;
+ b_next = first_address_with_higher_lsb(b);
if (b_next > a2)
{
b_next = a2;
@@ -136,33 +137,33 @@
bm2 = bm2_lookup_or_insert_exclusive(bm, b1);
tl_assert(bm2);
- if ((bm2->addr << ADDR0_BITS) < a1)
+ if (make_address(bm2->addr, 0) < a1)
b_start = a1;
else
- if ((bm2->addr << ADDR0_BITS) < a2)
- b_start = (bm2->addr << ADDR0_BITS);
+ if (make_address(bm2->addr, 0) < a2)
+ b_start = make_address(bm2->addr, 0);
else
break;
tl_assert(a1 <= b_start && b_start <= a2);
- if ((bm2->addr << ADDR0_BITS) + ADDR0_COUNT < a2)
- b_end = (bm2->addr << ADDR0_BITS) + ADDR0_COUNT;
+ if (first_address_with_higher_lsb(make_address(bm2->addr, 0)) < a2)
+ b_end = first_address_with_higher_lsb(make_address(bm2->addr, 0));
else
b_end = a2;
tl_assert(a1 <= b_end && b_end <= a2);
tl_assert(b_start < b_end);
- tl_assert((b_start & ADDR0_MASK) <= ((b_end - 1) & ADDR0_MASK));
+ tl_assert(address_lsb(b_start) <= address_lsb(b_end - 1));
if (access_type == eLoad)
{
- for (b0 = b_start & ADDR0_MASK; b0 <= ((b_end - 1) & ADDR0_MASK); b0++)
+ for (b0 = address_lsb(b_start); b0 <= address_lsb(b_end - 1); b0++)
{
bm0_set(bm2->bm1.bm0_r, b0);
}
}
else
{
- for (b0 = b_start & ADDR0_MASK; b0 <= ((b_end - 1) & ADDR0_MASK); b0++)
+ for (b0 = address_lsb(b_start); b0 <= address_lsb(b_end - 1); b0++)
{
bm0_set(bm2->bm1.bm0_w, b0);
}
@@ -272,9 +273,9 @@
for (b = a1; b < a2; b = b_next)
{
- const struct bitmap2* bm2 = bm2_lookup(bm, b >> ADDR0_BITS);
+ const struct bitmap2* bm2 = bm2_lookup(bm, address_msb(b));
- b_next = (b & ~ADDR0_MASK) + ADDR0_COUNT;
+ b_next = first_address_with_higher_lsb(b);
if (b_next > a2)
{
b_next = a2;
@@ -287,24 +288,24 @@
UWord b0;
const struct bitmap1* const p1 = &bm2->bm1;
- if ((bm2->addr << ADDR0_BITS) < a1)
+ if (make_address(bm2->addr, 0) < a1)
b_start = a1;
else
- if ((bm2->addr << ADDR0_BITS) < a2)
- b_start = (bm2->addr << ADDR0_BITS);
+ if (make_address(bm2->addr, 0) < a2)
+ b_start = make_address(bm2->addr, 0);
else
break;
tl_assert(a1 <= b_start && b_start <= a2);
- if ((bm2->addr << ADDR0_BITS) + ADDR0_COUNT < a2)
- b_end = (bm2->addr << ADDR0_BITS) + ADDR0_COUNT;
+ if (first_address_with_higher_lsb(make_address(bm2->addr, 0)) < a2)
+ b_end = first_address_with_higher_lsb(make_address(bm2->addr, 0));
else
b_end = a2;
tl_assert(a1 <= b_end && b_end <= a2);
tl_assert(b_start < b_end);
- tl_assert((b_start & ADDR0_MASK) <= ((b_end - 1) & ADDR0_MASK));
+ tl_assert(address_lsb(b_start) <= address_lsb(b_end - 1));
- for (b0 = b_start & ADDR0_MASK; b0 <= ((b_end-1) & ADDR0_MASK); b0++)
+ for (b0 = address_lsb(b_start); b0 <= address_lsb(b_end - 1); b0++)
{
if (bm0_is_set(p1->bm0_r, b0))
{
@@ -325,9 +326,9 @@
for (b = a1; b < a2; b = b_next)
{
- const struct bitmap2* bm2 = bm2_lookup(bm, b >> ADDR0_BITS);
+ const struct bitmap2* bm2 = bm2_lookup(bm, address_msb(b));
- b_next = (b & ~ADDR0_MASK) + ADDR0_COUNT;
+ b_next = first_address_with_higher_lsb(b);
if (b_next > a2)
{
b_next = a2;
@@ -340,24 +341,24 @@
UWord b0;
const struct bitmap1* const p1 = &bm2->bm1;
- if ((bm2->addr << ADDR0_BITS) < a1)
+ if (make_address(bm2->addr, 0) < a1)
b_start = a1;
else
- if ((bm2->addr << ADDR0_BITS) < a2)
- b_start = (bm2->addr << ADDR0_BITS);
+ if (make_address(bm2->addr, 0) < a2)
+ b_start = make_address(bm2->addr, 0);
else
break;
tl_assert(a1 <= b_start && b_start <= a2);
- if ((bm2->addr << ADDR0_BITS) + ADDR0_COUNT < a2)
- b_end = (bm2->addr << ADDR0_BITS) + ADDR0_COUNT;
+ if (first_address_with_higher_lsb(make_address(bm2->addr, 0)) < a2)
+ b_end = first_address_with_higher_lsb(make_address(bm2->addr, 0));
else
b_end = a2;
tl_assert(a1 <= b_end && b_end <= a2);
tl_assert(b_start < b_end);
- tl_assert((b_start & ADDR0_MASK) <= ((b_end - 1) & ADDR0_MASK));
+ tl_assert(address_lsb(b_start) <= address_lsb(b_end - 1));
- for (b0 = b_start & ADDR0_MASK; b0 <= ((b_end-1) & ADDR0_MASK); b0++)
+ for (b0 = address_lsb(b_start); b0 <= address_lsb(b_end - 1); b0++)
{
if (bm0_is_set(p1->bm0_w, b0))
{
@@ -380,9 +381,9 @@
for (b = a1; b < a2; b = b_next)
{
- const struct bitmap2* bm2 = bm2_lookup(bm, b >> ADDR0_BITS);
+ const struct bitmap2* bm2 = bm2_lookup(bm, address_msb(b));
- b_next = (b & ~ADDR0_MASK) + ADDR0_COUNT;
+ b_next = first_address_with_higher_lsb(b);
if (b_next > a2)
{
b_next = a2;
@@ -395,24 +396,24 @@
UWord b0;
const struct bitmap1* const p1 = &bm2->bm1;
- if ((bm2->addr << ADDR0_BITS) < a1)
+ if (make_address(bm2->addr, 0) < a1)
b_start = a1;
else
- if ((bm2->addr << ADDR0_BITS) < a2)
- b_start = (bm2->addr << ADDR0_BITS);
+ if (make_address(bm2->addr, 0) < a2)
+ b_start = make_address(bm2->addr, 0);
else
break;
tl_assert(a1 <= b_start && b_start <= a2);
- if ((bm2->addr << ADDR0_BITS) + ADDR0_COUNT < a2)
- b_end = (bm2->addr << ADDR0_BITS) + ADDR0_COUNT;
+ if (first_address_with_higher_lsb(make_address(bm2->addr, 0)) < a2)
+ b_end = first_address_with_higher_lsb(make_address(bm2->addr, 0));
else
b_end = a2;
tl_assert(a1 <= b_end && b_end <= a2);
tl_assert(b_start < b_end);
- tl_assert((b_start & ADDR0_MASK) <= ((b_end - 1) & ADDR0_MASK));
+ tl_assert(address_lsb(b_start) <= address_lsb(b_end - 1));
- for (b0 = b_start & ADDR0_MASK; b0 <= ((b_end-1) & ADDR0_MASK); b0++)
+ for (b0 = address_lsb(b_start); b0 <= address_lsb(b_end - 1); b0++)
{
if (bm0_is_set(p1->bm0_r, b0) | bm0_is_set(p1->bm0_w, b0))
{
@@ -433,11 +434,11 @@
const struct bitmap2* p2;
const struct bitmap1* p1;
const UWord* p0;
- const UWord a0 = a & ADDR0_MASK;
+ const UWord a0 = address_lsb(a);
tl_assert(bm);
- p2 = bm2_lookup(bm, a >> ADDR0_BITS);
+ p2 = bm2_lookup(bm, address_msb(a));
if (p2)
{
p1 = &p2->bm1;
@@ -459,9 +460,9 @@
for (b = a1; b < a2; b = b_next)
{
- struct bitmap2* const p2 = bm2_lookup_exclusive(bm, b >> ADDR0_BITS);
+ struct bitmap2* const p2 = bm2_lookup_exclusive(bm, address_msb(b));
- b_next = (b & ~ADDR0_MASK) + ADDR0_COUNT;
+ b_next = first_address_with_higher_lsb(b);
if (b_next > a2)
{
b_next = a2;
@@ -472,26 +473,26 @@
Addr c = b;
/* If the first address in the bitmap that must be cleared does not */
/* start on an UWord boundary, start clearing the first addresses. */
- if (UWORD_LSB(c))
+ if (uword_lsb(c))
{
- Addr c_next = UWORD_MSB(c) + BITS_PER_UWORD;
+ Addr c_next = uword_msb(c) + BITS_PER_UWORD;
if (c_next > b_next)
c_next = b_next;
- bm0_clear_range(p2->bm1.bm0_r, c & ADDR0_MASK, c_next - c);
- bm0_clear_range(p2->bm1.bm0_w, c & ADDR0_MASK, c_next - c);
+ bm0_clear_range(p2->bm1.bm0_r, address_lsb(c), c_next - c);
+ bm0_clear_range(p2->bm1.bm0_w, address_lsb(c), c_next - c);
c = c_next;
}
/* If some UWords have to be cleared entirely, do this now. */
- if (UWORD_LSB(c) == 0)
+ if (uword_lsb(c) == 0)
{
- const Addr c_next = UWORD_MSB(b_next);
- tl_assert(UWORD_LSB(c) == 0);
- tl_assert(UWORD_LSB(c_next) == 0);
+ const Addr c_next = uword_msb(b_next);
+ tl_assert(uword_lsb(c) == 0);
+ tl_assert(uword_lsb(c_next) == 0);
tl_assert(c_next <= b_next);
tl_assert(c <= c_next);
if (c_next > c)
{
- UWord idx = (c & ADDR0_MASK) >> BITS_PER_BITS_PER_UWORD;
+ const UWord idx = uword_index(address_lsb(c));
VG_(memset)(&p2->bm1.bm0_r[idx], 0, (c_next - c) / 8);
VG_(memset)(&p2->bm1.bm0_w[idx], 0, (c_next - c) / 8);
c = c_next;
@@ -500,8 +501,8 @@
/* If the last address in the bitmap that must be cleared does not */
/* fall on an UWord boundary, clear the last addresses. */
/* tl_assert(c <= b_next); */
- bm0_clear_range(p2->bm1.bm0_r, c & ADDR0_MASK, b_next - c);
- bm0_clear_range(p2->bm1.bm0_w, c & ADDR0_MASK, b_next - c);
+ bm0_clear_range(p2->bm1.bm0_r, address_lsb(c), b_next - c);
+ bm0_clear_range(p2->bm1.bm0_w, address_lsb(c), b_next - c);
}
}
}
@@ -516,10 +517,10 @@
for (a = a1; a < a2; a++)
{
- struct bitmap2* const p2 = bm2_lookup_exclusive(bm, a >> ADDR0_BITS);
+ struct bitmap2* const p2 = bm2_lookup_exclusive(bm, address_msb(a));
if (p2)
{
- bm0_clear(p2->bm1.bm0_r, a & ADDR0_MASK);
+ bm0_clear(p2->bm1.bm0_r, address_lsb(a));
}
}
}
@@ -534,10 +535,10 @@
for (a = a1; a < a2; a++)
{
- struct bitmap2* const p2 = bm2_lookup_exclusive(bm, a >> ADDR0_BITS);
+ struct bitmap2* const p2 = bm2_lookup_exclusive(bm, address_msb(a));
if (p2)
{
- bm0_clear(p2->bm1.bm0_w, a & ADDR0_MASK);
+ bm0_clear(p2->bm1.bm0_w, address_lsb(a));
}
}
}
@@ -566,9 +567,9 @@
for (b = a1; b < a2; b = b_next)
{
- const struct bitmap2* bm2 = bm2_lookup(bm, b >> ADDR0_BITS);
+ const struct bitmap2* bm2 = bm2_lookup(bm, address_msb(b));
- b_next = (b & ~ADDR0_MASK) + ADDR0_COUNT;
+ b_next = first_address_with_higher_lsb(b);
if (b_next > a2)
{
b_next = a2;
@@ -581,24 +582,24 @@
UWord b0;
const struct bitmap1* const p1 = &bm2->bm1;
- if ((bm2->addr << ADDR0_BITS) < a1)
+ if (make_address(bm2->addr, 0) < a1)
b_start = a1;
else
- if ((bm2->addr << ADDR0_BITS) < a2)
- b_start = (bm2->addr << ADDR0_BITS);
+ if (make_address(bm2->addr, 0) < a2)
+ b_start = make_address(bm2->addr, 0);
else
break;
tl_assert(a1 <= b_start && b_start <= a2);
- if ((bm2->addr << ADDR0_BITS) + ADDR0_COUNT < a2)
- b_end = (bm2->addr << ADDR0_BITS) + ADDR0_COUNT;
+ if (first_address_with_higher_lsb(make_address(bm2->addr, 0)) < a2)
+ b_end = first_address_with_higher_lsb(make_address(bm2->addr, 0));
else
b_end = a2;
tl_assert(a1 <= b_end && b_end <= a2);
tl_assert(b_start < b_end);
- tl_assert((b_start & ADDR0_MASK) <= ((b_end - 1) & ADDR0_MASK));
+ tl_assert(address_lsb(b_start) <= address_lsb(b_end - 1));
- for (b0 = b_start & ADDR0_MASK; b0 <= ((b_end-1) & ADDR0_MASK); b0++)
+ for (b0 = address_lsb(b_start); b0 <= address_lsb(b_end - 1); b0++)
{
if (access_type == eLoad)
{
@@ -715,8 +716,8 @@
&& (bm2l = bm2l_ref->bm2)
&& bm2l
&& ! bm_has_any_access(lhs,
- bm2l->addr << ADDR0_BITS,
- (bm2l->addr + 1) << ADDR0_BITS))
+ make_address(bm2l->addr, 0),
+ make_address(bm2l->addr + 1, 0)))
{
bm2l_ref = VG_(OSetGen_Next)(lhs->oset);
}
@@ -724,7 +725,8 @@
break;
tl_assert(bm2l);
#if 0
- VG_(message)(Vg_DebugMsg, "bm_equal: at 0x%lx", bm2l->addr << ADDR0_BITS);
+ VG_(message)(Vg_DebugMsg, "bm_equal: at 0x%lx",
+ make_address(bm2l->addr, 0));
#endif
bm2r_ref = VG_(OSetGen_Next)(rhs->oset);
@@ -738,8 +740,8 @@
bm2r = bm2r_ref->bm2;
tl_assert(bm2r);
tl_assert(bm_has_any_access(rhs,
- bm2r->addr << ADDR0_BITS,
- (bm2r->addr + 1) << ADDR0_BITS));
+ make_address(bm2r->addr, 0),
+ make_address(bm2r->addr + 1, 0)));
if (bm2l != bm2r
&& (bm2l->addr != bm2r->addr
@@ -747,7 +749,7 @@
{
#if 0
VG_(message)(Vg_DebugMsg, "bm_equal: rhs 0x%lx -- returning false",
- bm2r->addr << ADDR0_BITS);
+ make_address(bm2r->addr, 0));
#endif
return False;
}
@@ -756,12 +758,12 @@
if (bm2r)
{
tl_assert(bm_has_any_access(rhs,
- bm2r->addr << ADDR0_BITS,
- (bm2r->addr + 1) << ADDR0_BITS));
+ make_address(bm2r->addr, 0),
+ make_address(bm2r->addr + 1, 0)));
#if 0
VG_(message)(Vg_DebugMsg,
"bm_equal: remaining rhs 0x%lx -- returning false",
- bm2r->addr << ADDR0_BITS);
+ make_address(bm2r->addr, 0));
#endif
return False;
}
@@ -856,7 +858,7 @@
| ((bm1l->bm0_w[k] & bm0_mask(b)) ? LHS_W : 0)
| ((bm1r->bm0_r[k] & bm0_mask(b)) ? RHS_R : 0)
| ((bm1r->bm0_w[k] & bm0_mask(b)) ? RHS_W : 0);
- Addr const a = MAKE_ADDRESS(bm2l->addr, k * BITS_PER_UWORD | b);
+ Addr const a = make_address(bm2l->addr, k * BITS_PER_UWORD | b);
if (HAS_RACE(access_mask) && ! drd_is_suppressed(a, a + 1))
{
return 1;
@@ -883,7 +885,7 @@
bm1 = &bm2->bm1;
for (b = 0; b < ADDR0_COUNT; b++)
{
- const Addr a = (bm2->addr << ADDR0_BITS) | b;
+ const Addr a = make_address(bm2->addr, 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)
Modified: branches/DRDDEV/drd/drd_bitmap.h
===================================================================
--- branches/DRDDEV/drd/drd_bitmap.h 2008-07-10 14:07:22 UTC (rev 8418)
+++ branches/DRDDEV/drd/drd_bitmap.h 2008-07-10 15:44:39 UTC (rev 8419)
@@ -41,21 +41,40 @@
/* Macro definitions. */
+
+/* Number of bits assigned to the least significant component of an address. */
#define ADDR0_BITS 14
+/* Number of addresses that can be described when only the least significant */
+/* part of an address varies. This is an unsigned integer. */
#define ADDR0_COUNT ((UWord)1 << ADDR0_BITS)
+/* Mask that has to be applied to an address of type Addr in order to */
+/* compute the least significant part of an address split. */
#define ADDR0_MASK (ADDR0_COUNT - 1)
-#define SPLIT_ADDRESS(a) \
- UWord a##0 = ((a) & ADDR0_MASK); \
- UWord a##1 = ((a) >> ADDR0_BITS);
+/* Split an address of type Addr into least and most significant bits. */
+static __inline__
+UWord address_lsb(const Addr a) { return a & ADDR0_MASK; }
+static __inline__
+UWord address_msb(const Addr a) { return a >> ADDR0_BITS; }
-// Assumption: sizeof(Addr) == sizeof(UWord).
-#define MAKE_ADDRESS(a1, a0) \
- (Addr)(((UWord)(a1) << (ADDR0_BITS)) | ((UWord)(a0)))
+static __inline__
+UWord first_address_with_higher_lsb(const Addr a)
+{ return (a | ADDR0_MASK) + 1; }
+/** Convert LSB and MSB back into an address
+ *
+ * @note It is assumed that sizeof(Addr) == sizeof(UWord).
+ */
+static __inline__
+Addr make_address(const UWord a1, const UWord a0)
+{ return (a1 << ADDR0_BITS | a0); }
+
+/* Number of bits that fit in a variable of type UWord. */
#define BITS_PER_UWORD (8UL*sizeof(UWord))
+
+/* Log2 of BITS_PER_UWORD. */
#if defined(VGA_x86) || defined(VGA_ppc32)
#define BITS_PER_BITS_PER_UWORD 5
#elif defined(VGA_amd64) || defined(VGA_ppc64)
@@ -64,16 +83,27 @@
#error Unknown platform.
#endif
+/* Number of UWord's needed to represent ADDR0_COUNT addresses. */
#define BITMAP1_UWORD_COUNT (ADDR0_COUNT >> BITS_PER_BITS_PER_UWORD)
/* Highest bits of an address that fit into the same UWord of bm0[]. */
-#define UWORD_MSB(a) ((a) & ~(BITS_PER_UWORD - 1))
+static __inline__
+Addr uword_msb(const Addr a)
+{ return a & ~(BITS_PER_UWORD - 1); }
+static __inline__
+UWord uword_index(const Addr a)
+{ return a >> BITS_PER_BITS_PER_UWORD; }
+
/* Lowest bits of an address that fit into the same UWord of bm0[]. */
-#define UWORD_LSB(a) ((a) & (BITS_PER_UWORD - 1))
+static __inline__
+UWord uword_lsb(const Addr a)
+{ return ((a) & (BITS_PER_UWORD - 1)); }
/* Highest address that fits in the same UWord as a. */
-#define UWORD_HIGHEST_ADDRESS(a) ((a) | (BITS_PER_UWORD - 1))
+static __inline__
+UWord UWORD_HIGHEST_ADDRESS(const Addr a)
+{ return ((a) | (BITS_PER_UWORD - 1)); }
/* Local variables. */
@@ -97,7 +127,7 @@
static __inline__ UWord bm0_mask(const Addr a)
{
- return ((UWord)1 << UWORD_LSB(a));
+ return ((UWord)1 << uword_lsb(a));
}
static __inline__ void bm0_set(UWord* bm0, const Addr a)
@@ -105,7 +135,7 @@
#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
tl_assert(a < ADDR0_COUNT);
#endif
- bm0[a >> BITS_PER_BITS_PER_UWORD] |= (UWord)1 << UWORD_LSB(a);
+ bm0[a >> BITS_PER_BITS_PER_UWORD] |= (UWord)1 << uword_lsb(a);
}
/** Set all of the addresses in range [ a1 .. a1 + size [ in bitmap bm0. */
@@ -116,10 +146,10 @@
tl_assert(a1 < ADDR0_COUNT);
tl_assert(size > 0);
tl_assert(a1 + size <= ADDR0_COUNT);
- tl_assert(UWORD_MSB(a1) == UWORD_MSB(a1 + size - 1));
+ tl_assert(uword_msb(a1) == uword_msb(a1 + size - 1));
#endif
bm0[a1 >> BITS_PER_BITS_PER_UWORD]
- |= (((UWord)1 << size) - 1) << UWORD_LSB(a1);
+ |= (((UWord)1 << size) - 1) << uword_lsb(a1);
}
static __inline__ void bm0_clear(UWord* bm0, const Addr a)
@@ -127,7 +157,7 @@
#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
tl_assert(a < ADDR0_COUNT);
#endif
- bm0[a >> BITS_PER_BITS_PER_UWORD] &= ~((UWord)1 << UWORD_LSB(a));
+ bm0[a >> BITS_PER_BITS_PER_UWORD] &= ~((UWord)1 << uword_lsb(a));
}
/** Clear all of the addresses in range [ a1 .. a1 + size [ in bitmap bm0. */
@@ -138,10 +168,10 @@
tl_assert(a1 < ADDR0_COUNT);
tl_assert(size > 0);
tl_assert(a1 + size <= ADDR0_COUNT);
- tl_assert(UWORD_MSB(a1) == UWORD_MSB(a1 + size - 1));
+ tl_assert(uword_msb(a1) == uword_msb(a1 + size - 1));
#endif
bm0[a1 >> BITS_PER_BITS_PER_UWORD]
- &= ~(((UWord)1 << size) - 1) << UWORD_LSB(a1);
+ &= ~(((UWord)1 << size) - 1) << uword_lsb(a1);
}
static __inline__ UWord bm0_is_set(const UWord* bm0, const Addr a)
@@ -149,7 +179,7 @@
#ifdef ENABLE_DRD_CONSISTENCY_CHECKS
tl_assert(a < ADDR0_COUNT);
#endif
- return (bm0[a >> BITS_PER_BITS_PER_UWORD] & ((UWord)1 << UWORD_LSB(a)));
+ return (bm0[a >> BITS_PER_BITS_PER_UWORD] & ((UWord)1 << uword_lsb(a)));
}
/** Return true if any of the bits [ a1 .. a1+size [ are set in bm0. */
@@ -160,10 +190,10 @@
tl_assert(a1 < ADDR0_COUNT);
tl_assert(size > 0);
tl_assert(a1 + size <= ADDR0_COUNT);
- tl_assert(UWORD_MSB(a1) == UWORD_MSB(a1 + size - 1));
+ tl_assert(uword_msb(a1) == uword_msb(a1 + size - 1));
#endif
return (bm0[a1 >> BITS_PER_BITS_PER_UWORD]
- & ((((UWord)1 << size) - 1) << UWORD_LSB(a1)));
+ & ((((UWord)1 << size) - 1) << uword_lsb(a1)));
}
|
|
From: <sv...@va...> - 2008-07-10 14:07:16
|
Author: bart
Date: 2008-07-10 15:07:22 +0100 (Thu, 10 Jul 2008)
New Revision: 8418
Log:
Changed benchmark input parameters such that these are now identical to the parameters used in the paper "Accurate and Efficient Filtering for the Intel Thread Checker Race Detector", Paul Sack et al, 2006.
Modified:
trunk/drd/scripts/run-splash2
Modified: trunk/drd/scripts/run-splash2
===================================================================
--- trunk/drd/scripts/run-splash2 2008-07-10 14:01:04 UTC (rev 8417)
+++ trunk/drd/scripts/run-splash2 2008-07-10 14:07:22 UTC (rev 8418)
@@ -13,19 +13,19 @@
rm -f "${tmp}"
p=1
- test_output="${1}.out" measure_runtime "$@" -p${psep}${p} "${test_args}" | avgstddev > "$tmp"
+ test_output="${1}-p${p}.out" measure_runtime "$@" -p${psep}${p} "${test_args}" | avgstddev > "$tmp"
read avg1 stddev1 vsz1 vszdev1 < "$tmp"
echo "Average time: ${avg1} +/- ${stddev1} seconds." \
" VSZ: ${vsz1} +/- ${vszdev1} KB"
p=2
- test_output="${1}.out" measure_runtime "$@" -p${psep}${p} "${test_args}" | avgstddev > "$tmp"
+ test_output="${1}-p${p}.out" measure_runtime "$@" -p${psep}${p} "${test_args}" | avgstddev > "$tmp"
read avg2 stddev2 vsz2 vszdev2 < "$tmp"
echo "Average time: ${avg2} +/- ${stddev2} seconds." \
" VSZ: ${vsz2} +/- ${vszdev2} KB"
p=4
- test_output="${1}.out" measure_runtime "$@" -p${psep}${p} "${test_args}" | avgstddev > "$tmp"
+ test_output="${1}-p${p}.out" measure_runtime "$@" -p${psep}${p} "${test_args}" | avgstddev > "$tmp"
read avg4 stddev4 vsz4 vszdev4 < "$tmp"
echo "Average time: ${avg4} +/- ${stddev4} seconds." \
" VSZ: ${vsz4} +/- ${vszdev4} KB"
@@ -52,6 +52,12 @@
test_output="${1}-helgrind-4.out" \
print_runtime_ratio ${avg4} ${stddev4} ${vsz4} ${vszdev4} $VG --tool=helgrind "$@" -p${psep}${p} "${test_args}"
+ if [ -e $HGDEV_VG ]; then
+ p=4
+ test_output="${1}-helgrind-hb-4.out" \
+ print_runtime_ratio ${avg4} ${stddev4} ${vsz4} ${vszdev4} $HGDEV_VG --tool=helgrind --pure-happens-before=yes "$@" -p${psep}${p} "${test_args}"
+ fi
+
echo ''
rm -f "$tmp"
@@ -77,6 +83,10 @@
VG="${DRD_SCRIPTS_DIR}/../../vg-in-place"
fi
+if [ "$HGDEV_VG" = "" ]; then
+ HGDEV_VG="${DRD_SCRIPTS_DIR}/../../../valgrind-hgdev/vg-in-place"
+fi
+
if [ ! -e "$VG" ]; then
echo "Could not find $VG."
exit 1
@@ -101,66 +111,78 @@
# 15. Virtual memory size ratio for --tool=drd --check-stack-var=no -p4 versus -p4.
# 16. Execution time ratio for --tool=helgrind -p4 versus -p4.
# 17. Virtual memory size ratio for --tool=helgrind -p4 versus -p4.
-# 18. Execution time ratio for Intel Thread Checker -p4 versus -p4.
-# 19. Execution time ratio for Intel Thread Checker -p4 versus -p4.
+# 18. Execution time ratio for --tool=helgrind --pure-happens-before=yes -p4 versus -p4.
+# 19. Virtual memory size ratio for --tool=helgrind --pure-happens-before=yes -p4 versus -p4.
+# 20. Execution time ratio for Intel Thread Checker -p4 versus -p4.
+# 21. Execution time ratio for Intel Thread Checker -p4 versus -p4.
#
-# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
-#########################################################################################################################
-# Results: native native native none none DRD DRD HG ITC ITC
-# -p1 -p2 -p4 -p1 -p4 -p4 -p4+f -p4 -p4 -p4+f
-# .......................................................................................................................
-# Cholesky 0.37 45867 0.25 55965 0.20 74944 8.8 2.08 28.9 1.66 171 1.96 114 2.85 54 3.13 239 82
-# FFT 0.20 23976 0.13 54026 0.09 114112 8.2 3.02 18.4 0.85 130 1.20 85 1.27 416 1.65 90 41
-# LU, contiguous 0.95 16784 0.64 24984 0.43 41392 8.0 3.88 19.3 2.17 120 2.84 113 3.04 223 4.36 428 128
-# LU, non-contiguous 1.06 16792 0.67 24984 0.40 41376 7.5 3.88 20.0 2.17 210 3.04 190 3.24 166 4.26 428 128
-# Ocean, contiguous 24.25 918016 14.57 927732 9.09 945664 2.4 1.05 6.6 1.05 89 1.92 77 1.93 149 1.88 90 28
-# Ocean, non-contiguous 0.36 32120 0.18 40320 0.16 56728 4.2 2.51 10.4 1.86 58 2.27 71 2.43 127 3.54 90 28
-# Radiosity 4.73 56120 .... ..... .... ..... 16.6 1.86 .... .... ... .... .. .... .. .... 485 163
-# Radix 4.98 279744 2.55 287936 1.36 304448 6.1 1.17 22.4 1.16 57 1.90 52 1.92 208 2.09 222 56
-# Raytrace 2.76 320526 1.44 328448 0.77 344832 8.3 1.15 28.6 1.14 2324 1.31 326 1.34 420 0.60 172 53
-# Water-n2 0.19 17304 0.12 33680 0.12 66432 12.0 3.85 20.2 3.53 2789 2.78 562 2.84 121 3.32 189 39
-# Water-sp 0.21 10976 0.11 19176 0.07 35568 11.0 5.41 33.3 2.37 475 2.85 147 3.08 196 4.61 183 34
-# .......................................................................................................................
-# Hardware: Two quad-core Intel Xeon L5130, 1.6 GHz, 4 MB L2 cache, 16 GB RAM.
-# Software: Ubuntu 8.04 server, 64-bit, gcc 4.3.1.
-#########################################################################################################################
-# Results: native native native none none DRD DRD HG ITC ITC
-# -p1 -p2 -p4 -p1 -p4 -p4 -p4+f -p4 -p4 -p4+f
-# .......................................................................................................................
-# Cholesky 0.29 45835 0.21 55933 4.51 74944 8.8 2.21 1.0 1.75 6 2.05 4 2.16 2 3.22 239 82
-# FFT 0.17 23949 0.12 32144 0.11 48536 7.8 3.28 12.0 2.13 85 2.96 56 3.13 282 4.02 90 41
-# LU, contiguous 0.78 16752 0.53 24957 0.53 41365 7.9 4.27 11.7 2.33 78 3.00 74 3.20 146 4.51 428 128
-# LU, non-contiguous 0.86 16760 0.47 24957 0.50 41352 7.0 4.26 12.2 2.33 135 3.20 125 3.40 107 4.41 428 128
-# Ocean, contiguous 19.47 918016 12.59 927232 12.61 945664 2.4 1.06 3.8 1.06 53 1.92 47 1.93 86 1.88 90 28
-# Ocean, non-contiguous 0.31 32088 0.17 40291 0.19 56696 3.9 2.71 6.8 1.97 38 2.38 47 2.55 84 3.66 90 28
-# Radiosity 3.85 56088 .... ..... .... ..... 16.4 1.98 .... .... ... .... .. .... .. .... 485 163
-# Radix 4.05 279680 2.12 287872 2.14 304405 6.0 1.20 11.4 1.18 29 1.92 27 1.94 157 2.12 222 56
-# Raytrace 2.22 320192 .... ..... 2.20 ...... 7.4 1.17 ... .... ... .... .. .... .. .... 172 53
-# Water-n2 0.15 17272 0.10 33651 0.11 66432 12.3 4.22 17.5 1.84 2320 2.90 583 2.92 105 3.41 189 39
-# Water-sp 0.16 10947 0.09 19144 0.09 35536 11.4 6.00 20.7 2.55 251 3.03 91 3.26 123 4.79 183 34
-# .......................................................................................................................
-# Hardware: dual-core Intel Xeon 5130, 2.0 GHz, 4 MB L2 cache, 4 GB RAM.
-# Software: Ubuntu 7.10 server, 64-bit, gcc 4.3.1, xload -update 1 running.
-#########################################################################################################################
-# Results: native native native none none DRD DRD HG ITC ITC
-# -p1 -p2 -p4 -p1 -p4 -p4 -p4+f -p4 -p4 -p4+f
-# .......................................................................................................................
-# Cholesky 0.21 45672 0.15 55765 1.02 140203 9.05 2.31 4.5 0.96 20 1.12 15 1.18 7 1.76 239 82
-# FFT 0.11 23776 0.07 75683 0.07 113920 8.36 3.48 13.1 0.94 86 1.30 64 1.37 371 1.75 90 41
-# LU, contiguous 0.58 16584 0.38 24784 0.36 41192 7.72 4.56 12.7 2.44 81 3.11 80 3.31 163 4.63 428 128
-# LU, non-contiguous 0.64 16592 0.34 24784 0.36 41176 7.59 4.55 12.7 2.44 134 3.31 124 3.51 111 4.53 428 128
-# Ocean, contiguous 14.37 917504 9.60 927232 9.61 945664 2.38 1.06 3.6 1.06 61 1.93 47 1.94 89 1.89 90 28
-# Ocean, non-contiguous 0.20 31944 0.12 40144 0.14 56552 4.40 2.85 6.7 2.05 37 2.48 45 2.63 84 3.74 90 28
-# Radiosity 2.33 ..... 2.32 ..... 2.33 ..... .... .... .... .... 175 .... 61 .... 60 .... 485 163
-# Radix 2.80 279488 1.46 287744 1.47 304256 6.17 1.21 11.8 1.19 30 1.93 28 1.96 212 2.13 222 56
-# Raytrace 1.68 320064 0.87 328256 0.87 388330 7.29 1.18 14.9 1.04 1290 1.19 169 1.21 219 1.86 172 53
-# Water-n2 0.16 17104 0.07 33480 0.08 66240 8.62 4.50 17.8 1.91 1869 2.94 449 3.01 106 3.48 189 39
-# Water-sp 0.13 10784 0.07 84352 0.06 144448 10.1 6.47 22.5 0.65 258 0.77 91 0.83 129 1.21 183 34
-# .......................................................................................................................
-# Hardware: dual-core Intel Core2 Duo E6750, 2.66 GHz, 4 MB L2 cache, 2 GB RAM.
-# Software: openSUSE 11.0, 64-bit, gcc 4.3.1, runlevel 3.
-#########################################################################################################################
+# Note: Helgrind uses a granularity of four bytes for data race detection, and DRD a granularity of one byte.
+#
+# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
+####################################################################################################################################
+# Results: native native native none none DRD DRD HG HG-hb ITC ITC
+# -p1 -p2 -p4 -p1 -p4 -p4 -p4+f -p4 -p4 -p4 -p4+f
+# ..................................................................................................................................
+# Cholesky 0.37 45867 0.25 55965 0.20 74944 8.8 2.08 28.9 1.66 171 1.96 114 2.85 54 3.13 ... .... 239 82
+# FFT 0.20 23976 0.13 54026 0.09 114112 8.2 3.02 18.4 0.85 130 1.20 85 1.27 416 1.65 ... .... 90 41
+# LU, contiguous 0.95 16784 0.64 24984 0.43 41392 8.0 3.88 19.3 2.17 120 2.84 113 3.04 223 4.36 ... .... 428 128
+# LU, non-contiguous 1.06 16792 0.67 24984 0.40 41376 7.5 3.88 20.0 2.17 210 3.04 190 3.24 166 4.26 ... .... - -
+# Ocean, contiguous 24.25 918016 14.57 927732 9.09 945664 2.4 1.05 6.6 1.05 89 1.92 77 1.93 149 1.88 ... .... 90 28
+# Ocean, non-contiguous 0.36 32120 0.18 40320 0.16 56728 4.2 2.51 10.4 1.86 58 2.27 71 2.43 127 3.54 ... .... - -
+# Radiosity 4.73 56120 .... ..... .... ..... 16.6 1.86 .... .... ... .... .. .... .. .... ... .... 485 163
+# Radix 4.98 279744 2.55 287936 1.36 304448 6.1 1.17 22.4 1.16 57 1.90 52 1.92 208 2.09 ... .... 222 56
+# Raytrace 2.76 320526 1.44 328448 0.77 344832 8.3 1.15 28.6 1.14 2324 1.31 326 1.34 420 0.60 ... .... 172 53
+# Water-n2 0.19 17304 0.12 33680 0.12 66432 12.0 3.85 20.2 3.53 2789 2.78 562 2.84 121 3.32 ... .... 189 39
+# Water-sp 0.21 10976 0.11 19176 0.07 35568 11.0 5.41 33.3 2.37 475 2.85 147 3.08 196 4.61 ... .... 183 34
+# ..................................................................................................................................
+# Hardware: Two quad-core Intel Xeon L5130, 1.6 GHz, 4 MB L2 cache, 16 GB RAM.
+# Software: Ubuntu 8.04 server, 64-bit, gcc 4.3.1.
+####################################################################################################################################
+# Results: native native native none none DRD DRD HG HG-hb ITC ITC
+# -p1 -p2 -p4 -p1 -p4 -p4 -p4+f -p4 -p4 -p4 -p4+f
+# ..................................................................................................................................
+# Cholesky 0.29 45835 0.21 55933 4.51 74944 8.8 2.21 1.0 1.75 6 2.05 4 2.16 2 3.22 ... .... 239 82
+# FFT 0.17 23949 0.12 32144 0.11 48536 7.8 3.28 12.0 2.13 85 2.96 56 3.13 282 4.02 ... .... 90 41
+# LU, contiguous 0.78 16752 0.53 24957 0.53 41365 7.9 4.27 11.7 2.33 78 3.00 74 3.20 146 4.51 ... .... 428 128
+# LU, non-contiguous 0.86 16760 0.47 24957 0.50 41352 7.0 4.26 12.2 2.33 135 3.20 125 3.40 107 4.41 ... .... - -
+# Ocean, contiguous 19.47 918016 12.59 927232 12.61 945664 2.4 1.06 3.8 1.06 53 1.92 47 1.93 86 1.88 ... .... 90 28
+# Ocean, non-contiguous 0.31 32088 0.17 40291 0.19 56696 3.9 2.71 6.8 1.97 38 2.38 47 2.55 84 3.66 ... .... - -
+# Radiosity 3.85 56088 .... ..... .... ..... 16.4 1.98 .... .... ... .... .. .... .. .... ... .... 485 163
+# Radix 4.05 279680 2.12 287872 2.14 304405 6.0 1.20 11.4 1.18 29 1.92 27 1.94 157 2.12 ... .... 222 56
+# Raytrace 2.22 320192 .... ..... 2.20 ...... 7.4 1.17 ... .... ... .... .. .... .. .... ... .... 172 53
+# Water-n2 0.15 17272 0.10 33651 0.11 66432 12.3 4.22 17.5 1.84 2320 2.90 583 2.92 105 3.41 ... .... 189 39
+# Water-sp 0.16 10947 0.09 19144 0.09 35536 11.4 6.00 20.7 2.55 251 3.03 91 3.26 123 4.79 ... .... 183 34
+# ..................................................................................................................................
+# Hardware: dual-core Intel Xeon 5130, 2.0 GHz, 4 MB L2 cache, 4 GB RAM.
+# Software: Ubuntu 7.10 server, 64-bit, gcc 4.3.1, xload -update 1 running.
+####################################################################################################################################
+# Results: native native native none none DRD DRD HG HG-hb ITC ITC
+# -p1 -p2 -p4 -p1 -p4 -p4 -p4+f -p4 -p4 -p4 -p4+f
+# ..................................................................................................................................
+# Cholesky 0.08 21760 0.05 31728 0.56 50148 13.6 3.62 3.8 2.14 16 2.51 14 2.68 9 4.03 15 5.01 239 82
+# FFT 0.02 13024 0.02 64931 0.01 81317 17.5 5.37 36.0 1.16 248 1.35 219 1.45 704 2.19 182 2.50 90 41
+# LU, contiguous 0.08 10440 0.06 18640 0.06 35048 9.9 6.45 13.0 2.63 81 2.89 88 3.13 156 4.92 125 5.63 428 128
+# Ocean, contiguous 0.19 23208 0.18 31744 0.13 48888 4.8 3.45 7.6 2.17 59 2.58 50 2.75 77 4.01 72 4.96 90 28
+# Radiosity 0.43 55912 .... ..... .... ..... .... .... .... .... ... .... .. .... .. .... ... .... 485 163
+# Radix 0.17 33760 0.10 41952 0.10 58488 7.2 2.68 14.0 1.98 28 2.52 41 2.66 159 3.70 34 4.12 222 56
+# Raytrace 0.21 320064 0.21 320064 0.21 320064 13.3 1.18 13.2 1.18 169 1.25 58 1.25 105 2.10 71 2.96 172 53
+# Water-n2 0.11 17104 0.07 33480 0.08 66240 12.4 4.38 17.5 1.88 1877 2.93 525 2.97 106 3.47 105 4.15 189 39
+# Water-sp 0.12 10784 0.06 84352 0.06 100835 11.0 6.27 22.7 0.92 257 1.09 91 1.17 129 1.72 139 1.97 183 34
+# ..................................................................................................................................
+# Hardware: dual-core Intel Core2 Duo E6750, 2.66 GHz, 4 MB L2 cache, 2 GB RAM.
+# Software: openSUSE 11.0, 64-bit, gcc 4.3.1, runlevel 3.
+####################################################################################################################################
+####
+# Note: the input parameters for benchmarks below originate from table 1 in the
+# following paper:
+# The SPLASH-2 programs: characterization and methodological considerations
+# Woo, S.C.; Ohara, M.; Torrie, E.; Singh, J.P.; Gupta, A.
+# Computer Architecture, 1995. Proceedings. 22nd Annual International Symposium
+# on Volume , Issue , 22-24 Jun 1995 Page(s): 24 - 36.
+# ftp://www-flash.stanford.edu/pub/splash2/splash2_isca95.ps.Z
+####
+
cache_size=$(get_cache_size)
log2_cache_size=$(log2 ${cache_size})
@@ -171,29 +193,29 @@
do
gzip -cd <$f >${f%.Z}
done
- test_args=tk29.O run_test ../CHOLESKY -C$((cache_size))
+ test_args=tk15.O run_test ../CHOLESKY -C$((cache_size))
)
# FFT
-run_test ${SPLASH2}/codes/kernels/fft/FFT -t -l$((log2_cache_size/2)) -m18
+run_test ${SPLASH2}/codes/kernels/fft/FFT -t -l$((log2_cache_size/2)) -m16
# LU, contiguous blocks.
-run_test ${SPLASH2}/codes/kernels/lu/contiguous_blocks/LU -n1024
+run_test ${SPLASH2}/codes/kernels/lu/contiguous_blocks/LU -n512
# LU, non-contiguous blocks.
-run_test ${SPLASH2}/codes/kernels/lu/non_contiguous_blocks/LU -n1024
+#run_test ${SPLASH2}/codes/kernels/lu/non_contiguous_blocks/LU -n512
# Ocean
-run_test ${SPLASH2}/codes/apps/ocean/contiguous_partitions/OCEAN -n2050
-run_test ${SPLASH2}/codes/apps/ocean/non_contiguous_partitions/OCEAN -n258
+run_test ${SPLASH2}/codes/apps/ocean/contiguous_partitions/OCEAN -n258
+#run_test ${SPLASH2}/codes/apps/ocean/non_contiguous_partitions/OCEAN -n258
-# Radiosity.
+# Radiosity. Disabled this benchmark because it deadlocks.
if false; then
-psep=' ' run_test ${SPLASH2}/codes/apps/radiosity/RADIOSITY -batch -room
+psep=' ' run_test ${SPLASH2}/codes/apps/radiosity/RADIOSITY -batch -room -ae 5000.0 -en 0.050 -bf 0.10
fi
# Radix
-run_test ${SPLASH2}/codes/kernels/radix/RADIX -n $((2**24))
+run_test ${SPLASH2}/codes/kernels/radix/RADIX -n$((2**20)) -r1024
# Raytrace
(
@@ -203,7 +225,8 @@
do
gzip -cd <$f >${f%.Z}
done
- test_args=balls4.env psep=' ' run_test ../RAYTRACE
+ cd ..
+ test_args=inputs/car.env psep=' ' run_test ./RAYTRACE
)
# Water-n2
|
|
From: <sv...@va...> - 2008-07-10 14:00:57
|
Author: bart
Date: 2008-07-10 15:01:04 +0100 (Thu, 10 Jul 2008)
New Revision: 8417
Log:
Minimum time measurement error is now really changed from 0.00 to 0.01.
Modified:
trunk/drd/scripts/measurement-functions
Modified: trunk/drd/scripts/measurement-functions
===================================================================
--- trunk/drd/scripts/measurement-functions 2008-07-10 13:58:32 UTC (rev 8416)
+++ trunk/drd/scripts/measurement-functions 2008-07-10 14:01:04 UTC (rev 8417)
@@ -40,7 +40,7 @@
## Read a stream of numbers from stdin (one per line), and print the average
# and standard deviation.
function avgstddev {
- awk '{n++;m=NF;for(i=1;i<=NF;i++){sum[i]+=$i;sumsq[i]+=$i*$i}}END{for(i=1;i<=m;i++){d=sumsq[i]/n-sum[i]*sum[i]/n/n;printf "%.2f %.2f ",sum[i]/n,(d>0?sqrt(d):0.01)}}'
+ awk '{n++;m=NF;for(i=1;i<=NF;i++){sum[i]+=$i;sumsq[i]+=$i*$i}}END{for(i=1;i<=m;i++){d=sumsq[i]/n-sum[i]*sum[i]/n/n;printf "%.2f %.2f ",sum[i]/n,(d>=0.0001?sqrt(d):0.01)}}'
}
## Query the virtual memory size for the last invocation of command $1 from
|
|
From: <sv...@va...> - 2008-07-10 13:58:25
|
Author: bart Date: 2008-07-10 14:58:32 +0100 (Thu, 10 Jul 2008) New Revision: 8416 Log: Documented meaning of input parameters. Modified: trunk/drd/scripts/run-splash2-water-input Modified: trunk/drd/scripts/run-splash2-water-input =================================================================== --- trunk/drd/scripts/run-splash2-water-input 2008-07-10 13:57:56 UTC (rev 8415) +++ trunk/drd/scripts/run-splash2-water-input 2008-07-10 13:58:32 UTC (rev 8416) @@ -3,6 +3,11 @@ ## Generate input for water-n2 and water-sp. Argument $1 is the number of # processors. +# File format: +# TSTEP NMOL NSTEP NORDER +# NSAVE NRST NPRINT NFMC +# NumProcs CUTOFF + cat <<EOF 1.5e-16 512 3 6 -1 3000 3 0 |
|
From: <sv...@va...> - 2008-07-10 13:57:50
|
Author: bart
Date: 2008-07-10 14:57:56 +0100 (Thu, 10 Jul 2008)
New Revision: 8415
Log:
Changed minimum time measurement error from 0.00 to 0.01. Command line arguments are now saved to the output file. And the output of all three runs is now present in the output file, not only the output of the last run.
Modified:
trunk/drd/scripts/measurement-functions
Modified: trunk/drd/scripts/measurement-functions
===================================================================
--- trunk/drd/scripts/measurement-functions 2008-07-10 12:14:17 UTC (rev 8414)
+++ trunk/drd/scripts/measurement-functions 2008-07-10 13:57:56 UTC (rev 8415)
@@ -40,7 +40,7 @@
## Read a stream of numbers from stdin (one per line), and print the average
# and standard deviation.
function avgstddev {
- awk '{n++;m=NF;for(i=1;i<=NF;i++){sum[i]+=$i;sumsq[i]+=$i*$i}}END{for(i=1;i<=m;i++){d=sumsq[i]/n-sum[i]*sum[i]/n/n;printf "%.2f %.2f ",sum[i]/n,(d>0?sqrt(d):0)}}'
+ awk '{n++;m=NF;for(i=1;i<=NF;i++){sum[i]+=$i;sumsq[i]+=$i*$i}}END{for(i=1;i<=m;i++){d=sumsq[i]/n-sum[i]*sum[i]/n/n;printf "%.2f %.2f ",sum[i]/n,(d>0?sqrt(d):0.01)}}'
}
## Query the virtual memory size for the last invocation of command $1 from
@@ -99,11 +99,14 @@
local i
echo "$@" >&2
+ if [ "${test_output}" != "" ]; then
+ echo "$@" >"${test_output}"
+ fi
for ((i=0;i<3;i++))
do
echo -n "$("${test_input:-true}" $p | \
/usr/bin/time --format="%e" "$@" 2>&1 | \
- tee "${test_output:-/dev/null}" | \
+ tee -a "${test_output:-/dev/null}" | \
tail -n 1) "
query_vsz "$@"
done
|
|
From: <sv...@va...> - 2008-07-10 12:14:10
|
Author: bart
Date: 2008-07-10 13:14:17 +0100 (Thu, 10 Jul 2008)
New Revision: 8414
Log:
Fixed line number.
Modified:
trunk/drd/tests/atomic_var.stderr.exp
Modified: trunk/drd/tests/atomic_var.stderr.exp
===================================================================
--- trunk/drd/tests/atomic_var.stderr.exp 2008-07-10 12:13:40 UTC (rev 8413)
+++ trunk/drd/tests/atomic_var.stderr.exp 2008-07-10 12:14:17 UTC (rev 8414)
@@ -7,7 +7,7 @@
by 0x........: (within libpthread-?.?.so)
by 0x........: clone (in /...libc...)
Location 0x........ is 0 bytes inside local var "s_y"
-declared at atomic_var.c:30, in frame #? of thread 2
+declared at atomic_var.c:32, in frame #? of thread 2
y = 1
Test finished.
|
|
From: <sv...@va...> - 2008-07-10 12:13:34
|
Author: bart
Date: 2008-07-10 13:13:40 +0100 (Thu, 10 Jul 2008)
New Revision: 8413
Log:
Suppressed a compiler warning.
Modified:
trunk/drd/tests/atomic_var.c
Modified: trunk/drd/tests/atomic_var.c
===================================================================
--- trunk/drd/tests/atomic_var.c 2008-07-10 11:58:08 UTC (rev 8412)
+++ trunk/drd/tests/atomic_var.c 2008-07-10 12:13:40 UTC (rev 8413)
@@ -34,7 +34,7 @@
static void* thread_func_1(void* arg)
{
s_y = 1;
- __sync_add_and_fetch(&s_x, 1);
+ (void) __sync_add_and_fetch(&s_x, 1);
return 0;
}
|
|
From: <sv...@va...> - 2008-07-10 11:58:04
|
Author: bart
Date: 2008-07-10 12:58:08 +0100 (Thu, 10 Jul 2008)
New Revision: 8412
Log:
Added a regression test for atomic variables.
Added:
trunk/drd/tests/atomic_var.c
trunk/drd/tests/atomic_var.stderr.exp
trunk/drd/tests/atomic_var.vgtest
Modified:
trunk/drd/tests/Makefile.am
Modified: trunk/drd/tests/Makefile.am
===================================================================
--- trunk/drd/tests/Makefile.am 2008-07-10 06:27:52 UTC (rev 8411)
+++ trunk/drd/tests/Makefile.am 2008-07-10 11:58:08 UTC (rev 8412)
@@ -17,6 +17,8 @@
EXTRA_DIST = \
$(noinst_SCRIPTS) \
+ atomic_var.stderr.exp \
+ atomic_var.vgtest \
drd_bitmap_test.stderr.exp \
drd_bitmap_test.stdout.exp \
drd_bitmap_test.vgtest \
@@ -182,7 +184,8 @@
-I$(top_builddir)/include -I$(top_srcdir)/VEX/pub
AM_CXXFLAGS = $(AM_CFLAGS)
-check_PROGRAMS = \
+check_PROGRAMS = \
+ atomic_var \
drd_bitmap_test \
fp_race \
hg01_all_ok \
@@ -244,6 +247,9 @@
endif
+atomic_var_SOURCES = atomic_var.c
+atomic_var_LDADD = -lpthread
+
drd_bitmap_test_SOURCES = drd_bitmap_test.c
drd_bitmap_test_CFLAGS = $(AM_CFLAGS) -O2 \
-DENABLE_DRD_CONSISTENCY_CHECKS\
Added: trunk/drd/tests/atomic_var.c
===================================================================
--- trunk/drd/tests/atomic_var.c (rev 0)
+++ trunk/drd/tests/atomic_var.c 2008-07-10 11:58:08 UTC (rev 8412)
@@ -0,0 +1,72 @@
+/** Race condition around use of atomic variable.
+ * Note: for the i386 and x86_64 memory models, thread 2 must print y = 1.
+ * On PPC however, both y = 0 and y = 1 are legal results. This is because
+ * the PPC memory model allows different CPU's to observe stores to variables
+ * in different cache lines in a different order.
+ */
+
+
+#define _GNU_SOURCE
+
+#include "config.h"
+#include <pthread.h>
+#include <stdio.h> /* fprintf() */
+#include <stdlib.h> /* atoi() */
+
+
+/** Only gcc 4.1.0 and later have atomic builtins. */
+#ifndef HAVE_BUILTIN_ATOMIC
+static __inline__
+int __sync_add_and_fetch(int* p, int i)
+{
+ if (i == 0)
+ return *p;
+ return (*p += i);
+}
+#endif
+
+
+static int s_x = 0;
+/* s_dummy[] ensures that s_x and s_y are not in the same cache line. */
+static char s_dummy[512];
+static int s_y = 0;
+
+static void* thread_func_1(void* arg)
+{
+ s_y = 1;
+ __sync_add_and_fetch(&s_x, 1);
+ return 0;
+}
+
+static void* thread_func_2(void* arg)
+{
+ while (__sync_add_and_fetch(&s_x, 0) == 0)
+ ;
+ fprintf(stderr, "y = %d\n", s_y);
+ return 0;
+}
+
+int main(int argc, char** argv)
+{
+#ifdef HAVE_BUILTIN_ATOMIC
+ int i;
+ const int n_threads = 2;
+ pthread_t tid[n_threads];
+
+ fprintf(stderr, "Start of test.\n");
+ pthread_create(&tid[0], 0, thread_func_1, 0);
+ pthread_create(&tid[1], 0, thread_func_2, 0);
+ for (i = 0; i < n_threads; i++)
+ pthread_join(tid[i], 0);
+ fprintf(stderr, "Test finished.\n");
+#else
+ fprintf(stderr,
+ "Sorry, but your compiler does not have built-in support for atomic"
+ " operations.\n");
+#endif
+
+ /* Suppress the compiler warning about s_dummy not being used. */
+ s_dummy[0]++;
+
+ return 0;
+}
Added: trunk/drd/tests/atomic_var.stderr.exp
===================================================================
--- trunk/drd/tests/atomic_var.stderr.exp (rev 0)
+++ trunk/drd/tests/atomic_var.stderr.exp 2008-07-10 11:58:08 UTC (rev 8412)
@@ -0,0 +1,14 @@
+
+Start of test.
+Thread 2:
+Conflicting load by thread 2/3 at 0x........ size 4
+ at 0x........: thread_func_2 (atomic_var.c:?)
+ by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
+ by 0x........: (within libpthread-?.?.so)
+ by 0x........: clone (in /...libc...)
+Location 0x........ is 0 bytes inside local var "s_y"
+declared at atomic_var.c:30, in frame #? of thread 2
+y = 1
+Test finished.
+
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Added: trunk/drd/tests/atomic_var.vgtest
===================================================================
--- trunk/drd/tests/atomic_var.vgtest (rev 0)
+++ trunk/drd/tests/atomic_var.vgtest 2008-07-10 11:58:08 UTC (rev 8412)
@@ -0,0 +1,3 @@
+prereq: ./supported_libpthread
+vgopts: --var-info=yes --check-stack-var=yes --show-confl-seg=no
+prog: atomic_var
|
|
From: Donna R. <do...@va...> - 2008-07-10 09:59:31
|
We are pleased to announce a new release of Valkyrie, version 1.3.0. Valkyrie is a GPL2'd Qt-based GUI for Valgrind's Memcheck tool. Version 1.3.0 adds support for Valgrind versions 3.3.0 and 3.3.1, and fixes a number of bugs reported since the last release (1.2.0). The source code, and some screen shots, are available at http://www.open-works.net/projects/valkyrie.html. -- The Valkyrie Developers Release 1.3.0 (30 June 2008) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.3.0 adds support for Valgrind versions 3.3.0 and 3.3.1, and fixes a number of bugs reported in 1.2.0. NEW FUNCTIONALITY: - Added option to set working directory (via cmdline and vk config) - Allow for multiple suppressions on the command line BUGS and PROBLEMS FIXED: - Cleanup compiler warnings. Thanks to Diego Petten - Better editor support in configure: gvim, gview, kate Thanks to Pim Nijdamd, Anton Dudarenko - Clicking valgrind options item the first time would lead to a crash; init() executed updates to the page, which tried to update the page before it had been setup completely. Thanks to Pengcheng Zou - Fixed null ptr defef, which happened if memcheck finished before expected while reading logfile. Thanks to Gert Steenssens - Do not prevent horizontal scrolling for log window Thanks to Anton Dudarenko. - Fixed log dir setup (as requested by many!) Temporary logs are now always written to /tmp/valkyrie_logs (configured value). Added a user configurable "Log Dir", which is used as the default dir when saving logs. - Compile errors for Slackware 10.1 - Various compiler warnings. It now compiles cleanly with g++-4.3.1. - Fixed open/close items buttons - open current item: only worked once item had been opened once already - open all items: didn't open leak errors (stopped at suppressions) - open all items: remained 'pushed' even if all items were closed (valkyrie-1.3.0: 30 June 2008, svn r449). |
|
From: Bart V. A. <bar...@gm...> - 2008-07-10 07:21:23
|
On Thu, Jul 10, 2008 at 8:25 AM, Julian Seward <js...@ac...> wrote: > > On Thursday 10 July 2008 08:25, Bart Van Assche wrote: >> By the way, I noticed that GLib library uses several global variables >> which are shared over threads and which are not protected by a mutex, >> e.g. g_threads_got_initialized and g_mem_initialized. While this is >> correct, it is annoying for tools like Helgrind or DRD. Suppression >> patterns have to be added for every call stack and every access to any >> of these global variables to prevent that these appear in race >> reports. > > Can you show an example of how they are used across multiple threads? > I would have thought that drd should not show any race in such a case, > if Glib is really correct. You should know that most but not all data races detected by the happens-before algorithm are dangerous. E.g. if you analyze the function g_mem_init_nomessage() in source file glib/gmem.c, you will see that it is possible that the last eight lines of this function are executed twice but that this is harmless. I have filed a bug report for this issue anyway -- see also http://bugzilla.gnome.org/show_bug.cgi?id=542316. Bart. |
|
From: <sv...@va...> - 2008-07-10 06:28:00
|
Author: bart Date: 2008-07-10 07:27:52 +0100 (Thu, 10 Jul 2008) New Revision: 8411 Log: Added note about the g_slice facility in GLib. Modified: trunk/drd/docs/drd-manual.xml Modified: trunk/drd/docs/drd-manual.xml =================================================================== --- trunk/drd/docs/drd-manual.xml 2008-07-09 13:18:14 UTC (rev 8410) +++ trunk/drd/docs/drd-manual.xml 2008-07-10 06:27:52 UTC (rev 8411) @@ -998,6 +998,16 @@ on top of POSIX threads, and is hence directly supported by DRD. </para> +<para> +One of the many facilities provided by the <literal>glib</literal> +library is a block allocator, called <literal>g_slice</literal>. You +have to disable this block allocator when using DRD by adding the +following to the shell environment variables: +<literal>G_SLICE=always-malloc</literal>. See also the <ulink +url="http://library.gnome.org/devel/glib/stable/glib-Memory-Slices.html">GLib +Reference Manual</ulink> for more information. +</para> + </sect2> |
|
From: Bart V. A. <bar...@gm...> - 2008-07-10 06:24:57
|
On Thu, Jul 10, 2008 at 6:02 AM, Stefan Kost <en...@ho...> wrote: > g_slice actually i a problem, but then gnome developers usualy are aware > that when using valgrind the use those env-vars. > G_SLICE=always-malloc G_DEBUG=gc-friendly Thanks for the info, by this time I have added a note about G_SLICE=always-malloc to the DRD manual. By the way, I noticed that GLib library uses several global variables which are shared over threads and which are not protected by a mutex, e.g. g_threads_got_initialized and g_mem_initialized. While this is correct, it is annoying for tools like Helgrind or DRD. Suppression patterns have to be added for every call stack and every access to any of these global variables to prevent that these appear in race reports. Any idea whether the GLib authors would agree with changing the statements that modify these global variables into atomic accesses ? That would be helpful for anyone analyzing a GLib program with Helgrind or DRD. An example: current code: g_mem_initialized = TRUE; new code: g_atomic_int_set(&g_mem_initialized, TRUE); Bart. |
|
From: Bart V. A. <bar...@gm...> - 2008-07-10 05:49:45
|
On Thu, Jul 10, 2008 at 12:06 AM, Nicholas Nethercote <nj...@cs...> wrote: > On Mon, 7 Jul 2008 sv...@va... wrote: > >> Author: bart >> Date: 2008-07-07 19:38:17 +0100 (Mon, 07 Jul 2008) >> New Revision: 8388 >> >> Log: >> Added paragraphs about the glib and Qt libraries. > > Do you mean "glibc"? I meant GLib, not glibc. Documentation can be found here: http://library.gnome.org/devel/glib/stable/. Bart. |
|
From: Stefan K. <en...@ho...> - 2008-07-10 04:02:17
|
Bart Van Assche schrieb: > On Wed, Jul 9, 2008 at 9:47 AM, Julian Seward <js...@ac...> wrote: >> On Wednesday 09 July 2008 09:47, Tom Hughes wrote: >>> Do the GLib allocation routines not wind up calling the C library ones >>> and hence get caught that way? >> Indeed; we've been shipping memcheck for N years now (5+ ?) and I don't >> recall anybody telling us we were not intercepting memory allocation/ >> free functions in glib. I would think memcheck would be unusable on >> KDE and Gnome applications due to high noise level if that were really >> the case. Are you sure? > > Hello Tom and Julian, > > Further analysis learned me that GLib uses the glibc memory allocation > functions, unless told to do otherwise by a call to > g_mem_set_vtable(). Sorry for the confusion -- I'll drop the patch. > > Bart. Hi, g_slice actually i a problem, but then gnome developers usualy are aware that when using valgrind the use those env-vars. G_SLICE=always-malloc G_DEBUG=gc-friendly Stefan > > ------------------------------------------------------------------------- > Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! > Studies have shown that voting for your favorite open source project, > along with a healthy diet, reduces your potential for chronic lameness > and boredom. Vote Now at http://www.sourceforge.net/community/cca08 > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers |
|
From: Stefan K. <en...@ho...> - 2008-07-10 03:58:37
|
Hi, Bart Van Assche schrieb: > DRD is a pure happens-before data race detector implemented as a > Valgrind tool. The happens-before algorithm which DRD is based upon > guarantees not to report any false positives. > > An experimental version of the DRD tool, called exp-drd, was already > included with the Valgrind releases 3.3.0 and 3.3.1. This tool has > been renamed to drd and will be included with the 3.4.0 release of > Valgrind. Since release 3.3.1 the DRD tool became significantly > faster, uses less memory, supports detection of lock contention, and > supports now also POSIX reader-writer locks, barriers and the Qt4 > library. Congratulation! > > A release candidate of DRD can be found on the Valgrind trunk, and can > be downloaded, compiled and installed as follows: > > svn co svn://svn.valgrind.org/valgrind/trunk valgrind > cd valgrind && ./autogen.sh && ./configure --prefix=$HOME/valgrind-3.4.0.SVN > make -s && make -C docs -s html-docs && make -s install > konqueror ~/valgrind-3.4.0.SVN/share/doc/valgrind/html/drd-manual.html & <nitpick> xdg-open ~/valgrind-3.4.0.SVN/share/doc/valgrind/html/drd-manual.html & </nitpick> Stefan > > Any feedback about the tool or its documentation is welcome. Please > keep in mind that the feature freeze date for the Valgrind 3.4.0 > release is on Friday August 1, 2008. > > Bart. > > ------------------------------------------------------------------------- > Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! > Studies have shown that voting for your favorite open source project, > along with a healthy diet, reduces your potential for chronic lameness > and boredom. Vote Now at http://www.sourceforge.net/community/cca08 > _______________________________________________ > Valgrind-users mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-users |
|
From: Tom H. <th...@cy...> - 2008-07-10 03:07:25
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-07-10 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 == 345 tests, 60 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin1-yes (stderr) memcheck/tests/origin4-many (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) |
|
From: Tom H. <th...@cy...> - 2008-07-10 02:55:55
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-07-10 03:20:08 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 == 442 tests, 8 stderr failures, 1 stdout failure, 2 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) massif/tests/new-cpp (post) massif/tests/overloaded-new (post) none/tests/blockfault (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-07-10 02:49:04
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-07-10 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 == 436 tests, 5 stderr failures, 2 stdout failures, 2 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) massif/tests/new-cpp (post) massif/tests/overloaded-new (post) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-07-10 02:42:10
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-07-10 03:25:05 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 440 tests, 7 stderr failures, 5 stdout failures, 2 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) massif/tests/new-cpp (post) massif/tests/overloaded-new (post) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 440 tests, 8 stderr failures, 5 stdout failures, 2 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) massif/tests/new-cpp (post) massif/tests/overloaded-new (post) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Jul 10 03:33:44 2008 --- new.short Thu Jul 10 03:42:16 2008 *************** *** 8,10 **** ! == 440 tests, 8 stderr failures, 5 stdout failures, 2 post failures == memcheck/tests/file_locking (stderr) --- 8,10 ---- ! == 440 tests, 7 stderr failures, 5 stdout failures, 2 post failures == memcheck/tests/file_locking (stderr) *************** *** 20,22 **** none/tests/mremap2 (stdout) - helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) --- 20,21 ---- |
|
From: Tom H. <th...@cy...> - 2008-07-10 02:32:05
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-07-10 03:00:12 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 == 442 tests, 31 stderr failures, 3 stdout failures, 2 post failures == memcheck/tests/file_locking (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) massif/tests/new-cpp (post) massif/tests/overloaded-new (post) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |