You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
1
(21) |
|
2
(19) |
3
(33) |
4
(24) |
5
(18) |
6
(13) |
7
(22) |
8
(21) |
|
9
(38) |
10
(25) |
11
(20) |
12
(27) |
13
(43) |
14
(9) |
15
(19) |
|
16
(37) |
17
(19) |
18
(13) |
19
(11) |
20
(8) |
21
(11) |
22
(25) |
|
23
(21) |
24
(30) |
25
(18) |
26
(11) |
27
(10) |
28
(14) |
29
(40) |
|
30
(24) |
31
(14) |
|
|
|
|
|
|
From: <sv...@va...> - 2008-03-01 22:04:07
|
Author: sewardj
Date: 2008-03-01 22:04:10 +0000 (Sat, 01 Mar 2008)
New Revision: 7530
Log:
Update expected outputs for glibc23-amd64.
Added:
branches/DATASYMS/helgrind/tests/tc21_pthonce.stderr.exp-glibc23-amd64
Modified:
branches/DATASYMS/helgrind/tests/Makefile.am
branches/DATASYMS/helgrind/tests/tc20_verifywrap.stderr.exp-glibc23-amd64
Modified: branches/DATASYMS/helgrind/tests/Makefile.am
===================================================================
--- branches/DATASYMS/helgrind/tests/Makefile.am 2008-03-01 20:46:37 UTC (rev 7529)
+++ branches/DATASYMS/helgrind/tests/Makefile.am 2008-03-01 22:04:10 UTC (rev 7530)
@@ -74,6 +74,7 @@
tc20_verifywrap.stderr.exp-glibc25-amd64 \
tc20_verifywrap.stderr.exp-glibc25-x86 \
tc21_pthonce.vgtest tc21_pthonce.stdout.exp \
+ tc21_pthonce.stderr.exp-glibc23-amd64 \
tc21_pthonce.stderr.exp-glibc25-amd64 \
tc21_pthonce.stderr.exp-glibc25-x86 \
tc22_exit_w_lock.vgtest tc22_exit_w_lock.stdout.exp \
Modified: branches/DATASYMS/helgrind/tests/tc20_verifywrap.stderr.exp-glibc23-amd64
===================================================================
--- branches/DATASYMS/helgrind/tests/tc20_verifywrap.stderr.exp-glibc23-amd64 2008-03-01 20:46:37 UTC (rev 7529)
+++ branches/DATASYMS/helgrind/tests/tc20_verifywrap.stderr.exp-glibc23-amd64 2008-03-01 22:04:10 UTC (rev 7530)
@@ -19,6 +19,8 @@
Old state: owned exclusively by thread #2
New state: shared-modified by threads #1, #2
Reason: this thread, #1, holds no locks at all
+ Location 0x........ is 0 bytes inside global var "unprotected"
+ declared at tc20_verifywrap.c:27
Thread #1's call to pthread_join failed
with error code 35 (EDEADLK: Resource deadlock would occur)
Added: branches/DATASYMS/helgrind/tests/tc21_pthonce.stderr.exp-glibc23-amd64
===================================================================
--- branches/DATASYMS/helgrind/tests/tc21_pthonce.stderr.exp-glibc23-amd64 (rev 0)
+++ branches/DATASYMS/helgrind/tests/tc21_pthonce.stderr.exp-glibc23-amd64 2008-03-01 22:04:10 UTC (rev 7530)
@@ -0,0 +1,28 @@
+
+Thread #2 was created
+ at 0x........: clone (in /...libc...)
+ by 0x........: ...
+ by 0x........: pthread_create@GLIBC_ (in /lib/libpthread...)
+ by 0x........: pthread_create@* (hg_intercepts.c:...)
+ by 0x........: main (tc21_pthonce.c:86)
+
+Thread #3 was created
+ at 0x........: clone (in /...libc...)
+ by 0x........: ...
+ by 0x........: pthread_create@GLIBC_ (in /lib/libpthread...)
+ by 0x........: pthread_create@* (hg_intercepts.c:...)
+ by 0x........: main (tc21_pthonce.c:86)
+
+Possible data race during write of size 4 at 0x........
+ at 0x........: child (tc21_pthonce.c:74)
+ by 0x........: mythread_wrapper (hg_intercepts.c:...)
+ by 0x........: ...
+ by 0x........: ...
+ Old state: shared-readonly by threads #2, #3
+ New state: shared-modified by threads #2, #3
+ Reason: this thread, #3, holds no consistent locks
+ Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside local var "unprotected2"
+ declared at tc21_pthonce.c:51, in frame #0 of thread 3
+
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
|
|
From: <sv...@va...> - 2008-03-01 20:46:36
|
Author: sewardj
Date: 2008-03-01 20:46:37 +0000 (Sat, 01 Mar 2008)
New Revision: 7529
Log:
Update notes w.r.t. XML output.
Modified:
branches/DATASYMS/docs/internals/xml-output.txt
Modified: branches/DATASYMS/docs/internals/xml-output.txt
===================================================================
--- branches/DATASYMS/docs/internals/xml-output.txt 2008-03-01 20:26:09 UTC (rev 7528)
+++ branches/DATASYMS/docs/internals/xml-output.txt 2008-03-01 20:46:37 UTC (rev 7529)
@@ -106,10 +106,21 @@
PROTOCOL
</valgrindoutput>
-Valgrind versions 3.0.0 and 3.0.1 emit protocol version 1. Version
-3.1.0 emits protocol version 2.
+Valgrind versions 3.0.0 and 3.0.1 emit protocol version 1. Versions
+3.1.X and 3.2.X emit protocol version 2.
+PROTOCOL for version 3
+----------------------
+Changes in 3.3.X (tentative): (jrs, 1 March 2008)
+
+* There may be more than one <logfilequalifier> clause, depending on
+ how this pans out. (AshleyP perhaps to investigate)
+
+* Some errors may have two <auxwhat> blocks, rather than just one
+ (resulting from merge of the DATASYMS branch)
+
+
PROTOCOL for version 2
----------------------
Version 2 is identical in every way to version 1, except that the time
|
|
From: <sv...@va...> - 2008-03-01 20:26:23
|
Author: sewardj Date: 2008-03-01 20:26:09 +0000 (Sat, 01 Mar 2008) New Revision: 7528 Log: Sigh; clone the expected output for 32 vs 64-bit systems. Added: branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp-glibc25-amd64 branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp-glibc25-x86 Removed: branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp Modified: branches/DATASYMS/memcheck/tests/Makefile.am Modified: branches/DATASYMS/memcheck/tests/Makefile.am =================================================================== --- branches/DATASYMS/memcheck/tests/Makefile.am 2008-03-01 20:21:24 UTC (rev 7527) +++ branches/DATASYMS/memcheck/tests/Makefile.am 2008-03-01 20:26:09 UTC (rev 7528) @@ -135,7 +135,8 @@ varinfo3.vgtest varinfo3.stdout.exp varinfo3.stderr.exp \ varinfo4.vgtest varinfo4.stdout.exp varinfo4.stderr.exp \ varinfo5.vgtest varinfo5.stdout.exp varinfo5.stderr.exp \ - varinfo6.vgtest varinfo6.stdout.exp varinfo6.stderr.exp \ + varinfo6.vgtest varinfo6.stdout.exp \ + varinfo6.stderr.exp-glibc25-amd64 varinfo6.stderr.exp-glibc25-x86 \ vcpu_bz2.stdout.exp vcpu_bz2.stderr.exp vcpu_bz2.vgtest \ vcpu_fbench.stdout.exp vcpu_fbench.stderr.exp vcpu_fbench.vgtest \ vcpu_fnfns.stdout.exp vcpu_fnfns.stderr.exp vcpu_fnfns.vgtest \ Deleted: branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp =================================================================== --- branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp 2008-03-01 20:21:24 UTC (rev 7527) +++ branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp 2008-03-01 20:26:09 UTC (rev 7528) @@ -1,27 +0,0 @@ - -Uninitialised byte(s) found during client check request - at 0x........: croak (varinfo6.c:34) - by 0x........: mainSort (varinfo6.c:2999) - by 0x........: BZ2_blockSort (varinfo6.c:3143) - by 0x........: BZ2_compressBlock (varinfo6.c:4072) - by 0x........: handle_compress (varinfo6.c:4790) - by 0x........: BZ2_bzCompress (varinfo6.c:4860) - by 0x........: BZ2_bzBuffToBuffCompress (varinfo6.c:5667) - by 0x........: main (varinfo6.c:6517) - Location 0x........ is 2 bytes inside local var "budget" - declared at varinfo6.c:3115, in frame #2 of thread 1 - -Uninitialised byte(s) found during client check request - at 0x........: croak (varinfo6.c:34) - by 0x........: BZ2_decompress (varinfo6.c:1699) - by 0x........: BZ2_bzDecompress (varinfo6.c:5230) - by 0x........: BZ2_bzBuffToBuffDecompress (varinfo6.c:5715) - by 0x........: main (varinfo6.c:6532) - Location 0x........ is 2 bytes inside local var "i" - declared at varinfo6.c:1517, in frame #1 of thread 1 - -ERROR SUMMARY: 10216 errors from 2 contexts (suppressed: 0 from 0) -malloc/free: in use at exit: 0 bytes in 0 blocks. -malloc/free: 10,253 allocs, 10,253 frees, 24,368,716 bytes allocated. -For a detailed leak analysis, rerun with: --leak-check=yes -For counts of detected errors, rerun with: -v Copied: branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp-glibc25-amd64 (from rev 7526, branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp) =================================================================== --- branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp-glibc25-amd64 (rev 0) +++ branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp-glibc25-amd64 2008-03-01 20:26:09 UTC (rev 7528) @@ -0,0 +1,27 @@ + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo6.c:34) + by 0x........: mainSort (varinfo6.c:2999) + by 0x........: BZ2_blockSort (varinfo6.c:3143) + by 0x........: BZ2_compressBlock (varinfo6.c:4072) + by 0x........: handle_compress (varinfo6.c:4790) + by 0x........: BZ2_bzCompress (varinfo6.c:4860) + by 0x........: BZ2_bzBuffToBuffCompress (varinfo6.c:5667) + by 0x........: main (varinfo6.c:6517) + Location 0x........ is 2 bytes inside local var "budget" + declared at varinfo6.c:3115, in frame #2 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo6.c:34) + by 0x........: BZ2_decompress (varinfo6.c:1699) + by 0x........: BZ2_bzDecompress (varinfo6.c:5230) + by 0x........: BZ2_bzBuffToBuffDecompress (varinfo6.c:5715) + by 0x........: main (varinfo6.c:6532) + Location 0x........ is 2 bytes inside local var "i" + declared at varinfo6.c:1517, in frame #1 of thread 1 + +ERROR SUMMARY: 10216 errors from 2 contexts (suppressed: 0 from 0) +malloc/free: in use at exit: 0 bytes in 0 blocks. +malloc/free: 10,253 allocs, 10,253 frees, 24,368,716 bytes allocated. +For a detailed leak analysis, rerun with: --leak-check=yes +For counts of detected errors, rerun with: -v Added: branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp-glibc25-x86 =================================================================== --- branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp-glibc25-x86 (rev 0) +++ branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp-glibc25-x86 2008-03-01 20:26:09 UTC (rev 7528) @@ -0,0 +1,27 @@ + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo6.c:34) + by 0x........: mainSort (varinfo6.c:2999) + by 0x........: BZ2_blockSort (varinfo6.c:3143) + by 0x........: BZ2_compressBlock (varinfo6.c:4072) + by 0x........: handle_compress (varinfo6.c:4790) + by 0x........: BZ2_bzCompress (varinfo6.c:4860) + by 0x........: BZ2_bzBuffToBuffCompress (varinfo6.c:5667) + by 0x........: main (varinfo6.c:6517) + Location 0x........ is 2 bytes inside local var "budget" + declared at varinfo6.c:3115, in frame #2 of thread 1 + +Uninitialised byte(s) found during client check request + at 0x........: croak (varinfo6.c:34) + by 0x........: BZ2_decompress (varinfo6.c:1699) + by 0x........: BZ2_bzDecompress (varinfo6.c:5230) + by 0x........: BZ2_bzBuffToBuffDecompress (varinfo6.c:5715) + by 0x........: main (varinfo6.c:6532) + Location 0x........ is 2 bytes inside local var "i" + declared at varinfo6.c:1517, in frame #1 of thread 1 + +ERROR SUMMARY: 10216 errors from 2 contexts (suppressed: 0 from 0) +malloc/free: in use at exit: 0 bytes in 0 blocks. +malloc/free: 10,253 allocs, 10,253 frees, 24,368,200 bytes allocated. +For a detailed leak analysis, rerun with: --leak-check=yes +For counts of detected errors, rerun with: -v |
|
From: <sv...@va...> - 2008-03-01 20:21:25
|
Author: sewardj
Date: 2008-03-01 20:21:24 +0000 (Sat, 01 Mar 2008)
New Revision: 7527
Log:
Counterpart to r7526: Update expected outputs for glibc25-x86,
resulting from use of Dwarf3 variable information.
Modified:
branches/DATASYMS/helgrind/tests/hg03_inherit.stderr.exp-glibc25-x86
branches/DATASYMS/helgrind/tests/hg04_race.stderr.exp-glibc25-x86
branches/DATASYMS/helgrind/tests/hg05_race2.stderr.exp-glibc25-x86
branches/DATASYMS/helgrind/tests/tc01_simple_race.stderr.exp-glibc25-x86
branches/DATASYMS/helgrind/tests/tc05_simple_race.stderr.exp-glibc25-x86
branches/DATASYMS/helgrind/tests/tc06_two_races.stderr.exp-glibc25-x86
branches/DATASYMS/helgrind/tests/tc16_byterace.stderr.exp-glibc25-x86
branches/DATASYMS/helgrind/tests/tc17_sembar.stderr.exp-glibc25-x86
branches/DATASYMS/helgrind/tests/tc20_verifywrap.stderr.exp-glibc25-x86
branches/DATASYMS/helgrind/tests/tc21_pthonce.stderr.exp-glibc25-x86
Modified: branches/DATASYMS/helgrind/tests/hg03_inherit.stderr.exp-glibc25-x86
===================================================================
--- branches/DATASYMS/helgrind/tests/hg03_inherit.stderr.exp-glibc25-x86 2008-03-01 17:40:25 UTC (rev 7526)
+++ branches/DATASYMS/helgrind/tests/hg03_inherit.stderr.exp-glibc25-x86 2008-03-01 20:21:24 UTC (rev 7527)
@@ -16,5 +16,7 @@
New state: shared-modified by threads #1, #3
Reason: this thread, #3, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside shared[1],
+ declared at hg03_inherit.c:11, in frame #0 of thread 3
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/hg04_race.stderr.exp-glibc25-x86
===================================================================
--- branches/DATASYMS/helgrind/tests/hg04_race.stderr.exp-glibc25-x86 2008-03-01 17:40:25 UTC (rev 7526)
+++ branches/DATASYMS/helgrind/tests/hg04_race.stderr.exp-glibc25-x86 2008-03-01 20:21:24 UTC (rev 7527)
@@ -20,5 +20,7 @@
New state: shared-modified by threads #2, #3
Reason: this thread, #3, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside local var "shared"
+ declared at hg04_race.c:6, in frame #0 of thread 2
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/hg05_race2.stderr.exp-glibc25-x86
===================================================================
--- branches/DATASYMS/helgrind/tests/hg05_race2.stderr.exp-glibc25-x86 2008-03-01 17:40:25 UTC (rev 7526)
+++ branches/DATASYMS/helgrind/tests/hg05_race2.stderr.exp-glibc25-x86 2008-03-01 20:21:24 UTC (rev 7527)
@@ -20,5 +20,7 @@
New state: shared-modified by threads #2, #3
Reason: this thread, #3, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside foo.poot[5].plop[11],
+ declared at hg05_race2.c:24, in frame #3 of thread 1
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/tc01_simple_race.stderr.exp-glibc25-x86
===================================================================
--- branches/DATASYMS/helgrind/tests/tc01_simple_race.stderr.exp-glibc25-x86 2008-03-01 17:40:25 UTC (rev 7526)
+++ branches/DATASYMS/helgrind/tests/tc01_simple_race.stderr.exp-glibc25-x86 2008-03-01 20:21:24 UTC (rev 7527)
@@ -13,5 +13,7 @@
New state: shared-modified by threads #1, #2
Reason: this thread, #1, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside global var "x"
+ declared at tc01_simple_race.c:9
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/tc05_simple_race.stderr.exp-glibc25-x86
===================================================================
--- branches/DATASYMS/helgrind/tests/tc05_simple_race.stderr.exp-glibc25-x86 2008-03-01 17:40:25 UTC (rev 7526)
+++ branches/DATASYMS/helgrind/tests/tc05_simple_race.stderr.exp-glibc25-x86 2008-03-01 20:21:24 UTC (rev 7527)
@@ -13,5 +13,7 @@
New state: shared-modified by threads #1, #2
Reason: this thread, #1, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside global var "y"
+ declared at tc05_simple_race.c:10
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/tc06_two_races.stderr.exp-glibc25-x86
===================================================================
--- branches/DATASYMS/helgrind/tests/tc06_two_races.stderr.exp-glibc25-x86 2008-03-01 17:40:25 UTC (rev 7526)
+++ branches/DATASYMS/helgrind/tests/tc06_two_races.stderr.exp-glibc25-x86 2008-03-01 20:21:24 UTC (rev 7527)
@@ -13,6 +13,8 @@
New state: shared-modified by threads #1, #2
Reason: this thread, #1, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside global var "unprot1"
+ declared at tc06_two_races.c:9
Possible data race during write of size 4 at 0x........
at 0x........: main (tc06_two_races.c:35)
@@ -20,5 +22,7 @@
New state: shared-modified by threads #1, #2
Reason: this thread, #1, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside global var "unprot2"
+ declared at tc06_two_races.c:9
ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/tc16_byterace.stderr.exp-glibc25-x86
===================================================================
--- branches/DATASYMS/helgrind/tests/tc16_byterace.stderr.exp-glibc25-x86 2008-03-01 17:40:25 UTC (rev 7526)
+++ branches/DATASYMS/helgrind/tests/tc16_byterace.stderr.exp-glibc25-x86 2008-03-01 20:21:24 UTC (rev 7527)
@@ -13,5 +13,7 @@
New state: shared-modified by threads #1, #2
Reason: this thread, #1, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside bytes[4],
+ a global variable declared at tc16_byterace.c:7
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/tc17_sembar.stderr.exp-glibc25-x86
===================================================================
--- branches/DATASYMS/helgrind/tests/tc17_sembar.stderr.exp-glibc25-x86 2008-03-01 17:40:25 UTC (rev 7526)
+++ branches/DATASYMS/helgrind/tests/tc17_sembar.stderr.exp-glibc25-x86 2008-03-01 20:21:24 UTC (rev 7527)
@@ -37,6 +37,8 @@
at 0x........: pthread_mutex_init (hg_intercepts.c:...)
by 0x........: gomp_barrier_init (tc17_sembar.c:46)
by 0x........: main (tc17_sembar.c:192)
+ Location 0x........ is 0 bytes inside bar.arrived,
+ declared at tc17_sembar.c:136, in frame #0 of thread 2
done, result is 88, should be 88
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/tc20_verifywrap.stderr.exp-glibc25-x86
===================================================================
--- branches/DATASYMS/helgrind/tests/tc20_verifywrap.stderr.exp-glibc25-x86 2008-03-01 17:40:25 UTC (rev 7526)
+++ branches/DATASYMS/helgrind/tests/tc20_verifywrap.stderr.exp-glibc25-x86 2008-03-01 20:21:24 UTC (rev 7527)
@@ -18,6 +18,8 @@
Old state: owned exclusively by thread #2
New state: shared-modified by threads #1, #2
Reason: this thread, #1, holds no locks at all
+ Location 0x........ is 0 bytes inside global var "unprotected"
+ declared at tc20_verifywrap.c:27
Thread #1's call to pthread_join failed
with error code 35 (EDEADLK: Resource deadlock would occur)
Modified: branches/DATASYMS/helgrind/tests/tc21_pthonce.stderr.exp-glibc25-x86
===================================================================
--- branches/DATASYMS/helgrind/tests/tc21_pthonce.stderr.exp-glibc25-x86 2008-03-01 17:40:25 UTC (rev 7526)
+++ branches/DATASYMS/helgrind/tests/tc21_pthonce.stderr.exp-glibc25-x86 2008-03-01 20:21:24 UTC (rev 7527)
@@ -20,5 +20,7 @@
New state: shared-modified by threads #2, #3
Reason: this thread, #3, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside local var "unprotected2"
+ declared at tc21_pthonce.c:51, in frame #0 of thread 2
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
|
|
From: Julian S. <js...@ac...> - 2008-03-01 20:19:10
|
On Friday 29 February 2008 16:54, Ashley Pittman wrote:
> I've been looking at my output aggregation tool again this week and have
> spotted a problem with the new output qualifier, in the old system with
> the --log-file-qualifier option the name and value of the variable are
You're absolutely right. Sorry for the breakage.
I guess one way to fix it would be to scan the --log-file string
(which should be pointed to by VG_(clo_log_name)).
When you see ${FOO} in the string, emit
<logfilequalifier> <var>FOO</var> <value>$FOO</value>
</logfilequalifier>
where obviously $FOO denotes the value of FOO at the time you
process the string.
You can find some code used to deal with ${FOO} in VG_(expand_file_name).
Perhaps that could be factored into a function used by both the
current log-file-name handling, and the logfilequalifier stuff.
J
|
|
From: <sv...@va...> - 2008-03-01 17:40:22
|
Author: sewardj
Date: 2008-03-01 17:40:25 +0000 (Sat, 01 Mar 2008)
New Revision: 7526
Log:
Update expected outputs for glibc25-amd64, resulting from use of
Dwarf3 variable information.
Modified:
branches/DATASYMS/helgrind/tests/hg03_inherit.stderr.exp-glibc25-amd64
branches/DATASYMS/helgrind/tests/hg04_race.stderr.exp-glibc25-amd64
branches/DATASYMS/helgrind/tests/hg05_race2.stderr.exp-glibc25-amd64
branches/DATASYMS/helgrind/tests/tc01_simple_race.stderr.exp-glibc25-amd64
branches/DATASYMS/helgrind/tests/tc05_simple_race.stderr.exp-glibc25-amd64
branches/DATASYMS/helgrind/tests/tc06_two_races.stderr.exp-glibc25-amd64
branches/DATASYMS/helgrind/tests/tc16_byterace.stderr.exp-glibc25-amd64
branches/DATASYMS/helgrind/tests/tc17_sembar.stderr.exp-glibc25-amd64
branches/DATASYMS/helgrind/tests/tc20_verifywrap.stderr.exp-glibc25-amd64
branches/DATASYMS/helgrind/tests/tc21_pthonce.stderr.exp-glibc25-amd64
Modified: branches/DATASYMS/helgrind/tests/hg03_inherit.stderr.exp-glibc25-amd64
===================================================================
--- branches/DATASYMS/helgrind/tests/hg03_inherit.stderr.exp-glibc25-amd64 2008-03-01 15:34:25 UTC (rev 7525)
+++ branches/DATASYMS/helgrind/tests/hg03_inherit.stderr.exp-glibc25-amd64 2008-03-01 17:40:25 UTC (rev 7526)
@@ -17,5 +17,7 @@
New state: shared-modified by threads #1, #3
Reason: this thread, #3, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside shared[1],
+ declared at hg03_inherit.c:11, in frame #0 of thread 3
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/hg04_race.stderr.exp-glibc25-amd64
===================================================================
--- branches/DATASYMS/helgrind/tests/hg04_race.stderr.exp-glibc25-amd64 2008-03-01 15:34:25 UTC (rev 7525)
+++ branches/DATASYMS/helgrind/tests/hg04_race.stderr.exp-glibc25-amd64 2008-03-01 17:40:25 UTC (rev 7526)
@@ -22,5 +22,7 @@
New state: shared-modified by threads #2, #3
Reason: this thread, #3, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside local var "shared"
+ declared at hg04_race.c:6, in frame #0 of thread 2
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/hg05_race2.stderr.exp-glibc25-amd64
===================================================================
--- branches/DATASYMS/helgrind/tests/hg05_race2.stderr.exp-glibc25-amd64 2008-03-01 15:34:25 UTC (rev 7525)
+++ branches/DATASYMS/helgrind/tests/hg05_race2.stderr.exp-glibc25-amd64 2008-03-01 17:40:25 UTC (rev 7526)
@@ -22,5 +22,7 @@
New state: shared-modified by threads #2, #3
Reason: this thread, #3, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside foo.poot[5].plop[11],
+ declared at hg05_race2.c:24, in frame #4 of thread 1
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/tc01_simple_race.stderr.exp-glibc25-amd64
===================================================================
--- branches/DATASYMS/helgrind/tests/tc01_simple_race.stderr.exp-glibc25-amd64 2008-03-01 15:34:25 UTC (rev 7525)
+++ branches/DATASYMS/helgrind/tests/tc01_simple_race.stderr.exp-glibc25-amd64 2008-03-01 17:40:25 UTC (rev 7526)
@@ -14,5 +14,7 @@
New state: shared-modified by threads #1, #2
Reason: this thread, #1, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside global var "x"
+ declared at tc01_simple_race.c:9
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/tc05_simple_race.stderr.exp-glibc25-amd64
===================================================================
--- branches/DATASYMS/helgrind/tests/tc05_simple_race.stderr.exp-glibc25-amd64 2008-03-01 15:34:25 UTC (rev 7525)
+++ branches/DATASYMS/helgrind/tests/tc05_simple_race.stderr.exp-glibc25-amd64 2008-03-01 17:40:25 UTC (rev 7526)
@@ -14,5 +14,7 @@
New state: shared-modified by threads #1, #2
Reason: this thread, #1, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside global var "y"
+ declared at tc05_simple_race.c:10
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/tc06_two_races.stderr.exp-glibc25-amd64
===================================================================
--- branches/DATASYMS/helgrind/tests/tc06_two_races.stderr.exp-glibc25-amd64 2008-03-01 15:34:25 UTC (rev 7525)
+++ branches/DATASYMS/helgrind/tests/tc06_two_races.stderr.exp-glibc25-amd64 2008-03-01 17:40:25 UTC (rev 7526)
@@ -14,6 +14,8 @@
New state: shared-modified by threads #1, #2
Reason: this thread, #1, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside global var "unprot1"
+ declared at tc06_two_races.c:9
Possible data race during write of size 4 at 0x........
at 0x........: main (tc06_two_races.c:35)
@@ -21,5 +23,7 @@
New state: shared-modified by threads #1, #2
Reason: this thread, #1, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside global var "unprot2"
+ declared at tc06_two_races.c:9
ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/tc16_byterace.stderr.exp-glibc25-amd64
===================================================================
--- branches/DATASYMS/helgrind/tests/tc16_byterace.stderr.exp-glibc25-amd64 2008-03-01 15:34:25 UTC (rev 7525)
+++ branches/DATASYMS/helgrind/tests/tc16_byterace.stderr.exp-glibc25-amd64 2008-03-01 17:40:25 UTC (rev 7526)
@@ -14,5 +14,7 @@
New state: shared-modified by threads #1, #2
Reason: this thread, #1, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside bytes[4],
+ a global variable declared at tc16_byterace.c:7
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/tc17_sembar.stderr.exp-glibc25-amd64
===================================================================
--- branches/DATASYMS/helgrind/tests/tc17_sembar.stderr.exp-glibc25-amd64 2008-03-01 15:34:25 UTC (rev 7525)
+++ branches/DATASYMS/helgrind/tests/tc17_sembar.stderr.exp-glibc25-amd64 2008-03-01 17:40:25 UTC (rev 7526)
@@ -41,6 +41,8 @@
at 0x........: pthread_mutex_init (hg_intercepts.c:...)
by 0x........: gomp_barrier_init (tc17_sembar.c:46)
by 0x........: main (tc17_sembar.c:192)
+ Location 0x........ is 0 bytes inside bar.arrived,
+ declared at tc17_sembar.c:136, in frame #0 of thread 2
done, result is 88, should be 88
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: branches/DATASYMS/helgrind/tests/tc20_verifywrap.stderr.exp-glibc25-amd64
===================================================================
--- branches/DATASYMS/helgrind/tests/tc20_verifywrap.stderr.exp-glibc25-amd64 2008-03-01 15:34:25 UTC (rev 7525)
+++ branches/DATASYMS/helgrind/tests/tc20_verifywrap.stderr.exp-glibc25-amd64 2008-03-01 17:40:25 UTC (rev 7526)
@@ -19,6 +19,8 @@
Old state: owned exclusively by thread #2
New state: shared-modified by threads #1, #2
Reason: this thread, #1, holds no locks at all
+ Location 0x........ is 0 bytes inside global var "unprotected"
+ declared at tc20_verifywrap.c:27
Thread #1's call to pthread_join failed
with error code 35 (EDEADLK: Resource deadlock would occur)
Modified: branches/DATASYMS/helgrind/tests/tc21_pthonce.stderr.exp-glibc25-amd64
===================================================================
--- branches/DATASYMS/helgrind/tests/tc21_pthonce.stderr.exp-glibc25-amd64 2008-03-01 15:34:25 UTC (rev 7525)
+++ branches/DATASYMS/helgrind/tests/tc21_pthonce.stderr.exp-glibc25-amd64 2008-03-01 17:40:25 UTC (rev 7526)
@@ -22,5 +22,7 @@
New state: shared-modified by threads #2, #3
Reason: this thread, #3, holds no consistent locks
Location 0x........ has never been protected by any lock
+ Location 0x........ is 0 bytes inside local var "unprotected2"
+ declared at tc21_pthonce.c:51, in frame #0 of thread 2
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
|
|
From: <sv...@va...> - 2008-03-01 15:34:20
|
Author: bart
Date: 2008-03-01 15:34:25 +0000 (Sat, 01 Mar 2008)
New Revision: 7525
Log:
Updated alternative expected output files.
Modified:
trunk/exp-drd/tests/tc20_verifywrap.stderr.exp
trunk/exp-drd/tests/tc20_verifywrap2.stderr.exp
Modified: trunk/exp-drd/tests/tc20_verifywrap.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap.stderr.exp 2008-03-01 15:27:41 UTC (rev 7524)
+++ trunk/exp-drd/tests/tc20_verifywrap.stderr.exp 2008-03-01 15:34:25 UTC (rev 7525)
@@ -16,6 +16,10 @@
---------------- pthread_mutex_lock et al ----------------
+Invalid mutex
+ at 0x........: pthread_mutex_init (drd_intercepts.c:?)
+ by 0x........: main (tc20_verifywrap.c:92)
+
Destroying locked mutex: address 0x........, recursion count 1, owner 1.
at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:102)
@@ -36,10 +40,6 @@
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:125)
-Mutex not locked: address 0x........, recursion count 0, owner 0.
- at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
- by 0x........: main (tc20_verifywrap.c:125)
-
---------------- pthread_cond_wait et al ----------------
Modified: trunk/exp-drd/tests/tc20_verifywrap2.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap2.stderr.exp 2008-03-01 15:27:41 UTC (rev 7524)
+++ trunk/exp-drd/tests/tc20_verifywrap2.stderr.exp 2008-03-01 15:34:25 UTC (rev 7525)
@@ -16,39 +16,41 @@
---------------- pthread_mutex_lock et al ----------------
[1/1] mutex_init invalid mutex 0x........
+
+Invalid mutex
+ at 0x........: pthread_mutex_init (drd_intercepts.c:?)
+ by 0x........: main (tc20_verifywrap.c:92)
[1/1] mutex_init mutex 0x........
+[1/1] pre_mutex_lock mutex 0x........ rc 0 owner 0
[1/1] post_mutex_lock mutex 0x........ rc 0 owner 0
[1/1] mutex_destroy mutex 0x........
Destroying locked mutex: address 0x........, recursion count 1, owner 1.
at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:102)
-[1/1] mutex_init invalid mutex 0x........
-[1/1] post_mutex_lock invalid mutex 0x........ rc 0 owner 0
+[1/1] pre_mutex_lock (?) 0x........ rc 0 owner 0
Invalid mutex
at 0x........: pthread_mutex_lock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:108)
-[1/1] post_mutex_lock invalid mutex 0x........ rc 0 owner 0
+[1/1] post_mutex_lock (?) 0x........ rc 0 owner 0
+[1/1] pre_mutex_lock (?) 0x........ rc 0 owner 0
Invalid mutex
at 0x........: pthread_mutex_trylock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:116)
-[1/1] post_mutex_lock invalid mutex 0x........ rc 0 owner 0
+[1/1] post_mutex_lock (?) 0x........ rc 0 owner 0
+[1/1] pre_mutex_lock (?) 0x........ rc 0 owner 0
Invalid mutex
at 0x........: pthread_mutex_timedlock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:121)
-[1/1] mutex_unlock invalid mutex 0x........ rc 0
+[1/1] post_mutex_lock (?) 0x........ rc 0 owner 0
Invalid mutex
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:125)
-Mutex not locked: address 0x........, recursion count 0, owner 0.
- at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
- by 0x........: main (tc20_verifywrap.c:125)
-
---------------- pthread_cond_wait et al ----------------
[1/1] mutex_init error checking mutex 0x........
@@ -110,39 +112,53 @@
------------ dealloc of mem holding locks ------------
[1/1] mutex_destroy error checking mutex 0x........
-[1/1] mutex_destroy invalid mutex 0x........
-[1/1] mutex_destroy invalid mutex 0x........
+[1/1] pre_mutex_lock (?) 0x........ rc 0 owner 0
[1/1] mutex_init recursive mutex 0x........
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 0
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
|
|
From: <sv...@va...> - 2008-03-01 15:27:38
|
Author: bart
Date: 2008-03-01 15:27:41 +0000 (Sat, 01 Mar 2008)
New Revision: 7524
Log:
Converted double mutex error messages into single error messages.
Modified:
trunk/exp-drd/drd_clientreq.c
trunk/exp-drd/drd_clientreq.h
trunk/exp-drd/drd_cond.c
trunk/exp-drd/drd_intercepts.c
trunk/exp-drd/drd_main.c
trunk/exp-drd/drd_mutex.c
trunk/exp-drd/drd_mutex.h
trunk/exp-drd/drd_track.h
trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp
trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2
trunk/exp-drd/tests/tc20_verifywrap2.stderr.exp2
trunk/exp-drd/tests/tc23_bogus_condwait.stderr.exp
Modified: trunk/exp-drd/drd_clientreq.c
===================================================================
--- trunk/exp-drd/drd_clientreq.c 2008-03-01 13:55:33 UTC (rev 7523)
+++ trunk/exp-drd/drd_clientreq.c 2008-03-01 15:27:41 UTC (rev 7524)
@@ -60,12 +60,12 @@
cond_pre_wait(cond, cond_size, mutex);
}
-static void drd_post_cond_wait(const Addr cond, const Addr mutex,
- const SizeT size, const MutexT mutex_type,
+static void drd_post_cond_wait(const Addr cond,
+ const Addr mutex,
const Bool took_lock)
{
cond_post_wait(cond);
- mutex_post_lock(mutex, size, mutex_type, took_lock);
+ mutex_post_lock(mutex, took_lock);
}
static void drd_pre_cond_signal(const Addr cond)
@@ -133,16 +133,15 @@
break;
case VG_USERREQ__PRE_PTHREAD_MUTEX_LOCK:
- drd_pre_mutex_lock(thread_get_running_tid(), arg[1], arg[2], arg[3]);
+ drd_pre_mutex_lock(arg[1], arg[2], arg[3]);
break;
case VG_USERREQ__POST_PTHREAD_MUTEX_LOCK:
- drd_post_mutex_lock(thread_get_running_tid(),
- arg[1], arg[2], arg[3], arg[4]);
+ drd_post_mutex_lock(arg[1], arg[2]);
break;
case VG_USERREQ__PRE_PTHREAD_MUTEX_UNLOCK:
- drd_pre_mutex_unlock(thread_get_running_tid(), arg[1], arg[3]);
+ drd_pre_mutex_unlock(arg[1], arg[3]);
break;
case VG_USERREQ__SPIN_INIT_OR_UNLOCK:
@@ -163,9 +162,7 @@
break;
case VG_USERREQ__POST_PTHREAD_COND_WAIT:
- drd_post_cond_wait(arg[1]/*cond*/, arg[2]/*mutex*/,
- arg[3]/*mutex_size*/, arg[4]/*mutex_type*/,
- arg[5]/*took_lock*/);
+ drd_post_cond_wait(arg[1]/*cond*/, arg[2]/*mutex*/, arg[3]/*took_lock*/);
break;
case VG_USERREQ__PRE_PTHREAD_COND_SIGNAL:
@@ -216,6 +213,27 @@
drd_barrier_post_wait(thread_get_running_tid(), arg[1], arg[2]);
break;
+ case VG_USERREQ__PRE_RWLOCK_INIT:
+ break;
+
+ case VG_USERREQ__POST_RWLOCK_DESTROY:
+ break;
+
+ case VG_USERREQ__PRE_RWLOCK_RDLOCK:
+ break;
+
+ case VG_USERREQ__POST_RWLOCK_RDLOCK:
+ break;
+
+ case VG_USERREQ__PRE_RWLOCK_WRLOCK:
+ break;
+
+ case VG_USERREQ__POST_RWLOCK_WRLOCK:
+ break;
+
+ case VG_USERREQ__POST_RWLOCK_UNLOCK:
+ break;
+
default:
VG_(message)(Vg_DebugMsg, "Unrecognized client request 0x%lx 0x%lx",
arg[0], arg[1]);
Modified: trunk/exp-drd/drd_clientreq.h
===================================================================
--- trunk/exp-drd/drd_clientreq.h 2008-03-01 13:55:33 UTC (rev 7523)
+++ trunk/exp-drd/drd_clientreq.h 2008-03-01 15:27:41 UTC (rev 7524)
@@ -54,7 +54,7 @@
/* args: Addr, SizeT, MutexT */
/* to notify the drd tool of pthread_mutex_lock calls */
VG_USERREQ__POST_PTHREAD_MUTEX_LOCK,
- /* args: Addr, SizeT, MutexT, Bool */
+ /* args: Addr, Bool */
/* to notify the drd tool of pthread_mutex_unlock calls */
VG_USERREQ__PRE_PTHREAD_MUTEX_UNLOCK,
/* args: Addr */
@@ -71,7 +71,7 @@
VG_USERREQ__PRE_PTHREAD_COND_WAIT,
/* args: Addr cond, SizeT cond_size, Addr mutex, MutexT mt */
VG_USERREQ__POST_PTHREAD_COND_WAIT,
- /* args: Addr cond, Addr mutex, SizeT mutex_size, MutexT mt, Bool took_lock*/
+ /* args: Addr cond, Addr mutex, Bool took_lock*/
VG_USERREQ__PRE_PTHREAD_COND_SIGNAL,
/* args: Addr cond */
VG_USERREQ__PRE_PTHREAD_COND_BROADCAST,
@@ -109,6 +109,28 @@
VG_USERREQ__POST_BARRIER_WAIT,
/* args: Addr barrier, Word has_waited */
+ /* To notify the drd tool of a pthread_rwlock_init call. */
+ VG_USERREQ__PRE_RWLOCK_INIT,
+ /* args: Addr rwlock, SizeT size */
+ /* To notify the drd tool of a pthread_rwlock_destroy call. */
+ VG_USERREQ__POST_RWLOCK_DESTROY,
+ /* args: Addr rwlock, SizeT size */
+ /* To notify the drd tool of a pthread_rwlock_rdlock call. */
+ VG_USERREQ__PRE_RWLOCK_RDLOCK,
+ /* args: Addr rwlock, SizeT size */
+ /* To notify the drd tool of a pthread_rwlock_rdlock call. */
+ VG_USERREQ__POST_RWLOCK_RDLOCK,
+ /* args: Addr rwlock, Bool took_lock */
+ /* To notify the drd tool of a pthread_rwlock_wrlock call. */
+ VG_USERREQ__PRE_RWLOCK_WRLOCK,
+ /* args: Addr rwlock, SizeT size */
+ /* To notify the drd tool of a pthread_rwlock_wrlock call. */
+ VG_USERREQ__POST_RWLOCK_WRLOCK,
+ /* args: Addr rwlock, Bool took_lock */
+ /* To notify the drd tool of a pthread_rwlock_unlock call. */
+ VG_USERREQ__POST_RWLOCK_UNLOCK,
+ /* args: Addr rwlock, Bool unlocked */
+
};
typedef enum
Modified: trunk/exp-drd/drd_cond.c
===================================================================
--- trunk/exp-drd/drd_cond.c 2008-03-01 13:55:33 UTC (rev 7523)
+++ trunk/exp-drd/drd_cond.c 2008-03-01 15:27:41 UTC (rev 7524)
@@ -228,7 +228,9 @@
}
p = cond_get(cond);
+ // To do: print a proper error message if the assert below fails.
tl_assert(p);
+ // To do: print a proper error message if the assert below fails.
tl_assert(p->waiter_count > 0);
tl_assert(p->mutex);
if (--p->waiter_count == 0)
Modified: trunk/exp-drd/drd_intercepts.c
===================================================================
--- trunk/exp-drd/drd_intercepts.c 2008-03-01 13:55:33 UTC (rev 7523)
+++ trunk/exp-drd/drd_intercepts.c 2008-03-01 15:27:41 UTC (rev 7524)
@@ -335,8 +335,7 @@
#endif
CALL_FN_W_W(ret, fn, mutex);
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__POST_PTHREAD_MUTEX_LOCK,
- mutex, sizeof(*mutex), mutex_type(mutex),
- ret == 0, 0);
+ mutex, ret == 0, 0, 0, 0);
return ret;
}
@@ -348,10 +347,11 @@
int res;
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
+ VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_PTHREAD_MUTEX_LOCK,
+ mutex, sizeof(*mutex), mutex_type(mutex), 0, 0);
CALL_FN_W_W(ret, fn, mutex);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_MUTEX_LOCK,
- mutex, sizeof(*mutex), mutex_type(mutex),
- ret == 0, 0);
+ mutex, ret == 0, 0, 0, 0);
return ret;
}
@@ -364,10 +364,11 @@
int res;
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
+ VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_PTHREAD_MUTEX_LOCK,
+ mutex, sizeof(*mutex), mutex_type(mutex), 0, 0);
CALL_FN_W_WW(ret, fn, mutex, abs_timeout);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_MUTEX_LOCK,
- mutex, sizeof(*mutex), mutex_type(mutex),
- ret == 0, 0);
+ mutex, ret == 0, 0, 0, 0);
return ret;
}
@@ -429,8 +430,7 @@
0);
CALL_FN_W_WW(ret, fn, cond, mutex);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_COND_WAIT,
- cond, mutex, sizeof(*mutex), mutex_type(mutex),
- ret == 0);
+ cond, mutex, ret == 0, 0, 0);
return ret;
}
@@ -449,8 +449,7 @@
0);
CALL_FN_W_WWW(ret, fn, cond, mutex, abstime);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_COND_WAIT,
- cond, mutex, sizeof(*mutex), mutex_type(mutex),
- ret == 0);
+ cond, mutex, ret == 0, 0, 0);
return ret;
}
@@ -521,10 +520,12 @@
int res;
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
+ VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_PTHREAD_MUTEX_LOCK,
+ spinlock, sizeof(*spinlock), mutex_type_spinlock,
+ 0, 0);
CALL_FN_W_W(ret, fn, spinlock);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_MUTEX_LOCK,
- spinlock, sizeof(*spinlock),
- mutex_type_spinlock, ret == 0, 0);
+ spinlock, ret == 0, 0, 0, 0);
return ret;
}
@@ -536,10 +537,12 @@
int res;
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
+ VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_PTHREAD_MUTEX_LOCK,
+ spinlock, sizeof(*spinlock), mutex_type_spinlock,
+ 0, 0);
CALL_FN_W_W(ret, fn, spinlock);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_MUTEX_LOCK,
- spinlock, sizeof(*spinlock),
- mutex_type_spinlock, ret == 0, 0);
+ spinlock, ret == 0, 0, 0, 0);
return ret;
}
@@ -612,7 +615,7 @@
typedef struct { long int sem_status; } sem_t_glibc_2_0;
// sem_init
-PTH_FUNC(int, sem_initZAGLIBCZu2Zd0, // sem_init@GLIBC_2.0
+PTH_FUNC(int, semZuinitZAGLIBCZu2Zd0, // sem_init@GLIBC_2.0
sem_t_glibc_2_0 *sem,
int pshared,
unsigned int value)
@@ -631,7 +634,7 @@
return ret;
}
-PTH_FUNC(int, sem_initZa, // sem_init*
+PTH_FUNC(int, semZuinitZa, // sem_init*
sem_t *sem,
int pshared,
unsigned int value)
@@ -651,7 +654,7 @@
}
// sem_destroy
-PTH_FUNC(int, sem_destroyZAGLIBCZu2Zd0, // sem_destroy@GLIBC_2.0
+PTH_FUNC(int, semZudestroyZAGLIBCZu2Zd0, // sem_destroy@GLIBC_2.0
sem_t_glibc_2_0 *sem)
{
int ret;
@@ -667,7 +670,7 @@
return ret;
}
-PTH_FUNC(int, sem_destroyZa, // sem_destroy*
+PTH_FUNC(int, semZudestroyZa, // sem_destroy*
sem_t *sem)
{
int ret;
@@ -684,7 +687,7 @@
}
// sem_wait
-PTH_FUNC(int, sem_waitZAGLIBCZu2Zd0, // sem_wait@GLIBC_2.0
+PTH_FUNC(int, semZuwaitZAGLIBCZu2Zd0, // sem_wait@GLIBC_2.0
sem_t_glibc_2_0 *sem)
{
int ret;
@@ -700,7 +703,7 @@
}
// sem_wait
-PTH_FUNC(int, sem_waitZa, // sem_wait*
+PTH_FUNC(int, semZuwaitZa, // sem_wait*
sem_t *sem)
{
int ret;
@@ -716,7 +719,7 @@
}
// sem_trywait
-PTH_FUNC(int, sem_trywaitZAGLIBCZu2Zd0, // sem_trywait@GLIBC_2.0
+PTH_FUNC(int, semZutrywaitZAGLIBCZu2Zd0, // sem_trywait@GLIBC_2.0
sem_t_glibc_2_0 *sem)
{
int ret;
@@ -731,7 +734,7 @@
return ret;
}
-PTH_FUNC(int, sem_trywaitZa, // sem_trywait*
+PTH_FUNC(int, semZutrywaitZa, // sem_trywait*
sem_t *sem)
{
int ret;
@@ -747,7 +750,7 @@
}
// sem_timedwait
-PTH_FUNC(int, sem_timedwait, // sem_timedwait
+PTH_FUNC(int, semZutimedwait, // sem_timedwait
sem_t *sem, const struct timespec *abs_timeout)
{
int ret;
@@ -763,7 +766,7 @@
}
// sem_post
-PTH_FUNC(int, sem_postZAGLIBCZu2Zd0, // sem_post@GLIBC_2.0
+PTH_FUNC(int, semZupostZAGLIBCZu2Zd0, // sem_post@GLIBC_2.0
sem_t_glibc_2_0 *sem)
{
int ret;
@@ -778,7 +781,8 @@
return ret;
}
-PTH_FUNC(int, sem_postZa, // sem_post*
+// sem_post
+PTH_FUNC(int, semZupostZa, // sem_post*
sem_t *sem)
{
int ret;
@@ -793,24 +797,155 @@
return ret;
}
-/*
-pthread_rwlock_destroy
-pthread_rwlock_init
-pthread_rwlock_rdlock
-pthread_rwlock_timedrdlock
-pthread_rwlock_timedwrlock
-pthread_rwlock_tryrdlock
-pthread_rwlock_trywrlock
-pthread_rwlock_unlock
-pthread_rwlock_wrlock
-pthread_rwlockattr_destroy
-pthread_rwlockattr_getkind_np
-pthread_rwlockattr_getpshared
-pthread_rwlockattr_init
-pthread_rwlockattr_setkind_np
-pthread_rwlockattr_setpshared
- */
+// pthread_rwlock_init
+PTH_FUNC(int,
+ pthreadZurwlockZuinitZa, // pthread_rwlock_init*
+ pthread_rwlock_t* rwlock,
+ const pthread_rwlockattr_t* attr)
+{
+ int ret;
+ int res;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_INIT,
+ rwlock, sizeof(*rwlock), 0, 0, 0);
+ CALL_FN_W_WW(ret, fn, rwlock, attr);
+ return ret;
+}
+// pthread_rwlock_destroy
+PTH_FUNC(int,
+ pthreadZurwlockZudestroyZa, // pthread_rwlock_destroy*
+ pthread_rwlock_t* rwlock)
+{
+ int ret;
+ int res;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ CALL_FN_W_W(ret, fn, rwlock);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_DESTROY,
+ rwlock, 0, 0, 0, 0);
+ return ret;
+}
+
+// pthread_rwlock_rdlock
+PTH_FUNC(int,
+ pthreadZurwlockZurdlockZa, // pthread_rwlock_rdlock*
+ pthread_rwlock_t* rwlock)
+{
+ int ret;
+ int res;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_RDLOCK,
+ rwlock, sizeof(*rwlock), 0, 0, 0);
+ CALL_FN_W_W(ret, fn, rwlock);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_RDLOCK,
+ rwlock, ret == 0, 0, 0, 0);
+ return ret;
+}
+
+// pthread_rwlock_wrlock
+PTH_FUNC(int,
+ pthreadZurwlockZuwrlockZa, // pthread_rwlock_wrlock*
+ pthread_rwlock_t* rwlock)
+{
+ int ret;
+ int res;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_WRLOCK,
+ rwlock, sizeof(*rwlock), 0, 0, 0);
+ CALL_FN_W_W(ret, fn, rwlock);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_WRLOCK,
+ rwlock, ret == 0, 0, 0, 0);
+ return ret;
+}
+
+// pthread_rwlock_timedrdlock
+PTH_FUNC(int,
+ pthreadZurwlockZutimedrdlockZa, // pthread_rwlock_timedrdlock*
+ pthread_rwlock_t* rwlock)
+{
+ int ret;
+ int res;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_RDLOCK,
+ rwlock, sizeof(*rwlock), 0, 0, 0);
+ CALL_FN_W_W(ret, fn, rwlock);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_RDLOCK,
+ rwlock, ret == 0, 0, 0, 0);
+ return ret;
+}
+
+// pthread_rwlock_timedwrlock
+PTH_FUNC(int,
+ pthreadZurwlockZutimedwrlockZa, // pthread_rwlock_timedwrlock*
+ pthread_rwlock_t* rwlock)
+{
+ int ret;
+ int res;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_WRLOCK,
+ rwlock, sizeof(*rwlock), 0, 0, 0);
+ CALL_FN_W_W(ret, fn, rwlock);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_WRLOCK,
+ rwlock, ret == 0, 0, 0, 0);
+ return ret;
+}
+
+// pthread_rwlock_tryrdlock
+PTH_FUNC(int,
+ pthreadZurwlockZutryrdlockZa, // pthread_rwlock_tryrdlock*
+ pthread_rwlock_t* rwlock)
+{
+ int ret;
+ int res;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_RDLOCK,
+ rwlock, sizeof(*rwlock), 0, 0, 0);
+ CALL_FN_W_W(ret, fn, rwlock);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_RDLOCK,
+ rwlock, ret == 0, 0, 0, 0);
+ return ret;
+}
+
+// pthread_rwlock_trywrlock
+PTH_FUNC(int,
+ pthreadZurwlockZutrywrlockZa, // pthread_rwlock_trywrlock*
+ pthread_rwlock_t* rwlock)
+{
+ int ret;
+ int res;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_WRLOCK,
+ rwlock, sizeof(*rwlock), 0, 0, 0);
+ CALL_FN_W_W(ret, fn, rwlock);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_WRLOCK,
+ rwlock, ret == 0, 0, 0, 0);
+ return ret;
+}
+
+// pthread_rwlock_unlock
+PTH_FUNC(int,
+ pthreadZurwlockZuunlockZa, // pthread_rwlock_unlock*
+ pthread_rwlock_t* rwlock)
+{
+ int ret;
+ int res;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ CALL_FN_W_W(ret, fn, rwlock);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_UNLOCK,
+ rwlock, ret == 0, 0, 0, 0);
+ return ret;
+}
+
+
/*
* Local variables:
* c-basic-offset: 3
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-03-01 13:55:33 UTC (rev 7523)
+++ trunk/exp-drd/drd_main.c 2008-03-01 15:27:41 UTC (rev 7524)
@@ -453,26 +453,19 @@
mutex_post_destroy(mutex);
}
-void drd_pre_mutex_lock(const DrdThreadId drd_tid,
- const Addr mutex,
+void drd_pre_mutex_lock(const Addr mutex,
const SizeT size,
const MutexT mutex_type)
{
mutex_pre_lock(mutex, size, mutex_type);
}
-void drd_post_mutex_lock(const DrdThreadId drd_tid,
- const Addr mutex,
- const SizeT size,
- const MutexT mutex_type,
- const Bool took_lock)
+void drd_post_mutex_lock(const Addr mutex, const Bool took_lock)
{
- mutex_post_lock(mutex, size, mutex_type, took_lock);
+ mutex_post_lock(mutex, took_lock);
}
-void drd_pre_mutex_unlock(const DrdThreadId drd_tid,
- const Addr mutex,
- const MutexT mutex_type)
+void drd_pre_mutex_unlock(const Addr mutex, const MutexT mutex_type)
{
mutex_unlock(mutex, mutex_type);
}
Modified: trunk/exp-drd/drd_mutex.c
===================================================================
--- trunk/exp-drd/drd_mutex.c 2008-03-01 13:55:33 UTC (rev 7523)
+++ trunk/exp-drd/drd_mutex.c 2008-03-01 15:27:41 UTC (rev 7524)
@@ -137,10 +137,11 @@
return &clientobj_get(mutex, ClientMutex)->mutex;
}
+/** Called before pthread_mutex_init(). */
struct mutex_info*
mutex_init(const Addr mutex, const SizeT size, const MutexT mutex_type)
{
- struct mutex_info* mutex_p;
+ struct mutex_info* p;
if (s_trace_mutex)
{
@@ -152,22 +153,33 @@
mutex);
}
- mutex_p = mutex_get(mutex);
- if (mutex_p)
+ if (mutex_type == mutex_type_invalid_mutex)
{
+ GenericErrInfo GEI;
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ GenericErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "Invalid mutex",
+ &GEI);
+ return 0;
+ }
+
+ p = mutex_get(mutex);
+ if (p)
+ {
const ThreadId vg_tid = VG_(get_running_tid)();
MutexErrInfo MEI
- = { mutex_p->a1, mutex_p->recursion_count, mutex_p->owner };
+ = { p->a1, p->recursion_count, p->owner };
VG_(maybe_record_error)(vg_tid,
MutexErr,
VG_(get_IP)(vg_tid),
"Mutex reinitialization",
&MEI);
- return mutex_p;
+ return p;
}
- mutex_p = mutex_get_or_allocate(mutex, size, mutex_type);
+ p = mutex_get_or_allocate(mutex, size, mutex_type);
- return mutex_p;
+ return p;
}
/** Called after pthread_mutex_destroy(). */
@@ -200,10 +212,33 @@
struct mutex_info* p;
p = mutex_get(mutex);
+
+ if (s_trace_mutex)
+ {
+ VG_(message)(Vg_UserMsg,
+ "[%d/%d] pre_mutex_lock %s 0x%lx rc %d owner %d",
+ VG_(get_running_tid)(),
+ thread_get_running_tid(),
+ p ? mutex_get_typename(p) : "(?)",
+ mutex,
+ p ? p->recursion_count : 0,
+ p ? p->owner : VG_INVALID_THREADID);
+ }
+
+ if (mutex_type == mutex_type_invalid_mutex)
+ {
+ GenericErrInfo GEI;
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ GenericErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "Invalid mutex",
+ &GEI);
+ return;
+ }
+
if (p == 0)
{
- mutex_init(mutex, size, mutex_type);
- p = mutex_get(mutex);
+ p = mutex_init(mutex, size, mutex_type);
}
tl_assert(p);
@@ -226,51 +261,33 @@
* Note: this function must be called after pthread_mutex_lock() has been
* called, or a race condition is triggered !
*/
-int mutex_post_lock(const Addr mutex, const SizeT size, MutexT mutex_type,
- const Bool took_lock)
+int mutex_post_lock(const Addr mutex, const Bool took_lock)
{
const DrdThreadId drd_tid = thread_get_running_tid();
- struct mutex_info* const p = mutex_get_or_allocate(mutex, size, mutex_type);
+ struct mutex_info* p;
+ p = mutex_get(mutex);
+
if (s_trace_mutex)
{
VG_(message)(Vg_UserMsg,
"[%d/%d] post_mutex_lock %s 0x%lx rc %d owner %d",
VG_(get_running_tid)(),
drd_tid,
- mutex_get_typename(p),
+ p ? mutex_get_typename(p) : "(?)",
mutex,
p ? p->recursion_count : 0,
p ? p->owner : VG_INVALID_THREADID);
}
- if (mutex_type == mutex_type_invalid_mutex)
- {
- GenericErrInfo GEI;
- VG_(maybe_record_error)(VG_(get_running_tid)(),
- GenericErr,
- VG_(get_IP)(VG_(get_running_tid)()),
- "Invalid mutex",
- &GEI);
- }
-
if (p == 0)
{
- GenericErrInfo GEI;
- VG_(maybe_record_error)(VG_(get_running_tid)(),
- GenericErr,
- VG_(get_IP)(VG_(get_running_tid)()),
- "Not a mutex",
- &GEI);
return 0;
}
if (! took_lock)
return p->recursion_count;
- tl_assert(p->mutex_type == mutex_type);
- tl_assert(p->a2 - p->a1 == size);
-
if (p->recursion_count == 0)
{
p->owner = drd_tid;
@@ -335,6 +352,7 @@
VG_(get_IP)(VG_(get_running_tid)()),
"Invalid mutex",
&GEI);
+ return 0;
}
if (p == 0)
Modified: trunk/exp-drd/drd_mutex.h
===================================================================
--- trunk/exp-drd/drd_mutex.h 2008-03-01 13:55:33 UTC (rev 7523)
+++ trunk/exp-drd/drd_mutex.h 2008-03-01 15:27:41 UTC (rev 7524)
@@ -46,8 +46,7 @@
struct mutex_info* mutex_get(const Addr mutex);
void mutex_pre_lock(const Addr mutex, const SizeT size,
const MutexT mutex_type);
-int mutex_post_lock(const Addr mutex, const SizeT size,
- const MutexT mutex_type, const Bool took_lock);
+int mutex_post_lock(const Addr mutex, const Bool took_lock);
int mutex_unlock(const Addr mutex, const MutexT mutex_type);
const char* mutex_get_typename(struct mutex_info* const p);
const char* mutex_type_name(const MutexT mt);
Modified: trunk/exp-drd/drd_track.h
===================================================================
--- trunk/exp-drd/drd_track.h 2008-03-01 13:55:33 UTC (rev 7523)
+++ trunk/exp-drd/drd_track.h 2008-03-01 15:27:41 UTC (rev 7524)
@@ -27,12 +27,10 @@
void drd_pre_mutex_init(Addr mutex, SizeT size, const MutexT mutex_type);
void drd_post_mutex_destroy(Addr mutex, const MutexT mutex_type);
-void drd_pre_mutex_lock(DrdThreadId tid, Addr mutex, const SizeT size,
+void drd_pre_mutex_lock(const Addr mutex, const SizeT size,
const MutexT mutex_type);
-void drd_post_mutex_lock(DrdThreadId tid, Addr mutex, const SizeT size,
- const MutexT mutex_type, const Bool took_lock);
-void drd_pre_mutex_unlock(const DrdThreadId tid, const Addr mutex,
- const MutexT mutex_type);
+void drd_post_mutex_lock(Addr mutex, const Bool took_lock);
+void drd_pre_mutex_unlock(const Addr mutex, const MutexT mutex_type);
void drd_pre_cond_init(Addr cond, SizeT s);
void drd_post_cond_destroy(Addr cond);
Modified: trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp 2008-03-01 13:55:33 UTC (rev 7523)
+++ trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp 2008-03-01 15:27:41 UTC (rev 7524)
@@ -18,11 +18,6 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
-Not a mutex
- at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:49)
-
Attempt to unlock a mutex that is not locked: address 0x........, recursion count -1, owner 1.
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
@@ -42,9 +37,4 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
-Not a mutex
- at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)
Modified: trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2 2008-03-01 13:55:33 UTC (rev 7523)
+++ trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2 2008-03-01 15:27:41 UTC (rev 7524)
@@ -16,6 +16,10 @@
---------------- pthread_mutex_lock et al ----------------
+Invalid mutex
+ at 0x........: pthread_mutex_init (drd_intercepts.c:?)
+ by 0x........: main (tc20_verifywrap.c:92)
+
Destroying locked mutex: address 0x........, recursion count 1, owner 1.
at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:102)
@@ -36,10 +40,6 @@
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:125)
-Mutex not locked: address 0x........, recursion count 0, owner 0.
- at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
- by 0x........: main (tc20_verifywrap.c:125)
-
---------------- pthread_cond_wait et al ----------------
Modified: trunk/exp-drd/tests/tc20_verifywrap2.stderr.exp2
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap2.stderr.exp2 2008-03-01 13:55:33 UTC (rev 7523)
+++ trunk/exp-drd/tests/tc20_verifywrap2.stderr.exp2 2008-03-01 15:27:41 UTC (rev 7524)
@@ -16,39 +16,41 @@
---------------- pthread_mutex_lock et al ----------------
[1/1] mutex_init invalid mutex 0x........
+
+Invalid mutex
+ at 0x........: pthread_mutex_init (drd_intercepts.c:?)
+ by 0x........: main (tc20_verifywrap.c:92)
[1/1] mutex_init mutex 0x........
+[1/1] pre_mutex_lock mutex 0x........ rc 0 owner 0
[1/1] post_mutex_lock mutex 0x........ rc 0 owner 0
[1/1] mutex_destroy mutex 0x........
Destroying locked mutex: address 0x........, recursion count 1, owner 1.
at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:102)
-[1/1] mutex_init invalid mutex 0x........
-[1/1] post_mutex_lock invalid mutex 0x........ rc 0 owner 0
+[1/1] pre_mutex_lock (?) 0x........ rc 0 owner 0
Invalid mutex
at 0x........: pthread_mutex_lock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:108)
-[1/1] post_mutex_lock invalid mutex 0x........ rc 0 owner 0
+[1/1] post_mutex_lock (?) 0x........ rc 0 owner 0
+[1/1] pre_mutex_lock (?) 0x........ rc 0 owner 0
Invalid mutex
at 0x........: pthread_mutex_trylock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:116)
-[1/1] post_mutex_lock invalid mutex 0x........ rc 0 owner 0
+[1/1] post_mutex_lock (?) 0x........ rc 0 owner 0
+[1/1] pre_mutex_lock (?) 0x........ rc 0 owner 0
Invalid mutex
at 0x........: pthread_mutex_timedlock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:121)
-[1/1] mutex_unlock invalid mutex 0x........ rc 0
+[1/1] post_mutex_lock (?) 0x........ rc 0 owner 0
Invalid mutex
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:125)
-Mutex not locked: address 0x........, recursion count 0, owner 0.
- at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
- by 0x........: main (tc20_verifywrap.c:125)
-
---------------- pthread_cond_wait et al ----------------
[1/1] mutex_init error checking mutex 0x........
@@ -110,39 +112,53 @@
------------ dealloc of mem holding locks ------------
[1/1] mutex_destroy error checking mutex 0x........
-[1/1] mutex_destroy invalid mutex 0x........
-[1/1] mutex_destroy invalid mutex 0x........
+[1/1] pre_mutex_lock (?) 0x........ rc 0 owner 0
[1/1] mutex_init recursive mutex 0x........
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 0
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
+[1/1] pre_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
Modified: trunk/exp-drd/tests/tc23_bogus_condwait.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc23_bogus_condwait.stderr.exp 2008-03-01 13:55:33 UTC (rev 7523)
+++ trunk/exp-drd/tests/tc23_bogus_condwait.stderr.exp 2008-03-01 15:27:41 UTC (rev 7524)
@@ -12,14 +12,6 @@
by 0x........: clone (in /...libc...)
Thread 1:
-Not a mutex
- at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:69)
-
-Not a mutex
- at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:69)
-
Mutex not locked: address 0x........, recursion count 0, owner 0.
at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:72)
@@ -66,4 +58,4 @@
by 0x........: start_thread (in libpthread-?.?.so)
by 0x........: clone (in /...libc...)
-ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 9 errors from 9 contexts (suppressed: 0 from 0)
|
|
From: <sv...@va...> - 2008-03-01 13:55:34
|
Author: bart
Date: 2008-03-01 13:55:33 +0000 (Sat, 01 Mar 2008)
New Revision: 7523
Log:
Added a glibc 2.7 suppression.
Modified:
trunk/glibc-2.X-drd.supp
Modified: trunk/glibc-2.X-drd.supp
===================================================================
--- trunk/glibc-2.X-drd.supp 2008-03-01 13:44:24 UTC (rev 7522)
+++ trunk/glibc-2.X-drd.supp 2008-03-01 13:55:33 UTC (rev 7523)
@@ -113,6 +113,12 @@
fun:pthread_create*
}
{
+ pthread-glibc2.7-pthread_create
+ exp-drd:ConflictingAccess
+ fun:memset
+ fun:pthread_create*
+}
+{
pthread
exp-drd:ConflictingAccess
fun:pthread_mutex_lock
|
|
From: <sv...@va...> - 2008-03-01 13:44:21
|
Author: bart
Date: 2008-03-01 13:44:24 +0000 (Sat, 01 Mar 2008)
New Revision: 7522
Log:
Added command-line option --trace-clientobj. Renamed drd_clientobj* functions into clientobj*. Moved some code from drd_main.c into the drd_mutex.c/drd_cond.c/drd_semaphore.c.
Modified:
trunk/exp-drd/drd_barrier.c
trunk/exp-drd/drd_barrier.h
trunk/exp-drd/drd_clientobj.c
trunk/exp-drd/drd_clientobj.h
trunk/exp-drd/drd_clientreq.c
trunk/exp-drd/drd_clientreq.h
trunk/exp-drd/drd_cond.c
trunk/exp-drd/drd_cond.h
trunk/exp-drd/drd_intercepts.c
trunk/exp-drd/drd_main.c
trunk/exp-drd/drd_malloc_wrappers.c
trunk/exp-drd/drd_mutex.c
trunk/exp-drd/drd_semaphore.c
trunk/exp-drd/drd_semaphore.h
trunk/exp-drd/drd_track.h
Modified: trunk/exp-drd/drd_barrier.c
===================================================================
--- trunk/exp-drd/drd_barrier.c 2008-03-01 11:39:00 UTC (rev 7521)
+++ trunk/exp-drd/drd_barrier.c 2008-03-01 13:44:24 UTC (rev 7522)
@@ -113,7 +113,7 @@
}
/** Deallocate the memory allocated by barrier_initialize() and in p->oset.
- * Called by drd_clientobj_destroy().
+ * Called by clientobj_destroy().
*/
void barrier_cleanup(struct barrier_info* p)
{
@@ -149,10 +149,10 @@
struct barrier_info *p;
tl_assert(offsetof(DrdClientobj, barrier) == 0);
- p = &drd_clientobj_get(barrier, ClientBarrier)->barrier;
+ p = &clientobj_get(barrier, ClientBarrier)->barrier;
if (p == 0)
{
- p = &drd_clientobj_add(barrier, barrier + size, ClientBarrier)->barrier;
+ p = &clientobj_add(barrier, barrier + size, ClientBarrier)->barrier;
barrier_initialize(p, barrier, size, count);
}
return p;
@@ -160,10 +160,10 @@
/** Look up the address of the information associated with the client-side
* barrier object. */
-struct barrier_info* barrier_get(const Addr barrier)
+static struct barrier_info* barrier_get(const Addr barrier)
{
tl_assert(offsetof(DrdClientobj, barrier) == 0);
- return &drd_clientobj_get(barrier, ClientBarrier)->barrier;
+ return &clientobj_get(barrier, ClientBarrier)->barrier;
}
/** Initialize a barrier with client address barrier, client size size, and
@@ -186,18 +186,32 @@
}
/** Called after pthread_barrier_destroy(). */
-void barrier_destroy(struct barrier_info* const p)
+void barrier_destroy(const Addr barrier)
{
+ struct barrier_info* p;
+
if (s_trace_barrier)
{
VG_(message)(Vg_UserMsg,
"[%d/%d] barrier_destroy 0x%lx",
VG_(get_running_tid)(),
thread_get_running_tid(),
- p->a1);
+ barrier);
}
- tl_assert(p);
- drd_clientobj_remove(p->a1, ClientBarrier);
+
+ p = barrier_get(barrier);
+ if (p == 0)
+ {
+ GenericErrInfo GEI;
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ GenericErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "Not a barrier",
+ &GEI);
+ return;
+ }
+
+ clientobj_remove(p->a1, ClientBarrier);
}
/** Called before pthread_barrier_wait(). */
@@ -289,8 +303,8 @@
{
struct barrier_info* p;
- drd_clientobj_resetiter();
- for ( ; (p = &drd_clientobj_next(ClientBarrier)->barrier) != 0; )
+ clientobj_resetiter();
+ for ( ; (p = &clientobj_next(ClientBarrier)->barrier) != 0; )
{
struct barrier_thread_info* q;
const UWord word_tid = tid;
Modified: trunk/exp-drd/drd_barrier.h
===================================================================
--- trunk/exp-drd/drd_barrier.h 2008-03-01 11:39:00 UTC (rev 7521)
+++ trunk/exp-drd/drd_barrier.h 2008-03-01 13:44:24 UTC (rev 7522)
@@ -41,8 +41,7 @@
void barrier_set_trace(const Bool trace_barrier);
struct barrier_info* barrier_init(const Addr barrier, const SizeT size,
const Word count);
-void barrier_destroy(struct barrier_info* const p);
-struct barrier_info* barrier_get(const Addr barrier);
+void barrier_destroy(const Addr barrier);
void barrier_pre_wait(const DrdThreadId tid, const Addr barrier);
void barrier_post_wait(const DrdThreadId tid, const Addr barrier,
const Bool waited);
Modified: trunk/exp-drd/drd_clientobj.c
===================================================================
--- trunk/exp-drd/drd_clientobj.c 2008-03-01 11:39:00 UTC (rev 7521)
+++ trunk/exp-drd/drd_clientobj.c 2008-03-01 13:44:24 UTC (rev 7522)
@@ -28,20 +28,29 @@
#include "pub_tool_basics.h"
#include "pub_tool_libcassert.h"
#include "pub_tool_libcbase.h"
-#include "pub_tool_libcprint.h" // VG_(message)()
+#include "pub_tool_libcprint.h" // VG_(message)()
#include "pub_tool_mallocfree.h"
+#include "pub_tool_options.h" // VG_(clo_backtrace_size)
#include "pub_tool_oset.h"
+#include "pub_tool_stacktrace.h"
+#include "pub_tool_threadstate.h" // VG_(get_running_tid)()
// Local variables.
static OSet* s_clientobj;
+static Bool s_trace_clientobj;
// Function definitions.
+void clientobj_set_trace(const Bool trace)
+{
+ s_trace_clientobj = trace;
+}
+
/** Initialize the client object set. */
-void drd_clientobj_init(void)
+void clientobj_init(void)
{
tl_assert(s_clientobj == 0);
s_clientobj = VG_(OSetGen_Create)(0, 0, VG_(malloc), VG_(free));
@@ -51,7 +60,7 @@
/** Free the memory allocated for the client object set.
* @pre Client object set is empty.
*/
-void drd_clientobj_cleanup(void)
+void clientobj_cleanup(void)
{
tl_assert(s_clientobj);
tl_assert(VG_(OSetGen_Size)(s_clientobj) == 0);
@@ -63,7 +72,7 @@
* and that has object type t. Return 0 if there is no client object in the
* set with the specified start address.
*/
-DrdClientobj* drd_clientobj_get(const Addr addr, const ObjType t)
+DrdClientobj* clientobj_get(const Addr addr, const ObjType t)
{
DrdClientobj* p;
p = VG_(OSetGen_Lookup)(s_clientobj, &addr);
@@ -75,7 +84,7 @@
/** Return true if and only if the address range of any client object overlaps
* with the specified address range.
*/
-Bool drd_clientobj_present(const Addr a1, const Addr a2)
+Bool clientobj_present(const Addr a1, const Addr a2)
{
DrdClientobj *p;
@@ -97,14 +106,19 @@
* @pre No other client object is present in the address range [addr,addr+size[.
*/
DrdClientobj*
-drd_clientobj_add(const Addr a1, const Addr a2, const ObjType t)
+clientobj_add(const Addr a1, const Addr a2, const ObjType t)
{
DrdClientobj* p;
tl_assert(a1 < a2 && a1 + 4096 > a2);
- tl_assert(! drd_clientobj_present(a1, a2));
+ tl_assert(! clientobj_present(a1, a2));
tl_assert(VG_(OSetGen_Lookup)(s_clientobj, &a1) == 0);
+ if (s_trace_clientobj)
+ {
+ VG_(message)(Vg_UserMsg, "Adding client object 0x%lx of type %d", a1, t);
+ }
+
p = VG_(OSetGen_AllocNode)(s_clientobj, sizeof(*p));
VG_(memset)(p, 0, sizeof(*p));
p->any.a1 = a1;
@@ -116,10 +130,20 @@
return p;
}
-Bool drd_clientobj_remove(const Addr addr, const ObjType t)
+Bool clientobj_remove(const Addr addr, const ObjType t)
{
DrdClientobj* p;
+ if (s_trace_clientobj)
+ {
+ VG_(message)(Vg_UserMsg, "Removing client object 0x%lx of type %d",
+ addr, t);
+#if 0
+ VG_(get_and_pp_StackTrace)(VG_(get_running_tid)(),
+ VG_(clo_backtrace_size));
+#endif
+ }
+
p = VG_(OSetGen_Lookup)(s_clientobj, &addr);
tl_assert(p->any.type == t);
p = VG_(OSetGen_Remove)(s_clientobj, &addr);
@@ -135,7 +159,7 @@
return False;
}
-void drd_clientobj_stop_using_mem(const Addr a1, const Addr a2)
+void clientobj_stop_using_mem(const Addr a1, const Addr a2)
{
Addr removed_at;
DrdClientobj* p;
@@ -149,7 +173,7 @@
|| (a1 < p->any.a2 && p->any.a2 <= a2))
{
removed_at = p->any.a1;
- drd_clientobj_remove(p->any.a1, p->any.type);
+ clientobj_remove(p->any.a1, p->any.type);
/* The above call removes an element from the oset and hence */
/* invalidates the iterator. Set the iterator back. */
VG_(OSetGen_ResetIter)(s_clientobj);
@@ -164,12 +188,12 @@
}
}
-void drd_clientobj_resetiter(void)
+void clientobj_resetiter(void)
{
VG_(OSetGen_ResetIter)(s_clientobj);
}
-DrdClientobj* drd_clientobj_next(const ObjType t)
+DrdClientobj* clientobj_next(const ObjType t)
{
DrdClientobj* p;
while ((p = VG_(OSetGen_Next)(s_clientobj)) != 0 && p->any.type != t)
Modified: trunk/exp-drd/drd_clientobj.h
===================================================================
--- trunk/exp-drd/drd_clientobj.h 2008-03-01 11:39:00 UTC (rev 7521)
+++ trunk/exp-drd/drd_clientobj.h 2008-03-01 13:44:24 UTC (rev 7522)
@@ -116,14 +116,15 @@
// Function declarations.
-void drd_clientobj_init(void);
-void drd_clientobj_cleanup(void);
-DrdClientobj* drd_clientobj_get(const Addr addr, const ObjType t);
-Bool drd_clientobj_present(const Addr a1, const Addr a2);
-DrdClientobj* drd_clientobj_add(const Addr a1, const Addr a2, const ObjType t);
-Bool drd_clientobj_remove(const Addr addr, const ObjType t);
-void drd_clientobj_stop_using_mem(const Addr a1, const Addr a2);
-void drd_clientobj_resetiter(void);
-DrdClientobj* drd_clientobj_next(const ObjType t);
+void clientobj_set_trace(const Bool trace);
+void clientobj_init(void);
+void clientobj_cleanup(void);
+DrdClientobj* clientobj_get(const Addr addr, const ObjType t);
+Bool clientobj_present(const Addr a1, const Addr a2);
+DrdClientobj* clientobj_add(const Addr a1, const Addr a2, const ObjType t);
+Bool clientobj_remove(const Addr addr, const ObjType t);
+void clientobj_stop_using_mem(const Addr a1, const Addr a2);
+void clientobj_resetiter(void);
+DrdClientobj* clientobj_next(const ObjType t);
#endif /* __DRD_CLIENTOBJ_H */
Modified: trunk/exp-drd/drd_clientreq.c
===================================================================
--- trunk/exp-drd/drd_clientreq.c 2008-03-01 11:39:00 UTC (rev 7521)
+++ trunk/exp-drd/drd_clientreq.c 2008-03-01 13:44:24 UTC (rev 7522)
@@ -149,12 +149,12 @@
drd_spin_init_or_unlock(arg[1], arg[2]);
break;
- case VG_USERREQ__POST_PTHREAD_COND_INIT:
- drd_post_cond_init(arg[1], arg[2]);
+ case VG_USERREQ__PRE_PTHREAD_COND_INIT:
+ drd_pre_cond_init(arg[1], arg[2]);
break;
- case VG_USERREQ__PRE_PTHREAD_COND_DESTROY:
- drd_pre_cond_destroy(arg[1]);
+ case VG_USERREQ__POST_PTHREAD_COND_DESTROY:
+ drd_post_cond_destroy(arg[1]);
break;
case VG_USERREQ__PRE_PTHREAD_COND_WAIT:
Modified: trunk/exp-drd/drd_clientreq.h
===================================================================
--- trunk/exp-drd/drd_clientreq.h 2008-03-01 11:39:00 UTC (rev 7521)
+++ trunk/exp-drd/drd_clientreq.h 2008-03-01 13:44:24 UTC (rev 7522)
@@ -63,10 +63,10 @@
/* to notify the drd tool of a pthread_cond_init call. */
- VG_USERREQ__POST_PTHREAD_COND_INIT,
+ VG_USERREQ__PRE_PTHREAD_COND_INIT,
/* args: Addr */
/* to notify the drd tool of a pthread_cond_destroy call. */
- VG_USERREQ__PRE_PTHREAD_COND_DESTROY,
+ VG_USERREQ__POST_PTHREAD_COND_DESTROY,
/* args: Addr cond, SizeT cond_size, Addr mutex, SizeT mutex_size,MutexT mt*/
VG_USERREQ__PRE_PTHREAD_COND_WAIT,
/* args: Addr cond, SizeT cond_size, Addr mutex, MutexT mt */
Modified: trunk/exp-drd/drd_cond.c
===================================================================
--- trunk/exp-drd/drd_cond.c 2008-03-01 11:39:00 UTC (rev 7521)
+++ trunk/exp-drd/drd_cond.c 2008-03-01 13:44:24 UTC (rev 7522)
@@ -68,7 +68,7 @@
}
/** Free the memory that was allocated by cond_initialize(). Called by
- * drd_clientobj_remove().
+ * clientobj_remove().
*/
static void cond_cleanup(struct cond_info* p)
{
@@ -76,7 +76,7 @@
if (p->mutex)
{
struct mutex_info* q;
- q = &drd_clientobj_get(p->mutex, ClientMutex)->mutex;
+ q = &clientobj_get(p->mutex, ClientMutex)->mutex;
tl_assert(q);
{
CondDestrErrInfo cde = { p->a1, q->a1, q->owner };
@@ -96,24 +96,26 @@
struct cond_info *p;
tl_assert(offsetof(DrdClientobj, cond) == 0);
- p = &drd_clientobj_get(cond, ClientCondvar)->cond;
+ p = &clientobj_get(cond, ClientCondvar)->cond;
if (p == 0)
{
- p = &drd_clientobj_add(cond, cond + size, ClientCondvar)->cond;
+ p = &clientobj_add(cond, cond + size, ClientCondvar)->cond;
cond_initialize(p, cond, size);
}
return p;
}
-struct cond_info* cond_get(const Addr cond)
+static struct cond_info* cond_get(const Addr cond)
{
tl_assert(offsetof(DrdClientobj, cond) == 0);
- return &drd_clientobj_get(cond, ClientCondvar)->cond;
+ return &clientobj_get(cond, ClientCondvar)->cond;
}
/** Called before pthread_cond_init(). */
-void cond_init(const Addr cond, const SizeT size)
+void cond_pre_init(const Addr cond, const SizeT size)
{
+ struct cond_info* p;
+
if (s_trace_cond)
{
VG_(message)(Vg_UserMsg,
@@ -122,27 +124,62 @@
thread_get_running_tid(),
cond);
}
- tl_assert(cond_get(cond) == 0);
+
tl_assert(size > 0);
- cond_get_or_allocate(cond, size);
+
+ p = cond_get(cond);
+
+ if (p)
+ {
+ CondErrInfo cei = { .cond = cond };
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ CondErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "initialized twice",
+ &cei);
+ }
+
+ p = cond_get_or_allocate(cond, size);
}
/** Called after pthread_cond_destroy(). */
-void cond_destroy(struct cond_info* const p)
+void cond_post_destroy(const Addr cond)
{
+ struct cond_info* p;
+
if (s_trace_cond)
{
VG_(message)(Vg_UserMsg,
"[%d/%d] cond_destroy 0x%lx",
VG_(get_running_tid)(),
thread_get_running_tid(),
- p->a1);
+ cond);
}
- // TO DO: print a proper error message if waiter_count != 0.
- tl_assert(p->waiter_count == 0);
+ p = cond_get(cond);
+ if (p == 0)
+ {
+ CondErrInfo cei = { .cond = cond };
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ CondErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "not a condition variable",
+ &cei);
+ return;
+ }
- drd_clientobj_remove(p->a1, ClientCondvar);
+ if (p->waiter_count != 0)
+ {
+ CondErrInfo cei = { .cond = cond };
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ CondErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "destruction of condition variable being waited"
+ " upon",
+ &cei);
+ }
+
+ clientobj_remove(p->a1, ClientCondvar);
}
/** Called before pthread_cond_wait(). */
Modified: trunk/exp-drd/drd_cond.h
===================================================================
--- trunk/exp-drd/drd_cond.h 2008-03-01 11:39:00 UTC (rev 7521)
+++ trunk/exp-drd/drd_cond.h 2008-03-01 13:44:24 UTC (rev 7522)
@@ -39,9 +39,8 @@
void cond_set_trace(const Bool trace_cond);
-void cond_init(const Addr cond, const SizeT size);
-void cond_destroy(struct cond_info* const p);
-struct cond_info* cond_get(const Addr mutex);
+void cond_pre_init(const Addr cond, const SizeT size);
+void cond_post_destroy(const Addr cond);
int cond_pre_wait(const Addr cond, const SizeT cond_size, const Addr mutex);
int cond_post_wait(const Addr cond);
void cond_pre_signal(const Addr cond);
Modified: trunk/exp-drd/drd_intercepts.c
===================================================================
--- trunk/exp-drd/drd_intercepts.c 2008-03-01 11:39:00 UTC (rev 7521)
+++ trunk/exp-drd/drd_intercepts.c 2008-03-01 13:44:24 UTC (rev 7522)
@@ -395,9 +395,9 @@
int res;
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_PTHREAD_COND_INIT,
+ cond, sizeof(*cond), 0, 0, 0);
CALL_FN_W_WW(ret, fn, cond, attr);
- VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_COND_INIT,
- cond, sizeof(*cond), 0, 0, 0);
return ret;
}
@@ -409,9 +409,9 @@
int res;
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
- VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_PTHREAD_COND_DESTROY,
+ CALL_FN_W_W(ret, fn, cond);
+ VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_COND_DESTROY,
cond, 0, 0, 0, 0);
- CALL_FN_W_W(ret, fn, cond);
return ret;
}
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-03-01 11:39:00 UTC (rev 7521)
+++ trunk/exp-drd/drd_main.c 2008-03-01 13:44:24 UTC (rev 7522)
@@ -47,7 +47,7 @@
#include "pub_tool_libcproc.h"
#include "pub_tool_machine.h"
#include "pub_tool_options.h" // command line options
-#include "pub_tool_threadstate.h" // VG_(get_running_tid)
+#include "pub_tool_threadstate.h" // VG_(get_running_tid)()
#include "pub_tool_tooliface.h"
@@ -77,6 +77,7 @@
static Bool drd_process_cmd_line_option(Char* arg)
{
Bool trace_barrier = False;
+ Bool trace_clientobj = False;
Bool trace_cond = False;
Bool trace_csw = False;
Bool trace_danger_set = False;
@@ -88,6 +89,7 @@
VG_BOOL_CLO (arg, "--drd-stats", drd_print_stats)
else VG_BOOL_CLO(arg, "--trace-barrier", trace_barrier)
+ else VG_BOOL_CLO(arg, "--trace-clientobj", trace_clientobj)
else VG_BOOL_CLO(arg, "--trace-cond", trace_cond)
else VG_BOOL_CLO(arg, "--trace-csw", trace_csw)
else VG_BOOL_CLO(arg, "--trace-danger-set", trace_danger_set)
@@ -107,6 +109,8 @@
}
if (trace_barrier)
barrier_set_trace(trace_barrier);
+ if (trace_clientobj)
+ clientobj_set_trace(trace_clientobj);
if (trace_cond)
cond_set_trace(trace_cond);
if (trace_csw)
@@ -306,7 +310,7 @@
VG_(clo_backtrace_size));
}
thread_stop_using_mem(a1, a2);
- drd_clientobj_stop_using_mem(a1, a2);
+ clientobj_stop_using_mem(a1, a2);
drd_suppression_stop_using_mem(a1, a2);
}
@@ -473,38 +477,14 @@
mutex_unlock(mutex, mutex_type);
}
-void drd_post_cond_init(Addr cond, SizeT s)
+void drd_pre_cond_init(Addr cond, SizeT s)
{
- if (cond_get(cond))
- {
- CondErrInfo cei = { .cond = cond };
- VG_(maybe_record_error)(VG_(get_running_tid)(),
- CondErr,
- VG_(get_IP)(VG_(get_running_tid)()),
- "initialized twice",
- &cei);
- }
- cond_init(cond, s);
+ cond_pre_init(cond, s);
}
-void drd_pre_cond_destroy(Addr cond)
+void drd_post_cond_destroy(Addr cond)
{
- struct cond_info* cond_p;
-
- cond_p = cond_get(cond);
- if (cond_p)
- {
- cond_destroy(cond_p);
- }
- else
- {
- CondErrInfo cei = { .cond = cond };
- VG_(maybe_record_error)(VG_(get_running_tid)(),
- CondErr,
- VG_(get_IP)(VG_(get_running_tid)()),
- "destroy requested but not initialized",
- &cei);
- }
+ cond_post_destroy(cond);
}
void drd_semaphore_init(const Addr semaphore, const SizeT size,
@@ -515,14 +495,7 @@
void drd_semaphore_destroy(const Addr semaphore)
{
- struct semaphore_info* p;
-
- p = semaphore_get(semaphore);
- tl_assert(p);
- if (p)
- {
- semaphore_destroy(p);
- }
+ semaphore_destroy(semaphore);
}
void drd_semaphore_pre_wait(const DrdThreadId tid, const Addr semaphore,
@@ -557,13 +530,7 @@
void drd_barrier_destroy(const Addr barrier)
{
- struct barrier_info* p;
-
- p = barrier_get(barrier);
- if (p)
- {
- barrier_destroy(p);
- }
+ barrier_destroy(barrier);
}
void drd_barrier_pre_wait(const DrdThreadId tid, const Addr barrier)
@@ -859,7 +826,7 @@
drd_suppression_init();
- drd_clientobj_init();
+ clientobj_init();
}
Modified: trunk/exp-drd/drd_malloc_wrappers.c
===================================================================
--- trunk/exp-drd/drd_malloc_wrappers.c 2008-03-01 11:39:00 UTC (rev 7521)
+++ trunk/exp-drd/drd_malloc_wrappers.c 2008-03-01 13:44:24 UTC (rev 7522)
@@ -143,7 +143,7 @@
}
else
{
- s_stop_using_mem_callback(mc->data, mc->data + mc->size);
+ s_stop_using_mem_callback(mc->data, mc->size);
VG_(free)(mc);
}
}
@@ -184,7 +184,7 @@
else if (old_size > new_size)
{
/* new size is smaller */
- s_stop_using_mem_callback(mc->data + new_size, mc->data + old_size);
+ s_stop_using_mem_callback(mc->data + new_size, old_size);
mc->size = new_size;
mc->where = VG_(record_ExeContext)(tid, 0);
p_new = p_old;
@@ -202,7 +202,7 @@
VG_(memcpy)((void*)a_new, p_old, mc->size);
/* Free old memory */
- s_stop_using_mem_callback(mc->data, mc->data + mc->size);
+ s_stop_using_mem_callback(mc->data, mc->size);
VG_(free)(mc);
// Allocate a new chunk.
Modified: trunk/exp-drd/drd_mutex.c
===================================================================
--- trunk/exp-drd/drd_mutex.c 2008-03-01 11:39:00 UTC (rev 7521)
+++ trunk/exp-drd/drd_mutex.c 2008-03-01 13:44:24 UTC (rev 7522)
@@ -38,7 +38,6 @@
static void mutex_cleanup(struct mutex_info* p);
static Bool mutex_is_locked(struct mutex_info* const p);
-static void mutex_destroy(struct mutex_info* const p);
// Local variables.
@@ -108,7 +107,7 @@
struct mutex_info* p;
tl_assert(offsetof(DrdClientobj, mutex) == 0);
- p = &drd_clientobj_get(mutex, ClientMutex)->mutex;
+ p = &clientobj_get(mutex, ClientMutex)->mutex;
if (p)
{
tl_assert(p->mutex_type == mutex_type);
@@ -116,7 +115,7 @@
return p;
}
- if (drd_clientobj_present(mutex, mutex + size))
+ if (clientobj_present(mutex, mutex + size))
{
GenericErrInfo GEI;
VG_(maybe_record_error)(VG_(get_running_tid)(),
@@ -127,7 +126,7 @@
return 0;
}
- p = &drd_clientobj_add(mutex, mutex + size, ClientMutex)->mutex;
+ p = &clientobj_add(mutex, mutex + size, ClientMutex)->mutex;
mutex_initialize(p, mutex, size, mutex_type);
return p;
}
@@ -135,7 +134,7 @@
struct mutex_info* mutex_get(const Addr mutex)
{
tl_assert(offsetof(DrdClientobj, mutex) == 0);
- return &drd_clientobj_get(mutex, ClientMutex)->mutex;
+ return &clientobj_get(mutex, ClientMutex)->mutex;
}
struct mutex_info*
@@ -171,22 +170,24 @@
return mutex_p;
}
-static void mutex_destroy(struct mutex_info* const p)
-{
- drd_clientobj_remove(p->a1, ClientMutex);
-}
-
/** Called after pthread_mutex_destroy(). */
void mutex_post_destroy(const Addr mutex)
{
- struct mutex_info* p;
+ struct mutex_info* p;
- p = mutex_get(mutex);
- tl_assert(p);
- if (p)
- {
- mutex_destroy(p);
- }
+ p = mutex_get(mutex);
+ if (p == 0)
+ {
+ GenericErrInfo GEI;
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ GenericErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "Not a mutex",
+ &GEI);
+ return;
+ }
+
+ clientobj_remove(mutex, ClientMutex);
}
/** Called before pthread_mutex_lock() is invoked. If a data structure for
@@ -466,8 +467,8 @@
{
struct mutex_info* p;
- drd_clientobj_resetiter();
- for ( ; (p = &drd_clientobj_next(ClientMutex)->mutex) != 0; )
+ clientobj_resetiter();
+ for ( ; (p = &clientobj_next(ClientMutex)->mutex) != 0; )
{
if (p->owner == tid && p->recursion_count > 0)
{
Modified: trunk/exp-drd/drd_semaphore.c
===================================================================
--- trunk/exp-drd/drd_semaphore.c 2008-03-01 11:39:00 UTC (rev 7521)
+++ trunk/exp-drd/drd_semaphore.c 2008-03-01 13:44:24 UTC (rev 7522)
@@ -72,7 +72,7 @@
}
/** Free the memory that was allocated by semaphore_initialize(). Called by
- * drd_clientobj_remove().
+ * clientobj_remove().
*/
static void semaphore_cleanup(struct semaphore_info* p)
{
@@ -96,21 +96,21 @@
struct semaphore_info *p;
tl_assert(offsetof(DrdClientobj, semaphore) == 0);
- p = &drd_clientobj_get(semaphore, ClientSemaphore)->semaphore;
+ p = &clientobj_get(semaphore, ClientSemaphore)->semaphore;
if (p == 0)
{
tl_assert(offsetof(DrdClientobj, semaphore) == 0);
- p = &drd_clientobj_add(semaphore, semaphore + size,
+ p = &clientobj_add(semaphore, semaphore + size,
ClientSemaphore)->semaphore;
semaphore_initialize(p, semaphore, size, 0);
}
return p;
}
-struct semaphore_info* semaphore_get(const Addr semaphore)
+static struct semaphore_info* semaphore_get(const Addr semaphore)
{
tl_assert(offsetof(DrdClientobj, semaphore) == 0);
- return &drd_clientobj_get(semaphore, ClientSemaphore)->semaphore;
+ return &clientobj_get(semaphore, ClientSemaphore)->semaphore;
}
/** Called before sem_init(). */
@@ -134,9 +134,9 @@
}
/** Called after sem_destroy(). */
-void semaphore_destroy(struct semaphore_info* const p)
+void semaphore_destroy(const Addr semaphore)
{
- tl_assert(p);
+ struct semaphore_info* p;
if (s_trace_semaphore)
{
@@ -144,10 +144,23 @@
"[%d/%d] semaphore_destroy 0x%lx",
VG_(get_running_tid)(),
thread_get_running_tid(),
- p->a1);
+ semaphore);
}
- drd_clientobj_remove(p->a1, ClientSemaphore);
+ p = semaphore_get(semaphore);
+
+ if (p == 0)
+ {
+ GenericErrInfo GEI;
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ GenericErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "Not a semaphore",
+ &GEI);
+ return;
+ }
+
+ clientobj_remove(semaphore, ClientSemaphore);
}
/** Called before sem_wait(). */
Modified: trunk/exp-drd/drd_semaphore.h
===================================================================
--- trunk/exp-drd/drd_semaphore.h 2008-03-01 11:39:00 UTC (rev 7521)
+++ trunk/exp-drd/drd_semaphore.h 2008-03-01 13:44:24 UTC (rev 7522)
@@ -41,8 +41,7 @@
void semaphore_set_trace(const Bool trace_semaphore);
struct semaphore_info* semaphore_init(const Addr semaphore, const SizeT size,
const Word pshared, const UWord value);
-void semaphore_destroy(struct semaphore_info* const p);
-struct semaphore_info* semaphore_get(const Addr semaphore);
+void semaphore_destroy(const Addr semaphore);
void semaphore_pre_wait(const Addr semaphore, const SizeT size);
void semaphore_post_wait(const DrdThreadId tid, const Addr semaphore,
const Bool waited);
Modified: trunk/exp-drd/drd_track.h
===================================================================
--- trunk/exp-drd/drd_track.h 2008-03-01 11:39:00 UTC (rev 7521)
+++ trunk/exp-drd/drd_track.h 2008-03-01 13:44:24 UTC (rev 7522)
@@ -34,8 +34,8 @@
void drd_pre_mutex_unlock(const DrdThreadId tid, const Addr mutex,
const MutexT mutex_type);
-void drd_post_cond_init(Addr cond, SizeT s);
-void drd_pre_cond_destroy(Addr cond);
+void drd_pre_cond_init(Addr cond, SizeT s);
+void drd_post_cond_destroy(Addr cond);
void drd_semaphore_init(const Addr semaphore, const SizeT size,
const Word pshared, const Word value);
|
|
From: <sv...@va...> - 2008-03-01 11:43:29
|
Author: bart
Date: 2008-03-01 11:39:00 +0000 (Sat, 01 Mar 2008)
New Revision: 7521
Log:
Minor simplification of DRD suppression file.
Modified:
trunk/glibc-2.X-drd.supp
Modified: trunk/glibc-2.X-drd.supp
===================================================================
--- trunk/glibc-2.X-drd.supp 2008-03-01 10:50:45 UTC (rev 7520)
+++ trunk/glibc-2.X-drd.supp 2008-03-01 11:39:00 UTC (rev 7521)
@@ -191,18 +191,8 @@
pthread
exp-drd:ConflictingAccess
fun:__deallocate_stack
- fun:__free_tcb
- fun:start_thread
- fun:clone
}
{
- pthread stack_cache_lock
- exp-drd:ConflictingAccess
- fun:__deallocate_stack
- fun:start_thread
- fun:clone
-}
-{
pthread
exp-drd:ConflictingAccess
fun:__pthread_enable_asynccancel
|
|
From: <sv...@va...> - 2008-03-01 10:50:43
|
Author: bart
Date: 2008-03-01 10:50:45 +0000 (Sat, 01 Mar 2008)
New Revision: 7520
Log:
Replaced per-thread start/stop recording mechanism by extra suppression patterns.
Modified:
trunk/glibc-2.X-drd.supp
Modified: trunk/glibc-2.X-drd.supp
===================================================================
--- trunk/glibc-2.X-drd.supp 2008-03-01 10:49:37 UTC (rev 7519)
+++ trunk/glibc-2.X-drd.supp 2008-03-01 10:50:45 UTC (rev 7520)
@@ -110,43 +110,56 @@
pthread
exp-drd:ConflictingAccess
fun:pthread_create@@GLIBC_*
- fun:pthread_create@*
+ fun:pthread_create*
}
{
pthread
exp-drd:ConflictingAccess
+ fun:pthread_mutex_lock
+ fun:pthread_mutex_lock
+}
+{
+ pthread
+ exp-drd:ConflictingAccess
fun:clone
fun:pthread_create@@GLIBC_*
- fun:pthread_create@*
+ fun:pthread_create*
}
{
pthread
exp-drd:ConflictingAccess
fun:do_clone
fun:pthread_create@@GLIBC_*
- fun:pthread_create@*
+ fun:pthread_create*
}
{
pthread
exp-drd:ConflictingAccess
fun:memset
fun:pthread_create@@GLIBC_*
- fun:pthread_create@*
+ fun:pthread_create*
}
{
pthread
exp-drd:ConflictingAccess
+ fun:_dl_allocate_tls_init
+ fun:pthread_create@@GLIBC_*
+ fun:pthread_create*
+}
+{
+ pthread
+ exp-drd:ConflictingAccess
fun:memset
fun:_dl_allocate_tls_init
fun:pthread_create@@GLIBC_*
- fun:pthread_create@*
+ fun:pthread_create*
}
{
pthread
exp-drd:ConflictingAccess
fun:mempcpy
fun:pthread_create@@GLIBC_*
- fun:pthread_create@*
+ fun:pthread_create*
}
{
pthread
@@ -157,6 +170,13 @@
{
pthread
exp-drd:ConflictingAccess
+ fun:__deallocate_stack
+ fun:pthread_join
+ fun:pthread_join
+}
+{
+ pthread
+ exp-drd:ConflictingAccess
fun:free_stacks
fun:__deallocate_stack
fun:pthread_join
|
|
From: <sv...@va...> - 2008-03-01 10:49:37
|
Author: bart
Date: 2008-03-01 10:49:37 +0000 (Sat, 01 Mar 2008)
New Revision: 7519
Log:
Eliminated per-thread start/stop recording mechanism, which should make DRD a little bit faster. malloc()/free() is now intercepted on all platforms instead of just on i386.
Modified:
trunk/exp-drd/Makefile.am
trunk/exp-drd/drd_clientreq.c
trunk/exp-drd/drd_clientreq.h
trunk/exp-drd/drd_intercepts.c
trunk/exp-drd/drd_main.c
trunk/exp-drd/drd_thread.c
trunk/exp-drd/drd_thread.h
trunk/exp-drd/tests/tc20_verifywrap2.stderr.exp2
trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit
Modified: trunk/exp-drd/Makefile.am
===================================================================
--- trunk/exp-drd/Makefile.am 2008-03-01 07:41:17 UTC (rev 7518)
+++ trunk/exp-drd/Makefile.am 2008-03-01 10:49:37 UTC (rev 7519)
@@ -28,42 +28,47 @@
vgpreload_exp_drd_x86_linux_so_CCASFLAGS = $(AM_CCASFLAGS_X86_LINUX)
vgpreload_exp_drd_x86_linux_so_DEPENDENCIES = $(LIBREPLACEMALLOC_X86_LINUX)
vgpreload_exp_drd_x86_linux_so_LDFLAGS = $(PRELOAD_LDFLAGS_X86_LINUX)\
- $(LIBREPLACEMALLOC_LDFLAGS_X86_LINUX)
+ $(LIBREPLACEMALLOC_LDFLAGS_X86_LINUX)
vgpreload_exp_drd_amd64_linux_so_SOURCES = $(VGPRELOAD_DRD_SOURCES_COMMON)
vgpreload_exp_drd_amd64_linux_so_CPPFLAGS = $(AM_CPPFLAGS_AMD64_LINUX)
vgpreload_exp_drd_amd64_linux_so_CFLAGS = $(AM_CFLAGS_AMD64_LINUX) $(AM_CFLAGS_PIC)
vgpreload_exp_drd_amd64_linux_so_CCASFLAGS = $(AM_CCASFLAGS_AMD64_LINUX)
vgpreload_exp_drd_amd64_linux_so_DEPENDENCIES =
-vgpreload_exp_drd_amd64_linux_so_LDFLAGS = $(PRELOAD_LDFLAGS_AMD64_LINUX)
+vgpreload_exp_drd_amd64_linux_so_LDFLAGS = $(PRELOAD_LDFLAGS_AMD64_LINUX)\
+ $(LIBREPLACEMALLOC_LDFLAGS_AMD64_LINUX)
vgpreload_exp_drd_ppc32_linux_so_SOURCES = $(VGPRELOAD_DRD_SOURCES_COMMON)
vgpreload_exp_drd_ppc32_linux_so_CPPFLAGS = $(AM_CPPFLAGS_PPC32_LINUX)
vgpreload_exp_drd_ppc32_linux_so_CFLAGS = $(AM_CFLAGS_PPC32_LINUX) $(AM_CFLAGS_PIC)
vgpreload_exp_drd_ppc32_linux_so_CCASFLAGS = $(AM_CCASFLAGS_PPC32_LINUX)
vgpreload_exp_drd_ppc32_linux_so_DEPENDENCIES =
-vgpreload_exp_drd_ppc32_linux_so_LDFLAGS = $(PRELOAD_LDFLAGS_PPC32_LINUX)
+vgpreload_exp_drd_ppc32_linux_so_LDFLAGS = $(PRELOAD_LDFLAGS_PPC32_LINUX)\
+ $(LIBREPLACEMALLOC_LDFLAGS_PPC32_LINUX)
vgpreload_exp_drd_ppc64_linux_so_SOURCES = $(VGPRELOAD_DRD_SOURCES_COMMON)
vgpreload_exp_drd_ppc64_linux_so_CPPFLAGS = $(AM_CPPFLAGS_PPC64_LINUX)
vgpreload_exp_drd_ppc64_linux_so_CFLAGS = $(AM_CFLAGS_PPC64_LINUX) $(AM_CFLAGS_PIC)
vgpreload_exp_drd_ppc64_linux_so_CCASFLAGS = $(AM_CCASFLAGS_PPC64_LINUX)
vgpreload_exp_drd_ppc64_linux_so_DEPENDENCIES =
-vgpreload_exp_drd_ppc64_linux_so_LDFLAGS = $(PRELOAD_LDFLAGS_PPC64_LINUX)
+vgpreload_exp_drd_ppc64_linux_so_LDFLAGS = $(PRELOAD_LDFLAGS_PPC64_LINUX)\
+ $(LIBREPLACEMALLOC_LDFLAGS_PPC64_LINUX)
vgpreload_exp_drd_ppc32_aix5_so_SOURCES = $(VGPRELOAD_DRD_SOURCES_COMMON)
vgpreload_exp_drd_ppc32_aix5_so_CPPFLAGS = $(AM_CPPFLAGS_PPC32_AIX5)
vgpreload_exp_drd_ppc32_aix5_so_CFLAGS = $(AM_CFLAGS_PPC32_AIX5) $(AM_CFLAGS_PIC)
vgpreload_exp_drd_ppc32_aix5_so_CCASFLAGS = $(AM_CCASFLAGS_PPC32_AIX5)
vgpreload_exp_drd_ppc32_aix5_so_DEPENDENCIES =
-vgpreload_exp_drd_ppc32_aix5_so_LDFLAGS = $(PRELOAD_LDFLAGS_PPC32_AIX5)
+vgpreload_exp_drd_ppc32_aix5_so_LDFLAGS = $(PRELOAD_LDFLAGS_PPC32_AIX5)\
+ $(LIBREPLACEMALLOC_LDFLAGS_PPC32_AIX5)
vgpreload_exp_drd_ppc64_aix5_so_SOURCES = $(VGPRELOAD_DRD_SOURCES_COMMON)
vgpreload_exp_drd_ppc64_aix5_so_CPPFLAGS = $(AM_CPPFLAGS_PPC64_AIX5)
vgpreload_exp_drd_ppc64_aix5_so_CFLAGS = $(AM_CFLAGS_PPC64_AIX5) $(AM_CFLAGS_PIC)
vgpreload_exp_drd_ppc64_aix5_so_CCASFLAGS = $(AM_CCASFLAGS_PPC64_AIX5)
vgpreload_exp_drd_ppc64_aix5_so_DEPENDENCIES =
-vgpreload_exp_drd_ppc64_aix5_so_LDFLAGS = $(PRELOAD_LDFLAGS_PPC64_AIX5)
+vgpreload_exp_drd_ppc64_aix5_so_LDFLAGS = $(PRELOAD_LDFLAGS_PPC64_AIX5)\
+ $(LIBREPLACEMALLOC_LDFLAGS_PPC64_AIX5)
DRD_SOURCES_COMMON = \
Modified: trunk/exp-drd/drd_clientreq.c
===================================================================
--- trunk/exp-drd/drd_clientreq.c 2008-03-01 07:41:17 UTC (rev 7518)
+++ trunk/exp-drd/drd_clientreq.c 2008-03-01 10:49:37 UTC (rev 7519)
@@ -94,11 +94,11 @@
break;
case VG_USERREQ__DRD_START_SUPPRESSION:
- drd_start_suppression(arg[1], arg[1] + arg[2], "client");
+ drd_start_suppression(arg[1], arg[2], "client");
break;
case VG_USERREQ__DRD_FINISH_SUPPRESSION:
- drd_finish_suppression(arg[1], arg[1] + arg[2]);
+ drd_finish_suppression(arg[1], arg[2]);
break;
case VG_USERREQ__DRD_SUPPRESS_CURRENT_STACK:
@@ -110,14 +110,6 @@
thread_new_segment(PtThreadIdToDrdThreadId(arg[1]));
break;
- case VG_USERREQ__DRD_START_RECORDING:
- thread_start_recording(PtThreadIdToDrdThreadId(arg[1]));
- break;
-
- case VG_USERREQ__DRD_STOP_RECORDING:
- thread_stop_recording(PtThreadIdToDrdThreadId(arg[1]));
- break;
-
case VG_USERREQ__SET_PTHREADID:
thread_set_pthreadid(thread_get_running_tid(), arg[1]);
break;
Modified: trunk/exp-drd/drd_clientreq.h
===================================================================
--- trunk/exp-drd/drd_clientreq.h 2008-03-01 07:41:17 UTC (rev 7518)
+++ trunk/exp-drd/drd_clientreq.h 2008-03-01 10:49:37 UTC (rev 7519)
@@ -16,11 +16,11 @@
/* To tell the drd tool to suppress data race detection on the specified */
/* address range. */
VG_USERREQ__DRD_START_SUPPRESSION,
- /* args: start address, size in bytes */
+ /* args: start address, end address */
/* To tell the drd tool no longer to suppress data race detection on the */
/* specified address range. */
VG_USERREQ__DRD_FINISH_SUPPRESSION,
- /* args: start address, size in bytes */
+ /* args: start address, end address */
/* Ask drd to suppress data race reports on all currently allocated stack */
/* data of the current thread. */
VG_USERREQ__DRD_SUPPRESS_CURRENT_STACK,
@@ -29,15 +29,6 @@
VG_USERREQ__DRD_START_NEW_SEGMENT,
/* args: POSIX thread ID. */
- /* To tell the drd tool to start again recording memory accesses for the */
- /* specified thread. */
- VG_USERREQ__DRD_START_RECORDING,
- /* args: POSIX thread ID. */
- /* To tell the drd tool to stop recording memory accesses for the */
- /* specified thread. */
- VG_USERREQ__DRD_STOP_RECORDING,
- /* args: POSIX thread ID. */
-
/* Tell the core the pthread_t of the running thread */
VG_USERREQ__SET_PTHREADID,
/* args: pthread_t. */
Modified: trunk/exp-drd/drd_intercepts.c
===================================================================
--- trunk/exp-drd/drd_intercepts.c 2008-03-01 07:41:17 UTC (rev 7518)
+++ trunk/exp-drd/drd_intercepts.c 2008-03-01 10:49:37 UTC (rev 7519)
@@ -40,7 +40,8 @@
originates from Valgrind.
------------------------------------------------------------------ */
-// Make sure pthread_spinlock_t is available on glibc 2.3.2 systems.
+// Make sure pthread_spinlock_t is available when compiling with older glibc
+// versions (2.3 or before).
#ifndef _GNU_SOURCE
#define _GNU_SOURCE
#endif
@@ -125,32 +126,9 @@
{
int res;
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_START_SUPPRESSION,
- p, size, 0, 0, 0);
+ p, (char*)p + size, 0, 0, 0);
}
-#if 0
-static void vg_finish_suppression(const void* const p, size_t const size)
-{
- int res;
- VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_FINISH_SUPPRESSION,
- p, size, 0, 0, 0);
-}
-#endif
-
-static void vg_start_recording(void)
-{
- int res;
- VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_START_RECORDING,
- pthread_self(), 0, 0, 0, 0);
-}
-
-static void vg_stop_recording(void)
-{
- int res;
- VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_STOP_RECORDING,
- pthread_self(), 0, 0, 0, 0);
-}
-
static void vg_set_joinable(const pthread_t tid, const int joinable)
{
int res;
@@ -249,9 +227,7 @@
pthread_cond_init(&vgargs.cond, 0);
pthread_mutex_lock(&vgargs.mutex);
#endif
- vg_stop_recording();
CALL_FN_W_WWWW(ret, fn, thread, attr, vg_thread_wrapper, &vgargs);
- vg_start_recording();
#if 0
pthread_cond_wait(&vgargs.cond, &vgargs.mutex);
pthread_mutex_unlock(&vgargs.mutex);
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-03-01 07:41:17 UTC (rev 7518)
+++ trunk/exp-drd/drd_main.c 2008-03-01 10:49:37 UTC (rev 7519)
@@ -150,11 +150,9 @@
{
Segment* sg;
- thread_set_vg_running_tid(VG_(get_running_tid)());
+ tl_assert(thread_get_running_tid()
+ == VgThreadIdToDrdThreadId(VG_(get_running_tid())));
- if (! thread_is_recording(thread_get_running_tid()))
- return;
-
#if 1
if (drd_trace_mem || (addr == drd_trace_address))
{
@@ -192,11 +190,9 @@
{
Segment* sg;
- thread_set_vg_running_tid(VG_(get_running_tid)());
+ tl_assert(thread_get_running_tid()
+ == VgThreadIdToDrdThreadId(VG_(get_running_tid())));
- if (! thread_is_recording(thread_get_running_tid()))
- return;
-
#if 1
if (drd_trace_mem || (addr == drd_trace_address))
{
@@ -242,23 +238,50 @@
}
}
+static void drd_pre_mem_read_asciiz(const CorePart part,
+ const ThreadId tid,
+ Char* const s,
+ const Addr a)
+{
+ const char* p = (void*)a;
+ SizeT size = 0;
+
+ /* Note: the expression '*p' reads client memory and may crash if the */
+ /* client provided an invalid pointer ! */
+ while (*p)
+ {
+ p++;
+ size++;
+ }
+ // To do: find out what a reasonable upper limit on 'size' is.
+ tl_assert(size < 4096);
+ if (size > 0)
+ {
+ drd_trace_load(a, size);
+ }
+}
+
static void drd_post_mem_write(const CorePart part,
const ThreadId tid,
const Addr a,
const SizeT size)
{
+ thread_set_vg_running_tid(VG_(get_running_tid)());
if (size > 0)
{
drd_trace_store(a, size);
}
}
-static void drd_start_using_mem(const Addr a1, const Addr a2)
+static void drd_start_using_mem(const Addr a1, const SizeT len)
{
+ const Addr a2 = a1 + len;
+
+ tl_assert(a1 < a2);
+
thread_set_vg_running_tid(VG_(get_running_tid)());
- if (a1 <= drd_trace_address && drd_trace_address < a2
- && thread_is_recording(thread_get_running_tid()))
+ if (a1 <= drd_trace_address && drd_trace_address < a2)
{
VG_(message)(Vg_UserMsg, "start 0x%lx size %ld %s (tracing 0x%lx)",
a1, a2 - a1, thread_get_name(thread_get_running_tid()),
@@ -268,10 +291,13 @@
}
}
-static void drd_stop_using_mem(const Addr a1, const Addr a2)
+static void drd_stop_using_mem(const Addr a1, const SizeT len)
{
- if (a1 <= drd_trace_address && drd_trace_address < a2
- && thread_is_recording(thread_get_running_tid()))
+ const Addr a2 = a1 + len;
+
+ tl_assert(a1 < a2);
+
+ if (a1 <= drd_trace_address && drd_trace_address < a2)
{
VG_(message)(Vg_UserMsg, "end 0x%lx size %ld %s (tracing 0x%lx)",
a1, a2 - a1, thread_get_name(thread_get_running_tid()),
@@ -284,13 +310,20 @@
drd_suppression_stop_using_mem(a1, a2);
}
+static
+void drd_start_using_mem_w_perms(const Addr a, const SizeT len,
+ const Bool rr, const Bool ww, const Bool xx)
+{
+ drd_start_using_mem(a, len);
+}
+
/* Called by the core when the stack of a thread grows, to indicate that */
/* the addresses in range [ a, a + len [ may now be used by the client. */
/* Assumption: stacks grow downward. */
static void drd_start_using_mem_stack(const Addr a, const SizeT len)
{
thread_set_stack_min(thread_get_running_tid(), a - VG_STACK_REDZONE_SZB);
- drd_start_using_mem(a, a + len);
+ drd_start_using_mem(a, len);
}
/* Called by the core when the stack of a thread shrinks, to indicate that */
@@ -301,18 +334,17 @@
thread_set_vg_running_tid(VG_(get_running_tid)());
thread_set_stack_min(thread_get_running_tid(),
a + len - VG_STACK_REDZONE_SZB);
- drd_stop_using_mem(a, a + len);
+ drd_stop_using_mem(a, len);
}
-static void drd_start_using_mem_mmap(Addr a, SizeT len,
- Bool rr, Bool ww, Bool xx)
+static void drd_start_using_mem_stack_signal(const Addr a, const SizeT len)
{
- drd_start_using_mem(a, a + len);
+ drd_start_using_mem(a, len);
}
-static void drd_stop_using_mem_munmap(Addr a, SizeT len)
+static void drd_stop_using_mem_stack_signal(Addr a, SizeT len)
{
- drd_stop_using_mem(a, a + len);
+ drd_stop_using_mem(a, len);
}
static
@@ -797,15 +829,22 @@
drd_print_usage,
drd_print_debug_usage);
+ // Error handling.
drd_register_error_handlers();
// Core event tracking.
VG_(track_pre_mem_read) (drd_pre_mem_read);
+ VG_(track_pre_mem_read_asciiz) (drd_pre_mem_read_asciiz);
VG_(track_post_mem_write) (drd_post_mem_write);
+ VG_(track_new_mem_brk) (drd_start_using_mem);
+ VG_(track_new_mem_mmap) (drd_start_using_mem_w_perms);
VG_(track_new_mem_stack) (drd_start_using_mem_stack);
+ VG_(track_new_mem_stack_signal) (drd_start_using_mem_stack_signal);
+ VG_(track_new_mem_startup) (drd_start_using_mem_w_perms);
+ VG_(track_die_mem_brk) (drd_stop_using_mem);
+ VG_(track_die_mem_munmap) (drd_stop_using_mem);
VG_(track_die_mem_stack) (drd_stop_using_mem_stack);
- VG_(track_new_mem_mmap) (drd_start_using_mem_mmap);
- VG_(track_die_mem_munmap) (drd_stop_using_mem_munmap);
+ VG_(track_die_mem_stack_signal) (drd_stop_using_mem_stack_signal);
VG_(track_start_client_code) (drd_start_client_code);
VG_(track_pre_thread_ll_create) (drd_pre_thread_create);
VG_(track_pre_thread_first_insn)(drd_post_thread_create);
Modified: trunk/exp-drd/drd_thread.c
===================================================================
--- trunk/exp-drd/drd_thread.c 2008-03-01 07:41:17 UTC (rev 7518)
+++ trunk/exp-drd/drd_thread.c 2008-03-01 10:49:37 UTC (rev 7519)
@@ -63,7 +63,6 @@
/// If true, indicates that there is a corresponding POSIX thread ID and
/// a corresponding OS thread that is detached.
Bool detached_posix_thread;
- Bool is_recording;
} ThreadInfo;
@@ -155,7 +154,6 @@
VG_(snprintf)(s_threadinfo[i].name, sizeof(s_threadinfo[i].name),
"thread %d", tid);
s_threadinfo[i].name[sizeof(s_threadinfo[i].name) - 1] = 0;
- s_threadinfo[i].is_recording = True;
if (s_threadinfo[i].first != 0)
VG_(printf)("drd thread id = %d\n", i);
tl_assert(s_threadinfo[i].first == 0);
@@ -723,26 +721,6 @@
}
}
-void thread_start_recording(const DrdThreadId tid)
-{
- tl_assert(0 <= tid && tid < DRD_N_THREADS && tid != DRD_INVALID_THREADID);
- tl_assert(! s_threadinfo[tid].is_recording);
- s_threadinfo[tid].is_recording = True;
-}
-
-void thread_stop_recording(const DrdThreadId tid)
-{
- tl_assert(0 <= tid && tid < DRD_N_THREADS && tid != DRD_INVALID_THREADID);
- tl_assert(s_threadinfo[tid].is_recording);
- s_threadinfo[tid].is_recording = False;
-}
-
-Bool thread_is_recording(const DrdThreadId tid)
-{
- tl_assert(0 <= tid && tid < DRD_N_THREADS && tid != DRD_INVALID_THREADID);
- return s_threadinfo[tid].is_recording;
-}
-
void thread_print_all(void)
{
unsigned i;
Modified: trunk/exp-drd/drd_thread.h
===================================================================
--- trunk/exp-drd/drd_thread.h 2008-03-01 07:41:17 UTC (rev 7518)
+++ trunk/exp-drd/drd_thread.h 2008-03-01 10:49:37 UTC (rev 7519)
@@ -81,9 +81,6 @@
void thread_combine_vc(const DrdThreadId joiner, const DrdThreadId joinee);
void thread_combine_vc2(const DrdThreadId tid, const VectorClock* const vc);
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);
-Bool thread_is_recording(const DrdThreadId tid);
void thread_print_all(void);
void thread_report_races(const DrdThreadId tid);
void thread_report_races_segment(const DrdThreadId tid,
Modified: trunk/exp-drd/tests/tc20_verifywrap2.stderr.exp2
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap2.stderr.exp2 2008-03-01 07:41:17 UTC (rev 7518)
+++ trunk/exp-drd/tests/tc20_verifywrap2.stderr.exp2 2008-03-01 10:49:37 UTC (rev 7519)
@@ -5,9 +5,6 @@
---------------- pthread_create/join ----------------
-[1/1] mutex_init recursive mutex 0x........
-[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 0
-[1/1] mutex_unlock recursive mutex 0x........ rc 1
Conflicting store by thread 1 at 0x........ size 2
at 0x........: main (tc20_verifywrap.c:78)
Allocation context: unknown
@@ -115,7 +112,8 @@
[1/1] mutex_destroy error checking mutex 0x........
[1/1] mutex_destroy invalid mutex 0x........
[1/1] mutex_destroy invalid mutex 0x........
-[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
+[1/1] mutex_init recursive mutex 0x........
+[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 0
[1/1] mutex_unlock recursive mutex 0x........ rc 1
[1/1] post_mutex_lock recursive mutex 0x........ rc 0 owner 1
[1/1] mutex_unlock recursive mutex 0x........ rc 1
Modified: trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit
===================================================================
--- trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit 2008-03-01 07:41:17 UTC (rev 7518)
+++ trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit 2008-03-01 10:49:37 UTC (rev 7519)
@@ -1,127 +1,6 @@
-Conflicting load by thread 1 at 0x........ size 4
- at 0x........: __deallocate_stack (in libpthread-?.?.so)
- by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join (drd_intercepts.c:?)
- by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache_lock (offset 0, size 4) in libpthread-?.?.so, libpthread.so.0:BSS
-Other segment start (thread 2)
- (thread finished, call stack no longer available)
-Other segment end (thread 2)
- (thread finished, call stack no longer available)
-
-Conflicting store by thread 1 at 0x........ size 4
- at 0x........: __deallocate_stack (in libpthread-?.?.so)
- by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join (drd_intercepts.c:?)
- by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache_lock (offset 0, size 4) in libpthread-?.?.so, libpthread.so.0:BSS
-Other segment start (thread 2)
- (thread finished, call stack no longer available)
-Other segment end (thread 2)
- (thread finished, call stack no longer available)
-
-Conflicting store by thread 1 at 0x........ size 8
- at 0x........: __deallocate_stack (in libpthread-?.?.so)
- by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join (drd_intercepts.c:?)
- by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_used (offset 8, size 16) in libpthread-?.?.so, libpthread.so.0:Data
-Other segment start (thread 2)
- (thread finished, call stack no longer available)
-Other segment end (thread 2)
- (thread finished, call stack no longer available)
-
-Conflicting store by thread 1 at 0x........ size 8
- at 0x........: __deallocate_stack (in libpthread-?.?.so)
- by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join (drd_intercepts.c:?)
- by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_used (offset 0, size 16) in libpthread-?.?.so, libpthread.so.0:Data
-Other segment start (thread 2)
- (thread finished, call stack no longer available)
-Other segment end (thread 2)
- (thread finished, call stack no longer available)
-
-Conflicting load by thread 1 at 0x........ size 8
- at 0x........: __deallocate_stack (in libpthread-?.?.so)
- by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join (drd_intercepts.c:?)
- by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache (offset 0, size 16) in libpthread-?.?.so, libpthread.so.0:Data
-Other segment start (thread 2)
- (thread finished, call stack no longer available)
-Other segment end (thread 2)
- (thread finished, call stack no longer available)
-
-Conflicting store by thread 1 at 0x........ size 8
- at 0x........: __deallocate_stack (in libpthread-?.?.so)
- by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join (drd_intercepts.c:?)
- by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache (offset 8, size 16) in libpthread-?.?.so, libpthread.so.0:Data
-Other segment start (thread 2)
- (thread finished, call stack no longer available)
-Other segment end (thread 2)
- (thread finished, call stack no longer available)
-
-Conflicting store by thread 1 at 0x........ size 8
- at 0x........: __deallocate_stack (in libpthread-?.?.so)
- by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join (drd_intercepts.c:?)
- by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache (offset 0, size 16) in libpthread-?.?.so, libpthread.so.0:Data
-Other segment start (thread 2)
- (thread finished, call stack no longer available)
-Other segment end (thread 2)
- (thread finished, call stack no longer available)
-
-Conflicting load by thread 1 at 0x........ size 8
- at 0x........: __deallocate_stack (in libpthread-?.?.so)
- by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join (drd_intercepts.c:?)
- by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache_actsize (offset 0, size 8) in libpthread-?.?.so, libpthread.so.0:BSS
-Other segment start (thread 2)
- (thread finished, call stack no longer available)
-Other segment end (thread 2)
- (thread finished, call stack no longer available)
-
-Conflicting store by thread 1 at 0x........ size 8
- at 0x........: __deallocate_stack (in libpthread-?.?.so)
- by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join (drd_intercepts.c:?)
- by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache_actsize (offset 0, size 8) in libpthread-?.?.so, libpthread.so.0:BSS
-Other segment start (thread 2)
- (thread finished, call stack no longer available)
-Other segment end (thread 2)
- (thread finished, call stack no longer available)
-
-Conflicting load by thread 1 at 0x........ size 4
- at 0x........: __deallocate_stack (in libpthread-?.?.so)
- by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join (drd_intercepts.c:?)
- by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache_lock (offset 0, size 4) in libpthread-?.?.so, libpthread.so.0:BSS
-Other segment start (thread 2)
- (thread finished, call stack no longer available)
-Other segment end (thread 2)
- (thread finished, call stack no longer available)
-
-Conflicting store by thread 1 at 0x........ size 4
- at 0x........: __deallocate_stack (in libpthread-?.?.so)
- by 0x........: pthread_join (in libpthread-?.?.so)
- by 0x........: pthread_join (drd_intercepts.c:?)
- by 0x........: main (tc22_exit_w_lock.c:43)
-Allocation context: stack_cache_lock (offset 0, size 4) in libpthread-?.?.so, libpthread.so.0:BSS
-Other segment start (thread 2)
- (thread finished, call stack no longer available)
-Other segment end (thread 2)
- (thread finished, call stack no longer available)
-
Mutex still locked at thread exit: address 0x........, recursion count 1, owner 3.
at 0x........: pthread_join (drd_intercepts.c:?)
by 0x........: main (tc22_exit_w_lock.c:43)
-ERROR SUMMARY: 12 errors from 12 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
|
|
From: <sv...@va...> - 2008-03-01 07:41:14
|
Author: bart
Date: 2008-03-01 07:41:17 +0000 (Sat, 01 Mar 2008)
New Revision: 7518
Log:
Fixed compiler warning (duplicate const).
Modified:
trunk/exp-drd/drd_main.c
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-03-01 07:35:52 UTC (rev 7517)
+++ trunk/exp-drd/drd_main.c 2008-03-01 07:41:17 UTC (rev 7518)
@@ -684,7 +684,7 @@
/* Based on the function with the same name in Helgrind's hg_main.c */
static void instrument_memory_bus_event(IRSB* const bb,
- const IRMBusEvent const event)
+ const IRMBusEvent event)
{
switch (event)
{
|
|
From: <sv...@va...> - 2008-03-01 07:35:57
|
Author: bart
Date: 2008-03-01 07:35:52 +0000 (Sat, 01 Mar 2008)
New Revision: 7517
Log:
Added -Wsign-compare.
Modified:
trunk/exp-drd/Makefile.am
trunk/exp-drd/drd_thread.c
Modified: trunk/exp-drd/Makefile.am
===================================================================
--- trunk/exp-drd/Makefile.am 2008-03-01 07:25:13 UTC (rev 7516)
+++ trunk/exp-drd/Makefile.am 2008-03-01 07:35:52 UTC (rev 7517)
@@ -100,12 +100,12 @@
priv_drd_clientreq.h \
pub_drd_bitmap.h
-AM_CFLAGS_X86_LINUX += -I$(top_srcdir)/coregrind
-AM_CFLAGS_AMD64_LINUX += -I$(top_srcdir)/coregrind
-AM_CFLAGS_PPC32_LINUX += -I$(top_srcdir)/coregrind
-AM_CFLAGS_PPC64_LINUX += -I$(top_srcdir)/coregrind
-AM_CFLAGS_PPC32_AIX5 += -I$(top_srcdir)/coregrind
-AM_CFLAGS_PPC64_AIX5 += -I$(top_srcdir)/coregrind
+AM_CFLAGS_X86_LINUX += -I$(top_srcdir)/coregrind -Wsign-compare
+AM_CFLAGS_AMD64_LINUX += -I$(top_srcdir)/coregrind -Wsign-compare
+AM_CFLAGS_PPC32_LINUX += -I$(top_srcdir)/coregrind -Wsign-compare
+AM_CFLAGS_PPC64_LINUX += -I$(top_srcdir)/coregrind -Wsign-compare
+AM_CFLAGS_PPC32_AIX5 += -I$(top_srcdir)/coregrind -Wsign-compare
+AM_CFLAGS_PPC64_AIX5 += -I$(top_srcdir)/coregrind -Wsign-compare
exp_drd_x86_linux_SOURCES = $(DRD_SOURCES_COMMON)
exp_drd_x86_linux_CPPFLAGS = $(AM_CPPFLAGS_X86_LINUX)
Modified: trunk/exp-drd/drd_thread.c
===================================================================
--- trunk/exp-drd/drd_thread.c 2008-03-01 07:25:13 UTC (rev 7516)
+++ trunk/exp-drd/drd_thread.c 2008-03-01 07:35:52 UTC (rev 7517)
@@ -543,7 +543,7 @@
*/
static void thread_compute_minimum_vc(VectorClock* vc)
{
- int i;
+ unsigned i;
Bool first;
Segment* latest_sg;
@@ -564,7 +564,7 @@
static void thread_compute_maximum_vc(VectorClock* vc)
{
- int i;
+ unsigned i;
Bool first;
Segment* latest_sg;
@@ -590,8 +590,8 @@
*/
static void thread_discard_ordered_segments(void)
{
+ unsigned i;
VectorClock thread_vc_min;
- int i;
s_discard_ordered_segments_count++;
|
|
From: <sv...@va...> - 2008-03-01 07:25:12
|
Author: bart
Date: 2008-03-01 07:25:13 +0000 (Sat, 01 Mar 2008)
New Revision: 7516
Log:
When started with linuxthreads, the DRD tool now stops as soon as the first thread is created.
Modified:
trunk/exp-drd/drd_intercepts.c
Modified: trunk/exp-drd/drd_intercepts.c
===================================================================
--- trunk/exp-drd/drd_intercepts.c 2008-02-29 19:49:06 UTC (rev 7515)
+++ trunk/exp-drd/drd_intercepts.c 2008-03-01 07:25:13 UTC (rev 7516)
@@ -50,6 +50,7 @@
#include <pthread.h>
#include <semaphore.h>
#include <stdio.h>
+#include <stdlib.h>
#include <unistd.h>
#include "drd_clientreq.h"
#include "pub_tool_redir.h"
@@ -81,6 +82,7 @@
// Local variables.
static int vg_main_thread_state_is_set = 0;
+static pid_t vg_main_thread_pid;
// Function definitions.
@@ -160,6 +162,17 @@
static void* vg_thread_wrapper(void* arg)
{
int res;
+
+ if (getpid() != vg_main_thread_pid)
+ {
+ fprintf(stderr,
+ "Detected the linuxthreads threading library.\n"
+ "Sorry, but DRD does not support linuxthreads.\n"
+ "Please try to run DRD on a system with NPTL instead.\n"
+ "Giving up.\n");
+ abort();
+ }
+
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__DRD_SUPPRESS_CURRENT_STACK,
0, 0, 0, 0, 0);
@@ -189,6 +202,8 @@
{
int res;
+ vg_main_thread_pid = getpid();
+
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__DRD_SUPPRESS_CURRENT_STACK,
0, 0, 0, 0, 0);
|
|
From: Tom H. <th...@cy...> - 2008-03-01 05:19:21
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-03-01 03:15:21 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 367 tests, 102 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/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/mremap (stderr) none/tests/mremap2 (stdout) 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) exp-drd/tests/fp_race (stderr) exp-drd/tests/fp_race2 (stderr) exp-drd/tests/hg01_all_ok (stderr) exp-drd/tests/hg02_deadlock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/hg04_race (stderr) exp-drd/tests/hg05_race2 (stderr) exp-drd/tests/hg06_readshared (stderr) exp-drd/tests/matinv (stderr) exp-drd/tests/pth_barrier (stderr) exp-drd/tests/pth_barrier2 (stderr) exp-drd/tests/pth_barrier3 (stderr) exp-drd/tests/pth_broadcast (stderr) exp-drd/tests/pth_cond_race (stderr) exp-drd/tests/pth_cond_race2 (stderr) exp-drd/tests/pth_create_chain (stderr) exp-drd/tests/pth_detached (stderr) exp-drd/tests/pth_detached2 (stderr) exp-drd/tests/sem_as_mutex (stderr) exp-drd/tests/sem_as_mutex2 (stderr) exp-drd/tests/sigalrm (stderr) exp-drd/tests/tc01_simple_race (stderr) exp-drd/tests/tc02_simple_tls (stderr) exp-drd/tests/tc03_re_excl (stderr) exp-drd/tests/tc05_simple_race (stderr) exp-drd/tests/tc06_two_races (stderr) exp-drd/tests/tc09_bad_unlock (stderr) exp-drd/tests/tc11_XCHG (stderr) exp-drd/tests/tc12_rwl_trivial (stderr) exp-drd/tests/tc16_byterace (stderr) exp-drd/tests/tc17_sembar (stderr) exp-drd/tests/tc18_semabuse (stderr) exp-drd/tests/tc20_verifywrap (stderr) exp-drd/tests/tc20_verifywrap2 (stderr) exp-drd/tests/tc21_pthonce (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) exp-drd/tests/tc23_bogus_condwait (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 366 tests, 101 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/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/mremap (stderr) none/tests/mremap2 (stdout) 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) exp-drd/tests/fp_race (stderr) exp-drd/tests/fp_race2 (stderr) exp-drd/tests/hg01_all_ok (stderr) exp-drd/tests/hg02_deadlock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/hg04_race (stderr) exp-drd/tests/hg05_race2 (stderr) exp-drd/tests/hg06_readshared (stderr) exp-drd/tests/matinv (stderr) exp-drd/tests/pth_barrier (stderr) exp-drd/tests/pth_barrier2 (stderr) exp-drd/tests/pth_barrier3 (stderr) exp-drd/tests/pth_broadcast (stderr) exp-drd/tests/pth_cond_race (stderr) exp-drd/tests/pth_cond_race2 (stderr) exp-drd/tests/pth_create_chain (stderr) exp-drd/tests/pth_detached (stderr) exp-drd/tests/pth_detached2 (stderr) exp-drd/tests/sem_as_mutex (stderr) exp-drd/tests/sem_as_mutex2 (stderr) exp-drd/tests/sigalrm (stderr) exp-drd/tests/tc01_simple_race (stderr) exp-drd/tests/tc02_simple_tls (stderr) exp-drd/tests/tc03_re_excl (stderr) exp-drd/tests/tc05_simple_race (stderr) exp-drd/tests/tc06_two_races (stderr) exp-drd/tests/tc09_bad_unlock (stderr) exp-drd/tests/tc11_XCHG (stderr) exp-drd/tests/tc12_rwl_trivial (stderr) exp-drd/tests/tc16_byterace (stderr) exp-drd/tests/tc17_sembar (stderr) exp-drd/tests/tc18_semabuse (stderr) exp-drd/tests/tc20_verifywrap (stderr) exp-drd/tests/tc21_pthonce (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) exp-drd/tests/tc23_bogus_condwait (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Mar 1 04:19:50 2008 --- new.short Sat Mar 1 05:19:28 2008 *************** *** 8,10 **** ! == 366 tests, 101 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) --- 8,10 ---- ! == 367 tests, 102 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) *************** *** 137,138 **** --- 137,139 ---- exp-drd/tests/tc20_verifywrap (stderr) + exp-drd/tests/tc20_verifywrap2 (stderr) exp-drd/tests/tc21_pthonce (stderr) |
|
From: Tom H. <th...@cy...> - 2008-03-01 04:07:25
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-03-01 03:05:06 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 401 tests, 10 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/tc04_free_lock (stderr) exp-drd/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 == 400 tests, 10 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Mar 1 03:32:23 2008 --- new.short Sat Mar 1 04:07:27 2008 *************** *** 8,10 **** ! == 400 tests, 10 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 401 tests, 10 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) |
|
From: Tom H. <th...@cy...> - 2008-03-01 03:50:45
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-03-01 03:20:07 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 407 tests, 11 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/tc04_free_lock (stderr) exp-drd/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 == 406 tests, 11 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Mar 1 03:35:40 2008 --- new.short Sat Mar 1 03:50:47 2008 *************** *** 8,10 **** ! == 406 tests, 11 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 407 tests, 11 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) |
|
From: Tom H. <th...@cy...> - 2008-03-01 03:43:26
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-03-01 03:25:19 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 405 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/tc04_free_lock (stderr) exp-drd/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 == 404 tests, 9 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Mar 1 03:36:25 2008 --- new.short Sat Mar 1 03:43:28 2008 *************** *** 8,10 **** ! == 404 tests, 9 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 405 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 18,20 **** none/tests/mremap2 (stdout) - helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) --- 18,19 ---- |
|
From: Tom H. <th...@cy...> - 2008-03-01 03:15:43
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-03-01 03:00:04 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 407 tests, 33 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/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/mremap (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc20_verifywrap (stderr) exp-drd/tests/tc20_verifywrap2 (stderr) exp-drd/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 == 406 tests, 32 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/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/mremap (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc20_verifywrap (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Mar 1 03:08:04 2008 --- new.short Sat Mar 1 03:15:44 2008 *************** *** 8,10 **** ! == 406 tests, 32 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 407 tests, 33 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 43,44 **** --- 43,45 ---- exp-drd/tests/tc20_verifywrap (stderr) + exp-drd/tests/tc20_verifywrap2 (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) |