You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
|
1
(21) |
|
2
(19) |
3
(33) |
4
(24) |
5
(18) |
6
(13) |
7
(22) |
8
(21) |
|
9
(38) |
10
(25) |
11
(20) |
12
(27) |
13
(43) |
14
(9) |
15
(19) |
|
16
(37) |
17
(19) |
18
(13) |
19
(11) |
20
(8) |
21
(11) |
22
(25) |
|
23
(21) |
24
(30) |
25
(18) |
26
(11) |
27
(10) |
28
(14) |
29
(40) |
|
30
(24) |
31
(14) |
|
|
|
|
|
|
From: Nuno L. <nun...@sa...> - 2008-03-17 23:41:33
|
> Sorry to be slow replying. Slowness is because I don't have any good > alternative suggestions. Sorry now for my late answer, but I didn't have internet access over the weekend. > I agree .. earlier in the life of the project there was a lot of effort > put into doing good IR level optimisation; and then before 3.3.0 another > round of iropt and code generator tuning. So most of the easy and > even the not-so-easy stuff is already done. Ok. Anyway I'll compare what's implemented with what's on the book :) If there's still something left we'll implement it (and benchmark it as well). > Another thing you could chase is to consider enhancing the superblock > formation. Currently vex follows unconditional branches and calls when > forming superblocks, but stops at indirect and conditional branches. > I experimented with the usual simple heuristic for conditional branches: > assume backwards branches taken and forward not taken, and extended it > to follow conditional branches on that basis. Often made performance > worse, though; although the translations might be a bit faster, they are > also a lot bigger (more I1 misses) and the JIT of course runs more slowly > too. Not worth the hassle I reckon. Sounds interesting. I'll have a closer look to vex's code to understand it and I'll get back to you if (well, when..) I have some question. BTW, does valgrind has some way to dump the superblock contents (e.g. the asm/vex instructions and jumps)? Thanks, Nuno |
|
From: <sv...@va...> - 2008-03-17 18:57:02
|
Author: bart Date: 2008-03-17 18:57:03 +0000 (Mon, 17 Mar 2008) New Revision: 7731 Log: Enable compile-time format string checking by gcc if the macro CHECK_FORMAT_STRINGS has been defined before this file has been included. Modified: trunk/include/pub_tool_libcprint.h Modified: trunk/include/pub_tool_libcprint.h =================================================================== --- trunk/include/pub_tool_libcprint.h 2008-03-17 18:38:26 UTC (rev 7730) +++ trunk/include/pub_tool_libcprint.h 2008-03-17 18:57:03 UTC (rev 7731) @@ -31,6 +31,21 @@ #ifndef __PUB_TOOL_LIBCPRINT_H #define __PUB_TOOL_LIBCPRINT_H + +/* Enable compile-time format string checking by gcc if the macro + CHECK_FORMAT_STRINGS has been defined before this file has been included. + This feature is supported since at least gcc version 2.95. + For more information about the format attribute, see also + http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gcc/Function-Attributes.html. + */ + +#if defined(__GNUC__) && defined(CHECK_FORMAT_STRINGS) +#define PRINTF_CHECK(x, y) __attribute__((format(__printf__, x, y))) +#else +#define PRINTF_CHECK(x, y) +#endif + + /* --------------------------------------------------------------------- Basic printing ------------------------------------------------------------------ */ @@ -39,17 +54,14 @@ * --log-fd/--log-file/--log-socket argument, which defaults to 2 (stderr). * Hence no need for VG_(fprintf)(). */ -extern UInt VG_(printf) ( const HChar *format, ... ); -extern UInt VG_(vprintf) ( const HChar *format, va_list vargs ); -/* too noisy ... __attribute__ ((format (printf, 1, 2))) ; */ - -extern UInt VG_(sprintf) ( Char* buf, const HChar* format, ... ); -extern UInt VG_(vsprintf) ( Char* buf, const HChar* format, va_list vargs ); - +extern UInt VG_(printf) ( const HChar *format, ... ) PRINTF_CHECK(1, 2); +extern UInt VG_(vprintf) ( const HChar *format, va_list vargs ) PRINTF_CHECK(1, 0); +extern UInt VG_(sprintf) ( Char* buf, const HChar* format, ... ) PRINTF_CHECK(2, 3); +extern UInt VG_(vsprintf) ( Char* buf, const HChar* format, va_list vargs ) PRINTF_CHECK(2, 0); extern UInt VG_(snprintf) ( Char* buf, Int size, - const HChar *format, ... ); + const HChar *format, ... ) PRINTF_CHECK(3, 4); extern UInt VG_(vsnprintf)( Char* buf, Int size, - const HChar *format, va_list vargs ); + const HChar *format, va_list vargs ) PRINTF_CHECK(3, 0); // Percentify n/m with d decimal places. Includes the '%' symbol at the end. // Right justifies in 'buf'. @@ -74,9 +86,9 @@ VgMsgKind; /* Send a single-part message. Appends a newline. */ -extern UInt VG_(message) ( VgMsgKind kind, const HChar* format, ... ); -extern UInt VG_(vmessage) ( VgMsgKind kind, const HChar* format, va_list vargs ); +extern UInt VG_(message) ( VgMsgKind kind, const HChar* format, ... ) PRINTF_CHECK(2, 3); +extern UInt VG_(vmessage) ( VgMsgKind kind, const HChar* format, va_list vargs ) PRINTF_CHECK(2, 0); #endif // __PUB_TOOL_LIBCPRINT_H /*--------------------------------------------------------------------*/ |
|
From: <sv...@va...> - 2008-03-17 18:38:22
|
Author: bart Date: 2008-03-17 18:38:26 +0000 (Mon, 17 Mar 2008) New Revision: 7730 Log: Added a reference. Modified: trunk/exp-drd/docs/README.txt Modified: trunk/exp-drd/docs/README.txt =================================================================== --- trunk/exp-drd/docs/README.txt 2008-03-17 18:37:34 UTC (rev 7729) +++ trunk/exp-drd/docs/README.txt 2008-03-17 18:38:26 UTC (rev 7730) @@ -400,6 +400,13 @@ pp. 133-152, 1999. http://portal.acm.org/citation.cfm?id=312214 +[Christiaens 2002] + Mark Christiaens, Michiel Ronsse, Koen De Bosschere. + Bounding the number of segment histories during data race detection. + Parallel Computing archive, Volume 28, Issue 9, pp 1221-1238, + September 2002. + http://portal.acm.org/citation.cfm?id=638124 + [Ronsse 2004] Michiel Ronsse, Jonas Maebe, Koen De Bosschere. Detecting Data Races in Sequential Programs with DIOTA. |
|
From: <sv...@va...> - 2008-03-17 18:37:29
|
Author: bart Date: 2008-03-17 18:37:34 +0000 (Mon, 17 Mar 2008) New Revision: 7729 Log: Added compiler flag -DCHECK_FORMAT_STRINGS. Modified: trunk/exp-drd/Makefile.am Modified: trunk/exp-drd/Makefile.am =================================================================== --- trunk/exp-drd/Makefile.am 2008-03-17 18:36:55 UTC (rev 7728) +++ trunk/exp-drd/Makefile.am 2008-03-17 18:37:34 UTC (rev 7729) @@ -26,12 +26,12 @@ VGPRELOAD_DRD_SOURCES_COMMON = drd_pthread_intercepts.c endif -AM_CFLAGS_X86_LINUX += -Wsign-compare -O2 -AM_CFLAGS_AMD64_LINUX += -Wsign-compare -O2 -AM_CFLAGS_PPC32_LINUX += -Wsign-compare -O2 -AM_CFLAGS_PPC64_LINUX += -Wsign-compare -O2 -AM_CFLAGS_PPC32_AIX5 += -Wsign-compare -O2 -AM_CFLAGS_PPC64_AIX5 += -Wsign-compare -O2 +AM_CFLAGS_X86_LINUX += -Wsign-compare -O2 -DCHECK_FORMAT_STRINGS +AM_CFLAGS_AMD64_LINUX += -Wsign-compare -O2 -DCHECK_FORMAT_STRINGS +AM_CFLAGS_PPC32_LINUX += -Wsign-compare -O2 -DCHECK_FORMAT_STRINGS +AM_CFLAGS_PPC64_LINUX += -Wsign-compare -O2 -DCHECK_FORMAT_STRINGS +AM_CFLAGS_PPC32_AIX5 += -Wsign-compare -O2 -DCHECK_FORMAT_STRINGS +AM_CFLAGS_PPC64_AIX5 += -Wsign-compare -O2 -DCHECK_FORMAT_STRINGS vgpreload_exp_drd_x86_linux_so_SOURCES = $(VGPRELOAD_DRD_SOURCES_COMMON) vgpreload_exp_drd_x86_linux_so_CPPFLAGS = $(AM_CPPFLAGS_X86_LINUX) |
|
From: <sv...@va...> - 2008-03-17 18:36:51
|
Author: bart
Date: 2008-03-17 18:36:55 +0000 (Mon, 17 Mar 2008)
New Revision: 7728
Log:
Fixed mismatches between format string and arguments.
Modified:
trunk/exp-drd/drd_error.c
Modified: trunk/exp-drd/drd_error.c
===================================================================
--- trunk/exp-drd/drd_error.c 2008-03-17 18:32:39 UTC (rev 7727)
+++ trunk/exp-drd/drd_error.c 2008-03-17 18:36:55 UTC (rev 7728)
@@ -138,8 +138,8 @@
CondErrInfo* cdei =(CondErrInfo*)(VG_(get_error_extra)(e));
VG_(message)(Vg_UserMsg,
"%s: cond 0x%lx",
- cdei->cond,
- VG_(get_error_string)(e));
+ VG_(get_error_string)(e),
+ cdei->cond);
VG_(pp_ExeContext)(VG_(get_error_where)(e));
break;
}
@@ -157,6 +157,7 @@
CondDestrErrInfo* cdi = (CondDestrErrInfo*)(VG_(get_error_extra)(e));
VG_(message)(Vg_UserMsg,
"%s: cond 0x%lx, mutex 0x%lx locked by thread %d/%d",
+ VG_(get_error_string)(e),
cdi->cond, cdi->mutex,
DrdThreadIdToVgThreadId(cdi->tid), cdi->tid);
VG_(pp_ExeContext)(VG_(get_error_where)(e));
|
|
From: <sv...@va...> - 2008-03-17 18:32:36
|
Author: bart
Date: 2008-03-17 18:32:39 +0000 (Mon, 17 Mar 2008)
New Revision: 7727
Log:
Added reference counting to segments. Synchronization objects (mutex, semaphore, barrier, rwlock) now keep a pointer to a segment instead of copying a vector clock for modeling causal relationships.
Modified:
trunk/exp-drd/drd_barrier.c
trunk/exp-drd/drd_clientobj.h
trunk/exp-drd/drd_mutex.c
trunk/exp-drd/drd_mutex.h
trunk/exp-drd/drd_rwlock.c
trunk/exp-drd/drd_segment.c
trunk/exp-drd/drd_segment.h
trunk/exp-drd/drd_semaphore.c
trunk/exp-drd/drd_thread.c
trunk/exp-drd/drd_thread.h
Modified: trunk/exp-drd/drd_barrier.c
===================================================================
--- trunk/exp-drd/drd_barrier.c 2008-03-17 17:37:53 UTC (rev 7726)
+++ trunk/exp-drd/drd_barrier.c 2008-03-17 18:32:39 UTC (rev 7727)
@@ -45,7 +45,7 @@
UWord tid; // A DrdThreadId
Word iteration; // iteration of last pthread_barrier_wait()
// call thread tid participated in.
- VectorClock vc[2]; // vector clocks corresponding to the last two
+ Segment* sg[2]; // Segments of the last two
// pthread_barrier() calls by thread tid.
};
@@ -77,15 +77,15 @@
{
p->tid = tid;
p->iteration = iteration;
- vc_init(&p->vc[0], 0, 0);
- vc_init(&p->vc[1], 0, 0);
+ p->sg[0] = 0;
+ p->sg[1] = 0;
}
/** Deallocate the memory that was allocated in barrier_thread_initialize(). */
static void barrier_thread_destroy(struct barrier_thread_info* const p)
{
- vc_cleanup(&p->vc[0]);
- vc_cleanup(&p->vc[1]);
+ sg_put(p->sg[0]);
+ sg_put(p->sg[1]);
}
/** Initialize the structure *p with the specified client-side barrier address,
@@ -112,7 +112,6 @@
tl_assert(sizeof(((struct barrier_thread_info*)0)->tid)
>= sizeof(DrdThreadId));
p->oset = VG_(OSetGen_Create)(0, 0, VG_(malloc), VG_(free));
- vc_init(&p->finished_threads_vc, 0, 0);
}
/** Deallocate the memory allocated by barrier_initialize() and in p->oset.
@@ -141,7 +140,6 @@
barrier_thread_destroy(q);
}
VG_(OSetGen_Destroy)(p->oset);
- vc_cleanup(&p->finished_threads_vc);
}
/** Look up the client-side barrier address barrier in s_barrier[]. If not
@@ -192,7 +190,7 @@
if (reinitialization)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] barrier_reinit %s 0x%lx count %d -> %d",
+ "[%d/%d] barrier_reinit %s 0x%lx count %ld -> %ld",
VG_(get_running_tid)(),
thread_get_running_tid(),
barrier_get_typename(p),
@@ -263,20 +261,20 @@
p = barrier_get(barrier);
if (p == 0 && barrier_type == gomp_barrier)
{
- VG_(message)(Vg_UserMsg, "");
+ VG_(message)(Vg_UserMsg, "%s", "");
VG_(message)(Vg_UserMsg,
"Please verify whether gcc has been configured"
" with option --disable-linux-futex.");
VG_(message)(Vg_UserMsg,
"See also the section about OpenMP in the DRD manual.");
- VG_(message)(Vg_UserMsg, "");
+ VG_(message)(Vg_UserMsg, "%s", "");
}
tl_assert(p);
if (s_trace_barrier)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] barrier_pre_wait %s 0x%lx iteration %d",
+ "[%d/%d] barrier_pre_wait %s 0x%lx iteration %ld",
VG_(get_running_tid)(),
thread_get_running_tid(),
barrier_get_typename(p),
@@ -292,8 +290,7 @@
VG_(OSetGen_Insert)(p->oset, q);
tl_assert(VG_(OSetGen_Lookup)(p->oset, &word_tid) == q);
}
- vc_assign(&q->vc[p->pre_iteration], &thread_get_segment(tid)->vc);
- tl_assert(q->vc[p->pre_iteration].size > 0);
+ thread_get_latest_segment(&q->sg[p->pre_iteration], tid);
if (--p->pre_waiters_left <= 0)
{
@@ -313,7 +310,7 @@
if (s_trace_barrier)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] barrier_post_wait %s 0x%lx iteration %d",
+ "[%d/%d] barrier_post_wait %s 0x%lx iteration %ld",
VG_(get_running_tid)(),
tid,
p ? barrier_get_typename(p) : "(?)",
@@ -340,10 +337,10 @@
{
if (r != q)
{
- thread_combine_vc2(tid, &r->vc[p->post_iteration]);
+ tl_assert(r->sg[p->post_iteration]);
+ thread_combine_vc2(tid, &r->sg[p->post_iteration]->vc);
}
}
- thread_combine_vc2(tid, &p->finished_threads_vc);
thread_new_segment(tid);
@@ -366,7 +363,6 @@
struct barrier_thread_info* q;
const UWord word_tid = tid;
q = VG_(OSetGen_Remove)(p->oset, &word_tid);
- vc_combine(&p->finished_threads_vc, &q->vc[p->post_iteration]);
barrier_thread_destroy(q);
VG_(OSetGen_FreeNode)(p->oset, q);
}
Modified: trunk/exp-drd/drd_clientobj.h
===================================================================
--- trunk/exp-drd/drd_clientobj.h 2008-03-17 17:37:53 UTC (rev 7726)
+++ trunk/exp-drd/drd_clientobj.h 2008-03-17 18:32:39 UTC (rev 7727)
@@ -63,7 +63,7 @@
MutexT mutex_type; // pthread_mutex_t or pthread_spinlock_t.
int recursion_count; // 0 if free, >= 1 if locked.
DrdThreadId owner; // owner if locked, last owner if free.
- VectorClock vc; // vector clock associated with last unlock.
+ Segment* last_locked_segment;
};
struct cond_info
@@ -72,8 +72,8 @@
ObjType type;
void (*cleanup)(union drd_clientobj*);
int waiter_count;
- Addr mutex; // Client mutex specified in pthread_cond_wait() call, and null
- // if no client threads are currently waiting on this cond.var.
+ Addr mutex; //Client mutex specified in pthread_cond_wait() call, and null
+ //if no client threads are currently waiting on this cond.var.
};
struct semaphore_info
@@ -84,7 +84,7 @@
UWord value; // Semaphore value.
UWord waiters; // Number of threads inside sem_wait().
DrdThreadId last_sem_post_tid; // Thread ID associated with last sem_post().
- VectorClock vc; // Vector clock of last sem_post() call.
+ Segment* last_sem_post_segment;
};
struct barrier_info
@@ -99,7 +99,6 @@
Word pre_waiters_left; // number of waiters left for a complete barrier.
Word post_waiters_left; // number of waiters left for a complete barrier.
OSet* oset; // Thread-specific barrier information.
- VectorClock finished_threads_vc;
};
struct rwlock_info
Modified: trunk/exp-drd/drd_mutex.c
===================================================================
--- trunk/exp-drd/drd_mutex.c 2008-03-17 17:37:53 UTC (rev 7726)
+++ trunk/exp-drd/drd_mutex.c 2008-03-17 18:32:39 UTC (rev 7727)
@@ -62,11 +62,11 @@
tl_assert(mutex != 0);
tl_assert(p->a1 == mutex);
- p->cleanup = (void(*)(DrdClientobj*))&mutex_cleanup;
- p->mutex_type = mutex_type;
- p->recursion_count = 0;
- p->owner = DRD_INVALID_THREADID;
- vc_init(&p->vc, 0, 0);
+ p->cleanup = (void(*)(DrdClientobj*))&mutex_cleanup;
+ p->mutex_type = mutex_type;
+ p->recursion_count = 0;
+ p->owner = DRD_INVALID_THREADID;
+ p->last_locked_segment = 0;
}
/** Deallocate the memory that was allocated by mutex_initialize(). */
@@ -92,7 +92,8 @@
&MEI);
}
- vc_cleanup(&p->vc);
+ sg_put(p->last_locked_segment);
+ p->last_locked_segment = 0;
}
static
@@ -276,7 +277,10 @@
const DrdThreadId last_owner = p->owner;
if (last_owner != drd_tid && last_owner != DRD_INVALID_THREADID)
- thread_combine_vc2(drd_tid, mutex_get_last_vc(mutex));
+ {
+ tl_assert(p->last_locked_segment);
+ thread_combine_vc2(drd_tid, &p->last_locked_segment->vc);
+ }
thread_new_segment(drd_tid);
p->owner = drd_tid;
@@ -307,7 +311,6 @@
{
const DrdThreadId drd_tid = thread_get_running_tid();
const ThreadId vg_tid = VG_(get_running_tid)();
- const VectorClock* const vc = thread_get_vc(drd_tid);
struct mutex_info* const p = mutex_get(mutex);
if (s_trace_mutex)
@@ -318,8 +321,7 @@
drd_tid,
p ? mutex_get_typename(p) : "?",
mutex,
- p ? p->recursion_count : 0,
- p ? p->owner : 0);
+ p ? p->recursion_count : 0);
}
if (p == 0 || mutex_type == mutex_type_invalid_mutex)
@@ -347,7 +349,7 @@
tl_assert(p);
if (p->mutex_type != mutex_type)
{
- VG_(message)(Vg_UserMsg, "??? mutex %p: type changed from %d into %d",
+ VG_(message)(Vg_UserMsg, "??? mutex 0x%lx: type changed from %d into %d",
p->a1, p->mutex_type, mutex_type);
}
tl_assert(p->mutex_type == mutex_type);
@@ -372,8 +374,8 @@
/* This pthread_mutex_unlock() call really unlocks the mutex. Save the */
/* current vector clock of the thread such that it is available when */
/* this mutex is locked again. */
- vc_assign(&p->vc, vc);
+ thread_get_latest_segment(&p->last_locked_segment, drd_tid);
thread_new_segment(drd_tid);
}
}
@@ -422,12 +424,6 @@
return False;
}
-const VectorClock* mutex_get_last_vc(const Addr mutex)
-{
- struct mutex_info* const p = mutex_get(mutex);
- return p ? &p->vc : 0;
-}
-
int mutex_get_recursion_count(const Addr mutex)
{
struct mutex_info* const p = mutex_get(mutex);
Modified: trunk/exp-drd/drd_mutex.h
===================================================================
--- trunk/exp-drd/drd_mutex.h 2008-03-17 17:37:53 UTC (rev 7726)
+++ trunk/exp-drd/drd_mutex.h 2008-03-17 18:32:39 UTC (rev 7727)
@@ -51,7 +51,6 @@
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);
void mutex_thread_delete(const DrdThreadId tid);
ULong get_mutex_lock_count(void);
Modified: trunk/exp-drd/drd_rwlock.c
===================================================================
--- trunk/exp-drd/drd_rwlock.c 2008-03-17 17:37:53 UTC (rev 7726)
+++ trunk/exp-drd/drd_rwlock.c 2008-03-17 18:32:39 UTC (rev 7727)
@@ -39,11 +39,11 @@
struct rwlock_thread_info
{
- UWord tid; // DrdThreadId.
- UInt reader_nesting_count;
- UInt writer_nesting_count;
- VectorClock vc; // Vector clock associated with last unlock by this thread.
- Bool last_lock_was_writer_lock;
+ UWord tid; // DrdThreadId.
+ UInt reader_nesting_count;
+ UInt writer_nesting_count;
+ Segment* last_unlock_segment; // Segment of last unlock call by this thread.
+ Bool last_lock_was_writer_lock;
};
@@ -129,7 +129,7 @@
q->tid = tid;
q->reader_nesting_count = 0;
q->writer_nesting_count = 0;
- vc_init(&q->vc, 0, 0);
+ q->last_unlock_segment = 0;
q->last_lock_was_writer_lock = False;
VG_(OSetGen_Insert)(oset, q);
}
@@ -148,7 +148,7 @@
{
if (q->tid != tid && (readers_too || q->last_lock_was_writer_lock))
{
- thread_combine_vc2(tid, &q->vc);
+ thread_combine_vc2(tid, &q->last_unlock_segment->vc);
}
}
}
@@ -193,7 +193,7 @@
VG_(OSetGen_ResetIter)(p->thread_info);
for ( ; (q = VG_(OSetGen_Next)(p->thread_info)); q++)
{
- vc_cleanup(&q->vc);
+ sg_put(q->last_unlock_segment);
}
VG_(OSetGen_Destroy)(p->thread_info);
}
@@ -438,7 +438,6 @@
{
const DrdThreadId drd_tid = thread_get_running_tid();
const ThreadId vg_tid = VG_(get_running_tid)();
- const VectorClock* const vc = thread_get_vc(drd_tid);
struct rwlock_info* const p = rwlock_get(rwlock);
struct rwlock_thread_info* q;
@@ -476,9 +475,9 @@
/* This pthread_rwlock_unlock() call really unlocks the rwlock. Save the */
/* current vector clock of the thread such that it is available when */
/* this rwlock is locked again. */
- vc_assign(&q->vc, vc);
- q->last_lock_was_writer_lock = False;
+ thread_get_latest_segment(&q->last_unlock_segment, drd_tid);
+ q->last_lock_was_writer_lock = False;
thread_new_segment(drd_tid);
}
}
Modified: trunk/exp-drd/drd_segment.c
===================================================================
--- trunk/exp-drd/drd_segment.c 2008-03-17 17:37:53 UTC (rev 7726)
+++ trunk/exp-drd/drd_segment.c 2008-03-17 18:32:39 UTC (rev 7727)
@@ -46,8 +46,8 @@
// Function definitions.
-/**
- * Note: creator and created may be equal.
+/** Initialize the memory pointed at by sg.
+ * @note The creator and created thread ID's may be equal.
*/
static
void sg_init(Segment* const sg,
@@ -62,9 +62,10 @@
creator_sg = (creator != DRD_INVALID_THREADID
? thread_get_segment(creator) : 0);
-
+
sg->next = 0;
sg->prev = 0;
+ sg->refcnt = 1;
if (vg_created != VG_INVALID_THREADID && VG_(get_SP)(vg_created) != 0)
sg->stacktrace = VG_(record_ExeContext)(vg_created, 0);
@@ -82,23 +83,30 @@
{
char msg[256];
VG_(snprintf)(msg, sizeof(msg),
- "New segment for thread %d/%d with vc ",
- DrdThreadIdToVgThreadId(creator), creator);
+ "New segment for thread %d/%d for vc ",
+ creator != VG_INVALID_THREADID
+ ? DrdThreadIdToVgThreadId(creator)
+ : DRD_INVALID_THREADID,
+ creator);
vc_snprint(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
&sg->vc);
VG_(message)(Vg_UserMsg, "%s", msg);
}
}
+/** Deallocate the memory that was allocated by sg_init(). */
static
void sg_cleanup(Segment* const sg)
{
tl_assert(sg);
+ tl_assert(sg->refcnt == 0);
+
vc_cleanup(&sg->vc);
bm_delete(sg->bm);
sg->bm = 0;
}
+/** Allocate and initialize a new segment. */
Segment* sg_new(ThreadId const creator, ThreadId const created)
{
Segment* sg;
@@ -114,6 +122,7 @@
return sg;
}
+static
void sg_delete(Segment* const sg)
{
#if 1
@@ -135,6 +144,50 @@
VG_(free)(sg);
}
+/** Query the reference count of the specified segment. */
+int sg_get_refcnt(const Segment* const sg)
+{
+ tl_assert(sg);
+
+ return sg->refcnt;
+}
+
+/** Increment the reference count of the specified segment. */
+Segment* sg_get(Segment* const sg)
+{
+ tl_assert(sg);
+
+ sg->refcnt++;
+ return sg;
+}
+
+/** Decrement the reference count of the specified segment and deallocate the
+ * segment if the reference count became zero.
+ */
+void sg_put(Segment* const sg)
+{
+ if (sg == 0)
+ return;
+
+ if (drd_trace_segment)
+ {
+ char msg[256];
+ VG_(snprintf)(msg, sizeof(msg),
+ "Decrementing segment reference count %d -> %d with vc ",
+ sg->refcnt, sg->refcnt - 1);
+ vc_snprint(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
+ &sg->vc);
+ VG_(message)(Vg_UserMsg, "%s", msg);
+ }
+
+ tl_assert(sg->refcnt >= 1);
+
+ if (--sg->refcnt == 0)
+ {
+ sg_delete(sg);
+ }
+}
+
void sg_print(const Segment* const sg)
{
tl_assert(sg);
Modified: trunk/exp-drd/drd_segment.h
===================================================================
--- trunk/exp-drd/drd_segment.h 2008-03-17 17:37:53 UTC (rev 7726)
+++ trunk/exp-drd/drd_segment.h 2008-03-17 18:32:39 UTC (rev 7727)
@@ -42,13 +42,17 @@
{
struct segment* next;
struct segment* prev;
+ int refcnt;
ExeContext* stacktrace;
VectorClock vc;
struct bitmap* bm;
} Segment;
+
Segment* sg_new(const ThreadId creator, const ThreadId created);
-void sg_delete(Segment* const sg);
+int sg_get_refcnt(const Segment* const sg);
+Segment* sg_get(Segment* const sg);
+void sg_put(Segment* const sg);
void sg_print(const Segment* const sg);
Bool sg_get_trace(void);
void sg_set_trace(const Bool trace_segment);
Modified: trunk/exp-drd/drd_semaphore.c
===================================================================
--- trunk/exp-drd/drd_semaphore.c 2008-03-17 17:37:53 UTC (rev 7726)
+++ trunk/exp-drd/drd_semaphore.c 2008-03-17 18:32:39 UTC (rev 7727)
@@ -64,7 +64,7 @@
p->value = value;
p->waiters = 0;
p->last_sem_post_tid = DRD_INVALID_THREADID;
- vc_init(&p->vc, 0, 0);
+ p->last_sem_post_segment = 0;
}
/** Free the memory that was allocated by semaphore_initialize(). Called by
@@ -82,7 +82,7 @@
" upon",
&sei);
}
- vc_cleanup(&p->vc);
+ sg_put(p->last_sem_post_segment);
}
static
@@ -215,8 +215,12 @@
}
p->value--;
tl_assert(p->value >= 0);
- if (p->last_sem_post_tid != tid)
- thread_combine_vc2(tid, &p->vc);
+ if (p->last_sem_post_tid != tid
+ && p->last_sem_post_tid != DRD_INVALID_THREADID)
+ {
+ tl_assert(p->last_sem_post_segment);
+ thread_combine_vc2(tid, &p->last_sem_post_segment->vc);
+ }
thread_new_segment(tid);
}
@@ -239,7 +243,7 @@
{
p->last_sem_post_tid = tid;
thread_new_segment(tid);
- vc_assign(&p->vc, thread_get_vc(tid));
+ thread_get_latest_segment(&p->last_sem_post_segment, tid);
}
}
Modified: trunk/exp-drd/drd_thread.c
===================================================================
--- trunk/exp-drd/drd_thread.c 2008-03-17 17:37:53 UTC (rev 7726)
+++ trunk/exp-drd/drd_thread.c 2008-03-17 18:32:39 UTC (rev 7727)
@@ -42,6 +42,7 @@
static void thread_append_segment(const DrdThreadId tid,
Segment* const sg);
+static void thread_discard_segment(const DrdThreadId tid, Segment* const sg);
static void thread_update_danger_set(const DrdThreadId tid);
@@ -245,9 +246,8 @@
return s_threadinfo[tid].stack_max;
}
-/**
- * Clean up thread-specific data structures. Call this just after
- * pthread_join().
+/** Clean up thread-specific data structures. Call this just after
+ * pthread_join().
*/
void thread_delete(const DrdThreadId tid)
{
@@ -260,7 +260,9 @@
for (sg = s_threadinfo[tid].last; sg; sg = sg_prev)
{
sg_prev = sg->prev;
- sg_delete(sg);
+ sg->prev = 0;
+ sg->next = 0;
+ sg_put(sg);
}
s_threadinfo[tid].vg_thread_exists = False;
s_threadinfo[tid].posix_thread_exists = False;
@@ -350,9 +352,11 @@
&& s_drd_running_tid != DRD_INVALID_THREADID)
{
VG_(message)(Vg_DebugMsg,
- "Context switch from thread %d/%d to thread %d/%d",
+ "Context switch from thread %d/%d to thread %d/%d;"
+ " segments: %llu",
s_vg_running_tid, s_drd_running_tid,
- DrdThreadIdToVgThreadId(drd_tid), drd_tid);
+ DrdThreadIdToVgThreadId(drd_tid), drd_tid,
+ sg_get_alive_segments_count());
}
s_vg_running_tid = vg_tid;
s_drd_running_tid = drd_tid;
@@ -416,18 +420,30 @@
s_threadinfo[tid].first = sg->next;
if (sg == s_threadinfo[tid].last)
s_threadinfo[tid].last = sg->prev;
- sg_delete(sg);
+ sg_put(sg);
tl_assert(sane_ThreadInfo(&s_threadinfo[tid]));
}
VectorClock* thread_get_vc(const DrdThreadId tid)
{
- tl_assert(0 <= tid && tid < DRD_N_THREADS
- && tid != DRD_INVALID_THREADID);
+ tl_assert(0 <= tid && tid < DRD_N_THREADS && tid != DRD_INVALID_THREADID);
tl_assert(s_threadinfo[tid].last);
return &s_threadinfo[tid].last->vc;
}
+/** Return the latest segment of thread 'tid' and increment its reference
+ * count.
+ */
+void thread_get_latest_segment(Segment** sg, const DrdThreadId tid)
+{
+ tl_assert(sg);
+ tl_assert(0 <= tid && tid < DRD_N_THREADS && tid != DRD_INVALID_THREADID);
+ tl_assert(s_threadinfo[tid].last);
+
+ sg_put(*sg);
+ *sg = sg_get(s_threadinfo[tid].last);
+}
+
/**
* Compute the minimum of all latest vector clocks of all threads
* (Michiel Ronsse calls this "clock snooping" in his papers about DIOTA).
@@ -504,7 +520,7 @@
", max vc is ");
vc_snprint(msg + VG_(strlen)(msg), sizeof(msg) - VG_(strlen)(msg),
&thread_vc_max);
- VG_(message)(Vg_DebugMsg, "%s", msg);
+ VG_(message)(Vg_UserMsg, "%s", msg);
vc_cleanup(&thread_vc_max);
}
@@ -522,20 +538,15 @@
vc_cleanup(&thread_vc_min);
}
-/**
- * Create a new segment for the specified thread, and report all data races
- * of the most recent thread segment with other threads.
+/** Create a new segment for the specified thread, and discard any segments
+ * that cannot cause races anymore.
*/
void thread_new_segment(const DrdThreadId tid)
{
- Segment* sg;
+ tl_assert(0 <= tid && tid < DRD_N_THREADS && tid != DRD_INVALID_THREADID);
- tl_assert(0 <= tid && tid < DRD_N_THREADS
- && tid != DRD_INVALID_THREADID);
+ thread_append_segment(tid, sg_new(tid, tid));
- sg = sg_new(tid, tid);
- thread_append_segment(tid, sg);
-
thread_discard_ordered_segments();
if (tid == s_drd_running_tid)
@@ -639,7 +650,7 @@
if (s_threadinfo[i].first)
{
VG_(printf)("**************\n"
- "* thread %3d (%d/%d/%d/0x%x/%d) *\n"
+ "* thread %3d (%d/%d/%d/0x%lx/%d) *\n"
"**************\n",
i,
s_threadinfo[i].vg_thread_exists,
@@ -773,7 +784,7 @@
vc_snprint(msg + VG_(strlen)(msg),
sizeof(msg) - VG_(strlen)(msg),
&s_threadinfo[tid].last->vc);
- VG_(message)(Vg_DebugMsg, "%s", msg);
+ VG_(message)(Vg_UserMsg, "%s", msg);
}
p = s_threadinfo[tid].last;
@@ -790,7 +801,7 @@
vc_snprint(msg + VG_(strlen)(msg),
sizeof(msg) - VG_(strlen)(msg),
&p->vc);
- VG_(message)(Vg_DebugMsg, "%s", msg);
+ VG_(message)(Vg_UserMsg, "%s", msg);
}
for (j = 0; j < sizeof(s_threadinfo) / sizeof(s_threadinfo[0]); j++)
@@ -810,7 +821,7 @@
vc_snprint(msg + VG_(strlen)(msg),
sizeof(msg) - VG_(strlen)(msg),
&q->vc);
- VG_(message)(Vg_DebugMsg, "%s", msg);
+ VG_(message)(Vg_UserMsg, "%s", msg);
}
bm_merge2(s_danger_set, q->bm);
}
@@ -824,7 +835,7 @@
vc_snprint(msg + VG_(strlen)(msg),
sizeof(msg) - VG_(strlen)(msg),
&q->vc);
- VG_(message)(Vg_DebugMsg, "%s", msg);
+ VG_(message)(Vg_UserMsg, "%s", msg);
}
}
}
@@ -856,9 +867,9 @@
if (0 && s_trace_danger_set)
{
- VG_(message)(Vg_DebugMsg, "[%d] new danger set:", tid);
+ VG_(message)(Vg_UserMsg, "[%d] new danger set:", tid);
bm_print(s_danger_set);
- VG_(message)(Vg_DebugMsg, "[%d] end of new danger set.", tid);
+ VG_(message)(Vg_UserMsg, "[%d] end of new danger set.", tid);
}
}
Modified: trunk/exp-drd/drd_thread.h
===================================================================
--- trunk/exp-drd/drd_thread.h 2008-03-17 17:37:53 UTC (rev 7726)
+++ trunk/exp-drd/drd_thread.h 2008-03-17 18:32:39 UTC (rev 7727)
@@ -114,6 +114,7 @@
int thread_get_synchr_nesting_count(const DrdThreadId tid);
void thread_new_segment(const DrdThreadId tid);
VectorClock* thread_get_vc(const DrdThreadId tid);
+void thread_get_latest_segment(Segment** sg, const DrdThreadId tid);
void thread_combine_vc(const DrdThreadId joiner, const DrdThreadId joinee);
void thread_combine_vc2(const DrdThreadId tid, const VectorClock* const vc);
void thread_stop_using_mem(const Addr a1, const Addr a2);
|
|
From: <sv...@va...> - 2008-03-17 17:37:50
|
Author: bart
Date: 2008-03-17 17:37:53 +0000 (Mon, 17 Mar 2008)
New Revision: 7726
Log:
Renamed functions for querying segment creation counters. Added the function sg_get_alive_segments_count(). Removed sg_init() and sg_cleanup() from the public segment interface.
Modified:
trunk/exp-drd/drd_main.c
trunk/exp-drd/drd_segment.c
trunk/exp-drd/drd_segment.h
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-03-17 17:22:55 UTC (rev 7725)
+++ trunk/exp-drd/drd_main.c 2008-03-17 17:37:53 UTC (rev 7726)
@@ -967,8 +967,8 @@
thread_get_update_danger_set_count());
VG_(message)(Vg_DebugMsg,
" segments: %lld total, %lld max, %lld discard points",
- sg_get_segments_created_count(),
- sg_get_max_segments_alive_count(),
+ sg_get_created_segments_count(),
+ sg_get_max_alive_segments_count(),
thread_get_discard_ordered_segments_count());
VG_(message)(Vg_DebugMsg,
" bitmaps: %lld / %lld bitmaps were allocated"
Modified: trunk/exp-drd/drd_segment.c
===================================================================
--- trunk/exp-drd/drd_segment.c 2008-03-17 17:22:55 UTC (rev 7725)
+++ trunk/exp-drd/drd_segment.c 2008-03-17 17:37:53 UTC (rev 7726)
@@ -38,9 +38,9 @@
// Local variables.
-static ULong s_segments_created_count;
-static ULong s_segments_alive_count;
-static ULong s_max_segments_alive_count;
+static ULong s_created_segments_count;
+static ULong s_alive_segments_count;
+static ULong s_max_alive_segments_count;
static Bool drd_trace_segment = False;
@@ -49,6 +49,7 @@
/**
* Note: creator and created may be equal.
*/
+static
void sg_init(Segment* const sg,
DrdThreadId const creator,
DrdThreadId const created)
@@ -89,6 +90,7 @@
}
}
+static
void sg_cleanup(Segment* const sg)
{
tl_assert(sg);
@@ -101,10 +103,10 @@
{
Segment* sg;
- s_segments_created_count++;
- s_segments_alive_count++;
- if (s_max_segments_alive_count < s_segments_alive_count)
- s_max_segments_alive_count = s_segments_alive_count;
+ s_created_segments_count++;
+ s_alive_segments_count++;
+ if (s_max_alive_segments_count < s_alive_segments_count)
+ s_max_alive_segments_count = s_alive_segments_count;
sg = VG_(malloc)(sizeof(*sg));
tl_assert(sg);
@@ -126,7 +128,7 @@
}
#endif
- s_segments_alive_count--;
+ s_alive_segments_count--;
tl_assert(sg);
sg_cleanup(sg);
@@ -153,12 +155,17 @@
drd_trace_segment = trace_segment;
}
-ULong sg_get_segments_created_count(void)
+ULong sg_get_created_segments_count(void)
{
- return s_segments_created_count;
+ return s_created_segments_count;
}
-ULong sg_get_max_segments_alive_count(void)
+ULong sg_get_alive_segments_count(void)
{
- return s_max_segments_alive_count;
+ return s_alive_segments_count;
}
+
+ULong sg_get_max_alive_segments_count(void)
+{
+ return s_max_alive_segments_count;
+}
Modified: trunk/exp-drd/drd_segment.h
===================================================================
--- trunk/exp-drd/drd_segment.h 2008-03-17 17:22:55 UTC (rev 7725)
+++ trunk/exp-drd/drd_segment.h 2008-03-17 17:37:53 UTC (rev 7726)
@@ -47,17 +47,14 @@
struct bitmap* bm;
} Segment;
-void sg_init(Segment* const sg,
- const ThreadId creator,
- const ThreadId created);
-void sg_cleanup(Segment* const sg);
Segment* sg_new(const ThreadId creator, const ThreadId created);
void sg_delete(Segment* const sg);
void sg_print(const Segment* const sg);
Bool sg_get_trace(void);
void sg_set_trace(const Bool trace_segment);
-ULong sg_get_segments_created_count(void);
-ULong sg_get_max_segments_alive_count(void);
+ULong sg_get_created_segments_count(void);
+ULong sg_get_alive_segments_count(void);
+ULong sg_get_max_alive_segments_count(void);
#endif // __SEGMENT_H
|
|
From: <sv...@va...> - 2008-03-17 17:22:49
|
Author: bart
Date: 2008-03-17 17:22:55 +0000 (Mon, 17 Mar 2008)
New Revision: 7725
Log:
Attempt to make this test independent of the Linux distribution it is run on.
Removed:
trunk/exp-drd/tests/hg03_inherit.stderr.exp2
Modified:
trunk/exp-drd/tests/Makefile.am
trunk/exp-drd/tests/hg03_inherit.stderr.exp
trunk/exp-drd/tests/hg03_inherit.vgtest
Modified: trunk/exp-drd/tests/Makefile.am
===================================================================
--- trunk/exp-drd/tests/Makefile.am 2008-03-17 16:38:51 UTC (rev 7724)
+++ trunk/exp-drd/tests/Makefile.am 2008-03-17 17:22:55 UTC (rev 7725)
@@ -30,7 +30,6 @@
hg02_deadlock.vgtest \
hg03_inherit.stderr.exp \
hg03_inherit.stderr.exp-linuxthreads \
- hg03_inherit.stderr.exp2 \
hg03_inherit.vgtest \
hg04_race.stderr.exp \
hg04_race.stderr.exp-linuxthreads \
Modified: trunk/exp-drd/tests/hg03_inherit.stderr.exp
===================================================================
--- trunk/exp-drd/tests/hg03_inherit.stderr.exp 2008-03-17 16:38:51 UTC (rev 7724)
+++ trunk/exp-drd/tests/hg03_inherit.stderr.exp 2008-03-17 17:22:55 UTC (rev 7725)
@@ -3,8 +3,6 @@
Conflicting store by thread 3/3 at 0x........ size 4
at 0x........: t2 (hg03_inherit.c:28)
by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
- by 0x........: (within libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
Location 0x........ is 0 bytes inside shared[1],
declared at hg03_inherit.c:11, in frame #? of thread 3
Other segment start (thread 1/1)
@@ -13,13 +11,10 @@
Other segment end (thread 1/1)
at 0x........: (within libpthread-?.?.so)
by 0x........: pthread_join (drd_pthread_intercepts.c:?)
- by 0x........: main (hg03_inherit.c:63)
Conflicting store by thread 3/3 at 0x........ size 4
at 0x........: t2 (hg03_inherit.c:29)
by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
- by 0x........: (within libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
Location 0x........ is 0 bytes inside shared[1],
declared at hg03_inherit.c:11, in frame #? of thread 3
Other segment start (thread 1/1)
@@ -28,6 +23,5 @@
Other segment end (thread 1/1)
at 0x........: (within libpthread-?.?.so)
by 0x........: pthread_join (drd_pthread_intercepts.c:?)
- by 0x........: main (hg03_inherit.c:63)
ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
Deleted: trunk/exp-drd/tests/hg03_inherit.stderr.exp2
===================================================================
--- trunk/exp-drd/tests/hg03_inherit.stderr.exp2 2008-03-17 16:38:51 UTC (rev 7724)
+++ trunk/exp-drd/tests/hg03_inherit.stderr.exp2 2008-03-17 17:22:55 UTC (rev 7725)
@@ -1,33 +0,0 @@
-
-Thread 3:
-Conflicting store by thread 3 at 0x........ size 4
- at 0x........: t2 (hg03_inherit.c:28)
- by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
- by 0x........: (within libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-Location 0x........ is 0 bytes inside shared[1],
-declared at hg03_inherit.c:11, in frame #? of thread 3
-Other segment start (thread 1)
- at 0x........: pthread_join (drd_pthread_intercepts.c:?)
- by 0x........: main (hg03_inherit.c:49)
-Other segment end (thread 1)
- at 0x........: (within ld-?.?.so)
- by 0x........: pthread_join (drd_pthread_intercepts.c:?)
- by 0x........: main (hg03_inherit.c:63)
-
-Conflicting store by thread 3 at 0x........ size 4
- at 0x........: t2 (hg03_inherit.c:29)
- by 0x........: vg_thread_wrapper (drd_pthread_intercepts.c:?)
- by 0x........: (within libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-Location 0x........ is 0 bytes inside shared[1],
-declared at hg03_inherit.c:11, in frame #? of thread 3
-Other segment start (thread 1)
- at 0x........: pthread_join (drd_pthread_intercepts.c:?)
- by 0x........: main (hg03_inherit.c:49)
-Other segment end (thread 1)
- at 0x........: (within ld-?.?.so)
- by 0x........: pthread_join (drd_pthread_intercepts.c:?)
- by 0x........: main (hg03_inherit.c:63)
-
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
Modified: trunk/exp-drd/tests/hg03_inherit.vgtest
===================================================================
--- trunk/exp-drd/tests/hg03_inherit.vgtest 2008-03-17 16:38:51 UTC (rev 7724)
+++ trunk/exp-drd/tests/hg03_inherit.vgtest 2008-03-17 17:22:55 UTC (rev 7725)
@@ -1 +1,2 @@
prog: hg03_inherit
+vgopts: --num-callers=2
|
|
From: <sv...@va...> - 2008-03-17 16:38:46
|
Author: sewardj
Date: 2008-03-17 16:38:51 +0000 (Mon, 17 Mar 2008)
New Revision: 7724
Log:
Merge (from trunk) 7723 (avoid hangs when reading debug info)
Modified:
branches/HGDEV/coregrind/m_debuginfo/debuginfo.c
Modified: branches/HGDEV/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- branches/HGDEV/coregrind/m_debuginfo/debuginfo.c 2008-03-17 16:23:54 UTC (rev 7723)
+++ branches/HGDEV/coregrind/m_debuginfo/debuginfo.c 2008-03-17 16:38:51 UTC (rev 7724)
@@ -520,6 +520,35 @@
if (debug)
VG_(printf)("di_notify_mmap-2: %s\n", filename);
+ /* XXXX begin KLUDGE */
+ /* Skip filenames in /dev/. Don't even bother to try opening them.
+ Why?
+
+ Suppose the client opens and then mmaps the file specified by
+ 'filename' and puts some kind of lock on it, so nobody else can
+ open it. If we now try to open it to peer at the ELF header,
+ the system can hang, because the VG_(open) call blocks.
+ Precisely this happed when running Amarok, which opened and then
+ mmap'd /dev/snd/pcmC0D0c.
+
+ A clean(er) solution is to open the file with VKI_O_NONBLOCK, so
+ that if it is locked, we simply fail immediately and don't hang
+ the whole system. But "man 2 open" gives only a sketchy
+ description of the resulting file semantics. So for the
+ meantime, just skip files in /dev/ as (1) they are likely to be
+ subject to wierd-ass locking stuff, and (2) they won't contain
+ useful debug info anyway.
+
+ But that's a kludge; in principle the same problem could occur
+ with *any* file.
+ */
+ if (0 == VG_(strncmp)(filename, "/dev/", 5)) {
+ if (debug)
+ VG_(printf)("di_notify_mmap-2: skipping %s\n", filename);
+ return;
+ }
+ /* XXXX end KLUDGE */
+
/* Peer at the first few bytes of the file, to see if it is an ELF
object file. */
VG_(memset)(buf1k, 0, sizeof(buf1k));
|
|
From: <sv...@va...> - 2008-03-17 16:36:00
|
Author: sewardj
Date: 2008-03-17 15:25:50 +0000 (Mon, 17 Mar 2008)
New Revision: 7722
Log:
Update.
Modified:
branches/HGDEV/docs/internals/BIG_APP_NOTES.txt
Modified: branches/HGDEV/docs/internals/BIG_APP_NOTES.txt
===================================================================
--- branches/HGDEV/docs/internals/BIG_APP_NOTES.txt 2008-03-17 14:57:01 UTC (rev 7721)
+++ branches/HGDEV/docs/internals/BIG_APP_NOTES.txt 2008-03-17 15:25:50 UTC (rev 7722)
@@ -36,5 +36,27 @@
# ~/.mozilla (or something) and that makes it take much longer than
# subsequent runs.
-# XXX I still need to mention how to annotate firefox's recycling
-# allocator so as to avoid a lot of errors
+# Patch the recycling allocator thusly (is this still necessary) ?
+
+
+$ diff -U3 ./xpcom/ds/nsRecyclingAllocator.cpp-ORIG ./xpcom/ds/nsRecyclingAllocator.cpp
+--- ./xpcom/ds/nsRecyclingAllocator.cpp-ORIG 2008-03-14 19:09:17.000000000 +0100
++++ ./xpcom/ds/nsRecyclingAllocator.cpp 2008-03-14 19:39:34.000000000 +0100
+@@ -156,7 +156,7 @@
+ mLock = nsnull;
+ }
+ }
+-
++#include "/home/sewardj/VgTRUNK/hgde2/Inst/include/valgrind/helgrind.h"
+ // Allocation and free routines
+ void*
+ nsRecyclingAllocator::Malloc(PRSize bytes, PRBool zeroit)
+@@ -169,7 +169,7 @@
+ if (freeBlock)
+ {
+ void *data = DATA(freeBlock);
+-
++if (bytes > 0) VALGRIND_HG_CLEAN_MEMORY(data,bytes);
+ if (zeroit)
+ memset(data, 0, bytes);
+ return data;
|
|
From: <sv...@va...> - 2008-03-17 16:23:50
|
Author: sewardj
Date: 2008-03-17 16:23:54 +0000 (Mon, 17 Mar 2008)
New Revision: 7723
Log:
Kludgily fix a regression caused by the recent DATASYMS merge, which
caused V to hang when running Amarok in KDE 3.5.X.
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2008-03-17 15:25:50 UTC (rev 7722)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2008-03-17 16:23:54 UTC (rev 7723)
@@ -520,6 +520,35 @@
if (debug)
VG_(printf)("di_notify_mmap-2: %s\n", filename);
+ /* XXXX begin KLUDGE */
+ /* Skip filenames in /dev/. Don't even bother to try opening them.
+ Why?
+
+ Suppose the client opens and then mmaps the file specified by
+ 'filename' and puts some kind of lock on it, so nobody else can
+ open it. If we now try to open it to peer at the ELF header,
+ the system can hang, because the VG_(open) call blocks.
+ Precisely this happed when running Amarok, which opened and then
+ mmap'd /dev/snd/pcmC0D0c.
+
+ A clean(er) solution is to open the file with VKI_O_NONBLOCK, so
+ that if it is locked, we simply fail immediately and don't hang
+ the whole system. But "man 2 open" gives only a sketchy
+ description of the resulting file semantics. So for the
+ meantime, just skip files in /dev/ as (1) they are likely to be
+ subject to wierd-ass locking stuff, and (2) they won't contain
+ useful debug info anyway.
+
+ But that's a kludge; in principle the same problem could occur
+ with *any* file.
+ */
+ if (0 == VG_(strncmp)(filename, "/dev/", 5)) {
+ if (debug)
+ VG_(printf)("di_notify_mmap-2: skipping %s\n", filename);
+ return;
+ }
+ /* XXXX end KLUDGE */
+
/* Peer at the first few bytes of the file, to see if it is an ELF
object file. */
VG_(memset)(buf1k, 0, sizeof(buf1k));
|
|
From: <sv...@va...> - 2008-03-17 14:57:00
|
Author: sewardj
Date: 2008-03-17 14:57:01 +0000 (Mon, 17 Mar 2008)
New Revision: 7721
Log:
Add a big comment explaining how compressed shadow values are
implemented.
Modified:
branches/HGDEV/helgrind/hg_main.c
Modified: branches/HGDEV/helgrind/hg_main.c
===================================================================
--- branches/HGDEV/helgrind/hg_main.c 2008-03-17 14:56:02 UTC (rev 7720)
+++ branches/HGDEV/helgrind/hg_main.c 2008-03-17 14:57:01 UTC (rev 7721)
@@ -94,9 +94,99 @@
#include "hg_wordset.h"
/*----------------------------------------------------------------*/
-/*--- ---*/
+/*--- Documentation on CacheLine/CacheLineZ/CacheLineF stuff ---*/
/*----------------------------------------------------------------*/
+/* This comment describes how the shadow value cache and compressed
+ shadow value representation works. Note that all line sizes etc
+ are defined by constants as shown; the actual numbers shown are
+ merely indicate the current settings.
+
+ Outside the cache, SVals are stored in a compressed representation
+ ------------------------------------------------------------------
+
+ Top level of the representation is "map_shmem", which is a WordFM
+ from Addr to SecMap*. Each SecMap* holds SVals for N_SECMAP_ARANGE
+ bytes of address range (naturally aligned, of course). The Addr in
+ the WordFM is the lowest guest address in the SecMap.
+
+ SecMaps are never deleted; once created they last forever.
+
+ To find a secmap call shmem_find_SecMap. This basically does
+ lookupFM in map_shmem; except it uses a tiny 3 element cache which
+ cuts out about 95% of the lookupFMs.
+
+ Currently each SecMap covers N_SECMAP_ARANGE (2^13, 8192) bytes of
+ address space.
+
+ A SecMap contains an array of CacheLineZ. (Z = compressed, F =
+ full). Each CacheLineZ covers N_LINE_ARANGE (curr. 64) bytes of
+ address space, so currently each SecMap contains 128 CacheLineZs.
+
+ A CacheLineZ holds 64 SVals in the common case where there are only
+ 4 or fewer different values. In this case, the SVals are stored in
+ .dict[0 .. 3], and .ix2s[] is an array of 64 2-bit indexes into
+ dict[], once for each of the 64 SVals. This gives a compression
+ ratio of (64 * sizeof(SVal)) : (4 * sizeof(SVal) + 64 * 0.25),
+ which is 512:48, or 10.67:1.
+
+ In 0%-20% of the lines, each 64-group of SVals has more than 4
+ different values. In that case the group is stored uncompressed in
+ a CacheLineF (full representation). CacheLineF is just an array of
+ 64 SVals + an "in use" Boolean.
+
+ Each SecMap has an attached array of CacheLineFs (.linesF,
+ .linesF_size). When data will not fit in a CacheLineZ, the
+ SecMap's CacheLineF array is searched to find a free entry (.inUse
+ == False). The CacheLineZ's dict[0] entry is set to zero (an
+ impossible SVal) to indicate that the data is really in a
+ CacheLineF. The dict[1] gives the index in .linesF of the
+ CacheLineF. (This is why it is important that no valid SVal has
+ value zero).
+
+ Inside the cache
+ ----------------
+
+ The SVal cache is an array of N_WAY_NENT (2^16) entries organised
+ as a direct mapped cache. Each entry covers 64 bytes of address
+ space, so that each CacheLine exactly covers one CacheLineZ/F in
+ the outside-of-cache representation.
+
+ Lines are moved into the cache by cacheline_fetch and out by
+ cacheline_wback. These decompress/compress respectively. Inside
+ the cache, the SVals for each 8 bytes of address space are referred
+ to as a "tree". For each 8 bytes of address space, there are 8
+ SVals in CacheLine.svals[], and one 16-bit descriptor for the 8
+ SVals. The descriptor indicates which of the 8 SVals are valid
+ right now. For example, if all of the 8 SVals are the same, then
+ the descriptor is TREE_DESCR_64, which indicates that only the
+ first SVal in the group of 8 is valid. This means it is possible
+ to do a single msm_handle_{read,write} call and get a new value for
+ the implied 8 SVals.
+
+ If it is necessary to split a 64 bit group (say, into 2 32-bit
+ pieces) because the two pieces require different SVals, then the
+ tree's [0] entry is copied to [0] and [4] and the tree's descriptor
+ is changed to (TREE_DESCR_32_0 | TREE_DESCR_32_1). This is called
+ a "pulldown" and it means that subsequent msm_handle_{read,write}
+ calls have to be done for each 32-bit chunk individually. Values
+ can get pulled down to 16- and 8-bit granularity if needed.
+
+ The point of this complexity is to minimise the number of calls to
+ msm_handle_{read,write} by doing them at the highest level of
+ granularity (up to 8-byte) that is possible. So it supports doing
+ byte level shadow values if necessary whilst being efficient in the
+ common case where 32/64-bit accesses happen and all 4/8 SVals in
+ the range are the same.
+
+ At the same time, by using a SVal cache, these large (64-bit per
+ byte) SVals can be stored in a relatively space efficient way.
+*/
+
+/*----------------------------------------------------------------*/
+/*--- Preamble ---*/
+/*----------------------------------------------------------------*/
+
/* Note this needs to be compiled with -fno-strict-aliasing, since it
contains a whole bunch of calls to lookupFM etc which cast between
Word and pointer types. gcc rightly complains this breaks ANSI C
|
|
From: <sv...@va...> - 2008-03-17 14:56:00
|
Author: sewardj
Date: 2008-03-17 14:56:02 +0000 (Mon, 17 Mar 2008)
New Revision: 7720
Log:
Intercept strcpy().
Modified:
branches/HGDEV/helgrind/hg_intercepts.c
Modified: branches/HGDEV/helgrind/hg_intercepts.c
===================================================================
--- branches/HGDEV/helgrind/hg_intercepts.c 2008-03-16 18:18:41 UTC (rev 7719)
+++ branches/HGDEV/helgrind/hg_intercepts.c 2008-03-17 14:56:02 UTC (rev 7720)
@@ -1509,6 +1509,23 @@
STRLEN(m_ld_linux_x86_64_so_2, strlen)
+// --- STRCPY -----------------------------------------------------
+//
+#define STRCPY(soname, fnname) \
+ char* VG_REPLACE_FUNCTION_ZU(soname, fnname) ( char* dst, const char* src ); \
+ char* VG_REPLACE_FUNCTION_ZU(soname, fnname) ( char* dst, const char* src ) \
+ { \
+ Char* dst_orig = dst; \
+ \
+ while (*src) *dst++ = *src++; \
+ *dst = 0; \
+ \
+ return dst_orig; \
+ }
+
+STRCPY(m_libc_soname, strcpy)
+
+
/*--------------------------------------------------------------------*/
/*--- end hg_intercepts.c ---*/
/*--------------------------------------------------------------------*/
|
|
From: Tom H. <th...@cy...> - 2008-03-17 06:16:13
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-03-17 03:15:02 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 == 379 tests, 78 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/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (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/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (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/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/tc09_bad_unlock (stderr) exp-drd/tests/tc12_rwl_trivial (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 == 378 tests, 78 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/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (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/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (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/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/tc09_bad_unlock (stderr) exp-drd/tests/tc12_rwl_trivial (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Mar 17 04:59:56 2008 --- new.short Mon Mar 17 06:16:18 2008 *************** *** 8,10 **** ! == 378 tests, 78 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) --- 8,10 ---- ! == 379 tests, 78 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) |
|
From: Tom H. <th...@cy...> - 2008-03-17 04:27:23
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-03-17 03:05:06 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 413 tests, 6 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 415 tests, 10 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/omp_matinv (stderr) exp-drd/tests/omp_matinv_racy (stderr) exp-drd/tests/omp_prime_racy (stderr) exp-drd/tests/pth_detached2 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Mar 17 03:46:06 2008 --- new.short Mon Mar 17 04:27:22 2008 *************** *** 8,10 **** ! == 415 tests, 10 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 413 tests, 6 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 17,22 **** helgrind/tests/tc22_exit_w_lock (stderr) - exp-drd/tests/omp_matinv (stderr) - exp-drd/tests/omp_matinv_racy (stderr) - exp-drd/tests/omp_prime_racy (stderr) - exp-drd/tests/pth_detached2 (stderr) --- 17,18 ---- |
|
From: Tom H. <th...@cy...> - 2008-03-17 03:53:05
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-03-17 03:20:08 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 == 419 tests, 9 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 421 tests, 13 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/omp_matinv (stderr) exp-drd/tests/omp_matinv_racy (stderr) exp-drd/tests/omp_prime_racy (stderr) exp-drd/tests/pth_detached2 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Mar 17 03:37:01 2008 --- new.short Mon Mar 17 03:52:56 2008 *************** *** 8,10 **** ! == 421 tests, 13 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 419 tests, 9 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 19,24 **** helgrind/tests/tc22_exit_w_lock (stderr) - exp-drd/tests/omp_matinv (stderr) - exp-drd/tests/omp_matinv_racy (stderr) - exp-drd/tests/omp_prime_racy (stderr) - exp-drd/tests/pth_detached2 (stderr) --- 19,20 ---- |
|
From: Tom H. <th...@cy...> - 2008-03-17 03:45:59
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-03-17 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 == 417 tests, 9 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == 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 == 419 tests, 12 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/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/omp_matinv (stderr) exp-drd/tests/omp_matinv_racy (stderr) exp-drd/tests/omp_prime_racy (stderr) exp-drd/tests/pth_detached2 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Mar 17 03:32:44 2008 --- new.short Mon Mar 17 03:40:10 2008 *************** *** 8,10 **** ! == 419 tests, 12 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 417 tests, 9 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 19,20 **** --- 19,21 ---- none/tests/mremap2 (stdout) + helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) *************** *** 22,27 **** helgrind/tests/tc22_exit_w_lock (stderr) - exp-drd/tests/omp_matinv (stderr) - exp-drd/tests/omp_matinv_racy (stderr) - exp-drd/tests/omp_prime_racy (stderr) - exp-drd/tests/pth_detached2 (stderr) --- 23,24 ---- |
|
From: Tom H. <th...@cy...> - 2008-03-17 03:33:38
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-03-17 03:10: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 == 413 tests, 8 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_cvsimple (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 415 tests, 11 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/faultstatus (stderr) 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/omp_matinv (stderr) exp-drd/tests/omp_matinv_racy (stderr) exp-drd/tests/omp_prime_racy (stderr) exp-drd/tests/pth_detached2 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Mar 17 03:22:01 2008 --- new.short Mon Mar 17 03:33:37 2008 *************** *** 8,10 **** ! == 415 tests, 11 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 413 tests, 8 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 15,23 **** none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) - exp-drd/tests/omp_matinv (stderr) - exp-drd/tests/omp_matinv_racy (stderr) - exp-drd/tests/omp_prime_racy (stderr) - exp-drd/tests/pth_detached2 (stderr) --- 15,21 ---- none/tests/mremap2 (stdout) + none/tests/pth_cvsimple (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) + helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-03-17 03:23:11
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-03-17 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 == 419 tests, 32 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (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/pth_create_chain (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 == 418 tests, 32 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (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/pth_create_chain (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Mar 17 03:14:32 2008 --- new.short Mon Mar 17 03:23:11 2008 *************** *** 8,10 **** ! == 418 tests, 32 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 419 tests, 32 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) |