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
(32) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
1
(25) |
2
(25) |
3
(5) |
4
(13) |
|
5
(4) |
6
(8) |
7
(6) |
8
|
9
(10) |
10
(15) |
11
(9) |
|
12
(14) |
13
(10) |
14
(24) |
15
(41) |
16
(13) |
17
(9) |
18
(3) |
|
19
(10) |
20
(11) |
21
(28) |
22
(36) |
23
(52) |
24
(36) |
25
(12) |
|
26
(31) |
27
(27) |
28
(20) |
29
(15) |
30
(22) |
31
(17) |
|
|
From: <sv...@va...> - 2009-07-23 10:50:39
|
Author: bart
Date: 2009-07-23 11:50:33 +0100 (Thu, 23 Jul 2009)
New Revision: 10556
Log:
Suppressed a compiler warning.
Modified:
trunk/drd/tests/tsan_thread_wrappers_pthread.h
Modified: trunk/drd/tests/tsan_thread_wrappers_pthread.h
===================================================================
--- trunk/drd/tests/tsan_thread_wrappers_pthread.h 2009-07-23 10:50:08 UTC (rev 10555)
+++ trunk/drd/tests/tsan_thread_wrappers_pthread.h 2009-07-23 10:50:33 UTC (rev 10556)
@@ -391,7 +391,7 @@
// Blocks if the queue is empty.
void *Get() {
mu_.LockWhen(Condition(IsQueueNotEmpty, &q_));
- void * item;
+ void * item = NULL;
bool ok = TryGetInternal(&item);
CHECK(ok);
mu_.Unlock();
|
|
From: <sv...@va...> - 2009-07-23 10:50:17
|
Author: bart
Date: 2009-07-23 11:50:08 +0100 (Thu, 23 Jul 2009)
New Revision: 10555
Log:
Added more suppression patterns.
Modified:
trunk/darwin9-drd.supp
Modified: trunk/darwin9-drd.supp
===================================================================
--- trunk/darwin9-drd.supp 2009-07-23 10:10:30 UTC (rev 10554)
+++ trunk/darwin9-drd.supp 2009-07-23 10:50:08 UTC (rev 10555)
@@ -113,6 +113,32 @@
drd:ConflictingAccess
fun:fflush
}
+{
+ drd-darwin-libc-fwrite
+ drd:ConflictingAccess
+ ...
+ fun:fwrite$UNIX2003
+}
+{
+ drd-darwin-cxa-guard-acquire
+ drd:ConflictingAccess
+ obj:*
+ fun:__cxa_current_exception_type
+ fun:__cxa_guard_acquire
+}
+{
+ drd-darwin-cxa-guard-release
+ drd:ConflictingAccess
+ fun:__cxa_guard_release
+}
+{
+ drd-darwin-cxa-finalize
+ drd:MutexErr
+ fun:pthread_mutex_destroy
+ fun:__tcf_115
+ fun:__cxa_finalize
+ fun:exit
+}
#
|
|
From: <sv...@va...> - 2009-07-23 10:10:38
|
Author: bart
Date: 2009-07-23 11:10:30 +0100 (Thu, 23 Jul 2009)
New Revision: 10554
Log:
Let DRD print a warning at startup that support for Darwin is still considered experimental, and filter out this warning from the regression tests.
Modified:
trunk/drd/drd_main.c
trunk/drd/tests/filter_stderr
Modified: trunk/drd/drd_main.c
===================================================================
--- trunk/drd/drd_main.c 2009-07-23 08:21:23 UTC (rev 10553)
+++ trunk/drd/drd_main.c 2009-07-23 10:10:30 UTC (rev 10554)
@@ -544,8 +544,12 @@
static void DRD_(post_clo_init)(void)
{
-#if !defined(VGO_linux) && !defined(VGO_darwin)
- VG_(printf)("\nWARNING: DRD has only been tested on Linux and on Darwin.\n\n");
+#if defined(VGO_linux)
+ /* fine */
+#elif defined(VGO_darwin)
+ VG_(printf)("\nWARNING: DRD support for Darwin is still considered as experimental.\n\n");
+#else
+ VG_(printf)("\nWARNING: DRD has not yet been tested on this operating system.\n\n");
# endif
if (DRD_(s_var_info))
Modified: trunk/drd/tests/filter_stderr
===================================================================
--- trunk/drd/tests/filter_stderr 2009-07-23 08:21:23 UTC (rev 10553)
+++ trunk/drd/tests/filter_stderr 2009-07-23 10:10:30 UTC (rev 10554)
@@ -33,6 +33,9 @@
# (consists of two lines) and also the empty line above it.
awk 'BEGIN{begin=1} {if ($0 == "More than 100 errors detected. Subsequent errors") { getline; getline; } else { if (begin) begin = 0; else print last_line; }; last_line = $0; } END { if (! begin) print last_line; }' |
+# Remove the message about experimental support for Darwin.
+awk 'BEGIN{begin=1} { if ($0 == "WARNING: DRD support for Darwin is still considered as experimental.") { getline; getline; } else { if (begin) begin = 0; else print last_line; }; last_line = $0; } END { if (! begin) print last_line; }' |
+
# Anonymise addresses
$dir/../../tests/filter_addresses
|
|
From: <sv...@va...> - 2009-07-23 08:21:32
|
Author: bart Date: 2009-07-23 09:21:23 +0100 (Thu, 23 Jul 2009) New Revision: 10553 Log: Updated Subversion ignore list. Modified: trunk/exp-bbv/tests/ppc32-linux/ Property changes on: trunk/exp-bbv/tests/ppc32-linux ___________________________________________________________________ Name: svn:ignore - *.stderr.diff *.stderr.out *.stdout.diff *.stdout.out .deps Makefile Makefile.in + *.stderr.diff *.stderr.out *.stdout.diff *.stdout.out .deps Makefile Makefile.in million ll |
|
From: <sv...@va...> - 2009-07-23 08:18:20
|
Author: bart
Date: 2009-07-23 09:18:12 +0100 (Thu, 23 Jul 2009)
New Revision: 10552
Log:
Updated line numbers in expected output.
Modified:
trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux-ppc
Modified: trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux-ppc
===================================================================
--- trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux-ppc 2009-07-23 08:16:25 UTC (rev 10551)
+++ trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux-ppc 2009-07-23 08:18:12 UTC (rev 10552)
@@ -1,16 +1,16 @@
The object at address 0x........ is not a mutex.
at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:69)
+ by 0x........: main (tc23_bogus_condwait.c:75)
The object at address 0x........ is not a mutex.
at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:69)
+ by 0x........: main (tc23_bogus_condwait.c:75)
Process terminating with default action of signal 7 (SIGBUS)
Invalid address alignment at address 0x........
at 0x........: (within libpthread-?.?.so)
by 0x........: pthread_cond_wait@@GLIBC_2.3.2(within libpthread-?.?.so)
- by 0x........: main (tc23_bogus_condwait.c:69)
+ by 0x........: main (tc23_bogus_condwait.c:75)
ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
|
|
From: <sv...@va...> - 2009-07-23 08:16:35
|
Author: bart Date: 2009-07-23 09:16:25 +0100 (Thu, 23 Jul 2009) New Revision: 10551 Log: Renamed output files. Added: trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux-ppc trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux-x86 Removed: trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux trunk/drd/tests/tc23_bogus_condwait.stderr.exp2 Modified: trunk/drd/tests/Makefile.am Modified: trunk/drd/tests/Makefile.am =================================================================== --- trunk/drd/tests/Makefile.am 2009-07-23 08:09:29 UTC (rev 10550) +++ trunk/drd/tests/Makefile.am 2009-07-23 08:16:25 UTC (rev 10551) @@ -207,7 +207,8 @@ tc22_exit_w_lock.stderr.exp-32bit \ tc22_exit_w_lock.stderr.exp-64bit \ tc22_exit_w_lock.vgtest \ - tc23_bogus_condwait.stderr.exp-linux \ + tc23_bogus_condwait.stderr.exp-linux-x86 \ + tc23_bogus_condwait.stderr.exp-linux-ppc \ tc23_bogus_condwait.stderr.exp-darwin \ tc23_bogus_condwait.vgtest \ tc24_nonzero_sem.stderr.exp \ Deleted: trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux =================================================================== --- trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux 2009-07-23 08:09:29 UTC (rev 10550) +++ trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux 2009-07-23 08:16:25 UTC (rev 10551) @@ -1,96 +0,0 @@ - -The object at address 0x........ is not a mutex. - at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:75) - -The object at address 0x........ is not a mutex. - at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:75) - -Thread 3: -Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread. - at 0x........: pthread_cond_signal@* (drd_pthread_intercepts.c:?) - by 0x........: rescue_me (tc23_bogus_condwait.c:26) - by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) -cond 0x........ was first observed at: - at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:62) - -Thread 1: -Mutex not locked: mutex 0x........, recursion count 0, owner 0. - at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:78) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:57) - -Thread 3: -Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread. - at 0x........: pthread_cond_signal@* (drd_pthread_intercepts.c:?) - by 0x........: rescue_me (tc23_bogus_condwait.c:30) - by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) -cond 0x........ was first observed at: - at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:62) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:57) - -Thread 1: -The object at address 0x........ is not a mutex. - at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:81) -rwlock 0x........ was first observed at: - at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:63) - -The object at address 0x........ is not a mutex. - at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:81) -rwlock 0x........ was first observed at: - at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:63) - -Thread 3: -Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread. - at 0x........: pthread_cond_signal@* (drd_pthread_intercepts.c:?) - by 0x........: rescue_me (tc23_bogus_condwait.c:34) - by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) -cond 0x........ was first observed at: - at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:62) -rwlock 0x........ was first observed at: - at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:63) - -Thread 1: -Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2. - at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:84) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:59) - -Thread 3: -Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread. - at 0x........: pthread_cond_signal@* (drd_pthread_intercepts.c:?) - by 0x........: rescue_me (tc23_bogus_condwait.c:38) - by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) -cond 0x........ was first observed at: - at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:62) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:59) -The impossible happened: mutex 0x........ is locked simultaneously by two threads (recursion count 1, owners 2 and 1) ! - -Thread 2: -Mutex not locked by calling thread: mutex 0x........, recursion count 2, owner 1. - at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) - by 0x........: grab_the_lock (tc23_bogus_condwait.c:48) - by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) -mutex 0x........ was first observed at: - at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:59) - -ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0) Copied: trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux-ppc (from rev 10550, trunk/drd/tests/tc23_bogus_condwait.stderr.exp2) =================================================================== --- trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux-ppc (rev 0) +++ trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux-ppc 2009-07-23 08:16:25 UTC (rev 10551) @@ -0,0 +1,16 @@ + +The object at address 0x........ is not a mutex. + at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:69) + +The object at address 0x........ is not a mutex. + at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:69) + +Process terminating with default action of signal 7 (SIGBUS) + Invalid address alignment at address 0x........ + at 0x........: (within libpthread-?.?.so) + by 0x........: pthread_cond_wait@@GLIBC_2.3.2(within libpthread-?.?.so) + by 0x........: main (tc23_bogus_condwait.c:69) + +ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) Property changes on: trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux-ppc ___________________________________________________________________ Name: svn:mergeinfo + Copied: trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux-x86 (from rev 10549, trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux) =================================================================== --- trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux-x86 (rev 0) +++ trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux-x86 2009-07-23 08:16:25 UTC (rev 10551) @@ -0,0 +1,96 @@ + +The object at address 0x........ is not a mutex. + at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:75) + +The object at address 0x........ is not a mutex. + at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:75) + +Thread 3: +Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread. + at 0x........: pthread_cond_signal@* (drd_pthread_intercepts.c:?) + by 0x........: rescue_me (tc23_bogus_condwait.c:26) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) +cond 0x........ was first observed at: + at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:62) + +Thread 1: +Mutex not locked: mutex 0x........, recursion count 0, owner 0. + at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:78) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:57) + +Thread 3: +Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread. + at 0x........: pthread_cond_signal@* (drd_pthread_intercepts.c:?) + by 0x........: rescue_me (tc23_bogus_condwait.c:30) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) +cond 0x........ was first observed at: + at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:62) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:57) + +Thread 1: +The object at address 0x........ is not a mutex. + at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:81) +rwlock 0x........ was first observed at: + at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:63) + +The object at address 0x........ is not a mutex. + at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:81) +rwlock 0x........ was first observed at: + at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:63) + +Thread 3: +Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread. + at 0x........: pthread_cond_signal@* (drd_pthread_intercepts.c:?) + by 0x........: rescue_me (tc23_bogus_condwait.c:34) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) +cond 0x........ was first observed at: + at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:62) +rwlock 0x........ was first observed at: + at 0x........: pthread_rwlock_init* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:63) + +Thread 1: +Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2. + at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:84) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:59) + +Thread 3: +Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread. + at 0x........: pthread_cond_signal@* (drd_pthread_intercepts.c:?) + by 0x........: rescue_me (tc23_bogus_condwait.c:38) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) +cond 0x........ was first observed at: + at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:62) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:59) +The impossible happened: mutex 0x........ is locked simultaneously by two threads (recursion count 1, owners 2 and 1) ! + +Thread 2: +Mutex not locked by calling thread: mutex 0x........, recursion count 2, owner 1. + at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?) + by 0x........: grab_the_lock (tc23_bogus_condwait.c:48) + by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?) +mutex 0x........ was first observed at: + at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:59) + +ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0) Property changes on: trunk/drd/tests/tc23_bogus_condwait.stderr.exp-linux-x86 ___________________________________________________________________ Name: svn:mergeinfo + Deleted: trunk/drd/tests/tc23_bogus_condwait.stderr.exp2 =================================================================== --- trunk/drd/tests/tc23_bogus_condwait.stderr.exp2 2009-07-23 08:09:29 UTC (rev 10550) +++ trunk/drd/tests/tc23_bogus_condwait.stderr.exp2 2009-07-23 08:16:25 UTC (rev 10551) @@ -1,16 +0,0 @@ - -The object at address 0x........ is not a mutex. - at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:69) - -The object at address 0x........ is not a mutex. - at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) - by 0x........: main (tc23_bogus_condwait.c:69) - -Process terminating with default action of signal 7 (SIGBUS) - Invalid address alignment at address 0x........ - at 0x........: (within libpthread-?.?.so) - by 0x........: pthread_cond_wait@@GLIBC_2.3.2(within libpthread-?.?.so) - by 0x........: main (tc23_bogus_condwait.c:69) - -ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) |
|
From: <sv...@va...> - 2009-07-23 08:09:44
|
Author: bart Date: 2009-07-23 09:09:29 +0100 (Thu, 23 Jul 2009) New Revision: 10550 Log: Reverted r10526. Added: trunk/drd/tests/tc23_bogus_condwait.stderr.exp2 Copied: trunk/drd/tests/tc23_bogus_condwait.stderr.exp2 (from rev 10524, trunk/drd/tests/tc23_bogus_condwait.stderr.exp2) =================================================================== --- trunk/drd/tests/tc23_bogus_condwait.stderr.exp2 (rev 0) +++ trunk/drd/tests/tc23_bogus_condwait.stderr.exp2 2009-07-23 08:09:29 UTC (rev 10550) @@ -0,0 +1,16 @@ + +The object at address 0x........ is not a mutex. + at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:69) + +The object at address 0x........ is not a mutex. + at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?) + by 0x........: main (tc23_bogus_condwait.c:69) + +Process terminating with default action of signal 7 (SIGBUS) + Invalid address alignment at address 0x........ + at 0x........: (within libpthread-?.?.so) + by 0x........: pthread_cond_wait@@GLIBC_2.3.2(within libpthread-?.?.so) + by 0x........: main (tc23_bogus_condwait.c:69) + +ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) |
|
From: Bart V. A. <bar...@gm...> - 2009-07-23 08:06:11
|
Hello, While trying to port DRD to Darwin I noticed that on the Mac OS X system I used several POSIX threads functions behave differently than their Linux equivalents. Please note that the results below have been obtained on an old system (kernel 9.2.0). It would be great if someone could confirm whether the results below can be reproduced on a Mac OS X system with the latest updates installed. Note: the results below have been obtained by running native executables and hence are not related to the behavior of any Valgrind tool. ** drd/tests/pth_inconsistent_cond_wait* Linux: $ drd/tests/pth_inconsistent_cond_wait (empty output, as expected) Darwin: $ drd/tests/pth_inconsistent_cond_wait drd/tests/pth_inconsistent_cond_wait pth_inconsistent_cond_wait.c:52 pthread_cond_timedwait(&s_cond, mutex, &deadline) returned error code 22 (Invalid argument) pth_inconsistent_cond_wait.c:52 pthread_cond_timedwait(&s_cond, mutex, &deadline) returned error code 60 (Operation timed out) It is not clear to me why the first call to pthread_cond_timedwait() returns EINVAL on Darwin. As far as I know EINVAL means that either the condition variable, mutex or timeout passed to pthread_cond_timedwait() is invalid ? See also http://www.opengroup.org/onlinepubs/000095399/functions/pthread_cond_timedwait.html . ** helgrind/tests/tc17_sembar* Linux: $ helgrind/tests/tc17_sembar starting done, result is 88, should be 88 (expected output) Darwin: $ helgrind/tests/tc17_sembar starting done, result is 99, should be 88 (not expected) I've also noticed that DRD reports race conditions in the drd/tests/circular_buffer test program on Darwin but not on Linux. Both the tc17_sembar and the circular_buffer test program trigger many semaphore calls. Bart. |
|
From: Bart V. A. <bar...@gm...> - 2009-07-23 07:57:31
|
Nightly build on georgia-tech-cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2009-07-23 02:16:13 EDT Ended at 2009-07-23 03:57:15 EDT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 427 tests, 44 stderr failures, 10 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/linux/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/hsg (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 427 tests, 44 stderr failures, 10 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/linux/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/rwlock_test (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/hsg (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Jul 23 03:07:08 2009 --- new.short Thu Jul 23 03:57:15 2009 *************** *** 38,42 **** helgrind/tests/hg05_race2 (stderr) - helgrind/tests/rwlock_test (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stderr) --- 38,42 ---- helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc23_bogus_condwait (stderr) + drd/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stderr) |
|
From: Bart V. A. <bar...@gm...> - 2009-07-23 07:41:05
|
On Thu, Jul 23, 2009 at 12:51 AM, Nicholas Nethercote<n.n...@gm...> wrote: > On Thu, Jul 23, 2009 at 5:17 AM, <sv...@va...> wrote: >> Author: bart >> Date: 2009-07-22 20:17:05 +0100 (Wed, 22 Jul 2009) >> New Revision: 10534 >> >> Log: >> More tweaking for Darwin. > > Bart, it's great to see you're working on Darwin support. What's the > status -- how many of the tests are passing? The output I get from the command "perl tests/vg_regtest drd" on Darwin is currently as follows: == 69 tests, 4 stderr failures, 0 stdout failures, 0 post failures == drd/tests/circular_buffer (stderr) drd/tests/pth_cond_race (stderr) drd/tests/pth_inconsistent_cond_wait (stderr) drd/tests/tc17_sembar (stderr) Bart. |
|
From: <sv...@va...> - 2009-07-23 07:38:27
|
Author: bart
Date: 2009-07-23 08:38:17 +0100 (Thu, 23 Jul 2009)
New Revision: 10549
Log:
Updated platform support messages.
Modified:
trunk/drd/drd_main.c
Modified: trunk/drd/drd_main.c
===================================================================
--- trunk/drd/drd_main.c 2009-07-23 07:37:32 UTC (rev 10548)
+++ trunk/drd/drd_main.c 2009-07-23 07:38:17 UTC (rev 10549)
@@ -544,11 +544,8 @@
static void DRD_(post_clo_init)(void)
{
-# if defined(VGP_x86_linux) || defined(VGP_amd64_linux) \
- || defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
- /* fine */
-# else
- VG_(printf)("\nWARNING: DRD has only been tested on Linux.\n\n");
+#if !defined(VGO_linux) && !defined(VGO_darwin)
+ VG_(printf)("\nWARNING: DRD has only been tested on Linux and on Darwin.\n\n");
# endif
if (DRD_(s_var_info))
@@ -623,12 +620,6 @@
static
void drd_pre_clo_init(void)
{
-#if defined(VGO_darwin)
- // This makes the (all-failing) regtests run much faster.
- VG_(printf)("DRD doesn't work on Darwin yet, sorry.\n");
- VG_(exit)(1);
-#endif
-
// Basic tool stuff.
VG_(details_name) ("drd");
VG_(details_version) (NULL);
|
|
From: <sv...@va...> - 2009-07-23 07:37:40
|
Author: bart
Date: 2009-07-23 08:37:32 +0100 (Thu, 23 Jul 2009)
New Revision: 10548
Log:
Added DRD-specific suppression patterns for Darwin.
Added:
trunk/darwin9-drd.supp
Modified:
trunk/configure.in
Modified: trunk/configure.in
===================================================================
--- trunk/configure.in 2009-07-23 07:13:35 UTC (rev 10547)
+++ trunk/configure.in 2009-07-23 07:37:32 UTC (rev 10548)
@@ -264,6 +264,7 @@
9.*)
AC_MSG_RESULT([Darwin 9.x (${kernel}) / Mac OS X 10.5 Leopard])
DEFAULT_SUPP="darwin9.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="darwin9-drd.supp ${DEFAULT_SUPP}"
;;
*)
AC_MSG_RESULT([unsupported (${kernel})])
Added: trunk/darwin9-drd.supp
===================================================================
--- trunk/darwin9-drd.supp (rev 0)
+++ trunk/darwin9-drd.supp 2009-07-23 07:37:32 UTC (rev 10548)
@@ -0,0 +1,184 @@
+#
+# Suppressions for the dynamic loader.
+#
+
+{
+ drd-darwin-dyld-1
+ drd:MutexErr
+ fun:pthread_mutex_unlock
+ fun:_dyld_register_func_for_add_image
+ fun:__keymgr_initializer
+ fun:libSystem_initializer
+ fun:_ZN16ImageLoaderMachO18doModInitFunctionsERKN11ImageLoader11LinkContextE
+ fun:_ZN11ImageLoader23recursiveInitializationERKNS_11LinkContextEj
+ fun:_ZN11ImageLoader23recursiveInitializationERKNS_11LinkContextEj
+ fun:_ZN11ImageLoader23recursiveInitializationERKNS_11LinkContextEj
+ fun:_ZN11ImageLoader15runInitializersERKNS_11LinkContextE
+ fun:_ZN4dyld24initializeMainExecutableEv
+ fun:_ZN4dyld5_mainEPK11mach_headermiPPKcS5_S5_
+ fun:_ZN13dyldbootstrap5startEPK11mach_headeriPPKcl
+}
+{
+ drd-darwin-dyld-2
+ drd:MutexErr
+ fun:pthread_mutex_unlock
+ fun:_dyld_register_func_for_remove_image
+ fun:__keymgr_initializer
+ fun:libSystem_initializer
+ fun:_ZN16ImageLoaderMachO18doModInitFunctionsERKN11ImageLoader11LinkContextE
+ fun:_ZN11ImageLoader23recursiveInitializationERKNS_11LinkContextEj
+ fun:_ZN11ImageLoader23recursiveInitializationERKNS_11LinkContextEj
+ fun:_ZN11ImageLoader23recursiveInitializationERKNS_11LinkContextEj
+ fun:_ZN11ImageLoader15runInitializersERKNS_11LinkContextE
+ fun:_ZN4dyld24initializeMainExecutableEv
+ fun:_ZN4dyld5_mainEPK11mach_headermiPPKcS5_S5_
+ fun:_ZN13dyldbootstrap5startEPK11mach_headeriPPKcl
+}
+{
+ drd-darwin-dyld-3
+ drd:MutexErr
+ fun:pthread_mutex_init
+ fun:_Z24dyldGlobalLockInitializev
+ fun:_dyld_initializer
+ fun:_ZN16ImageLoaderMachO18doModInitFunctionsERKN11ImageLoader11LinkContextE
+ fun:_ZN11ImageLoader23recursiveInitializationERKNS_11LinkContextEj
+ fun:_ZN11ImageLoader23recursiveInitializationERKNS_11LinkContextEj
+ fun:_ZN11ImageLoader23recursiveInitializationERKNS_11LinkContextEj
+ fun:_ZN11ImageLoader15runInitializersERKNS_11LinkContextE
+ fun:_ZN4dyld24initializeMainExecutableEv
+ fun:_ZN4dyld5_mainEPK11mach_headermiPPKcS5_S5_
+ fun:_ZN13dyldbootstrap5startEPK11mach_headeriPPKcl
+ fun:_dyld_start
+}
+{
+ drd-darwin-dyld-4
+ drd:ConflictingAccess
+ ...
+ fun:_ZN16ImageLoaderMachO16doBindLazySymbolEPmRKN11ImageLoader11LinkContextE
+ fun:_ZN4dyld14bindLazySymbolEPK11mach_headerPm
+ fun:stub_binding_helper_interface2
+}
+{
+ drd-darwin-dyld-5
+ drd:ConflictingAccess
+ fun:_ZNK16ImageLoaderMachO18findExportedSymbolEPKcPKvbPPK11ImageLoader
+ fun:_ZN16ImageLoaderMachO16resolveUndefinedERKN11ImageLoader11LinkContextEPK11macho_nlistbPPKS0_
+ fun:_ZN16ImageLoaderMachO16doBindLazySymbolEPmRKN11ImageLoader11LinkContextE
+}
+
+
+#
+# Suppressions for Darwin's C library.
+#
+
+{
+ drd-darwin-libc-cerror
+ drd:ConflictingAccess
+ ...
+ fun:cerror
+}
+{
+ drd-darwin-libc-nanosleep
+ drd:ConflictingAccess
+ ...
+ fun:nanosleep$UNIX2003
+}
+{
+ drd-darwin-libc-rand
+ drd:ConflictingAccess
+ fun:do_rand
+}
+{
+ drd-darwin-libc-flockfile
+ drd:ConflictingAccess
+ fun:flockfile
+}
+{
+ drd-darwin-libc-vfprintf-1
+ drd:ConflictingAccess
+ fun:vfprintf_l
+}
+{
+ drd-darwin-libc-vfprintf-2
+ drd:ConflictingAccess
+ fun:__vfprintf
+}
+{
+ drd-darwin-libc-localeconv
+ drd:ConflictingAccess
+ fun:localeconv_l
+}
+{
+ drd-darwin-libc-fflush
+ drd:ConflictingAccess
+ fun:fflush
+}
+
+
+#
+# Suppressions for Darwin's POSIX threads implementation.
+#
+
+{
+ drd-darwin-pthread-create-1
+ drd:ConflictingAccess
+ obj:*
+ fun:thread_start
+}
+{
+ drd-darwin-pthread-create-2
+ drd:ConflictingAccess
+ ...
+ fun:pthread_create*
+}
+{
+ drd-darwin-pthread-join-1
+ drd:ConflictingAccess
+ ...
+ fun:pthread_join$UNIX2003
+}
+{
+ drd-darwin-pthread-join-2
+ drd:ConflictingAccess
+ obj:*
+ fun:pthread_join*
+}
+{
+ drd-darwin-pthread-exit
+ drd:ConflictingAccess
+ ...
+ fun:_pthread_exit
+}
+{
+ drd-darwin-pthread-find-thread
+ drd:ConflictingAccess
+ fun:_pthread_find_thread
+}
+{
+ drd-darwin-pthread-spin-unlock
+ drd:ConflictingAccess
+ fun:spin_unlock
+}
+{
+ drd-darwin-pthread-testcancel
+ drd:ConflictingAccess
+ fun:_pthread_testcancel
+}
+{
+ drd-darwin-pthread-detach
+ drd:CondRaceErr
+ ...
+ fun:pthread_detach
+}
+{
+ drd-darwin-pthread-kill
+ drd:ConflictingAccess
+ ...
+ fun:pthread_kill
+}
+{
+ drd-darwin-pthread-free-pthread-onstack
+ drd:ConflictingAccess
+ fun:mig_dealloc_reply_port
+ fun:_pthread_free_pthread_onstack
+}
|
|
From: <sv...@va...> - 2009-07-23 07:13:45
|
Author: bart
Date: 2009-07-23 08:13:35 +0100 (Thu, 23 Jul 2009)
New Revision: 10547
Log:
Added a suppression pattern for a leak triggered from inside Darwin's C library.
Modified:
trunk/darwin9.supp
Modified: trunk/darwin9.supp
===================================================================
--- trunk/darwin9.supp 2009-07-23 07:12:17 UTC (rev 10546)
+++ trunk/darwin9.supp 2009-07-23 07:13:35 UTC (rev 10547)
@@ -162,6 +162,14 @@
fun:__setenv
fun:setenv$UNIX2003
}
+{
+ localeconv-leak
+ Memcheck:Leak
+ fun:malloc
+ fun:localeconv_l
+ fun:__vfprintf
+ fun:vsnprintf
+}
##----------------------------------------------------------------------##
# Helgrind
|
|
From: <sv...@va...> - 2009-07-23 07:12:23
|
Author: bart Date: 2009-07-23 08:12:17 +0100 (Thu, 23 Jul 2009) New Revision: 10546 Log: Updated Subversion ignore list. Modified: trunk/memcheck/tests/darwin/ Property changes on: trunk/memcheck/tests/darwin ___________________________________________________________________ Name: svn:ignore - *.dSYM .deps env Makefile Makefile.in pth-supp scalar scalar_fork scalar_nocancel scalar_vfork + *.dSYM .deps aio env Makefile Makefile.in pth-supp scalar scalar_fork scalar_nocancel scalar_vfork |
|
From: <sv...@va...> - 2009-07-23 07:11:36
|
Author: bart
Date: 2009-07-23 08:11:27 +0100 (Thu, 23 Jul 2009)
New Revision: 10545
Log:
Improved source code portability.
Modified:
trunk/drd/drd_semaphore.c
Modified: trunk/drd/drd_semaphore.c
===================================================================
--- trunk/drd/drd_semaphore.c 2009-07-23 07:10:40 UTC (rev 10544)
+++ trunk/drd/drd_semaphore.c 2009-07-23 07:11:27 UTC (rev 10545)
@@ -247,7 +247,7 @@
tl_assert(p);
p->waiters++;
- if ((int)p->waiters <= 0)
+ if ((Word)(p->waiters) <= 0)
{
SemaphoreErrInfo sei = { DRD_(thread_get_running_tid)(), semaphore };
VG_(maybe_record_error)(VG_(get_running_tid)(),
@@ -293,7 +293,7 @@
* DRD_(semaphore_pre_wait)() has finished before
* DRD_(semaphore_post_wait)() has been called.
*/
- if (p == NULL || (int)p->value < 0 || (int)p->waiters < 0)
+ if (p == NULL || (Int)(p->value) < 0 || (Word)(p->waiters) < 0)
{
SemaphoreErrInfo sei = { DRD_(thread_get_running_tid)(), semaphore };
VG_(maybe_record_error)(VG_(get_running_tid)(),
|
|
From: <sv...@va...> - 2009-07-23 07:10:51
|
Author: bart
Date: 2009-07-23 08:10:40 +0100 (Thu, 23 Jul 2009)
New Revision: 10544
Log:
Made expected output for tc23_bogus_condwait complete (Darwin).
Modified:
trunk/drd/tests/tc23_bogus_condwait.stderr.exp-darwin
Modified: trunk/drd/tests/tc23_bogus_condwait.stderr.exp-darwin
===================================================================
--- trunk/drd/tests/tc23_bogus_condwait.stderr.exp-darwin 2009-07-23 07:09:44 UTC (rev 10543)
+++ trunk/drd/tests/tc23_bogus_condwait.stderr.exp-darwin 2009-07-23 07:10:40 UTC (rev 10544)
@@ -1,4 +1,14 @@
+Thread 2:
+Invalid semaphore: semaphore 0x........
+ at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
+ by 0x........: grab_the_lock (tc23_bogus_condwait.c:47)
+ by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
+semaphore 0x........ was first observed at:
+ at 0x........: sem_init* (drd_pthread_intercepts.c:?)
+ by 0x........: main (tc23_bogus_condwait.c:65)
+
+Thread 1:
The object at address 0x........ is not a mutex.
at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:75)
@@ -14,6 +24,19 @@
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:57)
+Thread 3:
+Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
+ at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
+ by 0x........: rescue_me (tc23_bogus_condwait.c:26)
+ by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
+cond 0x........ was first observed at:
+ at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ by 0x........: main (tc23_bogus_condwait.c:62)
+mutex 0x........ was first observed at:
+ at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+ by 0x........: main (tc23_bogus_condwait.c:57)
+
+Thread 1:
The object at address 0x........ is not a mutex.
at 0x........: pthread_cond_wait* (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:81)
@@ -35,4 +58,16 @@
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:59)
-ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)
+Thread 3:
+Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
+ at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
+ by 0x........: rescue_me (tc23_bogus_condwait.c:30)
+ by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
+cond 0x........ was first observed at:
+ at 0x........: pthread_cond_init* (drd_pthread_intercepts.c:?)
+ by 0x........: main (tc23_bogus_condwait.c:62)
+mutex 0x........ was first observed at:
+ at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+ by 0x........: main (tc23_bogus_condwait.c:59)
+
+ERROR SUMMARY: 9 errors from 9 contexts (suppressed: 0 from 0)
|
|
From: <sv...@va...> - 2009-07-23 07:09:55
|
Author: bart Date: 2009-07-23 08:09:44 +0100 (Thu, 23 Jul 2009) New Revision: 10543 Log: Only run the tc20_verifywrap2 test if the tc20_verifywrap executable has been built. Modified: trunk/drd/tests/tc20_verifywrap2.vgtest Modified: trunk/drd/tests/tc20_verifywrap2.vgtest =================================================================== --- trunk/drd/tests/tc20_verifywrap2.vgtest 2009-07-23 07:08:20 UTC (rev 10542) +++ trunk/drd/tests/tc20_verifywrap2.vgtest 2009-07-23 07:09:44 UTC (rev 10543) @@ -1,3 +1,3 @@ -prereq: ./supported_libpthread +prereq: test -e ../../helgrind/tests/tc20_verifywrap && ./supported_libpthread vgopts: --trace-mutex=yes --trace-cond=yes --trace-semaphore=yes --read-var-info=yes --check-stack-var=yes prog: ../../helgrind/tests/tc20_verifywrap |
|
From: <sv...@va...> - 2009-07-23 07:08:29
|
Author: bart Date: 2009-07-23 08:08:20 +0100 (Thu, 23 Jul 2009) New Revision: 10542 Log: Added a filter in order to make the Darwin output for the annotate_trace_memory test identical to the Linux output. Modified: trunk/drd/tests/filter_stderr Modified: trunk/drd/tests/filter_stderr =================================================================== --- trunk/drd/tests/filter_stderr 2009-07-23 06:47:38 UTC (rev 10541) +++ trunk/drd/tests/filter_stderr 2009-07-23 07:08:20 UTC (rev 10542) @@ -13,6 +13,7 @@ -e "s/^Allocation context: stack of thread \([0-9]*\), offset -[0-9]*$/Allocation context: stack of thread \1, offset .../" \ -e "/^warning: evaluate_Dwarf3_Expr: unhandled DW_OP_.*/d" \ -e '/^warning: addVar:.*/d' \ +-e 's/^Allocation context: Data section of ..tsan_unittest/Allocation context: BSS section of tsan_unittest/' \ -e '/^run: \/usr\/bin\/dsymutil.*/d' \ -e "s/, in frame #[0-9]* of thread /, in frame #? of thread /" \ -e "s/(tc20_verifywrap.c:261)/(tc20_verifywrap.c:262)/" \ |
|
From: <sv...@va...> - 2009-07-23 06:47:45
|
Author: bart
Date: 2009-07-23 07:47:38 +0100 (Thu, 23 Jul 2009)
New Revision: 10541
Log:
Cleanup: removed source code commented out via #if 0 / #endif.
Removed:
trunk/drd/drd_gomp_intercepts.c
Modified:
trunk/drd/Makefile.am
Modified: trunk/drd/Makefile.am
===================================================================
--- trunk/drd/Makefile.am 2009-07-23 05:19:56 UTC (rev 10540)
+++ trunk/drd/Makefile.am 2009-07-23 06:47:38 UTC (rev 10541)
@@ -101,7 +101,6 @@
endif
VGPRELOAD_DRD_SOURCES_COMMON = \
- drd_gomp_intercepts.c \
drd_pthread_intercepts.c \
drd_qtcore_intercepts.c \
drd_strmem_intercepts.c
Deleted: trunk/drd/drd_gomp_intercepts.c
===================================================================
--- trunk/drd/drd_gomp_intercepts.c 2009-07-23 05:19:56 UTC (rev 10540)
+++ trunk/drd/drd_gomp_intercepts.c 2009-07-23 06:47:38 UTC (rev 10541)
@@ -1,121 +0,0 @@
-/* -*- mode: C; c-basic-offset: 3; -*- */
-
-/*--------------------------------------------------------------------*/
-/*--- Client-space code for drd. drd_gomp_intercepts.c ---*/
-/*--------------------------------------------------------------------*/
-
-/*
- This file is part of drd, a thread error detector.
-
- Copyright (C) 2006-2009 Bart Van Assche <bar...@gm...>.
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307, USA.
-
- The GNU General Public License is contained in the file COPYING.
-*/
-
-/* ---------------------------------------------------------------------
- ALL THE CODE IN THIS FILE RUNS ON THE SIMULATED CPU.
-
- These functions are not called directly - they're the targets of code
- redirection or load notifications (see pub_core_redir.h for info).
- They're named weirdly so that the intercept code can find them when the
- shared object is initially loaded.
-
- Note that this filename has the "drd_" prefix because it can appear
- in stack traces, and the "drd_" makes it a little clearer that it
- originates from Valgrind.
- ------------------------------------------------------------------ */
-
-#include <assert.h>
-#include "drd_clientreq.h"
-#include "pub_tool_redir.h"
-
-
-// Defines.
-
-#define GOMP_FUNC(ret_ty, f, args...) \
- ret_ty VG_WRAP_FUNCTION_ZZ(libgompZdsoZd1Za,f)(args); \
- ret_ty VG_WRAP_FUNCTION_ZZ(libgompZdsoZd1Za,f)(args)
-
-
-// Type definitions
-
-typedef void* gomp_barrier_t;
-
-
-// Function definitions.
-
-#if 0
-
-GOMP_FUNC(void, gompZubarrierZuinit, // gomp_barrier_init
- gomp_barrier_t* barrier, unsigned count)
-{
- int ret;
- int res;
- OrigFn fn;
-
- VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_BARRIER_INIT,
- barrier, gomp_barrier, count, 0, 0);
- VALGRIND_GET_ORIG_FN(fn);
- CALL_FN_W_WW(ret, fn, barrier, count);
- VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_BARRIER_INIT,
- barrier, gomp_barrier, 0, 0, 0);
-}
-
-GOMP_FUNC(void, gompZubarrierZureinit, // gomp_barrier_reinit
- gomp_barrier_t* barrier, unsigned count)
-{
- int ret;
- int res;
- OrigFn fn;
- VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_BARRIER_INIT,
- barrier, gomp_barrier, count, 1, 0);
- VALGRIND_GET_ORIG_FN(fn);
- CALL_FN_W_WW(ret, fn, barrier, count);
- VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_BARRIER_INIT,
- barrier, gomp_barrier, 0, 0, 0);
-}
-
-GOMP_FUNC(void, gompZubarrierZudestroy, // gomp_barrier_destroy
- gomp_barrier_t* barrier)
-{
- int ret;
- int res;
- OrigFn fn;
- VALGRIND_GET_ORIG_FN(fn);
- VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_BARRIER_DESTROY,
- barrier, gomp_barrier, 0, 0, 0);
- CALL_FN_W_W(ret, fn, barrier);
- VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_BARRIER_DESTROY,
- barrier, gomp_barrier, 0, 0, 0);
-}
-
-GOMP_FUNC(void, gompZubarrierZuwait, // gomp_barrier_wait
- gomp_barrier_t* barrier)
-{
- int ret;
- int res;
- OrigFn fn;
- VALGRIND_GET_ORIG_FN(fn);
- VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_BARRIER_WAIT,
- barrier, gomp_barrier, 0, 0, 0);
- CALL_FN_W_W(ret, fn, barrier);
- VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_BARRIER_WAIT,
- barrier, gomp_barrier, 1, 0, 0);
-}
-
-#endif
|
|
From: Bart V. A. <bar...@gm...> - 2009-07-23 05:52:56
|
On Thu, Jul 23, 2009 at 5:18 AM, Nicholas Nethercote<n.n...@gm...> wrote: > On Thu, Jul 23, 2009 at 12:51 PM, Tom Hughes<th...@cy...> wrote: >> >> Nightly build on lloyd ( x86_64, Fedora 7 ) >> Started at 2009-07-23 03:05:05 BST >> Ended at 2009-07-23 03:51:06 BST >> Results differ from 24 hours ago >> >> Checking out valgrind source tree ... done >> Configuring valgrind ... done >> Building valgrind ... done >> Running regression tests ... failed >> >> Regression test results follow >> >> == 510 tests, 4 stderr failures, 0 stdout failures, 0 post failures == >> helgrind/tests/rwlock_test (stderr) >> helgrind/tests/tc06_two_races_xml (stderr) >> helgrind/tests/tc12_rwl_trivial (stderr) >> helgrind/tests/tc23_bogus_condwait (stderr) > > These are mostly line number differences and other minor things. > Bart, I think they might be caused by some of your recent changes. > Could you take a look? The output of the tests helgrind/tests/rwlock_test, tc12_rwl_trivial and tc23_bogus_condwait is now again in sync with the source code of the respective tests. This was indeed caused by the changes I made yesterday. Regarding the test helgrind/tests/tc06_two_races_xml: this test fails since July 15, 2009 in the nightly builds. The MESSAGING_TIDYUP branch has been merged to the trunk around that date. Bart. |
|
From: <sv...@va...> - 2009-07-23 05:20:14
|
Author: bart
Date: 2009-07-23 06:19:56 +0100 (Thu, 23 Jul 2009)
New Revision: 10540
Log:
Updated expected output because of changes in the source code of the regression tests.
Modified:
trunk/helgrind/tests/rwlock_test.stderr.exp
trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp
trunk/helgrind/tests/tc23_bogus_condwait.stderr.exp
Modified: trunk/helgrind/tests/rwlock_test.stderr.exp
===================================================================
--- trunk/helgrind/tests/rwlock_test.stderr.exp 2009-07-23 04:30:06 UTC (rev 10539)
+++ trunk/helgrind/tests/rwlock_test.stderr.exp 2009-07-23 05:19:56 UTC (rev 10540)
@@ -1,4 +1,5 @@
+s_counter - thread_count * iterations = 0
Finished.
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Modified: trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp
===================================================================
--- trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp 2009-07-23 04:30:06 UTC (rev 10539)
+++ trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp 2009-07-23 05:19:56 UTC (rev 10540)
@@ -3,9 +3,9 @@
Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
- by 0x........: main (tc12_rwl_trivial.c:29)
+ by 0x........: main (tc12_rwl_trivial.c:35)
Lock at 0x........ was first observed
at 0x........: pthread_rwlock_init (hg_intercepts.c:...)
- by 0x........: main (tc12_rwl_trivial.c:18)
+ by 0x........: main (tc12_rwl_trivial.c:24)
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: trunk/helgrind/tests/tc23_bogus_condwait.stderr.exp
===================================================================
--- trunk/helgrind/tests/tc23_bogus_condwait.stderr.exp 2009-07-23 04:30:06 UTC (rev 10539)
+++ trunk/helgrind/tests/tc23_bogus_condwait.stderr.exp 2009-07-23 05:19:56 UTC (rev 10540)
@@ -3,18 +3,18 @@
Thread #x: pthread_cond_{timed}wait called with invalid mutex
at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:69)
+ by 0x........: main (tc23_bogus_condwait.c:75)
Thread #x: pthread_cond_{timed}wait called with un-held mutex
at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:72)
+ by 0x........: main (tc23_bogus_condwait.c:78)
Thread #x: pthread_cond_{timed}wait called with mutex of type pthread_rwlock_t*
at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:75)
+ by 0x........: main (tc23_bogus_condwait.c:81)
Thread #x: pthread_cond_{timed}wait called with mutex held by a different thread
at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:78)
+ by 0x........: main (tc23_bogus_condwait.c:84)
ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
|
|
From: <sv...@va...> - 2009-07-23 04:30:15
|
Author: njn
Date: 2009-07-23 05:30:06 +0100 (Thu, 23 Jul 2009)
New Revision: 10539
Log:
Handle the memory written by aio_read() properly -- mark the memory buffer
as written once aio_return() is successfully called.
Also check the addressability of the buffer for both aio_read() and
aio_write().
Also check the file descriptor for aio_read() and aio_write().
And add a test for this. There's one corner case of the test that doesn't
work as expected and is currently commented out. But aio_*() certainly
works better than it used to.
All this is for bug 197227.
Added:
trunk/memcheck/tests/darwin/aio.c
trunk/memcheck/tests/darwin/aio.stderr.exp
trunk/memcheck/tests/darwin/aio.vgtest
Modified:
trunk/coregrind/m_syswrap/priv_syswrap-generic.h
trunk/coregrind/m_syswrap/syswrap-darwin.c
trunk/memcheck/tests/darwin/Makefile.am
Modified: trunk/coregrind/m_syswrap/priv_syswrap-generic.h
===================================================================
--- trunk/coregrind/m_syswrap/priv_syswrap-generic.h 2009-07-23 00:55:46 UTC (rev 10538)
+++ trunk/coregrind/m_syswrap/priv_syswrap-generic.h 2009-07-23 04:30:06 UTC (rev 10539)
@@ -50,7 +50,7 @@
// Return true if we're allowed to use or create this fd.
extern
-Bool ML_(fd_allowed)(Int fd, const Char *syscallname, ThreadId tid, Bool soft);
+Bool ML_(fd_allowed)(Int fd, const Char *syscallname, ThreadId tid, Bool isNewFD);
extern void ML_(record_fd_open_named) (ThreadId tid, Int fd);
extern void ML_(record_fd_open_nameless) (ThreadId tid, Int fd);
Modified: trunk/coregrind/m_syswrap/syswrap-darwin.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-darwin.c 2009-07-23 00:55:46 UTC (rev 10538)
+++ trunk/coregrind/m_syswrap/syswrap-darwin.c 2009-07-23 04:30:06 UTC (rev 10539)
@@ -49,6 +49,7 @@
#include "pub_core_machine.h" // VG_(get_SP)
#include "pub_core_mallocfree.h"
#include "pub_core_options.h"
+#include "pub_core_oset.h"
#include "pub_core_scheduler.h"
#include "pub_core_sigframe.h" // For VG_(sigframe_destroy)()
#include "pub_core_signals.h"
@@ -3439,14 +3440,49 @@
PRE_REG_READ1(int, "sigsuspend", int, sigmask);
}
+/* ---------------------------------------------------------------------
+ aio_*
+ ------------------------------------------------------------------ */
+// We must record the aiocbp for each aio_read() in a table so that when
+// aio_return() is called we can mark the memory written asynchronously by
+// aio_read() as having been written. We don't have to do this for
+// aio_write(). See bug 197227 for more details.
+static OSet* aiocbp_table = NULL;
+static Bool aio_init_done = False;
+
+static void aio_init(void)
+{
+ aiocbp_table = VG_(OSetWord_Create)(VG_(malloc), "syswrap.aio", VG_(free));
+ aio_init_done = True;
+}
+
+static Bool was_a_successful_aio_read = False;
+
PRE(aio_return)
{
+ struct vki_aiocb* aiocbp = (struct vki_aiocb*)ARG1;
// This assumes that the kernel looks at the struct pointer, but not the
// contents of the struct.
PRINT( "aio_return ( %#lx )", ARG1 );
PRE_REG_READ1(long, "aio_return", struct vki_aiocb*, aiocbp);
+
+ if (!aio_init_done) aio_init();
+ was_a_successful_aio_read = VG_(OSetWord_Remove)(aiocbp_table, (UWord)aiocbp);
}
+POST(aio_return)
+{
+ // If we found the aiocbp in our own table it must have been an aio_read(),
+ // so mark the buffer as written. If we didn't find it, it must have been
+ // an aio_write() or a bogus aio_return() (eg. a second one on the same
+ // aiocbp). Either way, the buffer won't have been written so we don't
+ // have to mark the buffer as written.
+ if (was_a_successful_aio_read) {
+ struct vki_aiocb* aiocbp = (struct vki_aiocb*)ARG1;
+ POST_MEM_WRITE((Addr)aiocbp->aio_buf, aiocbp->aio_nbytes);
+ was_a_successful_aio_read = False;
+ }
+}
PRE(aio_suspend)
{
@@ -3472,19 +3508,56 @@
PRE(aio_read)
{
+ struct vki_aiocb* aiocbp = (struct vki_aiocb*)ARG1;
+
PRINT( "aio_read ( %#lx )", ARG1 );
PRE_REG_READ1(long, "aio_read", struct vki_aiocb*, aiocbp);
PRE_MEM_READ( "aio_read(aiocbp)", ARG1, sizeof(struct vki_aiocb));
+
+ if (ML_(safe_to_deref)(aiocbp, sizeof(struct vki_aiocb))) {
+ if (ML_(fd_allowed)(aiocbp->aio_fildes, "aio_read", tid, /*isNewFd*/False)) {
+ PRE_MEM_WRITE("aio_read(aiocbp->aio_buf)",
+ (Addr)aiocbp->aio_buf, aiocbp->aio_nbytes);
+ } else {
+ SET_STATUS_Failure( VKI_EBADF );
+ }
+ } else {
+ SET_STATUS_Failure( VKI_EINVAL );
+ }
}
+POST(aio_read)
+{
+ // We have to record the fact that there is an asynchronous read request
+ // pending. When a successful aio_return() occurs for this aiocb, then we
+ // will mark the memory as having been defined.
+ struct vki_aiocb* aiocbp = (struct vki_aiocb*)ARG1;
+ if (!aio_init_done) aio_init();
+ // aiocbp shouldn't already be in the table -- if it was a dup, the kernel
+ // should have caused the aio_read() to fail and we shouldn't have reached
+ // here.
+ VG_(OSetWord_Insert)(aiocbp_table, (UWord)aiocbp);
+}
PRE(aio_write)
{
+ struct vki_aiocb* aiocbp = (struct vki_aiocb*)ARG1;
+
PRINT( "aio_write ( %#lx )", ARG1 );
PRE_REG_READ1(long, "aio_write", struct vki_aiocb*, aiocbp);
PRE_MEM_READ( "aio_write(aiocbp)", ARG1, sizeof(struct vki_aiocb));
+
+ if (ML_(safe_to_deref)(aiocbp, sizeof(struct vki_aiocb))) {
+ if (ML_(fd_allowed)(aiocbp->aio_fildes, "aio_write", tid, /*isNewFd*/False)) {
+ PRE_MEM_READ("aio_write(aiocbp->aio_buf)",
+ (Addr)aiocbp->aio_buf, aiocbp->aio_nbytes);
+ } else {
+ SET_STATUS_Failure( VKI_EBADF );
+ }
+ } else {
+ SET_STATUS_Failure( VKI_EINVAL );
+ }
}
-
/* ---------------------------------------------------------------------
mach_msg: formatted messages
------------------------------------------------------------------ */
@@ -7430,11 +7503,11 @@
// _____(__NR_settid_with_pid),
// _____(__NR___pthread_cond_timedwait),
// _____(__NR_aio_fsync),
- MACX_(__NR_aio_return, aio_return),
+ MACXY(__NR_aio_return, aio_return),
MACX_(__NR_aio_suspend, aio_suspend),
// _____(__NR_aio_cancel),
MACX_(__NR_aio_error, aio_error),
- MACX_(__NR_aio_read, aio_read),
+ MACXY(__NR_aio_read, aio_read),
MACX_(__NR_aio_write, aio_write),
// _____(__NR_lio_listio), // 320
// _____(__NR___pthread_cond_wait),
Modified: trunk/memcheck/tests/darwin/Makefile.am
===================================================================
--- trunk/memcheck/tests/darwin/Makefile.am 2009-07-23 00:55:46 UTC (rev 10538)
+++ trunk/memcheck/tests/darwin/Makefile.am 2009-07-23 04:30:06 UTC (rev 10539)
@@ -6,6 +6,7 @@
noinst_HEADERS = scalar.h
EXTRA_DIST = \
+ aio.stderr.exp aio.vgtest \
env.stderr.exp env.vgtest \
pth-supp.stderr.exp pth-supp.vgtest \
scalar.stderr.exp scalar.vgtest \
@@ -14,6 +15,7 @@
scalar_vfork.stderr.exp scalar_vfork.vgtest
check_PROGRAMS = \
+ aio \
env \
pth-supp \
scalar \
Added: trunk/memcheck/tests/darwin/aio.c
===================================================================
--- trunk/memcheck/tests/darwin/aio.c (rev 0)
+++ trunk/memcheck/tests/darwin/aio.c 2009-07-23 04:30:06 UTC (rev 10539)
@@ -0,0 +1,89 @@
+#include <assert.h>
+#include <aio.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+
+int x;
+
+int main(void)
+{
+ #define LEN 10
+ char buf[LEN];
+
+ struct aiocb a;
+ struct sigevent s;
+
+ // Not sure if the sigevent is even looked at by aio_*... just zero it.
+ memset(&s, 0, sizeof(struct sigevent));
+
+ a.aio_fildes = -1;
+ a.aio_offset = 0;
+ a.aio_buf = NULL;
+ a.aio_nbytes = LEN;
+ a.aio_reqprio = 0;
+ a.aio_sigevent = s;
+ a.aio_lio_opcode = 0; // ignored
+
+ //------------------------------------------------------------------------
+ // The cases where aiocbp itself points to bogus memory is handled in
+ // memcheck/tests/darwin/scalar.c, so we don't check that here.
+
+ //------------------------------------------------------------------------
+ // XXX: This causes an unexpected undef value error later, at the XXX mark.
+ // Not sure why, it shouldn't.
+ // assert( aio_return(&a) < 0); // (aiocbp hasn't been inited)
+
+ //------------------------------------------------------------------------
+ assert( aio_read(&a) < 0); // invalid fd
+
+ //------------------------------------------------------------------------
+ a.aio_fildes = open("aio.c", O_RDONLY);
+ assert(a.aio_fildes >= 0);
+
+ assert( aio_read(&a) < 0); // unaddressable aio_buf
+
+ //------------------------------------------------------------------------
+ a.aio_buf = buf;
+
+ assert( aio_read(&a) == 0 );
+
+ assert( aio_read(&a) < 0 ); // (don't crash on the repeated &a)
+
+ while (0 != aio_error(&a)) { };
+
+ if (buf[0] == buf[9]) x++; // undefined -- aio_return() not called yet
+
+ assert( aio_return(&a) > 0 ); // XXX: (undefined value error here)
+
+ if (buf[0] == buf[9]) x++;
+
+ assert( aio_return(&a) < 0 ); // (repeated aio_return(); fails because
+ // Valgrind can't find &a in the table)
+
+ //------------------------------------------------------------------------
+ a.aio_buf = 0;
+ a.aio_fildes = creat("mytmpfile", S_IRUSR|S_IWUSR);
+ assert(a.aio_fildes >= 0);
+
+ assert( aio_write(&a) < 0); // unaddressable aio_buf
+
+ //------------------------------------------------------------------------
+ a.aio_buf = buf;
+
+ assert( aio_write(&a) == 0 );
+
+ assert( aio_write(&a) < 0 ); // (don't crash on the repeated &a)
+
+ while (0 != aio_error(&a)) { };
+
+ assert( aio_return(&a) > 0 );
+
+ assert( aio_return(&a) < 0 ); // (repeated aio_return(); fails because
+ // Valgrind can't find &a in the table)
+
+ return x;
+};
+
+
+
Added: trunk/memcheck/tests/darwin/aio.stderr.exp
===================================================================
--- trunk/memcheck/tests/darwin/aio.stderr.exp (rev 0)
+++ trunk/memcheck/tests/darwin/aio.stderr.exp 2009-07-23 04:30:06 UTC (rev 10539)
@@ -0,0 +1,19 @@
+
+Warning: invalid file descriptor -1 in syscall aio_read()
+Syscall param aio_read(aiocbp->aio_buf) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (aio.c:55)
+
+Syscall param aio_write(aiocbp->aio_buf) points to unaddressable byte(s)
+ ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+malloc/free: in use at exit: ... bytes in ... blocks.
+malloc/free: ... allocs, ... frees, ... bytes allocated.
+For a detailed leak analysis, rerun with: --leak-check=yes
+For counts of detected errors, rerun with: -v
+Use --track-origins=yes to see where uninitialised values come from
Added: trunk/memcheck/tests/darwin/aio.vgtest
===================================================================
--- trunk/memcheck/tests/darwin/aio.vgtest (rev 0)
+++ trunk/memcheck/tests/darwin/aio.vgtest 2009-07-23 04:30:06 UTC (rev 10539)
@@ -0,0 +1,3 @@
+prog: aio
+vgopts: --leak-check=no
+stderr_filter: ../filter_allocs
|
|
From: Nicholas N. <n.n...@gm...> - 2009-07-23 03:18:23
|
On Thu, Jul 23, 2009 at 12:51 PM, Tom Hughes<th...@cy...> wrote: > > Nightly build on lloyd ( x86_64, Fedora 7 ) > Started at 2009-07-23 03:05:05 BST > Ended at 2009-07-23 03:51:06 BST > Results differ from 24 hours ago > > Checking out valgrind source tree ... done > Configuring valgrind ... done > Building valgrind ... done > Running regression tests ... failed > > Regression test results follow > > == 510 tests, 4 stderr failures, 0 stdout failures, 0 post failures == > helgrind/tests/rwlock_test (stderr) > helgrind/tests/tc06_two_races_xml (stderr) > helgrind/tests/tc12_rwl_trivial (stderr) > helgrind/tests/tc23_bogus_condwait (stderr) These are mostly line number differences and other minor things. Bart, I think they might be caused by some of your recent changes. Could you take a look? Nick |
|
From: Tom H. <th...@cy...> - 2009-07-23 02:51:28
|
Nightly build on lloyd ( x86_64, Fedora 7 ) Started at 2009-07-23 03:05:05 BST Ended at 2009-07-23 03:51:06 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 510 tests, 4 stderr failures, 0 stdout failures, 0 post failures == helgrind/tests/rwlock_test (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/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 == 510 tests, 4 stderr failures, 0 stdout failures, 0 post failures == helgrind/tests/rwlock_test (stderr) helgrind/tests/tc06_two_races_xml (stderr) drd/tests/pth_cancel_locked (stderr) drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Jul 23 03:28:10 2009 --- new.short Thu Jul 23 03:51:06 2009 *************** *** 11,14 **** helgrind/tests/tc06_two_races_xml (stderr) ! drd/tests/pth_cancel_locked (stderr) ! drd/tests/tc22_exit_w_lock (stderr) --- 11,14 ---- helgrind/tests/tc06_two_races_xml (stderr) ! helgrind/tests/tc12_rwl_trivial (stderr) ! helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: Tom H. <th...@cy...> - 2009-07-23 02:30:36
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2009-07-23 03:10:06 BST Ended at 2009-07-23 03:30:23 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 517 tests, 4 stderr failures, 1 stdout failure, 1 post failure == none/tests/linux/mremap2 (stdout) helgrind/tests/rwlock_test (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc23_bogus_condwait (stderr) exp-bbv/tests/amd64-linux/million (post) ================================================= == 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 == 517 tests, 4 stderr failures, 1 stdout failure, 1 post failure == none/tests/linux/mremap2 (stdout) helgrind/tests/rwlock_test (stderr) helgrind/tests/tc06_two_races_xml (stderr) drd/tests/pth_cancel_locked (stderr) drd/tests/tc22_exit_w_lock (stderr) exp-bbv/tests/amd64-linux/million (post) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Jul 23 03:20:19 2009 --- new.short Thu Jul 23 03:30:23 2009 *************** *** 12,15 **** helgrind/tests/tc06_two_races_xml (stderr) ! drd/tests/pth_cancel_locked (stderr) ! drd/tests/tc22_exit_w_lock (stderr) exp-bbv/tests/amd64-linux/million (post) --- 12,15 ---- helgrind/tests/tc06_two_races_xml (stderr) ! helgrind/tests/tc12_rwl_trivial (stderr) ! helgrind/tests/tc23_bogus_condwait (stderr) exp-bbv/tests/amd64-linux/million (post) |