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
(17) |
2
(14) |
3
(15) |
4
(30) |
5
(18) |
6
(12) |
7
(10) |
|
8
(11) |
9
(11) |
10
(14) |
11
(12) |
12
(12) |
13
(8) |
14
(5) |
|
15
(11) |
16
(19) |
17
(15) |
18
(15) |
19
(16) |
20
(9) |
21
(9) |
|
22
(12) |
23
(11) |
24
(10) |
25
(5) |
26
(11) |
27
(12) |
28
(20) |
|
29
(11) |
30
(21) |
|
|
|
|
|
|
From: <sv...@va...> - 2008-06-08 14:44:35
|
Author: bart
Date: 2008-06-08 15:44:41 +0100 (Sun, 08 Jun 2008)
New Revision: 8205
Log:
Updated results.
Modified:
trunk/exp-drd/scripts/run-splash2
Modified: trunk/exp-drd/scripts/run-splash2
===================================================================
--- trunk/exp-drd/scripts/run-splash2 2008-06-08 11:22:23 UTC (rev 8204)
+++ trunk/exp-drd/scripts/run-splash2 2008-06-08 14:44:41 UTC (rev 8205)
@@ -23,6 +23,9 @@
test_output="${1}-drd-without-stack-var-${p}.out" \
print_runtime_ratio $VG --tool=exp-drd --check-stack-var=no "$@" -p$p
+
+ test_output="${1}-helgrind-${p}.out" \
+ print_runtime_ratio $VG --tool=helgrind "$@" -p$p
done
echo ''
@@ -74,20 +77,20 @@
# 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.1.3.
##############################################################################
-# Results: native DRD (-p4) DRD (-p4) ITC (-p4) ITC (-p4)
-# time original w/ filter original w/ filter
+# Results (-p4): native DRD DRD HG ITC ITC
+# time w/ filter w/ filter
# ............................................................................
-# Cholesky 0.21 107 70 239 82
-# FFT 0.11 90 17 90 41
-# LU, contiguous blocks 0.56 53 46 428 128
-# LU, non-contiguous blocks 0.59 57 49 428 128
-# Ocean, contiguous partitions 14.32 34 24 90 28
-# Ocean, non-continguous partns 0.21 28 30 90 28
-# Radiosity 2.35 .. 76 485 163
-# Radix 2.80 .. 16 222 56
-# Raytrace 90.79 .. 54 172 53
-# Water-n2 0.15 .. 27 189 39
-# Water-sp 0.15 .. 26 183 34
+# Cholesky 0.21 109 71 37 239 82
+# FFT 0.11 92 17 242 90 41
+# LU, contiguous blocks 0.56 53 46 97 428 128
+# LU, non-contiguous blocks 0.59 56 49 62 428 128
+# Ocean, contiguous partitions 14.32 34 24 57 90 28
+# Ocean, non-continguous partns 0.21 28 30 57 90 28
+# Radiosity 2.35 259 75 60 485 163
+# Radix 2.80 17 15 90 222 56
+# Raytrace 90.79 339 55 89 172 53
+# Water-n2 0.15 154 30 46 189 39
+# Water-sp 0.15 146 30 46 183 34
# ............................................................................
# Hardware: dual-core Intel Core2 Duo E6750, 2.66 GHz, 4 MB L2 cache, 2 GB RAM.
# Software: openSUSE 10.3, 64-bit, gcc 4.2.1, runlevel 5, X screensaver: blank
|
|
From: <sv...@va...> - 2008-06-08 11:22:16
|
Author: bart
Date: 2008-06-08 12:22:23 +0100 (Sun, 08 Jun 2008)
New Revision: 8204
Log:
Only run tests with -p4 -- omitted -p1 and -p2.
Modified:
trunk/exp-drd/scripts/run-splash2
Modified: trunk/exp-drd/scripts/run-splash2
===================================================================
--- trunk/exp-drd/scripts/run-splash2 2008-06-08 11:21:34 UTC (rev 8203)
+++ trunk/exp-drd/scripts/run-splash2 2008-06-08 11:22:23 UTC (rev 8204)
@@ -16,7 +16,7 @@
read avg1 stddev1 < "$tmp"
echo "Average time: ${avg1} +/- ${stddev1} seconds"
- for p in 1 2 4
+ for p in 4
do
test_output="${1}-drd-with-stack-var-${p}.out" \
print_runtime_ratio $VG --tool=exp-drd --check-stack-var=yes "$@" -p$p
@@ -31,7 +31,9 @@
}
-# Script body
+########################
+# Script body #
+########################
DRD_SCRIPTS_DIR="$(dirname $0)"
if [ "${DRD_SCRIPTS_DIR:0:1}" != "/" ]; then
@@ -70,17 +72,17 @@
# Water-sp 33 33 33 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.1.3, runlevel 3.
+# Software: Ubuntu 7.10 server, 64-bit, gcc 4.1.3.
##############################################################################
# Results: native DRD (-p4) DRD (-p4) ITC (-p4) ITC (-p4)
# time original w/ filter original w/ filter
# ............................................................................
-# Cholesky 0.21 115 72 239 82
-# FFT 0.11 92 17 90 41
-# LU, contiguous blocks 0.56 57 49 428 128
-# LU, non-contiguous blocks 0.59 60 53 428 128
-# Ocean, contiguous partitions 14.32 .. 24 90 28
-# Ocean, non-continguous partns 0.21 .. 30 90 28
+# Cholesky 0.21 107 70 239 82
+# FFT 0.11 90 17 90 41
+# LU, contiguous blocks 0.56 53 46 428 128
+# LU, non-contiguous blocks 0.59 57 49 428 128
+# Ocean, contiguous partitions 14.32 34 24 90 28
+# Ocean, non-continguous partns 0.21 28 30 90 28
# Radiosity 2.35 .. 76 485 163
# Radix 2.80 .. 16 222 56
# Raytrace 90.79 .. 54 172 53
@@ -88,7 +90,7 @@
# Water-sp 0.15 .. 26 183 34
# ............................................................................
# Hardware: dual-core Intel Core2 Duo E6750, 2.66 GHz, 4 MB L2 cache, 2 GB RAM.
-# Software: openSUSE 10.3, 64-bit, gcc 4.2.1, runlevel 5, X server running.
+# Software: openSUSE 10.3, 64-bit, gcc 4.2.1, runlevel 5, X screensaver: blank
##############################################################################
cache_size=$(($(get_cache_size)/2))
|
|
From: <sv...@va...> - 2008-06-08 11:21:31
|
Author: bart
Date: 2008-06-08 12:21:34 +0100 (Sun, 08 Jun 2008)
New Revision: 8203
Log:
More maual inlining.
Modified:
trunk/exp-drd/drd_main.c
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-06-08 08:09:50 UTC (rev 8202)
+++ trunk/exp-drd/drd_main.c 2008-06-08 11:21:34 UTC (rev 8203)
@@ -250,9 +250,6 @@
{
DataRaceErrInfo drei;
- if (drd_is_suppressed(addr, addr + size))
- return;
-
drei.tid = thread_get_running_tid();
drei.addr = addr;
drei.size = size;
@@ -280,7 +277,8 @@
drd_trace_mem_access(addr, size, eLoad);
}
if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
- && bm_access_load_triggers_conflict(addr, addr + size))
+ && bm_access_load_triggers_conflict(addr, addr + size)
+ && ! drd_is_suppressed(addr, addr + size))
{
drd_report_race(addr, size, eLoad);
}
@@ -296,7 +294,8 @@
drd_trace_mem_access(addr, 1, eLoad);
}
if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
- && bm_access_load_1_triggers_conflict(addr))
+ && bm_access_load_1_triggers_conflict(addr)
+ && ! drd_is_suppressed(addr, addr + 1))
{
drd_report_race(addr, 1, eLoad);
}
@@ -312,7 +311,8 @@
drd_trace_mem_access(addr, 2, eLoad);
}
if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
- && bm_access_load_2_triggers_conflict(addr))
+ && bm_access_load_2_triggers_conflict(addr)
+ && ! drd_is_suppressed(addr, addr + 2))
{
drd_report_race(addr, 2, eLoad);
}
@@ -328,7 +328,8 @@
drd_trace_mem_access(addr, 4, eLoad);
}
if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
- && bm_access_load_4_triggers_conflict(addr))
+ && bm_access_load_4_triggers_conflict(addr)
+ && ! drd_is_suppressed(addr, addr + 4))
{
drd_report_race(addr, 4, eLoad);
}
@@ -344,7 +345,8 @@
drd_trace_mem_access(addr, 8, eLoad);
}
if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
- && bm_access_load_8_triggers_conflict(addr))
+ && bm_access_load_8_triggers_conflict(addr)
+ && ! drd_is_suppressed(addr, addr + 8))
{
drd_report_race(addr, 8, eLoad);
}
@@ -367,7 +369,8 @@
drd_trace_mem_access(addr, size, eStore);
}
if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
- && bm_access_store_triggers_conflict(addr, addr + size))
+ && bm_access_store_triggers_conflict(addr, addr + size)
+ && ! drd_is_suppressed(addr, addr + size))
{
drd_report_race(addr, size, eStore);
}
@@ -383,7 +386,8 @@
drd_trace_mem_access(addr, 1, eStore);
}
if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
- && bm_access_store_1_triggers_conflict(addr))
+ && bm_access_store_1_triggers_conflict(addr)
+ && ! drd_is_suppressed(addr, addr + 1))
{
drd_report_race(addr, 1, eStore);
}
@@ -399,7 +403,8 @@
drd_trace_mem_access(addr, 2, eStore);
}
if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
- && bm_access_store_2_triggers_conflict(addr))
+ && bm_access_store_2_triggers_conflict(addr)
+ && ! drd_is_suppressed(addr, addr + 2))
{
drd_report_race(addr, 2, eStore);
}
@@ -415,7 +420,8 @@
drd_trace_mem_access(addr, 4, eStore);
}
if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
- && bm_access_store_4_triggers_conflict(addr))
+ && bm_access_store_4_triggers_conflict(addr)
+ && ! drd_is_suppressed(addr, addr + 4))
{
drd_report_race(addr, 4, eStore);
}
@@ -431,7 +437,8 @@
drd_trace_mem_access(addr, 8, eStore);
}
if ((s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
- && bm_access_store_8_triggers_conflict(addr))
+ && bm_access_store_8_triggers_conflict(addr)
+ && ! drd_is_suppressed(addr, addr + 8))
{
drd_report_race(addr, 8, eStore);
}
|
|
From: <sv...@va...> - 2008-06-08 08:09:43
|
Author: bart
Date: 2008-06-08 09:09:50 +0100 (Sun, 08 Jun 2008)
New Revision: 8202
Log:
Moved shell commands for running matinv to a separate file.
Added:
trunk/exp-drd/scripts/run-matinv
Modified:
trunk/exp-drd/Testing.txt
Modified: trunk/exp-drd/Testing.txt
===================================================================
--- trunk/exp-drd/Testing.txt 2008-06-08 08:08:31 UTC (rev 8201)
+++ trunk/exp-drd/Testing.txt 2008-06-08 08:09:50 UTC (rev 8202)
@@ -4,16 +4,11 @@
1. Run the regression tests. After having compiled DRD, run the following
command:
perl tests/vg_regtest exp-drd
-2. Test the slowdown for matinv for various matrix sizes (must be about 45
- for i == 1 and about 50 for i == 10):
- time exp-drd/tests/matinv 200
- for ((i=1;i<=10;i++))
- do
- echo "==== $i ===="
- time ./vg-in-place --tool=exp-drd exp-drd/tests/matinv 200 -t$i
- done
+2. Test the slowdown for matinv for various matrix sizes via the script
+ exp-drd/scripts/run-matinv (must be about 27 for i == 1 and about
+ 36 for i == 10).
3. Test whether DRD works with standard KDE applications and whether it does
- not print any error messages:
+ not print any false positives:
./vg-in-place --tool=exp-drd kate
./vg-in-place --trace-children=yes --tool=exp-drd knode
./vg-in-place --trace-children=yes --tool=exp-drd amarokapp
Added: trunk/exp-drd/scripts/run-matinv
===================================================================
--- trunk/exp-drd/scripts/run-matinv (rev 0)
+++ trunk/exp-drd/scripts/run-matinv 2008-06-08 08:09:50 UTC (rev 8202)
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+########################
+# Function definitions #
+########################
+
+source "$(dirname $0)/measurement-functions"
+
+########################
+# Script body #
+########################
+
+DRD_SCRIPTS_DIR="$(dirname $0)"
+if [ "${DRD_SCRIPTS_DIR:0:1}" != "/" ]; then
+ DRD_SCRIPTS_DIR="$PWD/$DRD_SCRIPTS_DIR"
+fi
+
+VG="${DRD_SCRIPTS_DIR}/../../vg-in-place"
+MATINV="${DRD_SCRIPTS_DIR}/../../exp-drd/tests/matinv"
+
+
+for n in 200 400
+do
+ tmp="/tmp/test-timing.$$"
+ rm -f "${tmp}"
+
+ measure_runtime ${MATINV} $n | avgstddev > "$tmp"
+ read avg1 stddev1 < "$tmp"
+ echo "Average time: ${avg1} +/- ${stddev1} seconds"
+
+ for ((i=1;i<=10;i++))
+ do
+ print_runtime_ratio ${VG} --tool=exp-drd ${MATINV} $n -t$i
+ done
+done
Property changes on: trunk/exp-drd/scripts/run-matinv
___________________________________________________________________
Name: svn:executable
+ *
|
|
From: <sv...@va...> - 2008-06-08 08:08:26
|
Author: bart
Date: 2008-06-08 09:08:31 +0100 (Sun, 08 Jun 2008)
New Revision: 8201
Log:
Declared more inline functions static, such that the compiler can omit the out-of-line code.
Added:
trunk/exp-drd/drd_thread_bitmap.h
Modified:
trunk/exp-drd/drd_bitmap.c
trunk/exp-drd/drd_bitmap.h
trunk/exp-drd/drd_main.c
trunk/exp-drd/drd_thread.c
trunk/exp-drd/drd_thread.h
trunk/exp-drd/pub_drd_bitmap.h
Modified: trunk/exp-drd/drd_bitmap.c
===================================================================
--- trunk/exp-drd/drd_bitmap.c 2008-06-07 11:40:14 UTC (rev 8200)
+++ trunk/exp-drd/drd_bitmap.c 2008-06-08 08:08:31 UTC (rev 8201)
@@ -106,7 +106,6 @@
* Record an access of type access_type at addresses a .. a + size - 1 in
* bitmap bm.
*/
-static
void bm_access_range(struct bitmap* const bm,
const Addr a1, const Addr a2,
const BmAccessTypeT access_type)
@@ -171,26 +170,6 @@
}
}
-static inline
-void bm_access_aligned_load(struct bitmap* const bm,
- const Addr a1, const SizeT size)
-{
- struct bitmap2* bm2;
-
- bm2 = bm2_lookup_or_insert_exclusive(bm, a1 >> ADDR0_BITS);
- bm0_set_range(bm2->bm1.bm0_r, a1 & ADDR0_MASK, size);
-}
-
-static inline
-void bm_access_aligned_store(struct bitmap* const bm,
- const Addr a1, const SizeT size)
-{
- struct bitmap2* bm2;
-
- bm2 = bm2_lookup_or_insert_exclusive(bm, a1 >> ADDR0_BITS);
- bm0_set_range(bm2->bm1.bm0_w, a1 & ADDR0_MASK, size);
-}
-
void bm_access_range_load(struct bitmap* const bm,
const Addr a1, const Addr a2)
{
@@ -644,36 +623,6 @@
return False;
}
-static inline
-Bool bm_aligned_load_has_conflict_with(const struct bitmap* const bm,
- const Addr a1, const SizeT size)
-{
- const struct bitmap2* bm2;
-
- bm2 = bm2_lookup(bm, a1 >> ADDR0_BITS);
-
- return (bm2 && bm0_is_any_set(bm2->bm1.bm0_w, a1 & ADDR0_MASK, size));
-}
-
-static inline
-Bool bm_aligned_store_has_conflict_with(const struct bitmap* const bm,
- const Addr a1, const SizeT size)
-{
- const struct bitmap2* bm2;
-
- bm2 = bm2_lookup(bm, a1 >> ADDR0_BITS);
-
- if (bm2)
- {
- if (bm0_is_any_set(bm2->bm1.bm0_r, a1 & ADDR0_MASK, size)
- | bm0_is_any_set(bm2->bm1.bm0_w, a1 & ADDR0_MASK, size))
- {
- return True;
- }
- }
- return False;
-}
-
Bool bm_load_has_conflict_with(const struct bitmap* const bm,
const Addr a1, const Addr a2)
{
Modified: trunk/exp-drd/drd_bitmap.h
===================================================================
--- trunk/exp-drd/drd_bitmap.h 2008-06-07 11:40:14 UTC (rev 8200)
+++ trunk/exp-drd/drd_bitmap.h 2008-06-08 08:08:31 UTC (rev 8201)
@@ -28,6 +28,7 @@
#include "pub_tool_oset.h"
+#include "pub_tool_libcbase.h"
/*
@@ -485,5 +486,54 @@
return bm2;
}
+static __inline__
+void bm_access_aligned_load(struct bitmap* const bm,
+ const Addr a1, const SizeT size)
+{
+ struct bitmap2* bm2;
+ bm2 = bm2_lookup_or_insert_exclusive(bm, a1 >> ADDR0_BITS);
+ bm0_set_range(bm2->bm1.bm0_r, a1 & ADDR0_MASK, size);
+}
+
+static __inline__
+void bm_access_aligned_store(struct bitmap* const bm,
+ const Addr a1, const SizeT size)
+{
+ struct bitmap2* bm2;
+
+ bm2 = bm2_lookup_or_insert_exclusive(bm, a1 >> ADDR0_BITS);
+ bm0_set_range(bm2->bm1.bm0_w, a1 & ADDR0_MASK, size);
+}
+
+static __inline__
+Bool bm_aligned_load_has_conflict_with(const struct bitmap* const bm,
+ const Addr a1, const SizeT size)
+{
+ const struct bitmap2* bm2;
+
+ bm2 = bm2_lookup(bm, a1 >> ADDR0_BITS);
+
+ return (bm2 && bm0_is_any_set(bm2->bm1.bm0_w, a1 & ADDR0_MASK, size));
+}
+
+static __inline__
+Bool bm_aligned_store_has_conflict_with(const struct bitmap* const bm,
+ const Addr a1, const SizeT size)
+{
+ const struct bitmap2* bm2;
+
+ bm2 = bm2_lookup(bm, a1 >> ADDR0_BITS);
+
+ if (bm2)
+ {
+ if (bm0_is_any_set(bm2->bm1.bm0_r, a1 & ADDR0_MASK, size)
+ | bm0_is_any_set(bm2->bm1.bm0_w, a1 & ADDR0_MASK, size))
+ {
+ return True;
+ }
+ }
+ return False;
+}
+
#endif /* __DRD_BITMAP_H */
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-06-07 11:40:14 UTC (rev 8200)
+++ trunk/exp-drd/drd_main.c 2008-06-08 08:08:31 UTC (rev 8201)
@@ -35,6 +35,7 @@
#include "drd_semaphore.h"
#include "drd_suppression.h"
#include "drd_thread.h"
+#include "drd_thread_bitmap.h"
#include "drd_track.h"
#include "drd_vc.h"
#include "priv_drd_clientreq.h"
Modified: trunk/exp-drd/drd_thread.c
===================================================================
--- trunk/exp-drd/drd_thread.c 2008-06-07 11:40:14 UTC (rev 8200)
+++ trunk/exp-drd/drd_thread.c 2008-06-08 08:08:31 UTC (rev 8201)
@@ -733,136 +733,6 @@
s_danger_set_combine_vc_count++;
}
-__inline__
-Bool bm_access_load_1_triggers_conflict(const Addr a1)
-{
- bm_access_load_1(running_thread_get_segment()->bm, a1);
- return bm_load_1_has_conflict_with(thread_get_danger_set(), a1);
-}
-
-__inline__
-Bool bm_access_load_2_triggers_conflict(const Addr a1)
-{
- if ((a1 & 1) == 0)
- {
- bm_access_aligned_load(running_thread_get_segment()->bm, a1, 2);
- return bm_aligned_load_has_conflict_with(thread_get_danger_set(), a1, 2);
- }
- else
- {
- bm_access_range(running_thread_get_segment()->bm, a1, a1 + 2, eLoad);
- return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 2, eLoad);
- }
-}
-
-__inline__
-Bool bm_access_load_4_triggers_conflict(const Addr a1)
-{
- if ((a1 & 3) == 0)
- {
- bm_access_aligned_load(running_thread_get_segment()->bm, a1, 4);
- return bm_aligned_load_has_conflict_with(thread_get_danger_set(), a1, 4);
- }
- else
- {
- bm_access_range(running_thread_get_segment()->bm, a1, a1 + 4, eLoad);
- return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 4, eLoad);
- }
-}
-
-__inline__
-Bool bm_access_load_8_triggers_conflict(const Addr a1)
-{
- if ((a1 & 7) == 0)
- {
- bm_access_aligned_load(running_thread_get_segment()->bm, a1, 8);
- return bm_aligned_load_has_conflict_with(thread_get_danger_set(), a1, 8);
- }
- else if ((a1 & 3) == 0)
- {
- bm_access_aligned_load(running_thread_get_segment()->bm, a1 + 0, 4);
- bm_access_aligned_load(running_thread_get_segment()->bm, a1 + 4, 4);
- return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 8, eLoad);
- }
- else
- {
- bm_access_range(running_thread_get_segment()->bm, a1, a1 + 8, eLoad);
- return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 8, eLoad);
- }
-}
-
-__inline__
-Bool bm_access_load_triggers_conflict(const Addr a1, const Addr a2)
-{
- bm_access_range_load(running_thread_get_segment()->bm, a1, a2);
- return bm_load_has_conflict_with(thread_get_danger_set(), a1, a2);
-}
-
-__inline__
-Bool bm_access_store_1_triggers_conflict(const Addr a1)
-{
- bm_access_store_1(running_thread_get_segment()->bm, a1);
- return bm_store_1_has_conflict_with(thread_get_danger_set(), a1);
-}
-
-__inline__
-Bool bm_access_store_2_triggers_conflict(const Addr a1)
-{
- if ((a1 & 1) == 0)
- {
- bm_access_aligned_store(running_thread_get_segment()->bm, a1, 2);
- return bm_aligned_store_has_conflict_with(thread_get_danger_set(), a1, 2);
- }
- else
- {
- bm_access_range(running_thread_get_segment()->bm, a1, a1 + 2, eStore);
- return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 2, eStore);
- }
-}
-
-__inline__
-Bool bm_access_store_4_triggers_conflict(const Addr a1)
-{
- if ((a1 & 3) == 0)
- {
- bm_access_aligned_store(running_thread_get_segment()->bm, a1, 4);
- return bm_aligned_store_has_conflict_with(thread_get_danger_set(), a1, 4);
- }
- else
- {
- bm_access_range(running_thread_get_segment()->bm, a1, a1 + 4, eStore);
- return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 4, eStore);
- }
-}
-
-__inline__
-Bool bm_access_store_8_triggers_conflict(const Addr a1)
-{
- if ((a1 & 7) == 0)
- {
- bm_access_aligned_store(running_thread_get_segment()->bm, a1, 8);
- return bm_aligned_store_has_conflict_with(thread_get_danger_set(), a1, 8);
- }
- else if ((a1 & 3) == 0)
- {
- bm_access_aligned_store(running_thread_get_segment()->bm, a1 + 0, 4);
- bm_access_aligned_store(running_thread_get_segment()->bm, a1 + 4, 4);
- return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 8, eStore);
- }
- else
- {
- bm_access_range(running_thread_get_segment()->bm, a1, a1 + 8, eStore);
- return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 8, eStore);
- }
-}
-
-__inline__
-Bool bm_access_store_triggers_conflict(const Addr a1, const Addr a2)
-{
- bm_access_range_store(running_thread_get_segment()->bm, a1, a2);
- return bm_store_has_conflict_with(thread_get_danger_set(), a1, a2);
-}
-
/** Call this function whenever a thread is no longer using the memory
* [ a1, a2 [, e.g. because of a call to free() or a stack pointer
* increase.
Modified: trunk/exp-drd/drd_thread.h
===================================================================
--- trunk/exp-drd/drd_thread.h 2008-06-07 11:40:14 UTC (rev 8200)
+++ trunk/exp-drd/drd_thread.h 2008-06-08 08:08:31 UTC (rev 8201)
@@ -30,6 +30,7 @@
// Includes.
#include "drd_segment.h"
+#include "pub_drd_bitmap.h"
#include "pub_tool_libcassert.h" // tl_assert()
#include "pub_tool_stacktrace.h" // StackTrace
#include "pub_tool_threadstate.h" // VG_N_THREADS
@@ -122,17 +123,6 @@
void thread_combine_vc(const DrdThreadId joiner, const DrdThreadId joinee);
void thread_combine_vc2(const DrdThreadId tid, const VectorClock* const vc);
-Bool bm_access_load_1_triggers_conflict(const Addr a1);
-Bool bm_access_load_2_triggers_conflict(const Addr a1);
-Bool bm_access_load_4_triggers_conflict(const Addr a1);
-Bool bm_access_load_8_triggers_conflict(const Addr a1);
-Bool bm_access_load_triggers_conflict(const Addr a1, const Addr a2);
-Bool bm_access_store_1_triggers_conflict(const Addr a1);
-Bool bm_access_store_2_triggers_conflict(const Addr a1);
-Bool bm_access_store_4_triggers_conflict(const Addr a1);
-Bool bm_access_store_8_triggers_conflict(const Addr a1);
-Bool bm_access_store_triggers_conflict(const Addr a1, const Addr a2);
-
void thread_stop_using_mem(const Addr a1, const Addr a2);
void thread_start_recording(const DrdThreadId tid);
void thread_stop_recording(const DrdThreadId tid);
Added: trunk/exp-drd/drd_thread_bitmap.h
===================================================================
--- trunk/exp-drd/drd_thread_bitmap.h (rev 0)
+++ trunk/exp-drd/drd_thread_bitmap.h 2008-06-08 08:08:31 UTC (rev 8201)
@@ -0,0 +1,161 @@
+/*
+ This file is part of drd, a data race detector.
+
+ Copyright (C) 2006-2008 Bart Van Assche
+ bar...@gm...
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307, USA.
+
+ The GNU General Public License is contained in the file COPYING.
+*/
+
+
+#ifndef __DRD_THREAD_BITMAP_H
+#define __DRD_THREAD_BITMAP_H
+
+#include "drd_bitmap.h"
+
+static __inline__
+Bool bm_access_load_1_triggers_conflict(const Addr a1)
+{
+ bm_access_load_1(running_thread_get_segment()->bm, a1);
+ return bm_load_1_has_conflict_with(thread_get_danger_set(), a1);
+}
+
+static __inline__
+Bool bm_access_load_2_triggers_conflict(const Addr a1)
+{
+ if ((a1 & 1) == 0)
+ {
+ bm_access_aligned_load(running_thread_get_segment()->bm, a1, 2);
+ return bm_aligned_load_has_conflict_with(thread_get_danger_set(), a1, 2);
+ }
+ else
+ {
+ bm_access_range(running_thread_get_segment()->bm, a1, a1 + 2, eLoad);
+ return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 2, eLoad);
+ }
+}
+
+static __inline__
+Bool bm_access_load_4_triggers_conflict(const Addr a1)
+{
+ if ((a1 & 3) == 0)
+ {
+ bm_access_aligned_load(running_thread_get_segment()->bm, a1, 4);
+ return bm_aligned_load_has_conflict_with(thread_get_danger_set(), a1, 4);
+ }
+ else
+ {
+ bm_access_range(running_thread_get_segment()->bm, a1, a1 + 4, eLoad);
+ return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 4, eLoad);
+ }
+}
+
+static __inline__
+Bool bm_access_load_8_triggers_conflict(const Addr a1)
+{
+ if ((a1 & 7) == 0)
+ {
+ bm_access_aligned_load(running_thread_get_segment()->bm, a1, 8);
+ return bm_aligned_load_has_conflict_with(thread_get_danger_set(), a1, 8);
+ }
+ else if ((a1 & 3) == 0)
+ {
+ bm_access_aligned_load(running_thread_get_segment()->bm, a1 + 0, 4);
+ bm_access_aligned_load(running_thread_get_segment()->bm, a1 + 4, 4);
+ return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 8, eLoad);
+ }
+ else
+ {
+ bm_access_range(running_thread_get_segment()->bm, a1, a1 + 8, eLoad);
+ return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 8, eLoad);
+ }
+}
+
+static __inline__
+Bool bm_access_load_triggers_conflict(const Addr a1, const Addr a2)
+{
+ bm_access_range_load(running_thread_get_segment()->bm, a1, a2);
+ return bm_load_has_conflict_with(thread_get_danger_set(), a1, a2);
+}
+
+static __inline__
+Bool bm_access_store_1_triggers_conflict(const Addr a1)
+{
+ bm_access_store_1(running_thread_get_segment()->bm, a1);
+ return bm_store_1_has_conflict_with(thread_get_danger_set(), a1);
+}
+
+static __inline__
+Bool bm_access_store_2_triggers_conflict(const Addr a1)
+{
+ if ((a1 & 1) == 0)
+ {
+ bm_access_aligned_store(running_thread_get_segment()->bm, a1, 2);
+ return bm_aligned_store_has_conflict_with(thread_get_danger_set(), a1, 2);
+ }
+ else
+ {
+ bm_access_range(running_thread_get_segment()->bm, a1, a1 + 2, eStore);
+ return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 2, eStore);
+ }
+}
+
+static __inline__
+Bool bm_access_store_4_triggers_conflict(const Addr a1)
+{
+ if ((a1 & 3) == 0)
+ {
+ bm_access_aligned_store(running_thread_get_segment()->bm, a1, 4);
+ return bm_aligned_store_has_conflict_with(thread_get_danger_set(), a1, 4);
+ }
+ else
+ {
+ bm_access_range(running_thread_get_segment()->bm, a1, a1 + 4, eStore);
+ return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 4, eStore);
+ }
+}
+
+static __inline__
+Bool bm_access_store_8_triggers_conflict(const Addr a1)
+{
+ if ((a1 & 7) == 0)
+ {
+ bm_access_aligned_store(running_thread_get_segment()->bm, a1, 8);
+ return bm_aligned_store_has_conflict_with(thread_get_danger_set(), a1, 8);
+ }
+ else if ((a1 & 3) == 0)
+ {
+ bm_access_aligned_store(running_thread_get_segment()->bm, a1 + 0, 4);
+ bm_access_aligned_store(running_thread_get_segment()->bm, a1 + 4, 4);
+ return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 8, eStore);
+ }
+ else
+ {
+ bm_access_range(running_thread_get_segment()->bm, a1, a1 + 8, eStore);
+ return bm_has_conflict_with(thread_get_danger_set(), a1, a1 + 8, eStore);
+ }
+}
+
+static __inline__
+Bool bm_access_store_triggers_conflict(const Addr a1, const Addr a2)
+{
+ bm_access_range_store(running_thread_get_segment()->bm, a1, a2);
+ return bm_store_has_conflict_with(thread_get_danger_set(), a1, a2);
+}
+
+#endif // __DRD_THREAD_BITMAP_H
Modified: trunk/exp-drd/pub_drd_bitmap.h
===================================================================
--- trunk/exp-drd/pub_drd_bitmap.h 2008-06-07 11:40:14 UTC (rev 8200)
+++ trunk/exp-drd/pub_drd_bitmap.h 2008-06-08 08:08:31 UTC (rev 8201)
@@ -56,6 +56,9 @@
// Function declarations.
struct bitmap* bm_new(void);
void bm_delete(struct bitmap* const bm);
+void bm_access_range(struct bitmap* const bm,
+ const Addr a1, const Addr a2,
+ const BmAccessTypeT access_type);
void bm_access_range_load(struct bitmap* const bm,
const Addr a1, const Addr a2);
void bm_access_load_1(struct bitmap* const bm, const Addr a1);
|
|
From: Tom H. <th...@cy...> - 2008-06-08 02:59:16
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-06-08 03:20:10 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 437 tests, 6 stderr failures, 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/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 437 tests, 6 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/mremap2 (stdout) helgrind/tests/tc08_hbl2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Jun 8 03:39:47 2008 --- new.short Sun Jun 8 03:59:19 2008 *************** *** 8,10 **** ! == 437 tests, 6 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 437 tests, 6 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 14,16 **** none/tests/mremap2 (stdout) - helgrind/tests/tc08_hbl2 (stdout) helgrind/tests/tc20_verifywrap (stderr) --- 14,15 ---- |
|
From: Tom H. <th...@cy...> - 2008-06-08 02:45:50
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-06-08 03:05:04 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 431 tests, 4 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/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-06-08 02:41:53
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-06-08 03:25:03 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 435 tests, 6 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/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 == 435 tests, 7 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/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 Sun Jun 8 03:33:31 2008 --- new.short Sun Jun 8 03:42:00 2008 *************** *** 8,10 **** ! == 435 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 435 tests, 6 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 17,19 **** none/tests/mremap2 (stdout) - helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) --- 17,18 ---- |
|
From: Tom H. <th...@cy...> - 2008-06-08 02:41:44
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-06-08 03:10:07 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 == 431 tests, 7 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) none/tests/pth_cvsimple (stdout) helgrind/tests/tc18_semabuse (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 == 431 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (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 Sun Jun 8 03:27:54 2008 --- new.short Sun Jun 8 03:41:49 2008 *************** *** 8,10 **** ! == 431 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 431 tests, 7 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 14,15 **** --- 14,16 ---- none/tests/mremap2 (stdout) + none/tests/pth_cvsimple (stdout) helgrind/tests/tc18_semabuse (stderr) |
|
From: Tom H. <th...@cy...> - 2008-06-08 02:25:17
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-06-08 03:00:06 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 437 tests, 30 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: John R.
|
Hi, Some of the user code that I want to run under memcheck has compiler- generated out-of-line subroutines for strlen, strcat, etc. Memcheck complains because the code processes whole words at a time, and runs off the end of the defined region. The command line option --partial-loads-ok=yes acts as an automatic suppression mechanism for these complaints, but I'm looking for a way to avoid the overhead that remains. Unfortunately, symbols for these routines often are missing, so I cannot use an ordinary VG_REPLACE_FUNCTION so that the translator redirects automatically. At the first dynamic complaint from memcheck, I can identify quickly which subroutine is involved by looking at the original instruction stream in memory. Would it work to maybe_add_active() [coregrind/m_redir.c], flush appropriate translations, inhibit the message for the first error, and continue? -- |