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
(11) |
2
(9) |
3
(14) |
4
(18) |
5
(13) |
|
6
(4) |
7
(12) |
8
(16) |
9
(14) |
10
(8) |
11
(9) |
12
(7) |
|
13
(12) |
14
(6) |
15
(14) |
16
(5) |
17
(10) |
18
(8) |
19
(5) |
|
20
(10) |
21
(16) |
22
(5) |
23
(14) |
24
(10) |
25
(11) |
26
(6) |
|
27
(9) |
28
(8) |
29
(11) |
30
(9) |
31
(18) |
|
|
|
From: Konstantin S. <kon...@gm...> - 2008-01-21 17:14:27
|
Ehm... This notice was not added by the googlecode site :) I am google employee and hence the results of my work are *copyrighted* by google. But, they are *licensed* under BSD license which means that anyone is free to do whatever he/she likes with these files except for removal of copyright notice. Few files from valgrind (e.g. valgrind.h, helgrind.h) are also published under BSD. If/when I create helgrind's fork on code.google.com it will be under GPL (I am not allowed nor willing to break it :) ) --kcc On Jan 21, 2008 7:32 PM, Bart Van Assche <bar...@gm...> wrote: > On Jan 21, 2008 4:34 PM, Konstantin Serebryany > <kon...@gm...> wrote: > > > > I am working on a test suite for helgrind (and potentially any other > data > > race detector). > > In order to simplify things for myself I've created a separate project > > http://code.google.com/p/data-race-test/ but if you find anything useful > > there please put it into valgrind svn. > > I will be grateful for any suggestions regrading missing test cases. > > The main file of the test suite is > > > http://data-race-test.googlecode.com/svn/trunk/unittest/racecheck_unittest.cc > > Sounds very interesting. But are you sure it is a good idea to use the > googlecode.com website ? I had a look at the aforementioned file, and > found message at the top of the file: > > // Copyright 2008, Google Inc. > // All rights reserved. > > This means that Google Inc. is now owner of the file > racecheck_unittest.cc, and that you lost all rights on the sourcecode > (distributing, editing, viewing, ...). The Valgrind source code is > licensed under GPLv2. I'm not sure Google's copyright statement is > compatible with GPLv2. > > Regards, > > Bart. > |
|
From: Bart V. A. <bar...@gm...> - 2008-01-21 16:32:44
|
On Jan 21, 2008 4:34 PM, Konstantin Serebryany <kon...@gm...> wrote: > > I am working on a test suite for helgrind (and potentially any other data > race detector). > In order to simplify things for myself I've created a separate project > http://code.google.com/p/data-race-test/ but if you find anything useful > there please put it into valgrind svn. > I will be grateful for any suggestions regrading missing test cases. > The main file of the test suite is > http://data-race-test.googlecode.com/svn/trunk/unittest/racecheck_unittest.cc Sounds very interesting. But are you sure it is a good idea to use the googlecode.com website ? I had a look at the aforementioned file, and found message at the top of the file: // Copyright 2008, Google Inc. // All rights reserved. This means that Google Inc. is now owner of the file racecheck_unittest.cc, and that you lost all rights on the sourcecode (distributing, editing, viewing, ...). The Valgrind source code is licensed under GPLv2. I'm not sure Google's copyright statement is compatible with GPLv2. Regards, Bart. |
|
From: Konstantin S. <kon...@gm...> - 2008-01-21 15:34:31
|
Hi, I am working on a test suite for helgrind (and potentially any other data race detector). In order to simplify things for myself I've created a separate project http://code.google.com/p/data-race-test/ but if you find anything useful there please put it into valgrind svn. I will be grateful for any suggestions regrading missing test cases. The main file of the test suite is http://data-race-test.googlecode.com/svn/trunk/unittest/racecheck_unittest.cc. Bart, You may find these tests useful for drd. Julian, If you don't mind I want to create a fork of helgrind (just helgrind sources, nothing else from valgrind) in this project. I want to experiment with some more client requests (for code annotation purposes), and with various state machines. Hopefully this will be a simple way for you to grab any changes you find useful. I also want to use the project's wiki to discuss possible state machines, etc. Thanks! --kcc |
|
From: <sv...@va...> - 2008-01-21 14:19:06
|
Author: sewardj
Date: 2008-01-21 14:19:07 +0000 (Mon, 21 Jan 2008)
New Revision: 7358
Log:
drd changes (Bart Van Assche)
- The exp-drd regression tests now run without producing assertion
failures and without hanging on Red Hat 7.3. It doesn't make sense
however to run exp-drd on Red Hat 7.3 -- while exp-drd works fine with
the NPTL, more work would be required to make exp-drd work with
linuxthreads.
- Converted several tl_assert() calls into error messages.
- Added a regression test called pth_barrier, which tests whether data
races are detected in a program that uses barriers. The output exp-drd
produces for this test program is not yet correct however.
- Updated exp-drd/TODO.txt.
Added:
trunk/exp-drd/tests/pth_barrier.c
trunk/exp-drd/tests/pth_barrier.stderr.exp
trunk/exp-drd/tests/pth_barrier.vgtest
Modified:
trunk/exp-drd/TODO.txt
trunk/exp-drd/drd_intercepts.c
trunk/exp-drd/drd_main.c
trunk/exp-drd/drd_mutex.c
trunk/exp-drd/drd_mutex.h
trunk/exp-drd/tests/Makefile.am
trunk/exp-drd/tests/matinv.c
trunk/exp-drd/tests/pth_cond_race.stderr.exp
Modified: trunk/exp-drd/TODO.txt
===================================================================
--- trunk/exp-drd/TODO.txt 2008-01-20 23:30:58 UTC (rev 7357)
+++ trunk/exp-drd/TODO.txt 2008-01-21 14:19:07 UTC (rev 7358)
@@ -5,7 +5,6 @@
Data-race detection algorithm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- pthread rwlock state tracking and support.
-- Fix Fedora 7 / Fedora 8 pth_cond_race regression test failure.
- Implement segment merging, such that the number of segments per thread
remains limited even when there is no synchronization between threads.
- Find out why a race is reported on std::string::string(std::string const&)
@@ -13,6 +12,8 @@
- Eliminate the upper bounds on the number of mutexes, condition variables,
semaphores and barriers by converting arrays into OSet's.
- Add a regression test for pthread_mutex_timedlock().
+- Find a way for suppressing races on _IO_2_1_stdout (this race is triggered
+ by calling printf() from more than one thread).
- Performance testing and tuning.
- testing on PPC and AIX (current implementation is only tested on X86 and
AMD64).
@@ -40,6 +41,9 @@
~~~~~~~~~~
- Gets killed by the OOM handler for realistically sized applications,
e.g. knode and OpenOffice.
+- When pthread_barrier_wait() is called, some real races are suppressed.
+- 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
Modified: trunk/exp-drd/drd_intercepts.c
===================================================================
--- trunk/exp-drd/drd_intercepts.c 2008-01-20 23:30:58 UTC (rev 7357)
+++ trunk/exp-drd/drd_intercepts.c 2008-01-21 14:19:07 UTC (rev 7358)
@@ -165,7 +165,7 @@
}
// pthread_create
-PTH_FUNC(int, pthreadZucreateZAZa, // pthread_create@*
+PTH_FUNC(int, pthreadZucreateZa, // pthread_create*
pthread_t *thread, const pthread_attr_t *attr,
void *(*start) (void *), void *arg)
{
@@ -362,7 +362,7 @@
}
// pthread_cond_init
-PTH_FUNC(int, pthreadZucondZuinitZAZa, // pthread_cond_init@*
+PTH_FUNC(int, pthreadZucondZuinitZa, // pthread_cond_init*
pthread_cond_t* cond,
const pthread_condattr_t* attr)
{
@@ -377,7 +377,7 @@
}
// pthread_cond_destroy
-PTH_FUNC(int, pthreadZucondZudestroyZAZa, // pthread_cond_destroy@*
+PTH_FUNC(int, pthreadZucondZudestroyZa, // pthread_cond_destroy*
pthread_cond_t* cond)
{
int ret;
@@ -391,7 +391,7 @@
}
// pthread_cond_wait
-PTH_FUNC(int, pthreadZucondZuwaitZAZa, // pthread_cond_wait@*
+PTH_FUNC(int, pthreadZucondZuwaitZa, // pthread_cond_wait*
pthread_cond_t *cond,
pthread_mutex_t *mutex)
{
@@ -408,7 +408,7 @@
}
// pthread_cond_timedwait
-PTH_FUNC(int, pthreadZucondZutimedwaitZAZa, // pthread_cond_timedwait@*
+PTH_FUNC(int, pthreadZucondZutimedwaitZa, // pthread_cond_timedwait*
pthread_cond_t *cond,
pthread_mutex_t *mutex,
const struct timespec* abstime)
@@ -426,7 +426,7 @@
}
// pthread_cond_signal
-PTH_FUNC(int, pthreadZucondZusignalZAZa, // pthread_cond_signal@*
+PTH_FUNC(int, pthreadZucondZusignalZa, // pthread_cond_signal*
pthread_cond_t* cond)
{
int ret;
@@ -440,7 +440,7 @@
}
// pthread_cond_broadcast
-PTH_FUNC(int, pthreadZucondZubroadcastZAZa, // pthread_cond_broadcast@*
+PTH_FUNC(int, pthreadZucondZubroadcastZa, // pthread_cond_broadcast*
pthread_cond_t* cond)
{
int ret;
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-01-20 23:30:58 UTC (rev 7357)
+++ trunk/exp-drd/drd_main.c 2008-01-21 14:19:07 UTC (rev 7358)
@@ -401,24 +401,15 @@
thread_finished(drd_tid);
}
-void drd_pre_mutex_init(Addr mutex, SizeT size, MutexT mutex_type)
+void drd_pre_mutex_init(const Addr mutex, const SizeT size,
+ const MutexT mutex_type)
{
mutex_init(mutex, size, mutex_type);
}
-void drd_post_mutex_destroy(Addr mutex, MutexT mutex_type)
+void drd_post_mutex_destroy(const Addr mutex, const MutexT mutex_type)
{
- struct mutex_info* p;
-
- p = mutex_get(mutex);
- tl_assert(p);
- if (p)
- {
- // TO DO: report an error in case the recursion count is not zero
- // before asserting.
- tl_assert(mutex_get_recursion_count(mutex) == 0);
- mutex_destroy(p);
- }
+ mutex_post_destroy(mutex);
}
void drd_pre_mutex_lock(const DrdThreadId drd_tid,
@@ -562,11 +553,11 @@
static
IRSB* drd_instrument(VgCallbackClosure* const closure,
- IRSB* const bb_in,
- VexGuestLayout* const layout,
- VexGuestExtents* const vge,
- IRType const gWordTy,
- IRType const hWordTy)
+ IRSB* const bb_in,
+ VexGuestLayout* const layout,
+ VexGuestExtents* const vge,
+ IRType const gWordTy,
+ IRType const hWordTy)
{
IRDirty* di;
Int i;
Modified: trunk/exp-drd/drd_mutex.c
===================================================================
--- trunk/exp-drd/drd_mutex.c 2008-01-20 23:30:58 UTC (rev 7357)
+++ trunk/exp-drd/drd_mutex.c 2008-01-21 14:19:07 UTC (rev 7358)
@@ -47,6 +47,11 @@
};
+// Local functions.
+
+static void mutex_destroy(struct mutex_info* const p);
+
+
// Local variables.
static Bool s_trace_mutex;
@@ -120,11 +125,6 @@
{
struct mutex_info* mutex_p;
- tl_assert(mutex_get(mutex) == 0);
- tl_assert(mutex_type == mutex_type_mutex
- || mutex_type == mutex_type_spinlock);
- mutex_p = mutex_get_or_allocate(mutex, size, mutex_type);
-
if (s_trace_mutex)
{
const ThreadId vg_tid = VG_(get_running_tid)();
@@ -132,14 +132,31 @@
VG_(message)(Vg_DebugMsg,
"drd_post_mutex_init tid = %d/%d, %s 0x%lx",
vg_tid, drd_tid,
- mutex_get_typename(mutex_p),
+ mutex_type_name(mutex_type),
mutex);
}
+ tl_assert(mutex_type == mutex_type_mutex
+ || mutex_type == mutex_type_spinlock);
+ mutex_p = mutex_get(mutex);
+ if (mutex_p)
+ {
+ const ThreadId vg_tid = VG_(get_running_tid)();
+ MutexErrInfo MEI
+ = { mutex_p->mutex, mutex_p->recursion_count, mutex_p->owner };
+ VG_(maybe_record_error)(vg_tid,
+ MutexErr,
+ VG_(get_IP)(vg_tid),
+ "Mutex reinitialization",
+ &MEI);
+ mutex_destroy(mutex_p);
+ }
+ mutex_p = mutex_get_or_allocate(mutex, size, mutex_type);
+
return mutex_p;
}
-void mutex_destroy(struct mutex_info* const p)
+static void mutex_destroy(struct mutex_info* const p)
{
if (s_trace_mutex)
{
@@ -158,6 +175,33 @@
p->mutex = 0;
}
+void mutex_pre_destroy(struct mutex_info* const p)
+{
+ return mutex_destroy(p);
+}
+
+void mutex_post_destroy(const Addr mutex)
+{
+ struct mutex_info* p;
+
+ p = mutex_get(mutex);
+ tl_assert(p);
+ if (p)
+ {
+ if (mutex_get_recursion_count(mutex) > 0)
+ {
+ const ThreadId vg_tid = VG_(get_running_tid)();
+ MutexErrInfo MEI = { p->mutex, p->recursion_count, p->owner };
+ VG_(maybe_record_error)(vg_tid,
+ MutexErr,
+ VG_(get_IP)(vg_tid),
+ "Destroying locked mutex",
+ &MEI);
+ }
+ mutex_pre_destroy(p);
+ }
+}
+
struct mutex_info* mutex_get(const Addr mutex)
{
int i;
@@ -215,7 +259,7 @@
" simultaneously by two threads (recursion count %d,"
" owners %d and %d) !",
p->mutex, p->recursion_count, p->owner, drd_tid);
- tl_assert(0);
+ p->owner = drd_tid;
}
p->recursion_count++;
@@ -271,7 +315,18 @@
&MEI);
}
p->recursion_count--;
- tl_assert(p->recursion_count >= 0);
+ if (p->recursion_count < 0)
+ {
+ MutexErrInfo MEI
+ = { p->mutex, p->recursion_count, p->owner };
+ VG_(maybe_record_error)(vg_tid,
+ MutexErr,
+ VG_(get_IP)(vg_tid),
+ "Attempt to unlock a mutex that is not locked",
+ &MEI);
+ p->recursion_count = 0;
+ }
+
if (p->recursion_count == 0)
{
/* This pthread_mutex_unlock() call really unlocks the mutex. Save the */
@@ -288,7 +343,12 @@
{
tl_assert(p);
- switch (p->mutex_type)
+ return mutex_type_name(p->mutex_type);
+}
+
+const char* mutex_type_name(const MutexT mt)
+{
+ switch (mt)
{
case mutex_type_mutex:
return "mutex";
@@ -360,3 +420,10 @@
{
return s_mutex_lock_count;
}
+
+
+/*
+ * Local variables:
+ * c-basic-offset: 3
+ * End:
+ */
Modified: trunk/exp-drd/drd_mutex.h
===================================================================
--- trunk/exp-drd/drd_mutex.h 2008-01-20 23:30:58 UTC (rev 7357)
+++ trunk/exp-drd/drd_mutex.h 2008-01-21 14:19:07 UTC (rev 7358)
@@ -42,11 +42,13 @@
void mutex_set_trace(const Bool trace_mutex);
struct mutex_info* mutex_init(const Addr mutex, const SizeT size,
const MutexT mutex_type);
-void mutex_destroy(struct mutex_info* const p);
+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);
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);
Bool mutex_is_locked_by(const Addr mutex, const DrdThreadId tid);
const VectorClock* mutex_get_last_vc(const Addr mutex);
int mutex_get_recursion_count(const Addr mutex);
Modified: trunk/exp-drd/tests/Makefile.am
===================================================================
--- trunk/exp-drd/tests/Makefile.am 2008-01-20 23:30:58 UTC (rev 7357)
+++ trunk/exp-drd/tests/Makefile.am 2008-01-21 14:19:07 UTC (rev 7358)
@@ -17,6 +17,8 @@
fp_race2.stdout.exp fp_race2.stderr.exp \
matinv.vgtest \
matinv.stdout.exp matinv.stderr.exp \
+ pth_barrier.vgtest \
+ pth_barrier.stdout.exp pth_barrier.stderr.exp \
pth_broadcast.vgtest \
pth_broadcast.stdout.exp pth_broadcast.stderr.exp \
pth_cond_race.vgtest \
@@ -48,6 +50,7 @@
check_PROGRAMS = \
fp_race \
matinv \
+ pth_barrier \
pth_broadcast \
pth_cond_race \
pth_create_chain \
@@ -63,6 +66,9 @@
matinv_SOURCES = matinv.c
matinv_LDADD = -lpthread -lm
+pth_barrier_SOURCES = pth_barrier.c
+pth_barrier_LDADD = -lpthread
+
pth_broadcast_SOURCES = pth_broadcast.c
pth_broadcast_LDADD = -lpthread
Modified: trunk/exp-drd/tests/matinv.c
===================================================================
--- trunk/exp-drd/tests/matinv.c 2008-01-20 23:30:58 UTC (rev 7357)
+++ trunk/exp-drd/tests/matinv.c 2008-01-21 14:19:07 UTC (rev 7358)
@@ -6,12 +6,12 @@
*/
+#define _GNU_SOURCE
+
/***********************/
/* Include directives. */
/***********************/
-#define _GNU_SOURCE
-
#include <assert.h>
#include <math.h>
#include <pthread.h>
Added: trunk/exp-drd/tests/pth_barrier.c
===================================================================
--- trunk/exp-drd/tests/pth_barrier.c (rev 0)
+++ trunk/exp-drd/tests/pth_barrier.c 2008-01-21 14:19:07 UTC (rev 7358)
@@ -0,0 +1,105 @@
+/* Test whether all data races are detected in a multithreaded program with
+ * barriers.
+ */
+
+
+#define _GNU_SOURCE
+
+/***********************/
+/* Include directives. */
+/***********************/
+
+#include <assert.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+/*********************/
+/* Type definitions. */
+/*********************/
+
+struct threadinfo
+{
+ pthread_barrier_t* b;
+ pthread_t tid;
+ int* array;
+ int iterations;
+};
+
+
+/********************/
+/* Local variables. */
+/********************/
+
+static int s_silent;
+
+
+/*************************/
+/* Function definitions. */
+/*************************/
+
+static void* threadfunc(struct threadinfo* p)
+{
+ int i;
+ int* const array = p->array;
+ pthread_barrier_t* const b = p->b;
+ if (! s_silent)
+ printf("thread %lx iteration 0\n", pthread_self());
+ pthread_barrier_wait(b);
+ for (i = 0; i < p->iterations; i++)
+ {
+ if (! s_silent)
+ printf("thread %lx iteration %d; writing to %p\n",
+ pthread_self(), i + 1, &array[i]);
+ array[i] = i;
+ pthread_barrier_wait(b);
+ }
+ return 0;
+}
+
+/** Multithreaded Gauss-Jordan algorithm. */
+static void barriers_and_races(const int nthread, const int iterations)
+{
+ int i;
+ struct threadinfo* t;
+ pthread_barrier_t b;
+ int* array;
+
+ t = malloc(nthread * sizeof(struct threadinfo));
+ array = malloc(iterations * sizeof(array[0]));
+
+ pthread_barrier_init(&b, 0, nthread);
+
+ for (i = 0; i < nthread; i++)
+ {
+ t[i].b = &b;
+ t[i].array = array;
+ t[i].iterations = iterations;
+ pthread_create(&t[i].tid, 0, (void*(*)(void*))threadfunc, &t[i]);
+ }
+
+ for (i = 0; i < nthread; i++)
+ {
+ pthread_join(t[i].tid, 0);
+ }
+
+ pthread_barrier_destroy(&b);
+
+ free(array);
+ free(t);
+}
+
+int main(int argc, char** argv)
+{
+ int nthread;
+ int iterations;
+
+ nthread = (argc > 1) ? atoi(argv[1]) : 2;
+ iterations = (argc > 2) ? atoi(argv[2]) : 3;
+ s_silent = (argc > 3) ? atoi(argv[3]) : 0;
+
+ barriers_and_races(nthread, iterations);
+
+ return 0;
+}
Added: trunk/exp-drd/tests/pth_barrier.stderr.exp
===================================================================
--- trunk/exp-drd/tests/pth_barrier.stderr.exp (rev 0)
+++ trunk/exp-drd/tests/pth_barrier.stderr.exp 2008-01-21 14:19:07 UTC (rev 7358)
@@ -0,0 +1,3 @@
+
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Added: trunk/exp-drd/tests/pth_barrier.vgtest
===================================================================
--- trunk/exp-drd/tests/pth_barrier.vgtest (rev 0)
+++ trunk/exp-drd/tests/pth_barrier.vgtest 2008-01-21 14:19:07 UTC (rev 7358)
@@ -0,0 +1,2 @@
+prog: pth_barrier
+args: 2 1 1
Modified: trunk/exp-drd/tests/pth_cond_race.stderr.exp
===================================================================
--- trunk/exp-drd/tests/pth_cond_race.stderr.exp 2008-01-20 23:30:58 UTC (rev 7357)
+++ trunk/exp-drd/tests/pth_cond_race.stderr.exp 2008-01-21 14:19:07 UTC (rev 7358)
@@ -1,7 +1,7 @@
Thread 2:
Race condition: condition variable 0x........ has been signalled but the associated mutex 0x........ is not locked by the signalling thread
- at 0x........: pthread_cond_signal@* (drd_intercepts.c:?)
+ at 0x........: pthread_cond_signal* (drd_intercepts.c:?)
by 0x........: thread_func (pth_cond_race.c:?)
by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
by 0x........: start_thread (in libpthread-?.?.so)
|
|
From: Julian S. <js...@ac...> - 2008-01-21 13:01:51
|
> Yea... And we probably need to export one more FM method:
> + while (HG_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )
> + && compareFM(map_locks, gla,lastA) <= 0) { // use the comparison
> function from map_locks
Urr. You're right. That's ugly. That means 2 function calls per
element now.
Maybe it would be easier to have this:
// unchanged -- set up for unbounded iteration
initIterFM( WordFM* fm )
// change this back to the original version
nextIterFM( WordFM* fm, UWord* key, UWord* val)
// set up for bounded iteration, first value >= notBelow
initBoundedIterFM( WordFM* fm, UWord notBelow )
// get next value, except stop if > notAbove
nextBoundedIterFM( WordFM* fm, UWord notAbove, UWord* key, UWord* val )
That removes the extra compareFM call.
J
|
|
From: Konstantin S. <kon...@gm...> - 2008-01-21 12:40:43
|
>> Unfortunately I don't think this really fixes it.
Ouch!
Yep, it does not. It just hides the problem and makes it extremely rare.
>> I think the only fix is to change all the unboxed comparison stuff in
WordFM to use unsigned Words.
Yea... And we probably need to export one more FM method:
+ while (HG_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )
+ && compareFM(map_locks, gla,lastA) <= 0) { // use the comparison
function from map_locks
--kcc
On Jan 21, 2008 3:27 PM, Julian Seward <js...@ac...> wrote:
> On Monday 21 January 2008 11:08, Konstantin Serebryany wrote:
> > Hi Julian,
> >
> > I found out that this fix has an issue (which appears only in 32-bit
> mode).
> >
> > + while (HG_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )
> > + && gla <= lastA) {
> >
> > This should look like
> > + while (HG_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )
> > + && (Word)gla <= (Word)lastA) {
>
> Good observation. Unfortunately I don't think this really fixes it.
>
> Consider on a 32-bit platform, we want to iterate over locks in the
> range
>
> Addr firstA = 0x70000000
> Addr lastA = 0x90000000 - 1
>
> (UWord)firstA = 1879048192
> (UWord)lastA = 2415919104
>
> (Word)firstA = 1879048192
> (Word)lastA = -1879048192
>
> Since the trees will be ordered by Word, this means we are asking to
> iterate over the range 1879048192 .. -1879048192, which is empty, and
> so the iteration loop will terminate immediately.
>
> I think the only fix is to change all the unboxed comparison stuff
> in WordFM to use unsigned Words. Maybe it would be better to change
> WordFM to used unsigned Words throughout.
>
> This also shows there is a specification problem in HG_(initIterAt).
> Using only HG_(initIter) and HG_(nextIter), we could iterate over
> all elements of the tree, in some order - it did not matter what.
> But HG_(initIterAt)(x) guarantees not to present any value < x;
> unfortunately we did not say how "<" is defined in the unboxed case.
>
> J
>
|
|
From: Julian S. <js...@ac...> - 2008-01-21 12:29:50
|
On Monday 21 January 2008 11:08, Konstantin Serebryany wrote:
> Hi Julian,
>
> I found out that this fix has an issue (which appears only in 32-bit mode).
>
> + while (HG_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )
> + && gla <= lastA) {
>
> This should look like
> + while (HG_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )
> + && (Word)gla <= (Word)lastA) {
Good observation. Unfortunately I don't think this really fixes it.
Consider on a 32-bit platform, we want to iterate over locks in the
range
Addr firstA = 0x70000000
Addr lastA = 0x90000000 - 1
(UWord)firstA = 1879048192
(UWord)lastA = 2415919104
(Word)firstA = 1879048192
(Word)lastA = -1879048192
Since the trees will be ordered by Word, this means we are asking to
iterate over the range 1879048192 .. -1879048192, which is empty, and
so the iteration loop will terminate immediately.
I think the only fix is to change all the unboxed comparison stuff
in WordFM to use unsigned Words. Maybe it would be better to change
WordFM to used unsigned Words throughout.
This also shows there is a specification problem in HG_(initIterAt).
Using only HG_(initIter) and HG_(nextIter), we could iterate over
all elements of the tree, in some order - it did not matter what.
But HG_(initIterAt)(x) guarantees not to present any value < x;
unfortunately we did not say how "<" is defined in the unboxed case.
J
|
|
From: Julian S. <js...@ac...> - 2008-01-21 12:28:10
|
> > > - The exp-drd regression tests now run without producing assertion > > > failures and without hanging on Red Hat 7.3. It doesn't make sense > > > however to run exp-drd on Red Hat 7.3 -- while exp-drd works fine with > > > the NPTL, more work would be required to make exp-drd work with > > > linuxthreads. > > > > Is it possible to detect linuxthreads at startup and abort with an > > explanation? If exp-drd can't do anything useful on linuxthreads, we > > don't want people to run it and think their program is ok. > > Do have any idea how many Linux systems are based on linuxthreads and > did not yet switch to the NPTL ? > > What happens when you run exp-drd under linuxthreads is that lots and > lots of false positives are printed -- exp-drd is basically unusable > under linuxthreads. Same with Helgrind. I'm in two minds as to whether or not to dump LinuxThreads support in 3.4. NPTL is pretty much universal now. According to Wikipedia it first shipped in Red Hat 9, which was released on 31 March 2003. OTOH supporting LinuxThreads, at least to the extent that V does not crash or hang, is not a big deal, and I have no idea how many people are running older systems. I think enterprise users can be very conservative about upgrading. > at runtime. The only reliable way I know of to detect linuxthreads at > runtime is to call getpid() [...] We could add a configure test for it, I suppose. J |
|
From: Konstantin S. <kon...@gm...> - 2008-01-21 10:20:16
|
On Jan 15, 2008 12:38 PM, Julian Seward <js...@ac...> wrote: > On Tuesday 15 January 2008 10:32, Konstantin Serebryany wrote: > > You mean it requires 32-bit hardware? or 32-bit-only os? or 32-bit > > executable? > > I _think_ requires 32-bit executable. > > It looks like oprofile's callgraph requires 32-bit OS. At least it started working for me only when I rebooted my box in 32-bit mode. A bit of fun: I tried to profile helgrind with vtssrun (a tool from Intel Performance Tuning Utilities). vtssrun EXPERIMENT_DIR -- valgrind ... When running usual programs, vtssrun performs stack sampling of the program and then produces nice callgraphs, flat profiles, etc. But not for valgrind -- instead of profiling valgrind with vtssrun my command line debugged the vtssrun utility with valgrind!! Both tools try to inject themselves into the same address space... LOL --kcc |
|
From: Konstantin S. <kon...@gm...> - 2008-01-21 10:07:56
|
Hi Julian,
I found out that this fix has an issue (which appears only in 32-bit mode).
+ while (HG_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )
+ && gla <= lastA) {
This should look like
+ while (HG_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )
+ && (Word)gla <= (Word)lastA) {
gla and lastA are unsigned variables, but we need signed comparison since
unboxed comparison in FM is signed.
So, we need to cast 'gla' and 'lastA' to Word before comparing them.
The same for
+ tl_assert(gla >= firstA);
+ tl_assert(gla <= lastA);
Thanks!
--kcc
On Jan 18, 2008 2:19 AM, <sv...@va...> wrote:
> Author: sewardj
> Date: 2008-01-17 23:19:54 +0000 (Thu, 17 Jan 2008)
> New Revision: 7353
>
> Log:
> Allow a WordFM iterator to be initialised so as to exclude all key
> values below a given value. This allows efficiently iterating over
> small subsets of a mapping. Use this in Helgrind to avoid a
> performance bad case. Patch from Konstantin Serebryany.
>
> Modified:
> trunk/helgrind/hg_main.c
> trunk/helgrind/hg_wordfm.c
> trunk/helgrind/hg_wordfm.h
>
>
> Modified: trunk/helgrind/hg_main.c
> ===================================================================
> --- trunk/helgrind/hg_main.c 2008-01-17 14:37:24 UTC (rev 7352)
> +++ trunk/helgrind/hg_main.c 2008-01-17 23:19:54 UTC (rev 7353)
> @@ -4947,13 +4947,14 @@
> (void*)firstA, (UWord)len, (void*)lastA);
> locksToDelete = HG_(emptyWS)( univ_lsets );
>
> - /* FIXME: don't iterate over the complete lock set */
> - HG_(initIterFM)( map_locks );
> - while (HG_(nextIterFM)( map_locks,
> - (Word*)&gla, (Word*)&lk )) {
> + /* Iterate over all locks in the range firstA .. lastA inclusive. */
> + HG_(initIterAtFM)( map_locks, firstA );
> + while (HG_(nextIterFM)( map_locks, (Word*)&gla, (Word*)&lk )
> + && gla <= lastA) {
> tl_assert(is_sane_LockN(lk));
> - if (gla < firstA || gla > lastA)
> - continue;
> + tl_assert(gla >= firstA);
> + tl_assert(gla <= lastA);
> +
> locksToDelete = HG_(addToWS)( univ_lsets, locksToDelete, (Word)lk );
> /* If the lock is held, we must remove it from the currlock sets
> of all threads that hold it. Also take the opportunity to
>
> Modified: trunk/helgrind/hg_wordfm.c
> ===================================================================
> --- trunk/helgrind/hg_wordfm.c 2008-01-17 14:37:24 UTC (rev 7352)
> +++ trunk/helgrind/hg_wordfm.c 2008-01-17 23:19:54 UTC (rev 7353)
> @@ -53,6 +53,24 @@
> #include "pub_tool_libcassert.h"
> #include "pub_tool_libcbase.h"
>
> +
> +#ifdef HG_WORDFM_STANDALONE // standalone compilation
> +// Standalone mode (for testing).
> +// On x86_64 compile like this:
> +// gcc -m64 hg_wordfm.c -I../include -I../VEX/pub
> +// -DVGA_amd64=1 -DHG_WORDFM_STANDALONE -g -O -Wall
> +# include <assert.h>
> +# include <string.h>
> +# include <stdio.h>
> +# include <stdlib.h>
> +
> +# undef tl_assert
> +# define tl_assert assert
> +# define vgPlain_memset memset
> +
> +#endif /* def HG_WORDFM_STANDALONE */
> +
> +
> #define HG_(str) VGAPPEND(vgHelgrind_,str)
> #include "hg_wordfm.h"
>
> @@ -628,8 +646,59 @@
> stackPush(fm, fm->root, 1);
> }
>
> +// set up FM for iteration
> +// so that the first key subsequently produced by HG_(nextIterFM) is
> +// the smallest key in the map >= start_at.
> +void HG_(initIterAtFM) ( WordFM* fm, Word start_at )
> +{
> + Int i;
> + AvlNode *n, *t;
> + Word cmpresS; /* signed */
> + UWord cmpresU; /* unsigned */
> +
> + tl_assert(fm);
> + stackClear(fm);
> +
> + if (!fm->root)
> + return;
> +
> + n = NULL;
> + // We need to do regular search and fill in the stack.
> + t = fm->root;
> +
> + while (True) {
> + if (t == NULL) return;
> +
> + cmpresS
> + = fm->kCmp ? /*boxed*/ fm->kCmp( t->key, start_at )
> + : /*unboxed*/ cmp_signed_Words( t->key, start_at );
> +
> + if (cmpresS == 0) {
> + // We found the exact key -- we are done.
> + // The iteration should start with this node.
> + stackPush(fm, t, 2);
> + // The stack now looks like {2, 2, ... ,2, 2}
> + return;
> + }
> + cmpresU = (UWord)cmpresS;
> + cmpresU >>=/*unsigned*/ (8 * sizeof(cmpresU) - 1);
> + if (!cmpresU) {
> + // Push this node only if we go to the left child.
> + stackPush(fm, t, 2);
> + }
> + t = t->child[cmpresU];
> + }
> + if (stackPop(fm, &n, &i)) {
> + // If we've pushed something to stack and did not find the exact
> key,
> + // we must fix the top element of stack.
> + tl_assert(i == 2);
> + stackPush(fm, n, 3);
> + // the stack looks like {2, 2, ..., 2, 3}
> + }
> +}
> +
> // get next key/val pair. Will tl_assert if fm has been modified
> -// or looked up in since initIterFM was called.
> +// or looked up in since initIter{,At}FM was called.
> Bool HG_(nextIterFM) ( WordFM* fm, /*OUT*/Word* pKey, /*OUT*/Word* pVal )
> {
> Int i = 0;
> @@ -840,6 +909,119 @@
> //--- Implementation ---//
> //------------------------------------------------------------------//
>
> +
> +#ifdef HG_WORDFM_STANDALONE
> +
> +//------------------------------------------------------------------//
> +//--- Simple test driver. ---//
> +//------------------------------------------------------------------//
> +
> +// We create a map with N values {1, 3, 5, ..., (N*2-1)}
> +// and do some trivial stuff with it.
> +
> +
> +// Return the number of elements in range [beg, end).
> +// Just lookup for each element in range and count.
> +int search_all_elements_in_range_1(WordFM *map, long beg, long end)
> +{
> + int n_found = 0;
> + int i;
> + for(i = beg; i < end; i++) {
> + Word key, val;
> + if(HG_(lookupFM)(map, &key, &val, (Word)i)){
> + n_found++;
> + assert(key == -val);
> + assert(key == (Word)i);
> + }
> + }
> + return n_found;
> +}
> +
> +// Return the number of elements in range [beg, end).
> +// Start with the largest element 'e' such that 'e <= beg'
> +// and iterate until 'e < end'.
> +int search_all_elements_in_range_2(WordFM *map, long beg, long end)
> +{
> + int n_found = 0;
> + Word key, val;
> + HG_(initIterAtFM)(map, beg);
> + while(HG_(nextIterFM)(map, &key, &val) && (int)key < end) {
> + assert(key == -val);
> + n_found++;
> + }
> + HG_(doneIterFM)(map);
> + return n_found;
> +}
> +
> +int main(void)
> +{
> + int i, n = 10;
> + Word key, val;
> + int beg, end;
> +
> + printf("Create the map, n=%d\n", n);
> + WordFM *map = HG_(newFM)(malloc, free, NULL/*unboxed Word cmp*/);
> +
> + printf("Add keys: ");
> + for(i = 0; i < n; i++) {
> + long val = i * 2 + 1; // 1, 3, 5, ... (n*2-1)
> + printf("%ld ", val);
> + HG_(addToFM)(map, val, -val);
> + }
> + assert(HG_(sizeFM)(map) == n);
> + printf("\n");
> + printf("Iterate elements, size=%d\n", (int)HG_(sizeFM)(map));
> + HG_(initIterFM)(map);
> +
> + while(HG_(nextIterFM(map, &key, &val))){
> + // int j;
> + // printf("Stack k=%d\n", (int)key);
> + // for(j = map->stackTop-1; j >= 0; j--) {
> + // printf("\t[%d]: k=%d s=%d\n", j,
> + // (int)map->nodeStack[j]->key, (int)map->numStack[j]);
> + // }
> + assert(key == -val);
> + }
> + HG_(doneIterFM)(map);
> +
> + printf("Test initIterAtFM\n");
> + for(beg = 0; beg <= n*2; beg++) {
> + HG_(initIterAtFM)(map, (Word)beg);
> + int prev = -1;
> + printf("StartWith: %d: ", beg);
> + int n_iter = 0;
> +
> + while(HG_(nextIterFM(map, &key, &val))) {
> + printf("%d ", (int)key);
> + assert(key == -val);
> + if(prev > 0) assert(prev + 2 == (int)key);
> + prev = (int)key;
> + n_iter++;
> + }
> + HG_(doneIterFM)(map);
> +
> + printf("\ntotal: %d\n", n_iter);
> + if (beg < 1 ) assert(n_iter == n);
> + else if (beg >= n*2) assert(n_iter == 0);
> + else assert(n_iter == (n - beg/2));
> + }
> +
> + printf("Compare search_all_elements_in_range_[12]\n");
> + for (beg = 0; beg <= n*2; beg++) {
> + for (end = 0; end <= n*2; end++) {
> + assert( search_all_elements_in_range_1(map, beg, end)
> + == search_all_elements_in_range_2(map, beg, end));
> + }
> + }
> +
> + printf("Delete the map\n");
> + HG_(deleteFM)(map, NULL, NULL);
> + printf("Ok!\n");
> + return 0;
> +}
> +
> +#endif
> +
> /*--------------------------------------------------------------------*/
> /*--- end hg_wordfm.c ---*/
> /*--------------------------------------------------------------------*/
>
> Modified: trunk/helgrind/hg_wordfm.h
> ===================================================================
> --- trunk/helgrind/hg_wordfm.h 2008-01-17 14:37:24 UTC (rev 7352)
> +++ trunk/helgrind/hg_wordfm.h 2008-01-17 23:19:54 UTC (rev 7353)
> @@ -87,8 +87,13 @@
> // set up FM for iteration
> void HG_(initIterFM) ( WordFM* fm );
>
> +// set up FM for iteration
> +// so that the first key subsequently produced by HG_(nextIterFM) is
> +// the smallest key in the map >= start_at.
> +void HG_(initIterAtFM) ( WordFM* fm, Word start_at );
> +
> // get next key/val pair. Will assert if fm has been modified
> -// or looked up in since initIterFM was called.
> +// or looked up in since initIterFM/initIterWithStartFM was called.
> Bool HG_(nextIterFM) ( WordFM* fm,
> /*OUT*/Word* pKey, /*OUT*/Word* pVal );
>
>
>
> -------------------------------------------------------------------------
> 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: Bart V. A. <bar...@gm...> - 2008-01-21 07:03:30
|
On Jan 20, 2008 9:51 PM, Nicholas Nethercote <nj...@cs...> wrote: > On Sun, 20 Jan 2008, Bart Van Assche wrote: > > > Changes: > > - The exp-drd regression tests now run without producing assertion > > failures and without hanging on Red Hat 7.3. It doesn't make sense > > however to run exp-drd on Red Hat 7.3 -- while exp-drd works fine with > > the NPTL, more work would be required to make exp-drd work with > > linuxthreads. > > Is it possible to detect linuxthreads at startup and abort with an > explanation? If exp-drd can't do anything useful on linuxthreads, we don't > want people to run it and think their program is ok. Do have any idea how many Linux systems are based on linuxthreads and did not yet switch to the NPTL ? What happens when you run exp-drd under linuxthreads is that lots and lots of false positives are printed -- exp-drd is basically unusable under linuxthreads. There exist some Linux distributions which include both an NPTL and a linuxthreads implementation, with NPTL as default, e.g. MontaVista Linux 4. These distributions allow to select a thread implementation at runtime. The only reliable way I know of to detect linuxthreads at runtime is to call getpid(), create a new thread, call getpid(), and compare the two process ID's. When both ID's are equal, the process is started under NPTL. If not, then the process is started with linuxthreads. Such a test can only be performed from client code. Note: the current implementation of Helgrind also only supports the NPTL. Regards, Bart. |
|
From: Tom H. <th...@cy...> - 2008-01-21 03:47:06
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-01-21 03:20: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 == 374 tests, 15 stderr failures, 1 stdout failure, 1 post failure == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) massif/tests/long-names (post) 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/pth_cond_race (stderr) exp-drd/tests/sem_as_mutex2 (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 == 373 tests, 15 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/supp_unknown (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/pth_cond_race (stderr) exp-drd/tests/sem_as_mutex2 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Jan 21 03:33:39 2008 --- new.short Mon Jan 21 03:47:07 2008 *************** *** 8,10 **** ! == 373 tests, 15 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/addressable (stderr) --- 8,10 ---- ! == 374 tests, 15 stderr failures, 1 stdout failure, 1 post failure == memcheck/tests/addressable (stderr) *************** *** 18,19 **** --- 18,20 ---- memcheck/tests/xml1 (stderr) + massif/tests/long-names (post) none/tests/blockfault (stderr) |
|
From: Tom H. <th...@cy...> - 2008-01-21 03:39:49
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-01-21 03:25: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 == 372 tests, 7 stderr failures, 5 stdout failures, 1 post failure == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) massif/tests/long-names (post) 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/sem_as_mutex2 (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 == 371 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/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/sem_as_mutex2 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Jan 21 03:32:21 2008 --- new.short Mon Jan 21 03:39:49 2008 *************** *** 8,10 **** ! == 371 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 372 tests, 7 stderr failures, 5 stdout failures, 1 post failure == memcheck/tests/pointer-trace (stderr) *************** *** 14,15 **** --- 14,16 ---- memcheck/tests/x86/scalar (stderr) + massif/tests/long-names (post) none/tests/cmdline1 (stdout) *************** *** 18,20 **** none/tests/mremap2 (stdout) - helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) --- 19,20 ---- |
|
From: Tom H. <th...@cy...> - 2008-01-21 03:39:06
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-01-21 03:05:09 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 == 372 tests, 8 stderr failures, 2 stdout failures, 1 post failure == 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) massif/tests/long-names (post) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (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 == 371 tests, 8 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/pth_cond_race (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Jan 21 03:20:00 2008 --- new.short Mon Jan 21 03:39:07 2008 *************** *** 8,10 **** ! == 371 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 372 tests, 8 stderr failures, 2 stdout failures, 1 post failure == memcheck/tests/malloc_free_fill (stderr) *************** *** 14,15 **** --- 14,16 ---- memcheck/tests/xml1 (stderr) + massif/tests/long-names (post) none/tests/mremap (stderr) |
|
From: Tom H. <th...@cy...> - 2008-01-21 03:29:07
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-01-21 03:10: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 == 372 tests, 9 stderr failures, 2 stdout failures, 1 post failure == 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) massif/tests/long-names (post) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (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 == 371 tests, 9 stderr failures, 3 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) none/tests/pth_detached (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Jan 21 03:19:38 2008 --- new.short Mon Jan 21 03:29:10 2008 *************** *** 8,10 **** ! == 371 tests, 9 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 372 tests, 9 stderr failures, 2 stdout failures, 1 post failure == memcheck/tests/malloc_free_fill (stderr) *************** *** 14,18 **** memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) - none/tests/pth_detached (stdout) helgrind/tests/tc18_semabuse (stderr) --- 14,18 ---- memcheck/tests/xml1 (stderr) + massif/tests/long-names (post) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) |
|
From: Tom H. <th...@cy...> - 2008-01-21 03:15:47
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-01-21 03:00:03 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 == 374 tests, 30 stderr failures, 1 stdout failure, 1 post failure == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) massif/tests/long-names (post) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (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/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) ================================================= == 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 == 373 tests, 30 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (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/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) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Jan 21 03:07:23 2008 --- new.short Mon Jan 21 03:15:50 2008 *************** *** 8,10 **** ! == 373 tests, 30 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/addressable (stderr) --- 8,10 ---- ! == 374 tests, 30 stderr failures, 1 stdout failure, 1 post failure == memcheck/tests/addressable (stderr) *************** *** 19,20 **** --- 19,21 ---- memcheck/tests/x86/scalar_supp (stderr) + massif/tests/long-names (post) none/tests/blockfault (stderr) |