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
(6) |
2
(7) |
|
3
(12) |
4
(9) |
5
(12) |
6
(9) |
7
(18) |
8
(10) |
9
(17) |
|
10
(15) |
11
(22) |
12
(16) |
13
(18) |
14
(9) |
15
(14) |
16
(18) |
|
17
(24) |
18
(11) |
19
(15) |
20
(29) |
21
(19) |
22
(20) |
23
(9) |
|
24
(25) |
25
(25) |
26
(38) |
27
(22) |
28
(16) |
29
(17) |
|
|
From: <sv...@va...> - 2008-02-28 08:30:41
|
Author: bart
Date: 2008-02-28 08:30:43 +0000 (Thu, 28 Feb 2008)
New Revision: 7497
Log:
Added support for recognizing invalid mutexes.
Modified:
trunk/exp-drd/drd_clientreq.h
trunk/exp-drd/drd_intercepts.c
trunk/exp-drd/drd_mutex.c
trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp
trunk/exp-drd/tests/tc20_verifywrap.stderr.exp
Modified: trunk/exp-drd/drd_clientreq.h
===================================================================
--- trunk/exp-drd/drd_clientreq.h 2008-02-28 07:36:04 UTC (rev 7496)
+++ trunk/exp-drd/drd_clientreq.h 2008-02-28 08:30:43 UTC (rev 7497)
@@ -119,6 +119,7 @@
typedef enum
{
+ mutex_type_invalid_mutex = 0,
mutex_type_recursive_mutex = 1,
mutex_type_errorcheck_mutex = 2,
mutex_type_default_mutex = 3,
Modified: trunk/exp-drd/drd_intercepts.c
===================================================================
--- trunk/exp-drd/drd_intercepts.c 2008-02-28 07:36:04 UTC (rev 7496)
+++ trunk/exp-drd/drd_intercepts.c 2008-02-28 08:30:43 UTC (rev 7497)
@@ -100,18 +100,8 @@
case PTHREAD_MUTEX_DEFAULT:
case PTHREAD_MUTEX_ADAPTIVE_NP:
return mutex_type_default_mutex;
-#if 0
- case -1:
- printf("Warning: changed mutex type from -1 into %d\n",
- mutex_type_default_mutex);
- return mutex_type_default_mutex;
-#endif
}
-#if 0
- printf("mutex->__data.__kind = %d\n", kind);
- assert(0);
-#endif
- return mutex_type_default_mutex;
+ return mutex_type_invalid_mutex;
}
static MutexT mutex_type(pthread_mutex_t* mutex)
Modified: trunk/exp-drd/drd_mutex.c
===================================================================
--- trunk/exp-drd/drd_mutex.c 2008-02-28 07:36:04 UTC (rev 7496)
+++ trunk/exp-drd/drd_mutex.c 2008-02-28 08:30:43 UTC (rev 7497)
@@ -251,12 +251,15 @@
*/
void mutex_pre_lock(const Addr mutex, const SizeT size, MutexT mutex_type)
{
- struct mutex_info* p = mutex_get(mutex);
+ struct mutex_info* p;
+
+ p = mutex_get(mutex);
if (p == 0)
{
mutex_init(mutex, size, mutex_type);
p = mutex_get(mutex);
}
+
tl_assert(p);
if (p->owner == thread_get_running_tid()
@@ -295,6 +298,16 @@
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;
@@ -368,6 +381,16 @@
p->owner);
}
+ 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;
@@ -448,6 +471,8 @@
{
switch (mt)
{
+ case mutex_type_invalid_mutex:
+ return "invalid mutex";
case mutex_type_recursive_mutex:
return "recursive mutex";
case mutex_type_errorcheck_mutex:
Modified: trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp 2008-02-28 07:36:04 UTC (rev 7496)
+++ trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp 2008-02-28 08:30:43 UTC (rev 7497)
@@ -13,6 +13,11 @@
by 0x........: clone (in /...libc...)
Thread 1:
+Invalid 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)
+
Not a mutex
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
@@ -32,9 +37,14 @@
by 0x........: clone (in /...libc...)
Thread 1:
+Invalid 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)
+
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: 6 errors from 6 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
Modified: trunk/exp-drd/tests/tc20_verifywrap.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap.stderr.exp 2008-02-28 07:36:04 UTC (rev 7496)
+++ trunk/exp-drd/tests/tc20_verifywrap.stderr.exp 2008-02-28 08:30:43 UTC (rev 7497)
@@ -24,6 +24,10 @@
at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:102)
+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)
@@ -67,4 +71,4 @@
Destroying locked mutex: address 0x........, recursion count 1, owner 1.
at 0x........: main (tc20_verifywrap.c:261)
-ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
|
|
From: <sv...@va...> - 2008-02-28 07:36:03
|
Author: bart
Date: 2008-02-28 07:36:04 +0000 (Thu, 28 Feb 2008)
New Revision: 7496
Log:
Should compile again with linuxthreads header files.
Modified:
trunk/exp-drd/drd_intercepts.c
Modified: trunk/exp-drd/drd_intercepts.c
===================================================================
--- trunk/exp-drd/drd_intercepts.c 2008-02-28 01:36:38 UTC (rev 7495)
+++ trunk/exp-drd/drd_intercepts.c 2008-02-28 07:36:04 UTC (rev 7496)
@@ -116,7 +116,17 @@
static MutexT mutex_type(pthread_mutex_t* mutex)
{
- return pthread_to_drd_mutex_type(mutex->__data.__kind);
+#if defined(_PTHREAD_DESCR_DEFINED)
+ // Linuxthreads.
+ const int kind = mutex->__m_kind;
+#elif defined(__SIZEOF_PTHREAD_MUTEX_T)
+ // NPTL.
+ const int kind = mutex->__data.__kind;
+#else
+ // Another POSIX threads implementation. Regression tests will fail.
+ const int kind = PTHREAD_MUTEX_DEFAULT;
+#endif
+ return pthread_to_drd_mutex_type(kind);
}
static void vg_start_suppression(const void* const p, size_t const size)
|
|
From: Tom H. <th...@cy...> - 2008-02-28 05:07:14
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-02-28 03:15:08 GMT
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... failed
Last 20 lines of verbose log follow echo
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -mpreferred-stack-boundary=2 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -MT exp_drd_x86_linux-drd_vc.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_vc.Tpo" \
-c -o exp_drd_x86_linux-drd_vc.o `test -f 'drd_vc.c' || echo './'`drd_vc.c; \
then mv -f ".deps/exp_drd_x86_linux-drd_vc.Tpo" ".deps/exp_drd_x86_linux-drd_vc.Po"; \
else rm -f ".deps/exp_drd_x86_linux-drd_vc.Tpo"; exit 1; \
fi
gcc -Wno-long-long -o exp-drd-x86-linux -static -Wl,-defsym,valt_load_address=0x38000000 -nodefaultlibs -nostartfiles -u _start -m32 -Wl,-T,../valt_load_address_x86_linux.lds exp_drd_x86_linux-drd_barrier.o exp_drd_x86_linux-drd_bitmap.o exp_drd_x86_linux-drd_clientreq.o exp_drd_x86_linux-drd_cond.o exp_drd_x86_linux-drd_error.o exp_drd_x86_linux-drd_main.o exp_drd_x86_linux-drd_malloc_wrappers.o exp_drd_x86_linux-drd_mutex.o exp_drd_x86_linux-drd_segment.o exp_drd_x86_linux-drd_semaphore.o exp_drd_x86_linux-drd_suppression.o exp_drd_x86_linux-drd_thread.o exp_drd_x86_linux-drd_vc.o ../coregrind/libcoregrind_x86_linux.a ../VEX/libvex_x86_linux.a -lgcc
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -mpreferred-stack-boundary=2 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -O -g -fpic -fno-omit-frame-pointer -fno-strict-aliasing -Wno-long-long -MT vgpreload_exp_drd_x86_linux_so-drd_intercepts.o -MD -MP -MF ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" \
-c -o vgpreload_exp_drd_x86_linux_so-drd_intercepts.o `test -f 'drd_intercepts.c' || echo './'`drd_intercepts.c; \
then mv -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Po"; \
else rm -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo"; exit 1; \
fi
drd_intercepts.c: In function `mutex_type':
drd_intercepts.c:119: structure has no member named `__data'
make[3]: *** [vgpreload_exp_drd_x86_linux_so-drd_intercepts.o] Error 1
make[3]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind'
make: *** [all] Error 2
=================================================
== 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
== 365 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 Thu Feb 28 04:52:51 2008
--- new.short Thu Feb 28 05:07:21 2008
***************
*** 3,141 ****
Configuring valgrind ... done
! Building valgrind ... done
! Running regression tests ... failed
!
! Regression test results follow
!
! == 365 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)
--- 3,26 ----
Configuring valgrind ... done
! Building valgrind ... failed
+ Last 20 lines of verbose log follow echo
+ if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -mpreferred-stack-boundary=2 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -MT exp_drd_x86_linux-drd_vc.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_vc.Tpo" \
+ -c -o exp_drd_x86_linux-drd_vc.o `test -f 'drd_vc.c' || echo './'`drd_vc.c; \
+ then mv -f ".deps/exp_drd_x86_linux-drd_vc.Tpo" ".deps/exp_drd_x86_linux-drd_vc.Po"; \
+ else rm -f ".deps/exp_drd_x86_linux-drd_vc.Tpo"; exit 1; \
+ fi
+ gcc -Wno-long-long -o exp-drd-x86-linux -static -Wl,-defsym,valt_load_address=0x38000000 -nodefaultlibs -nostartfiles -u _start -m32 -Wl,-T,../valt_load_address_x86_linux.lds exp_drd_x86_linux-drd_barrier.o exp_drd_x86_linux-drd_bitmap.o exp_drd_x86_linux-drd_clientreq.o exp_drd_x86_linux-drd_cond.o exp_drd_x86_linux-drd_error.o exp_drd_x86_linux-drd_main.o exp_drd_x86_linux-drd_malloc_wrappers.o exp_drd_x86_linux-drd_mutex.o exp_drd_x86_linux-drd_segment.o exp_drd_x86_linux-drd_semaphore.o exp_drd_x86_linux-drd_suppression.o exp_drd_x86_linux-drd_thread.o exp_drd_x86_linux-drd_vc.o ../coregrind/libcoregrind_x86_linux.a ../VEX/libvex_x86_linux.a -lgcc
+ if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -mpreferred-stack-boundary=2 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -O -g -fpic -fno-omit-frame-pointer -fno-strict-aliasing -Wno-long-long -MT vgpreload_exp_drd_x86_linux_so-drd_intercepts.o -MD -MP -MF ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" \
+ -c -o vgpreload_exp_drd_x86_linux_so-drd_intercepts.o `test -f 'drd_intercepts.c' || echo './'`drd_intercepts.c; \
+ then mv -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Po"; \
+ else rm -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo"; exit 1; \
+ fi
+ drd_intercepts.c: In function `mutex_type':
+ drd_intercepts.c:119: structure has no member named `__data'
+ make[3]: *** [vgpreload_exp_drd_x86_linux_so-drd_intercepts.o] Error 1
+ make[3]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
+ make[2]: *** [all-recursive] Error 1
+ make[2]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
+ make[1]: *** [all-recursive] Error 1
+ make[1]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind'
+ make: *** [all] Error 2
|
|
From: Tom H. <th...@cy...> - 2008-02-28 04:11:35
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-02-28 03:05:05 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 == 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) ================================================= == 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 == 399 tests, 9 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/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Feb 28 03:37:07 2008 --- new.short Thu Feb 28 04:10:47 2008 *************** *** 8,10 **** ! == 399 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 400 tests, 10 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 19,20 **** --- 19,21 ---- exp-drd/tests/hg03_inherit (stderr) + exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-28 03:52:46
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-02-28 03:20:12 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 == 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) ================================================= == 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 == 405 tests, 10 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/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Feb 28 03:34:50 2008 --- new.short Thu Feb 28 03:52:49 2008 *************** *** 8,10 **** ! == 405 tests, 10 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 406 tests, 11 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 19,20 **** --- 19,21 ---- exp-drd/tests/hg03_inherit (stderr) + exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-28 03:45:54
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-02-28 03:25:15 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 == 404 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 == 403 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Feb 28 03:35:51 2008 --- new.short Thu Feb 28 03:45:52 2008 *************** *** 8,10 **** ! == 403 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 404 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 20,21 **** --- 20,22 ---- helgrind/tests/tc22_exit_w_lock (stderr) + exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-28 03:10:39
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-02-28 03:00:03 GMT
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... failed
Last 20 lines of verbose log follow echo
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_semaphore.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_semaphore.Tpo" -c -o exp_drd_x86_linux-drd_semaphore.o `test -f 'drd_semaphore.c' || echo './'`drd_semaphore.c; \
then mv -f ".deps/exp_drd_x86_linux-drd_semaphore.Tpo" ".deps/exp_drd_x86_linux-drd_semaphore.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_semaphore.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_suppression.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_suppression.Tpo" -c -o exp_drd_x86_linux-drd_suppression.o `test -f 'drd_suppression.c' || echo './'`drd_suppression.c; \
then mv -f ".deps/exp_drd_x86_linux-drd_suppression.Tpo" ".deps/exp_drd_x86_linux-drd_suppression.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_suppression.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_thread.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_thread.Tpo" -c -o exp_drd_x86_linux-drd_thread.o `test -f 'drd_thread.c' || echo './'`drd_thread.c; \
then mv -f ".deps/exp_drd_x86_linux-drd_thread.Tpo" ".deps/exp_drd_x86_linux-drd_thread.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_thread.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_vc.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_vc.Tpo" -c -o exp_drd_x86_linux-drd_vc.o `test -f 'drd_vc.c' || echo './'`drd_vc.c; \
then mv -f ".deps/exp_drd_x86_linux-drd_vc.Tpo" ".deps/exp_drd_x86_linux-drd_vc.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_vc.Tpo"; exit 1; fi
gcc -Wno-long-long -Wdeclaration-after-statement -o exp-drd-x86-linux -static -Wl,-defsym,valt_load_address=0x38000000 -nodefaultlibs -nostartfiles -u _start -m32 -Wl,-T,../valt_load_address_x86_linux.lds exp_drd_x86_linux-drd_barrier.o exp_drd_x86_linux-drd_bitmap.o exp_drd_x86_linux-drd_clientreq.o exp_drd_x86_linux-drd_cond.o exp_drd_x86_linux-drd_error.o exp_drd_x86_linux-drd_main.o exp_drd_x86_linux-drd_malloc_wrappers.o exp_drd_x86_linux-drd_mutex.o exp_drd_x86_linux-drd_segment.o exp_drd_x86_linux-drd_semaphore.o exp_drd_x86_linux-drd_suppression.o exp_drd_x86_linux-drd_thread.o exp_drd_x86_linux-drd_vc.o ../coregrind/libcoregrind_x86_linux.a ../VEX/libvex_x86_linux.a -lgcc
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -O -g -fpic -fno-omit-frame-pointer -fno-strict-aliasing -Wno-long-long -Wdeclaration-after-statement -MT vgpreload_exp_drd_x86_linux_so-drd_intercepts.o -MD -MP -MF ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" -c -o vgpreload_exp_drd_x86_linux_so-drd_intercepts.o `test -f 'drd_intercepts.c' || echo './'`drd_intercepts.c; \
then mv -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Po"; else rm -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo"; exit 1; fi
drd_intercepts.c: In function `mutex_type':
drd_intercepts.c:119: error: structure has no member named `__data'
make[3]: *** [vgpreload_exp_drd_x86_linux_so-drd_intercepts.o] Error 1
make[3]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind'
make: *** [all] Error 2
=================================================
== 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
== 405 tests, 31 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/tc20_verifywrap (stderr)
exp-drd/tests/tc22_exit_w_lock (stderr)
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Thu Feb 28 03:08:01 2008
--- new.short Thu Feb 28 03:10:43 2008
***************
*** 3,44 ****
Configuring valgrind ... done
! Building valgrind ... done
! Running regression tests ... failed
!
! Regression test results follow
!
! == 405 tests, 31 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/tc20_verifywrap (stderr)
! exp-drd/tests/tc22_exit_w_lock (stderr)
--- 3,26 ----
Configuring valgrind ... done
! Building valgrind ... failed
+ Last 20 lines of verbose log follow echo
+ if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_semaphore.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_semaphore.Tpo" -c -o exp_drd_x86_linux-drd_semaphore.o `test -f 'drd_semaphore.c' || echo './'`drd_semaphore.c; \
+ then mv -f ".deps/exp_drd_x86_linux-drd_semaphore.Tpo" ".deps/exp_drd_x86_linux-drd_semaphore.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_semaphore.Tpo"; exit 1; fi
+ if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_suppression.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_suppression.Tpo" -c -o exp_drd_x86_linux-drd_suppression.o `test -f 'drd_suppression.c' || echo './'`drd_suppression.c; \
+ then mv -f ".deps/exp_drd_x86_linux-drd_suppression.Tpo" ".deps/exp_drd_x86_linux-drd_suppression.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_suppression.Tpo"; exit 1; fi
+ if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_thread.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_thread.Tpo" -c -o exp_drd_x86_linux-drd_thread.o `test -f 'drd_thread.c' || echo './'`drd_thread.c; \
+ then mv -f ".deps/exp_drd_x86_linux-drd_thread.Tpo" ".deps/exp_drd_x86_linux-drd_thread.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_thread.Tpo"; exit 1; fi
+ if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_vc.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_vc.Tpo" -c -o exp_drd_x86_linux-drd_vc.o `test -f 'drd_vc.c' || echo './'`drd_vc.c; \
+ then mv -f ".deps/exp_drd_x86_linux-drd_vc.Tpo" ".deps/exp_drd_x86_linux-drd_vc.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_vc.Tpo"; exit 1; fi
+ gcc -Wno-long-long -Wdeclaration-after-statement -o exp-drd-x86-linux -static -Wl,-defsym,valt_load_address=0x38000000 -nodefaultlibs -nostartfiles -u _start -m32 -Wl,-T,../valt_load_address_x86_linux.lds exp_drd_x86_linux-drd_barrier.o exp_drd_x86_linux-drd_bitmap.o exp_drd_x86_linux-drd_clientreq.o exp_drd_x86_linux-drd_cond.o exp_drd_x86_linux-drd_error.o exp_drd_x86_linux-drd_main.o exp_drd_x86_linux-drd_malloc_wrappers.o exp_drd_x86_linux-drd_mutex.o exp_drd_x86_linux-drd_segment.o exp_drd_x86_linux-drd_semaphore.o exp_drd_x86_linux-drd_suppression.o exp_drd_x86_linux-drd_thread.o exp_drd_x86_linux-drd_vc.o ../coregrind/libcoregrind_x86_linux.a ../VEX/libvex_x86_linux.a -lgcc
+ if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -O -g -fpic -fno-omit-frame-pointer -fno-strict-aliasing -Wno-long-long -Wdeclaration-after-statement -MT vgpreload_exp_drd_x86_linux_so-drd_intercepts.o -MD -MP -MF ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" -c -o vgpreload_exp_drd_x86_linux_so-drd_intercepts.o `test -f 'drd_intercepts.c' || echo './'`drd_intercepts.c; \
+ then mv -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Po"; else rm -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo"; exit 1; fi
+ drd_intercepts.c: In function `mutex_type':
+ drd_intercepts.c:119: error: structure has no member named `__data'
+ make[3]: *** [vgpreload_exp_drd_x86_linux_so-drd_intercepts.o] Error 1
+ make[3]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
+ make[2]: *** [all-recursive] Error 1
+ make[2]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
+ make[1]: *** [all-recursive] Error 1
+ make[1]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind'
+ make: *** [all] Error 2
|
|
From: <sv...@va...> - 2008-02-28 01:36:38
|
Author: sewardj
Date: 2008-02-28 01:36:38 +0000 (Thu, 28 Feb 2008)
New Revision: 7495
Log:
Stop gcc inlining in varinfo5so.c so as to get consistent results --
different gccs inline differently :-(
Modified:
branches/DATASYMS/memcheck/tests/varinfo5.stderr.exp
branches/DATASYMS/memcheck/tests/varinfo5.vgtest
branches/DATASYMS/memcheck/tests/varinfo5so.c
Modified: branches/DATASYMS/memcheck/tests/varinfo5.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo5.stderr.exp 2008-02-27 18:10:19 UTC (rev 7494)
+++ branches/DATASYMS/memcheck/tests/varinfo5.stderr.exp 2008-02-28 01:36:38 UTC (rev 7495)
@@ -1,129 +1,161 @@
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:52)
+ by 0x........: varinfo1_main (varinfo5so.c:52)
+ by 0x........: varinfo5_main (varinfo5so.c:154)
by 0x........: main (varinfo5.c:5)
Address 0x........ is 1 bytes inside a block of size 3 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: varinfo5_main (varinfo5so.c:50)
+ by 0x........: varinfo1_main (varinfo5so.c:50)
+ by 0x........: varinfo5_main (varinfo5so.c:154)
by 0x........: main (varinfo5.c:5)
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:55)
+ by 0x........: varinfo1_main (varinfo5so.c:55)
+ by 0x........: varinfo5_main (varinfo5so.c:154)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside global var "global_u1"
declared at varinfo5so.c:38
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:56)
+ by 0x........: varinfo1_main (varinfo5so.c:56)
+ by 0x........: varinfo5_main (varinfo5so.c:154)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside global var "global_i1"
declared at varinfo5so.c:40
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:57)
+ by 0x........: varinfo1_main (varinfo5so.c:57)
+ by 0x........: varinfo5_main (varinfo5so.c:154)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside global_u2[3],
a global variable declared at varinfo5so.c:42
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:58)
+ by 0x........: varinfo1_main (varinfo5so.c:58)
+ by 0x........: varinfo5_main (varinfo5so.c:154)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside global_i2[7],
a global variable declared at varinfo5so.c:44
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:59)
+ by 0x........: varinfo1_main (varinfo5so.c:59)
+ by 0x........: varinfo5_main (varinfo5so.c:154)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside local var "local"
declared at varinfo5so.c:49, in frame #1 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:71)
+ by 0x........: foo2 (varinfo5so.c:71)
+ by 0x........: varinfo2_main (varinfo5so.c:81)
+ by 0x........: varinfo5_main (varinfo5so.c:155)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside var[7],
declared at varinfo5so.c:69, in frame #1 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:73)
+ by 0x........: foo2 (varinfo5so.c:73)
+ by 0x........: varinfo2_main (varinfo5so.c:81)
+ by 0x........: varinfo5_main (varinfo5so.c:155)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 2 bytes inside var.bar,
declared at varinfo5so.c:72, in frame #1 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:76)
+ by 0x........: foo2 (varinfo5so.c:76)
+ by 0x........: varinfo2_main (varinfo5so.c:81)
+ by 0x........: varinfo5_main (varinfo5so.c:155)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 1 byte inside local var "var"
declared at varinfo5so.c:67, in frame #1 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:106)
+ by 0x........: foo3 (varinfo5so.c:106)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside static_global_def[1],
declared at varinfo5so.c:87, in frame #0 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:107)
+ by 0x........: foo3 (varinfo5so.c:107)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside nonstatic_global_def[2],
a global variable declared at varinfo5so.c:88
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:108)
+ by 0x........: foo3 (varinfo5so.c:108)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside static_global_undef[3],
declared at varinfo5so.c:89, in frame #0 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:109)
+ by 0x........: foo3 (varinfo5so.c:109)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside nonstatic_global_undef[4],
a global variable declared at varinfo5so.c:90
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:94)
+ by 0x........: bar3 (varinfo5so.c:94)
+ by 0x........: foo3 (varinfo5so.c:110)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
- Location 0x........ is 0 bytes inside static_local_def[5],
- declared at varinfo5so.c:102, in frame #0 of thread 1
+ Address 0x........ is 5 bytes inside data symbol "static_local_def.XXXX"
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:95)
+ by 0x........: bar3 (varinfo5so.c:95)
+ by 0x........: foo3 (varinfo5so.c:110)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside nonstatic_local_def[6],
- declared at varinfo5so.c:103, in frame #1 of thread 1
+ declared at varinfo5so.c:103, in frame #2 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:96)
+ by 0x........: bar3 (varinfo5so.c:96)
+ by 0x........: foo3 (varinfo5so.c:110)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
- Location 0x........ is 0 bytes inside static_local_undef[7],
- declared at varinfo5so.c:104, in frame #0 of thread 1
+ Address 0x........ is 7 bytes inside data symbol "static_local_undef.XXXX"
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:97)
+ by 0x........: bar3 (varinfo5so.c:97)
+ by 0x........: foo3 (varinfo5so.c:110)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside nonstatic_local_undef[8],
- declared at varinfo5so.c:105, in frame #1 of thread 1
+ declared at varinfo5so.c:105, in frame #2 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
by 0x........: blah4 (varinfo5so.c:137)
- by 0x........: varinfo5_main (varinfo5so.c:146)
+ by 0x........: varinfo4_main (varinfo5so.c:146)
+ by 0x........: varinfo5_main (varinfo5so.c:157)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 1 byte inside a[3].xyzzy[21].c1,
declared at varinfo5so.c:135, in frame #1 of thread 1
@@ -131,7 +163,8 @@
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
by 0x........: blah4 (varinfo5so.c:138)
- by 0x........: varinfo5_main (varinfo5so.c:146)
+ by 0x........: varinfo4_main (varinfo5so.c:146)
+ by 0x........: varinfo5_main (varinfo5so.c:157)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside a[5].bong,
declared at varinfo5so.c:135, in frame #1 of thread 1
@@ -139,7 +172,8 @@
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
by 0x........: blah4 (varinfo5so.c:139)
- by 0x........: varinfo5_main (varinfo5so.c:146)
+ by 0x........: varinfo4_main (varinfo5so.c:146)
+ by 0x........: varinfo5_main (varinfo5so.c:157)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 1 byte inside a[3].xyzzy[21].c2[2],
declared at varinfo5so.c:135, in frame #1 of thread 1
Modified: branches/DATASYMS/memcheck/tests/varinfo5.vgtest
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo5.vgtest 2008-02-27 18:10:19 UTC (rev 7494)
+++ branches/DATASYMS/memcheck/tests/varinfo5.vgtest 2008-02-28 01:36:38 UTC (rev 7495)
@@ -1,2 +1,3 @@
prog: varinfo5
vgopts: --read-var-info=yes
+stderr_filter: filter_varinfo3
Modified: branches/DATASYMS/memcheck/tests/varinfo5so.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo5so.c 2008-02-27 18:10:19 UTC (rev 7494)
+++ branches/DATASYMS/memcheck/tests/varinfo5so.c 2008-02-28 01:36:38 UTC (rev 7495)
@@ -18,7 +18,7 @@
/* Cause memcheck to complain about the address "a" and so to print
its best guess as to what "a" actually is. a must be
addressible. */
-
+__attribute__((noinline))
void croak ( void* aV )
{
char* a = (char*)aV;
@@ -43,7 +43,7 @@
char global_i2[10] = { 1,2,3,4,5,6,7,8,9,10 };
-
+__attribute__((noinline))
static int varinfo1_main ( void )
{
int local;
@@ -61,7 +61,7 @@
}
/* ------------ varinfo2 ------------ */
-
+__attribute__((noinline))
static void foo2 ( void )
{
int var;
@@ -75,7 +75,7 @@
}
croak( 1 + (char*)&var );
}
-
+__attribute__((noinline))
static int varinfo2_main ( void )
{
foo2();
@@ -88,7 +88,7 @@
char nonstatic_global_def[10] = {0,0,0,0,0, 0,0,0,0,0};
static char static_global_undef[10];
char nonstatic_global_undef[10];
-
+__attribute__((noinline))
static void bar3 ( char* p1, char* p2, char* p3, char* p4 )
{
croak(p1);
@@ -96,7 +96,7 @@
croak(p3);
croak(p4);
}
-
+__attribute__((noinline))
static void foo3 ( void )
{
static char static_local_def[10] = {0,0,0,0,0, 0,0,0,0,0};
@@ -112,7 +112,7 @@
7 + (char*)&static_local_undef,
8 + (char*)&nonstatic_local_undef );
}
-
+__attribute__((noinline))
static int varinfo3_main ( void )
{
foo3();
@@ -140,7 +140,7 @@
memset(a, 0, sizeof(a));
return a[3].xyzzy[x*y].c1;
}
-
+__attribute__((noinline))
static int varinfo4_main ( void )
{
fprintf(stderr, "answer is %d\n", blah4(3,7) );
|
|
From: Nicholas N. <nj...@cs...> - 2008-02-27 18:14:30
|
On Wed, 27 Feb 2008, Konstantin Serebryany wrote: > My $0.02 > In my variant of helgrind I have a client request saying that we > expect a race on a particular address. > If the race is detected, the tool is silent. But if the race is *not* > detected, the tool complains at the end. > > This is not a substitute for the current testing scheme; it is quite > orthogonal. > > The current scheme tests that the output matches the golden file > (modulo addresses, tids, etc). > > My scheme is not applicable to all kinds of errors that valgrind tools > may emit and does not check the exact output. > But it is immune to changes in the test code and compiler > optimizations (inlining). > And it does not require any golden file which is useful when the test > suite is under development. Such a test is doable within the vg_regtest framework. The .stderr.exp file will be empty (well, there'll be two blank lines in it). If the tool complains, the .stderr.out file won't match. Or have I misunderstood what you are saying? Nick |
|
From: Nicholas N. <nj...@cs...> - 2008-02-27 18:10:58
|
On Wed, 27 Feb 2008, Bart Van Assche wrote: > Maybe I should have made myself more clear. The comment in > tests/vg_regtest.pl.in explains that stdout.exp files only can have a > numeric suffix ([0-9]*), while stderr.exp files can have any suffix > (*). If I understood the tests/vg_regtest.pl.in sourcecode correctly, > both stdout.exp and stderr.exp files can now have any suffix. Is this > correct ? Ah, yes. I misread your first email. I've updated that comment and some related ones. Thanks. Nick |
|
From: <sv...@va...> - 2008-02-27 18:10:23
|
Author: njn Date: 2008-02-27 18:10:19 +0000 (Wed, 27 Feb 2008) New Revision: 7494 Log: Make comments reflect the code. Modified: trunk/tests/vg_regtest.in Modified: trunk/tests/vg_regtest.in =================================================================== --- trunk/tests/vg_regtest.in 2008-02-27 18:06:09 UTC (rev 7493) +++ trunk/tests/vg_regtest.in 2008-02-27 18:10:19 UTC (rev 7494) @@ -61,17 +61,17 @@ # Note that filters are necessary for stderr results to filter out things that # always change, eg. process id numbers. # -# Expected stdout (filtered) is kept in <test>.stdout.exp[0-9]* (can be more +# Expected stdout (filtered) is kept in <test>.stdout.exp* (can be more # than one expected output). It can be missing if it would be empty. Expected # stderr (filtered) is kept in <test>.stderr.exp*. There must be at least # one stderr.exp* file. # # The prerequisite command, if present, must return 0 otherwise the test is # skipped. The post-test command, if present, must return 0 and its stdout -# must match the expected stdout which is kept in <test>.post.exp[0-9]*. +# must match the expected stdout which is kept in <test>.post.exp*. # # If results don't match, the output can be found in <test>.std<strm>.out, -# and the diff between expected and actual in <test>.std<strm>.diff[0-9]*. +# and the diff between expected and actual in <test>.std<strm>.diff*. # # Sometimes it is useful to run all the tests at a high sanity check # level or with arbitrary other flags. To make this simple, extra |
|
From: <sv...@va...> - 2008-02-27 18:06:07
|
Author: bart Date: 2008-02-27 18:06:09 +0000 (Wed, 27 Feb 2008) New Revision: 7493 Log: Updated to do list. Modified: trunk/exp-drd/TODO.txt Modified: trunk/exp-drd/TODO.txt =================================================================== --- trunk/exp-drd/TODO.txt 2008-02-27 17:42:04 UTC (rev 7492) +++ trunk/exp-drd/TODO.txt 2008-02-27 18:06:09 UTC (rev 7493) @@ -5,10 +5,15 @@ Data-race detection algorithm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - pthread rwlock state tracking and support. +- Print an error message when memory is freed that contains a locked + reader-writer synchronization object. +- Print an error message when a semaphore is freed that is being waited upon. - Eliminate the upper bounds on the number of mutexes, condition variables, semaphores, barriers and threads by converting arrays into OSet's. - Implement segment merging, such that the number of segments per thread remains limited even when there is no synchronization between threads. +- Add locking order checking. +- Make sure tc14_laog_dinphils is run during exp-drd regression tests. - Discuss on the Valgrind mailing list how to make it possible to call POSIX thread synchronization primitives from client code (drd_intercepts.c) without triggering Valgrind's redirection mechanism. @@ -47,16 +52,21 @@ (e.g. exp-drd/test/matinv.c). +Limitations +~~~~~~~~~~~ +- Does not work with a glibc library compiled with linuxthreads -- NPTL is + required for proper operation. + + Known bugs ~~~~~~~~~~ - Gets killed by the OOM handler for realistically sized applications, e.g. knode and OpenOffice. -- Does not work with a glibc library compiled with linuxthreads -- NPTL is - required for proper operation. - [x86_64] Reports "Allocation context: unknown" for BSS symbols on AMD64 (works fine on i386). This is a bug in Valgrind's debug info reader -- VG_(find_seginfo)() returns NULL for BSS symbols on x86_64. Not yet in the KDE bug tracking system. +- tc04_free_lock fails on AMD64 + openSUSE 10.3 (free() locked mutex). - --trace-mem=yes can cause crashes. This might be caused by the code that prints backtraces. An example (AMD64): ./vg-in-place --tool=exp-drd --trace-mem=yes exp-drd/tests/pth_barrier 2 2 1 |
|
From: <sv...@va...> - 2008-02-27 17:42:04
|
Author: bart
Date: 2008-02-27 17:42:04 +0000 (Wed, 27 Feb 2008)
New Revision: 7492
Log:
Converted to new mutex error message format.
Modified:
trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2
trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit
Modified: trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2 2008-02-27 17:41:22 UTC (rev 7491)
+++ trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2 2008-02-27 17:42:04 UTC (rev 7492)
@@ -16,18 +16,22 @@
---------------- pthread_mutex_lock et al ----------------
-Destroying locked mutex / mutex 0x........ (recursion count 1, owner 1)
+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)
-Not a mutex
+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)
+
+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 ----------------
-Not a mutex
+Mutex not locked: address 0x........, recursion count 0, owner 0.
at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:147)
@@ -60,4 +64,7 @@
------------ dealloc of mem holding locks ------------
-ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
+Destroying locked mutex: address 0x........, recursion count 1, owner 1.
+ at 0x........: main (tc20_verifywrap.c:262)
+
+ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)
Modified: trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit
===================================================================
--- trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit 2008-02-27 17:41:22 UTC (rev 7491)
+++ trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit 2008-02-27 17:42:04 UTC (rev 7492)
@@ -120,4 +120,8 @@
Other segment end (thread 2)
(thread finished, call stack no longer available)
-ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
+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)
|
|
From: <sv...@va...> - 2008-02-27 17:41:21
|
Author: bart
Date: 2008-02-27 17:41:22 +0000 (Wed, 27 Feb 2008)
New Revision: 7491
Log:
Fixed compiler warning.
Modified:
trunk/exp-drd/tests/recursive_mutex.c
Modified: trunk/exp-drd/tests/recursive_mutex.c
===================================================================
--- trunk/exp-drd/tests/recursive_mutex.c 2008-02-27 16:13:05 UTC (rev 7490)
+++ trunk/exp-drd/tests/recursive_mutex.c 2008-02-27 17:41:22 UTC (rev 7491)
@@ -5,8 +5,10 @@
#define _GNU_SOURCE
#include <stdio.h>
+#include <unistd.h>
#include <pthread.h>
+
static void lock_twice(pthread_mutex_t* const p)
{
pthread_mutex_lock(p);
|
|
From: <sv...@va...> - 2008-02-27 16:13:09
|
Author: bart
Date: 2008-02-27 16:13:05 +0000 (Wed, 27 Feb 2008)
New Revision: 7490
Log:
An error message is now printed before attempting to lock a non-recursive mutex recursively.
Added:
trunk/exp-drd/tests/recursive_mutex.stderr.exp
trunk/exp-drd/tests/recursive_mutex.stdout.exp
trunk/exp-drd/tests/recursive_mutex.vgtest
Modified:
trunk/exp-drd/drd_clientreq.c
trunk/exp-drd/drd_main.c
trunk/exp-drd/drd_mutex.c
trunk/exp-drd/drd_mutex.h
trunk/exp-drd/tests/recursive_mutex.c
Modified: trunk/exp-drd/drd_clientreq.c
===================================================================
--- trunk/exp-drd/drd_clientreq.c 2008-02-27 15:46:00 UTC (rev 7489)
+++ trunk/exp-drd/drd_clientreq.c 2008-02-27 16:13:05 UTC (rev 7490)
@@ -64,7 +64,7 @@
const SizeT size, const MutexT mutex_type)
{
cond_post_wait(cond);
- mutex_lock(mutex, size, mutex_type);
+ mutex_post_lock(mutex, size, mutex_type);
}
static void drd_pre_cond_signal(const Addr cond)
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-02-27 15:46:00 UTC (rev 7489)
+++ trunk/exp-drd/drd_main.c 2008-02-27 16:13:05 UTC (rev 7490)
@@ -431,10 +431,7 @@
const SizeT size,
const MutexT mutex_type)
{
- if (mutex_get(mutex) == 0)
- {
- mutex_init(mutex, size, mutex_type);
- }
+ mutex_pre_lock(mutex, size, mutex_type);
}
void drd_post_mutex_lock(const DrdThreadId drd_tid,
@@ -442,7 +439,7 @@
const SizeT size,
const MutexT mutex_type)
{
- mutex_lock(mutex, size, mutex_type);
+ mutex_post_lock(mutex, size, mutex_type);
}
void drd_pre_mutex_unlock(const DrdThreadId drd_tid,
Modified: trunk/exp-drd/drd_mutex.c
===================================================================
--- trunk/exp-drd/drd_mutex.c 2008-02-27 15:46:00 UTC (rev 7489)
+++ trunk/exp-drd/drd_mutex.c 2008-02-27 16:13:05 UTC (rev 7490)
@@ -244,12 +244,40 @@
return 0;
}
+/** Called before pthread_mutex_lock() is invoked. If a data structure for
+ * the client-side object was not yet created, do this now. Also check whether
+ * an attempt is made to lock recursively a synchronization object that must
+ * not be locked recursively.
+ */
+void mutex_pre_lock(const Addr mutex, const SizeT size, MutexT mutex_type)
+{
+ struct mutex_info* p = mutex_get(mutex);
+ if (p == 0)
+ {
+ mutex_init(mutex, size, mutex_type);
+ p = mutex_get(mutex);
+ }
+ tl_assert(p);
+
+ if (p->owner == thread_get_running_tid()
+ && p->recursion_count >= 1
+ && mutex_type != mutex_type_recursive_mutex)
+ {
+ MutexErrInfo MEI = { p->mutex, p->recursion_count, p->owner };
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ MutexErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "Recursive locking not allowed",
+ &MEI);
+ }
+}
+
/**
* Update mutex_info state when locking the pthread_mutex_t mutex.
* Note: this function must be called after pthread_mutex_lock() has been
* called, or a race condition is triggered !
*/
-int mutex_lock(const Addr mutex, const SizeT size, MutexT mutex_type)
+int mutex_post_lock(const Addr mutex, const SizeT size, MutexT mutex_type)
{
const DrdThreadId drd_tid = VgThreadIdToDrdThreadId(VG_(get_running_tid)());
struct mutex_info* const p = mutex_get_or_allocate(mutex, size, mutex_type);
@@ -286,13 +314,6 @@
tl_assert(p->mutex_type == mutex_type);
tl_assert(p->size == size);
- if (p->recursion_count >= 1 && mutex_type == mutex_type_spinlock)
- {
- // TO DO: tell the user in a more friendly way that it is not allowed to
- // lock spinlocks recursively.
- tl_assert(0);
- }
-
if (p->recursion_count == 0)
{
p->owner = drd_tid;
Modified: trunk/exp-drd/drd_mutex.h
===================================================================
--- trunk/exp-drd/drd_mutex.h 2008-02-27 15:46:00 UTC (rev 7489)
+++ trunk/exp-drd/drd_mutex.h 2008-02-27 16:13:05 UTC (rev 7490)
@@ -45,7 +45,8 @@
void mutex_pre_destroy(struct mutex_info* const p);
void mutex_post_destroy(const Addr mutex);
struct mutex_info* mutex_get(const Addr mutex);
-int mutex_lock(const Addr mutex, const SizeT size, const MutexT mutex_type);
+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);
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/tests/recursive_mutex.c
===================================================================
--- trunk/exp-drd/tests/recursive_mutex.c 2008-02-27 15:46:00 UTC (rev 7489)
+++ trunk/exp-drd/tests/recursive_mutex.c 2008-02-27 16:13:05 UTC (rev 7490)
@@ -1,5 +1,5 @@
-/** Initialize a recursive mutex and lock it twice.
- * No error messages may be printed.
+/** Initialize several kinds of mutexes and lock each mutex twice.
+ * Note: locking a regular mutex twice causes a deadlock.
*/
#define _GNU_SOURCE
@@ -17,6 +17,9 @@
int main(int argc, char** argv)
{
+ /* Let the program abort after 3 seconds instead of leaving it deadlocked. */
+ alarm(3);
+
{
pthread_mutex_t m = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
@@ -51,7 +54,9 @@
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
printf("Non-recursive mutex.\n");
+ fflush(stdout);
lock_twice(&m);
}
+ printf("Done.\n");
return 0;
}
Added: trunk/exp-drd/tests/recursive_mutex.stderr.exp
===================================================================
--- trunk/exp-drd/tests/recursive_mutex.stderr.exp (rev 0)
+++ trunk/exp-drd/tests/recursive_mutex.stderr.exp 2008-02-27 16:13:05 UTC (rev 7490)
@@ -0,0 +1,17 @@
+
+Recursive locking not allowed: address 0x........, recursion count 1, owner 1.
+ at 0x........: pthread_mutex_lock (drd_intercepts.c:?)
+ by 0x........: lock_twice (recursive_mutex.c:?)
+ by 0x........: main (recursive_mutex.c:?)
+
+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........: lock_twice (recursive_mutex.c:?)
+ by 0x........: main (recursive_mutex.c:?)
+
+Recursive locking not allowed: address 0x........, recursion count 1, owner 1.
+ at 0x........: pthread_mutex_lock (drd_intercepts.c:?)
+ by 0x........: lock_twice (recursive_mutex.c:?)
+ by 0x........: main (recursive_mutex.c:?)
+
+ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
Added: trunk/exp-drd/tests/recursive_mutex.stdout.exp
===================================================================
--- trunk/exp-drd/tests/recursive_mutex.stdout.exp (rev 0)
+++ trunk/exp-drd/tests/recursive_mutex.stdout.exp 2008-02-27 16:13:05 UTC (rev 7490)
@@ -0,0 +1,4 @@
+Recursive mutex (statically initialized).
+Recursive mutex (initialized via mutex attributes).
+Error checking mutex.
+Non-recursive mutex.
Added: trunk/exp-drd/tests/recursive_mutex.vgtest
===================================================================
--- trunk/exp-drd/tests/recursive_mutex.vgtest (rev 0)
+++ trunk/exp-drd/tests/recursive_mutex.vgtest 2008-02-27 16:13:05 UTC (rev 7490)
@@ -0,0 +1 @@
+prog: recursive_mutex
|
|
From: <sv...@va...> - 2008-02-27 15:46:03
|
Author: bart
Date: 2008-02-27 15:46:00 +0000 (Wed, 27 Feb 2008)
New Revision: 7489
Log:
Modified drd client requests such that the mutex type can be passed from the intercepts to the tool. An error message is now printed in case a locked mutex is destroyed and in case a thread exits while it holds a lock on a mutex. Changed format of mutex error messages. Added recursive_mutex regression test. Fixed autogen warnings in exp-drd/tests/Makefile.am.
Added:
trunk/exp-drd/tests/recursive_mutex.c
trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit
Removed:
trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp
Modified:
trunk/exp-drd/drd_clientreq.c
trunk/exp-drd/drd_clientreq.h
trunk/exp-drd/drd_error.c
trunk/exp-drd/drd_intercepts.c
trunk/exp-drd/drd_mutex.c
trunk/exp-drd/tests/Makefile.am
trunk/exp-drd/tests/tc04_free_lock.stderr.exp
trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp
trunk/exp-drd/tests/tc10_rec_lock.stderr.exp
trunk/exp-drd/tests/tc20_verifywrap.stderr.exp
trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-32bit
trunk/exp-drd/tests/tc23_bogus_condwait.stderr.exp
Modified: trunk/exp-drd/drd_clientreq.c
===================================================================
--- trunk/exp-drd/drd_clientreq.c 2008-02-27 15:38:10 UTC (rev 7488)
+++ trunk/exp-drd/drd_clientreq.c 2008-02-27 15:46:00 UTC (rev 7489)
@@ -54,17 +54,17 @@
}
static void drd_pre_cond_wait(const Addr cond, const SizeT cond_size,
- const Addr mutex)
+ const Addr mutex, const MutexT mutex_type)
{
- mutex_unlock(mutex, mutex_type_mutex);
+ mutex_unlock(mutex, mutex_type);
cond_pre_wait(cond, cond_size, mutex);
}
static void drd_post_cond_wait(const Addr cond, const Addr mutex,
- const SizeT size)
+ const SizeT size, const MutexT mutex_type)
{
cond_post_wait(cond);
- mutex_lock(mutex, size, mutex_type_mutex);
+ mutex_lock(mutex, size, mutex_type);
}
static void drd_pre_cond_signal(const Addr cond)
@@ -164,12 +164,13 @@
break;
case VG_USERREQ__PRE_PTHREAD_COND_WAIT:
- drd_pre_cond_wait(arg[1]/*cond*/, arg[2]/*cond_size*/, arg[3]/*mutex*/);
+ drd_pre_cond_wait(arg[1]/*cond*/, arg[2]/*cond_size*/,
+ arg[3]/*mutex*/, arg[4]/*mutex_type*/);
break;
case VG_USERREQ__POST_PTHREAD_COND_WAIT:
- drd_post_cond_wait(arg[1]/*cond*/, arg[3]/*mutex*/,
- arg[4]/*mutex_size*/);
+ drd_post_cond_wait(arg[1]/*cond*/, arg[2]/*mutex*/,
+ arg[3]/*mutex_size*/, arg[4]/*mutex_type*/);
break;
case VG_USERREQ__PRE_PTHREAD_COND_SIGNAL:
Modified: trunk/exp-drd/drd_clientreq.h
===================================================================
--- trunk/exp-drd/drd_clientreq.h 2008-02-27 15:38:10 UTC (rev 7488)
+++ trunk/exp-drd/drd_clientreq.h 2008-02-27 15:46:00 UTC (rev 7489)
@@ -76,11 +76,11 @@
/* args: Addr */
/* to notify the drd tool of a pthread_cond_destroy call. */
VG_USERREQ__PRE_PTHREAD_COND_DESTROY,
- /* args: Addr cond, SizeT cond_size, Addr mutex, SizeT mutex_size */
+ /* 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, SizeT mutex_size */
+ /* args: Addr cond, SizeT cond_size, Addr mutex, MutexT mt */
VG_USERREQ__POST_PTHREAD_COND_WAIT,
- /* args: Addr cond, SizeT cond_size, Addr mutex, SizeT mutex_size */
+ /* args: Addr cond, Addr mutex, SizeT mutex_size, MutexT mt */
VG_USERREQ__PRE_PTHREAD_COND_SIGNAL,
/* args: Addr cond */
VG_USERREQ__PRE_PTHREAD_COND_BROADCAST,
@@ -119,8 +119,10 @@
typedef enum
{
- mutex_type_mutex = 1,
- mutex_type_spinlock = 2,
+ mutex_type_recursive_mutex = 1,
+ mutex_type_errorcheck_mutex = 2,
+ mutex_type_default_mutex = 3,
+ mutex_type_spinlock = 4,
} MutexT;
Modified: trunk/exp-drd/drd_error.c
===================================================================
--- trunk/exp-drd/drd_error.c 2008-02-27 15:38:10 UTC (rev 7488)
+++ trunk/exp-drd/drd_error.c 2008-02-27 15:46:00 UTC (rev 7489)
@@ -261,7 +261,7 @@
MutexErrInfo* p = (MutexErrInfo*)(VG_(get_error_extra)(e));
tl_assert(p);
VG_(message)(Vg_UserMsg,
- "%s / mutex 0x%lx (recursion count %d, owner %d)",
+ "%s: address 0x%lx, recursion count %d, owner %d.",
VG_(get_error_string)(e),
p->mutex,
p->recursion_count,
Modified: trunk/exp-drd/drd_intercepts.c
===================================================================
--- trunk/exp-drd/drd_intercepts.c 2008-02-27 15:38:10 UTC (rev 7488)
+++ trunk/exp-drd/drd_intercepts.c 2008-02-27 15:46:00 UTC (rev 7489)
@@ -85,6 +85,40 @@
// Function definitions.
+static MutexT pthread_to_drd_mutex_type(const int kind)
+{
+ switch (kind)
+ {
+ /* PTHREAD_MUTEX_RECURSIVE_NP */
+ case PTHREAD_MUTEX_RECURSIVE:
+ return mutex_type_recursive_mutex;
+ /* PTHREAD_MUTEX_ERRORCHECK_NP */
+ case PTHREAD_MUTEX_ERRORCHECK:
+ return mutex_type_errorcheck_mutex;
+ /* PTHREAD_MUTEX_TIMED_NP */
+ /* PTHREAD_MUTEX_NORMAL */
+ case PTHREAD_MUTEX_DEFAULT:
+ case PTHREAD_MUTEX_ADAPTIVE_NP:
+ return mutex_type_default_mutex;
+#if 0
+ case -1:
+ printf("Warning: changed mutex type from -1 into %d\n",
+ mutex_type_default_mutex);
+ return mutex_type_default_mutex;
+#endif
+ }
+#if 0
+ printf("mutex->__data.__kind = %d\n", kind);
+ assert(0);
+#endif
+ return mutex_type_default_mutex;
+}
+
+static MutexT mutex_type(pthread_mutex_t* mutex)
+{
+ return pthread_to_drd_mutex_type(mutex->__data.__kind);
+}
+
static void vg_start_suppression(const void* const p, size_t const size)
{
int res;
@@ -267,9 +301,13 @@
int ret;
int res;
OrigFn fn;
+ int mt = PTHREAD_MUTEX_DEFAULT;
VALGRIND_GET_ORIG_FN(fn);
+ if (attr)
+ pthread_mutexattr_gettype(attr, &mt);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_MUTEX_INIT,
- mutex, sizeof(*mutex), mutex_type_mutex, 0, 0);
+ mutex, sizeof(*mutex),
+ pthread_to_drd_mutex_type(mt), 0, 0);
CALL_FN_W_WW(ret, fn, mutex, attr);
return ret;
}
@@ -284,7 +322,7 @@
VALGRIND_GET_ORIG_FN(fn);
CALL_FN_W_W(ret, fn, mutex);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_MUTEX_DESTROY,
- mutex, mutex_type_mutex, 0, 0, 0);
+ mutex, mutex_type(mutex), 0, 0, 0);
return ret;
}
@@ -297,7 +335,7 @@
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);
+ mutex, sizeof(*mutex), mutex_type(mutex), 0, 0);
#if 1
// The only purpose of the system call below is to make drd work on AMD64
// systems. Without this system call, clients crash (SIGSEGV) in
@@ -307,7 +345,7 @@
CALL_FN_W_W(ret, fn, mutex);
if (ret == 0)
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__POST_PTHREAD_MUTEX_LOCK,
- mutex, sizeof(*mutex), mutex_type_mutex, 0, 0);
+ mutex, sizeof(*mutex), mutex_type(mutex), 0, 0);
return ret;
}
@@ -323,7 +361,7 @@
if (ret == 0)
{
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_MUTEX_LOCK,
- mutex, sizeof(*mutex), mutex_type_mutex, 0, 0);
+ mutex, sizeof(*mutex), mutex_type(mutex), 0, 0);
}
return ret;
}
@@ -341,7 +379,7 @@
if (ret == 0)
{
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_MUTEX_LOCK,
- mutex, sizeof(*mutex), mutex_type_mutex, 0, 0);
+ mutex, sizeof(*mutex), mutex_type(mutex), 0, 0);
}
return ret;
}
@@ -356,7 +394,7 @@
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1,
VG_USERREQ__PRE_PTHREAD_MUTEX_UNLOCK,
- mutex, sizeof(*mutex), mutex_type_mutex, 0, 0);
+ mutex, sizeof(*mutex), mutex_type(mutex), 0, 0);
CALL_FN_W_W(ret, fn, mutex);
return ret;
}
@@ -400,10 +438,10 @@
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_PTHREAD_COND_WAIT,
- cond, sizeof(*cond), mutex, sizeof(*mutex), 0);
+ cond, sizeof(*cond), mutex, mutex_type(mutex), 0);
CALL_FN_W_WW(ret, fn, cond, mutex);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_COND_WAIT,
- cond, sizeof(*cond), mutex, sizeof(*mutex), 0);
+ cond, mutex, sizeof(*mutex), mutex_type(mutex), 0);
return ret;
}
@@ -418,10 +456,10 @@
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_PTHREAD_COND_WAIT,
- cond, sizeof(*cond), mutex, sizeof(*mutex), 0);
+ cond, sizeof(*cond), mutex, mutex_type(mutex), 0);
CALL_FN_W_WWW(ret, fn, cond, mutex, abstime);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_PTHREAD_COND_WAIT,
- cond, sizeof(*cond), mutex, sizeof(*mutex), 0);
+ cond, mutex, sizeof(*mutex), mutex_type(mutex), 0);
return ret;
}
Modified: trunk/exp-drd/drd_mutex.c
===================================================================
--- trunk/exp-drd/drd_mutex.c 2008-02-27 15:38:10 UTC (rev 7488)
+++ trunk/exp-drd/drd_mutex.c 2008-02-27 15:46:00 UTC (rev 7489)
@@ -49,6 +49,7 @@
// Local functions.
+static Bool mutex_is_locked(struct mutex_info* const p);
static void mutex_destroy(struct mutex_info* const p);
@@ -75,8 +76,10 @@
{
tl_assert(mutex != 0);
tl_assert(size > 0);
+#if 0
tl_assert(mutex_type == mutex_type_mutex
|| mutex_type == mutex_type_spinlock);
+#endif
p->mutex = mutex;
p->size = size;
@@ -94,13 +97,20 @@
{
int i;
+#if 0
tl_assert(mutex_type == mutex_type_mutex
|| mutex_type == mutex_type_spinlock);
+#endif
for (i = 0; i < sizeof(s_mutex)/sizeof(s_mutex[0]); i++)
{
if (s_mutex[i].mutex == mutex)
{
+ if (s_mutex[i].mutex_type != mutex_type)
+ {
+ VG_(message)(Vg_DebugMsg, "??? mutex %p: type changed from %d into %d",
+ s_mutex[i].mutex, s_mutex[i].mutex_type, mutex_type);
+ }
tl_assert(s_mutex[i].mutex_type == mutex_type);
tl_assert(s_mutex[i].size == size);
return &s_mutex[i];
@@ -146,8 +156,11 @@
mutex);
}
+#if 0
tl_assert(mutex_type == mutex_type_mutex
|| mutex_type == mutex_type_spinlock);
+#endif
+
mutex_p = mutex_get(mutex);
if (mutex_p)
{
@@ -179,6 +192,16 @@
p->mutex);
}
+ if (mutex_is_locked(p))
+ {
+ MutexErrInfo MEI = { p->mutex, p->recursion_count, p->owner };
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ MutexErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "Destroying locked mutex",
+ &MEI);
+ }
+
drd_finish_suppression(p->mutex, p->mutex + p->size);
vc_cleanup(&p->vc);
@@ -255,8 +278,11 @@
return 0;
}
+#if 0
tl_assert(mutex_type == mutex_type_mutex
|| mutex_type == mutex_type_spinlock);
+#endif
+
tl_assert(p->mutex_type == mutex_type);
tl_assert(p->size == size);
@@ -321,7 +347,7 @@
p->owner);
}
- if (p == 0 || p->owner == DRD_INVALID_THREADID)
+ if (p == 0)
{
GenericErrInfo GEI;
VG_(maybe_record_error)(vg_tid,
@@ -332,11 +358,29 @@
return 0;
}
+ if (p->owner == DRD_INVALID_THREADID)
+ {
+ MutexErrInfo MEI = { p->mutex, p->recursion_count, p->owner };
+ VG_(maybe_record_error)(vg_tid,
+ MutexErr,
+ VG_(get_IP)(vg_tid),
+ "Mutex not locked",
+ &MEI);
+ return 0;
+ }
+
tl_assert(p);
+ if (p->mutex_type != mutex_type)
+ {
+ VG_(message)(Vg_DebugMsg, "??? mutex %p: type changed from %d into %d",
+ p->mutex, p->mutex_type, mutex_type);
+ }
tl_assert(p->mutex_type == mutex_type);
tl_assert(p->owner != DRD_INVALID_THREADID);
+#if 0
tl_assert(mutex_type == mutex_type_mutex
|| mutex_type == mutex_type_spinlock);
+#endif
if (p->owner != drd_tid)
{
@@ -383,7 +427,11 @@
{
switch (mt)
{
- case mutex_type_mutex:
+ case mutex_type_recursive_mutex:
+ return "recursive mutex";
+ case mutex_type_errorcheck_mutex:
+ return "error checking mutex";
+ case mutex_type_default_mutex:
return "mutex";
case mutex_type_spinlock:
return "spinlock";
@@ -393,6 +441,13 @@
return "?";
}
+/** Return true if the specified mutex is locked by any thread. */
+static Bool mutex_is_locked(struct mutex_info* const p)
+{
+ tl_assert(p);
+ return (p->recursion_count > 0);
+}
+
Bool mutex_is_locked_by(const Addr mutex, const DrdThreadId tid)
{
struct mutex_info* const p = mutex_get(mutex);
@@ -419,8 +474,6 @@
/**
* Call this function when thread tid stops to exist, such that the
* "last owner" field can be cleared if it still refers to that thread.
- * TO DO: print an error message if a thread exits while it still has some
- * mutexes locked.
*/
void mutex_thread_delete(const DrdThreadId tid)
{
@@ -428,8 +481,15 @@
for (i = 0; i < sizeof(s_mutex)/sizeof(s_mutex[0]); i++)
{
struct mutex_info* const p = &s_mutex[i];
- if (p->mutex && p->owner == tid)
+ if (p->mutex && p->owner == tid && p->recursion_count > 0)
{
+ MutexErrInfo MEI
+ = { p->mutex, p->recursion_count, p->owner };
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ MutexErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "Mutex still locked at thread exit",
+ &MEI);
p->owner = VG_INVALID_THREADID;
}
}
Modified: trunk/exp-drd/tests/Makefile.am
===================================================================
--- trunk/exp-drd/tests/Makefile.am 2008-02-27 15:38:10 UTC (rev 7488)
+++ trunk/exp-drd/tests/Makefile.am 2008-02-27 15:46:00 UTC (rev 7489)
@@ -50,6 +50,7 @@
pth_detached.stdout.exp pth_detached.stderr.exp \
pth_detached2.vgtest \
pth_detached2.stdout.exp pth_detached2.stderr.exp \
+ recursive_mutex.vgtest recursive_mutex.stderr.exp \
sem_as_mutex.vgtest \
sem_as_mutex.stderr.exp sem_as_mutex.stderr.exp2 \
sem_as_mutex2.vgtest \
@@ -128,6 +129,7 @@
pth_create_chain \
pth_detached \
sem_as_mutex \
+ recursive_mutex \
sigalrm \
tc01_simple_race \
tc02_simple_tls \
@@ -195,6 +197,9 @@
pth_detached_SOURCES = pth_detached.c
pth_detached_LDADD = -lpthread
+recursive_mutex_SOURCES = recursive_mutex.c
+recursive_mutex_LDADD = -lpthread
+
sem_as_mutex_SOURCES = sem_as_mutex.c
sem_as_mutex_LDADD = -lpthread
@@ -219,11 +224,11 @@
tc06_two_races_SOURCES = ../../helgrind/tests/tc06_two_races.c
tc06_two_races_LDADD = -lpthread
-tc07_hbl1_SOURCES = ../../helgrind/tests/tc07_hbl1.c
-tc07_hbl1_LDADD = -lpthread
+# tc07_hbl1_SOURCES = ../../helgrind/tests/tc07_hbl1.c
+# tc07_hbl1_LDADD = -lpthread
-tc08_hbl2_SOURCES = ../../helgrind/tests/tc08_hbl2.c
-tc08_hbl2_LDADD = -lpthread
+# tc08_hbl2_SOURCES = ../../helgrind/tests/tc08_hbl2.c
+# tc08_hbl2_LDADD = -lpthread
tc09_bad_unlock_SOURCES = ../../helgrind/tests/tc09_bad_unlock.c
tc09_bad_unlock_LDADD = -lpthread
Added: trunk/exp-drd/tests/recursive_mutex.c
===================================================================
--- trunk/exp-drd/tests/recursive_mutex.c (rev 0)
+++ trunk/exp-drd/tests/recursive_mutex.c 2008-02-27 15:46:00 UTC (rev 7489)
@@ -0,0 +1,57 @@
+/** Initialize a recursive mutex and lock it twice.
+ * No error messages may be printed.
+ */
+
+#define _GNU_SOURCE
+
+#include <stdio.h>
+#include <pthread.h>
+
+static void lock_twice(pthread_mutex_t* const p)
+{
+ pthread_mutex_lock(p);
+ pthread_mutex_lock(p);
+ pthread_mutex_unlock(p);
+ pthread_mutex_unlock(p);
+}
+
+int main(int argc, char** argv)
+{
+ {
+ pthread_mutex_t m = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+
+ printf("Recursive mutex (statically initialized).\n");
+ lock_twice(&m);
+ }
+ {
+ pthread_mutex_t m;
+ pthread_mutexattr_t attr;
+
+ printf("Recursive mutex (initialized via mutex attributes).\n");
+ pthread_mutexattr_init(&attr);
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
+ pthread_mutex_init(&m, &attr);
+ pthread_mutexattr_destroy(&attr);
+ lock_twice(&m);
+ pthread_mutex_destroy(&m);
+ }
+ {
+ pthread_mutex_t m;
+ pthread_mutexattr_t attr;
+
+ printf("Error checking mutex.\n");
+ pthread_mutexattr_init(&attr);
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK_NP);
+ pthread_mutex_init(&m, &attr);
+ pthread_mutexattr_destroy(&attr);
+ lock_twice(&m);
+ pthread_mutex_destroy(&m);
+ }
+ {
+ pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
+
+ printf("Non-recursive mutex.\n");
+ lock_twice(&m);
+ }
+ return 0;
+}
Modified: trunk/exp-drd/tests/tc04_free_lock.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc04_free_lock.stderr.exp 2008-02-27 15:38:10 UTC (rev 7488)
+++ trunk/exp-drd/tests/tc04_free_lock.stderr.exp 2008-02-27 15:46:00 UTC (rev 7489)
@@ -1,3 +1,18 @@
+Destroying locked mutex: address 0x........, recursion count 1, owner 1.
+ at 0x........: free (vg_replace_malloc.c:...)
+ by 0x........: main (tc04_free_lock.c:24)
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+Destroying locked mutex: address 0x........, recursion count 1, owner 1.
+ at 0x........: bar (tc04_free_lock.c:40)
+ by 0x........: main (tc04_free_lock.c:26)
+
+Destroying locked mutex: address 0x........, recursion count 1, owner 1.
+ at 0x........: foo (tc04_free_lock.c:49)
+ by 0x........: main (tc04_free_lock.c:27)
+
+Destroying locked mutex: address 0x........, recursion count 1, owner 1.
+ at 0x........: bar (tc04_free_lock.c:40)
+ by 0x........: main (tc04_free_lock.c:28)
+
+ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
Modified: trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp 2008-02-27 15:38:10 UTC (rev 7488)
+++ trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp 2008-02-27 15:46:00 UTC (rev 7489)
@@ -1,11 +1,11 @@
-Attempt to unlock a mutex that is not locked / mutex 0x........ (recursion count -1, owner 1)
+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)
by 0x........: main (tc09_bad_unlock.c:49)
Thread 2:
-Mutex not unlocked by owner thread / mutex 0x........ (recursion count 1, owner 1)
+Mutex not unlocked by owner thread: address 0x........, recursion count 1, owner 1.
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: child_fn (tc09_bad_unlock.c:11)
by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
@@ -18,13 +18,13 @@
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 / mutex 0x........ (recursion count -1, owner 1)
+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)
by 0x........: main (tc09_bad_unlock.c:50)
Thread 2:
-Mutex not unlocked by owner thread / mutex 0x........ (recursion count 1, owner 1)
+Mutex not unlocked by owner thread: address 0x........, recursion count 1, owner 1.
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: child_fn (tc09_bad_unlock.c:11)
by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
Modified: trunk/exp-drd/tests/tc10_rec_lock.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc10_rec_lock.stderr.exp 2008-02-27 15:38:10 UTC (rev 7488)
+++ trunk/exp-drd/tests/tc10_rec_lock.stderr.exp 2008-02-27 15:46:00 UTC (rev 7489)
@@ -6,7 +6,7 @@
before unlock #2
before unlock #3
before unlock #4
-Attempt to unlock a mutex that is not locked / mutex 0x........ (recursion count -1, owner 1)
+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 (tc10_rec_lock.c:42)
by 0x........: main (tc10_rec_lock.c:47)
Modified: trunk/exp-drd/tests/tc20_verifywrap.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap.stderr.exp 2008-02-27 15:38:10 UTC (rev 7488)
+++ trunk/exp-drd/tests/tc20_verifywrap.stderr.exp 2008-02-27 15:46:00 UTC (rev 7489)
@@ -16,18 +16,22 @@
---------------- pthread_mutex_lock et al ----------------
-Destroying locked mutex / mutex 0x........ (recursion count 1, owner 1)
+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)
-Not a mutex
+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)
+
+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 ----------------
-Not a mutex
+Mutex not locked: address 0x........, recursion count 0, owner 0.
at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:147)
@@ -60,4 +64,7 @@
------------ dealloc of mem holding locks ------------
-ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
+Destroying locked mutex: address 0x........, recursion count 1, owner 1.
+ at 0x........: main (tc20_verifywrap.c:261)
+
+ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)
Deleted: trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp 2008-02-27 15:38:10 UTC (rev 7488)
+++ trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp 2008-02-27 15:46:00 UTC (rev 7489)
@@ -1,123 +0,0 @@
-
-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)
-
-ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
Modified: trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-32bit
===================================================================
--- trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-32bit 2008-02-27 15:38:10 UTC (rev 7488)
+++ trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-32bit 2008-02-27 15:46:00 UTC (rev 7489)
@@ -131,4 +131,8 @@
Other segment end (thread 2)
(thread finished, call stack no longer available)
-ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
+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)
Copied: trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit (from rev 7487, trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp)
===================================================================
--- trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit (rev 0)
+++ trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit 2008-02-27 15:46:00 UTC (rev 7489)
@@ -0,0 +1,123 @@
+
+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)
+
+ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
Modified: trunk/exp-drd/tests/tc23_bogus_condwait.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc23_bogus_condwait.stderr.exp 2008-02-27 15:38:10 UTC (rev 7488)
+++ trunk/exp-drd/tests/tc23_bogus_condwait.stderr.exp 2008-02-27 15:46:00 UTC (rev 7489)
@@ -20,7 +20,7 @@
at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:69)
-Not a mutex
+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)
@@ -46,7 +46,7 @@
by 0x........: clone (in /...libc...)
Thread 1:
-Mutex not unlocked by owner thread / mutex 0x........ (recursion count 1, owner 2)
+Mutex not unlocked by owner thread: address 0x........, recursion count 1, owner 2.
at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:78)
@@ -59,7 +59,7 @@
by 0x........: clone (in /...libc...)
Thread 2:
-Mutex not unlocked by owner thread / mutex 0x........ (recursion count 1, owner 1)
+Mutex not unlocked by owner thread: address 0x........, recursion count 1, owner 1.
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: grab_the_lock (tc23_bogus_condwait.c:42)
by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
|
|
From: <sv...@va...> - 2008-02-27 15:38:59
|
Author: bart
Date: 2008-02-27 15:38:10 +0000 (Wed, 27 Feb 2008)
New Revision: 7488
Log:
Make sure tc20_verifywrap does not trigger an assertion failure in combination with glibc 2.7.
Modified:
trunk/helgrind/tests/tc20_verifywrap.c
Modified: trunk/helgrind/tests/tc20_verifywrap.c
===================================================================
--- trunk/helgrind/tests/tc20_verifywrap.c 2008-02-27 02:04:05 UTC (rev 7487)
+++ trunk/helgrind/tests/tc20_verifywrap.c 2008-02-27 15:38:10 UTC (rev 7488)
@@ -241,8 +241,8 @@
memset(&s1, 0x55, sizeof(s1));
r= sem_wait(&s1); /* assert(r != 0); */
- /* this really ought to fail, but it doesn't. */
- r= sem_post(&s1); assert(!r);
+ /* this only fails with glibc 2.7 or later. */
+ r= sem_post(&s1);
fprintf(stderr, "\nFIXME: can't figure out how to verify wrap of "
"sem_post\n\n");
|
|
From: Konstantin S. <kon...@gm...> - 2008-02-27 13:05:07
|
My $0.02 In my variant of helgrind I have a client request saying that we expect a race on a particular address. If the race is detected, the tool is silent. But if the race is *not* detected, the tool complains at the end. This is not a substitute for the current testing scheme; it is quite orthogonal. The current scheme tests that the output matches the golden file (modulo addresses, tids, etc). My scheme is not applicable to all kinds of errors that valgrind tools may emit and does not check the exact output. But it is immune to changes in the test code and compiler optimizations (inlining). And it does not require any golden file which is useful when the test suite is under development. --kcc On Wed, Feb 27, 2008 at 2:24 PM, Ashley Pittman <api...@co...> wrote: > > On Wed, 2008-02-27 at 11:49 +0100, Julian Seward wrote: > > > Maybe I should have made myself more clear. The comment in > > > tests/vg_regtest.pl.in explains that stdout.exp files only can have a > > > numeric suffix ([0-9]*), while stderr.exp files can have any suffix > > > (*). If I understood the tests/vg_regtest.pl.in sourcecode correctly, > > > both stdout.exp and stderr.exp files can now have any suffix. Is this > > > correct ? > > > > I thought I only changed the stderr.exp to allow stderr.exp*, and > > left the others (stdout.exp, post.exp) unchanged. But I can't > > remember now. A bit of poking around with svn ann / svn log might > > make it clearer. > > When I was playing with post-processing of valgrind output a year or so > ago I did get as far as being able to run the regression tests through > my script which has the potential to make the tests simpler and more > robust. > > The basic scheme was to run valgrind in xml mode and have a output > filter to convert from xml back to "standard" output. The primary > purpose of this was for parallel jobs, to have a single output file per > job rather than per process but it also allowed you to pick and choose > which output you wanted to see, it became easy to suppress things like > line number and thread id's if required. Potentially each test could > have a single sample output file and a file listing which elements of > the output should be invariant. > > The code is basically there, the problem I had was a performance one, > for the input size I wanted XML::Simple was taking in excess of a minute > to parse the data, this wouldn't be a problem for the tests however. > > Of course all this might not help drd although it would be nice to see > the xml output extended to allow higher level tools to be built on top > of valgrind. > > Ashley, > > > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers > |
|
From: Ashley P. <api...@co...> - 2008-02-27 11:24:28
|
On Wed, 2008-02-27 at 11:49 +0100, Julian Seward wrote: > > Maybe I should have made myself more clear. The comment in > > tests/vg_regtest.pl.in explains that stdout.exp files only can have a > > numeric suffix ([0-9]*), while stderr.exp files can have any suffix > > (*). If I understood the tests/vg_regtest.pl.in sourcecode correctly, > > both stdout.exp and stderr.exp files can now have any suffix. Is this > > correct ? > > I thought I only changed the stderr.exp to allow stderr.exp*, and > left the others (stdout.exp, post.exp) unchanged. But I can't > remember now. A bit of poking around with svn ann / svn log might > make it clearer. When I was playing with post-processing of valgrind output a year or so ago I did get as far as being able to run the regression tests through my script which has the potential to make the tests simpler and more robust. The basic scheme was to run valgrind in xml mode and have a output filter to convert from xml back to "standard" output. The primary purpose of this was for parallel jobs, to have a single output file per job rather than per process but it also allowed you to pick and choose which output you wanted to see, it became easy to suppress things like line number and thread id's if required. Potentially each test could have a single sample output file and a file listing which elements of the output should be invariant. The code is basically there, the problem I had was a performance one, for the input size I wanted XML::Simple was taking in excess of a minute to parse the data, this wouldn't be a problem for the tests however. Of course all this might not help drd although it would be nice to see the xml output extended to allow higher level tools to be built on top of valgrind. Ashley, |
|
From: Bart V. A. <bar...@gm...> - 2008-02-27 11:01:55
|
On Wed, Feb 27, 2008 at 11:49 AM, Julian Seward <js...@ac...> wrote: > > > Maybe I should have made myself more clear. The comment in > > tests/vg_regtest.pl.in explains that stdout.exp files only can have a > > numeric suffix ([0-9]*), while stderr.exp files can have any suffix > > (*). If I understood the tests/vg_regtest.pl.in sourcecode correctly, > > both stdout.exp and stderr.exp files can now have any suffix. Is this > > correct ? > > I thought I only changed the stderr.exp to allow stderr.exp*, and > left the others (stdout.exp, post.exp) unchanged. But I can't > remember now. A bit of poking around with svn ann / svn log might > make it clearer. The lines that recognize stderr.exp* were last changed by user 'sewardj' and the lines that recognize stdout.exp* were last changed by user 'nethercote'. Nick, is it possible that you added support for stdout.exp* but did not update the documentation in tests/vg_regtest.in ? Bart. |
|
From: Julian S. <js...@ac...> - 2008-02-27 10:56:53
|
On Wednesday 27 February 2008 08:18, Bart Van Assche wrote: > On Tue, Feb 26, 2008 at 8:51 PM, Julian Seward <js...@ac...> wrote: > > On Tuesday 26 February 2008 20:36, Bart Van Assche wrote: > > > The result of the regression test helgrind/tests/tc20_verifywrap > > > depends on the platform it is executed on (asserts with glibc 2.7 but > > > not with older glibc versions). Is it OK if I fix this by committing > > > the patch below ? > > > > What is the effect on platforms < glibc 2.7? Does it cause the > > test to fail on those? > > The patch has no effect on platforms with glibc version < 2.7 > (regression test still succeeds), and the patch makes the > tc20_verifywrap regression test succeed on platforms with glibc > version >= 2.7. Or: the patch ensures that the behavior of this > regression test does no longer depend on the glibc version. Ok; commit. Thanks, J |
|
From: Julian S. <js...@ac...> - 2008-02-27 10:52:28
|
> Maybe I should have made myself more clear. The comment in > tests/vg_regtest.pl.in explains that stdout.exp files only can have a > numeric suffix ([0-9]*), while stderr.exp files can have any suffix > (*). If I understood the tests/vg_regtest.pl.in sourcecode correctly, > both stdout.exp and stderr.exp files can now have any suffix. Is this > correct ? I thought I only changed the stderr.exp to allow stderr.exp*, and left the others (stdout.exp, post.exp) unchanged. But I can't remember now. A bit of poking around with svn ann / svn log might make it clearer. J |
|
From: Bart V. A. <bar...@gm...> - 2008-02-27 07:18:38
|
On Tue, Feb 26, 2008 at 8:51 PM, Julian Seward <js...@ac...> wrote: > > On Tuesday 26 February 2008 20:36, Bart Van Assche wrote: > > The result of the regression test helgrind/tests/tc20_verifywrap > > depends on the platform it is executed on (asserts with glibc 2.7 but > > not with older glibc versions). Is it OK if I fix this by committing > > the patch below ? > > What is the effect on platforms < glibc 2.7? Does it cause the > test to fail on those? The patch has no effect on platforms with glibc version < 2.7 (regression test still succeeds), and the patch makes the tc20_verifywrap regression test succeed on platforms with glibc version >= 2.7. Or: the patch ensures that the behavior of this regression test does no longer depend on the glibc version. Bart. |
|
From: Bart V. A. <bar...@gm...> - 2008-02-27 07:15:23
|
On Tue, Feb 26, 2008 at 10:27 PM, Nicholas Nethercote <nj...@cs...> wrote: > On Tue, 26 Feb 2008, Bart Van Assche wrote: > > > By the way, does the patch below make sense or is the comment in > > tests/vg_regtest.in correct as it is now ? > > > > Index: tests/vg_regtest.in > > =================================================================== > > --- tests/vg_regtest.in (revision 7477) > > +++ tests/vg_regtest.in (working copy) > > @@ -61,7 +61,7 @@ > > # Note that filters are necessary for stderr results to filter out things that > > # always change, eg. process id numbers. > > # > > -# Expected stdout (filtered) is kept in <test>.stdout.exp[0-9]* (can be more > > +# Expected stdout (filtered) is kept in <test>.stdout.exp* (can be more > > # than one expected output). It can be missing if it would be empty. Expected > > # stderr (filtered) is kept in <test>.stderr.exp*. There must be at least > > # one stderr.exp* file. > > The comment is correct. For example, in memcheck/tests/ we have both: > > sh-mem-random.stdout.exp > sh-mem-random.stdout.exp64 > > For 32- and 64-bit machines Maybe I should have made myself more clear. The comment in tests/vg_regtest.pl.in explains that stdout.exp files only can have a numeric suffix ([0-9]*), while stderr.exp files can have any suffix (*). If I understood the tests/vg_regtest.pl.in sourcecode correctly, both stdout.exp and stderr.exp files can now have any suffix. Is this correct ? Bart. |
|
From: Tom H. <th...@cy...> - 2008-02-27 04:11:01
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-02-27 03:05: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 == 399 tests, 9 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/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 == 396 tests, 9 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/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Feb 27 03:36:58 2008 --- new.short Wed Feb 27 04:11:03 2008 *************** *** 8,10 **** ! == 396 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 399 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) |