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
(12) |
|
2
(6) |
3
(13) |
4
(9) |
5
(6) |
6
(8) |
7
(5) |
8
(5) |
|
9
(15) |
10
(18) |
11
(18) |
12
(18) |
13
(7) |
14
(11) |
15
(6) |
|
16
(12) |
17
(28) |
18
(15) |
19
(12) |
20
(17) |
21
(23) |
22
(10) |
|
23
(9) |
24
(11) |
25
(7) |
26
(21) |
27
(12) |
28
(6) |
29
(6) |
|
30
(8) |
|
|
|
|
|
|
|
From: <sv...@va...> - 2007-09-09 21:54:52
|
Author: sewardj
Date: 2007-09-09 22:54:53 +0100 (Sun, 09 Sep 2007)
New Revision: 6806
Log:
Fix longstanding error in the amd64-linux function-wrapping macros:
protect the caller's red zone across the hidden call. All rather
nasty as explained in big comment.
Modified:
branches/THRCHECK/include/valgrind.h
Modified: branches/THRCHECK/include/valgrind.h
===================================================================
--- branches/THRCHECK/include/valgrind.h 2007-09-09 21:41:28 UTC (rev 6805)
+++ branches/THRCHECK/include/valgrind.h 2007-09-09 21:54:53 UTC (rev 6806)
@@ -1022,6 +1022,27 @@
/* These CALL_FN_ macros assume that on amd64-linux, sizeof(unsigned
long) == 8. */
+/* NB 9 Sept 07. There is a nasty kludge here in all these CALL_FN_
+ macros. In order not to trash the stack redzone, we need to drop
+ %rsp by 128 before the hidden call, and restore afterwards. The
+ nastyness is that it is only by luck that the stack still appears
+ to be unwindable during the hidden call - since then the behaviour
+ of any routine using this macro does not match what the CFI data
+ says. Sigh.
+
+ Why is this important? Imagine that a wrapper has a stack
+ allocated local, and passes to the hidden call, a pointer to it.
+ Because gcc does not know about the hidden call, it can allocate
+ that local in the redzone. Unfortunately the hidden call may then
+ trash it before it comes to use it. So we must clear the redzone
+ to make it safe.
+
+ Probably the same problem afflicts the other redzone-style ABIs too
+ (ppc64-linux, ppc32-aix5, ppc64-aix5); but for those, the stack is
+ self describing (none of this CFI nonsense) so at least messing
+ with the stack pointer doesn't give a danger of non-unwindable
+ stack. */
+
#define CALL_FN_W_v(lval, orig) \
do { \
volatile OrigFn _orig = (orig); \
@@ -1029,8 +1050,10 @@
volatile unsigned long _res; \
_argvec[0] = (unsigned long)_orig.nraddr; \
__asm__ volatile( \
+ "subq $128,%%rsp\n\t" \
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
VALGRIND_CALL_NOREDIR_RAX \
+ "addq $128,%%rsp\n\t" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
@@ -1046,9 +1069,11 @@
_argvec[0] = (unsigned long)_orig.nraddr; \
_argvec[1] = (unsigned long)(arg1); \
__asm__ volatile( \
+ "subq $128,%%rsp\n\t" \
"movq 8(%%rax), %%rdi\n\t" \
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
VALGRIND_CALL_NOREDIR_RAX \
+ "addq $128,%%rsp\n\t" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
@@ -1065,10 +1090,12 @@
_argvec[1] = (unsigned long)(arg1); \
_argvec[2] = (unsigned long)(arg2); \
__asm__ volatile( \
+ "subq $128,%%rsp\n\t" \
"movq 16(%%rax), %%rsi\n\t" \
"movq 8(%%rax), %%rdi\n\t" \
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
VALGRIND_CALL_NOREDIR_RAX \
+ "addq $128,%%rsp\n\t" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
@@ -1086,11 +1113,13 @@
_argvec[2] = (unsigned long)(arg2); \
_argvec[3] = (unsigned long)(arg3); \
__asm__ volatile( \
+ "subq $128,%%rsp\n\t" \
"movq 24(%%rax), %%rdx\n\t" \
"movq 16(%%rax), %%rsi\n\t" \
"movq 8(%%rax), %%rdi\n\t" \
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
VALGRIND_CALL_NOREDIR_RAX \
+ "addq $128,%%rsp\n\t" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
@@ -1109,12 +1138,14 @@
_argvec[3] = (unsigned long)(arg3); \
_argvec[4] = (unsigned long)(arg4); \
__asm__ volatile( \
+ "subq $128,%%rsp\n\t" \
"movq 32(%%rax), %%rcx\n\t" \
"movq 24(%%rax), %%rdx\n\t" \
"movq 16(%%rax), %%rsi\n\t" \
"movq 8(%%rax), %%rdi\n\t" \
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
VALGRIND_CALL_NOREDIR_RAX \
+ "addq $128,%%rsp\n\t" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
@@ -1134,6 +1165,7 @@
_argvec[4] = (unsigned long)(arg4); \
_argvec[5] = (unsigned long)(arg5); \
__asm__ volatile( \
+ "subq $128,%%rsp\n\t" \
"movq 40(%%rax), %%r8\n\t" \
"movq 32(%%rax), %%rcx\n\t" \
"movq 24(%%rax), %%rdx\n\t" \
@@ -1141,6 +1173,7 @@
"movq 8(%%rax), %%rdi\n\t" \
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
VALGRIND_CALL_NOREDIR_RAX \
+ "addq $128,%%rsp\n\t" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
@@ -1161,6 +1194,7 @@
_argvec[5] = (unsigned long)(arg5); \
_argvec[6] = (unsigned long)(arg6); \
__asm__ volatile( \
+ "subq $128,%%rsp\n\t" \
"movq 48(%%rax), %%r9\n\t" \
"movq 40(%%rax), %%r8\n\t" \
"movq 32(%%rax), %%rcx\n\t" \
@@ -1168,6 +1202,7 @@
"movq 16(%%rax), %%rsi\n\t" \
"movq 8(%%rax), %%rdi\n\t" \
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
+ "addq $128,%%rsp\n\t" \
VALGRIND_CALL_NOREDIR_RAX \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
@@ -1191,6 +1226,7 @@
_argvec[6] = (unsigned long)(arg6); \
_argvec[7] = (unsigned long)(arg7); \
__asm__ volatile( \
+ "subq $128,%%rsp\n\t" \
"pushq 56(%%rax)\n\t" \
"movq 48(%%rax), %%r9\n\t" \
"movq 40(%%rax), %%r8\n\t" \
@@ -1201,6 +1237,7 @@
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
VALGRIND_CALL_NOREDIR_RAX \
"addq $8, %%rsp\n" \
+ "addq $128,%%rsp\n\t" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
@@ -1224,6 +1261,7 @@
_argvec[7] = (unsigned long)(arg7); \
_argvec[8] = (unsigned long)(arg8); \
__asm__ volatile( \
+ "subq $128,%%rsp\n\t" \
"pushq 64(%%rax)\n\t" \
"pushq 56(%%rax)\n\t" \
"movq 48(%%rax), %%r9\n\t" \
@@ -1235,6 +1273,7 @@
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
VALGRIND_CALL_NOREDIR_RAX \
"addq $16, %%rsp\n" \
+ "addq $128,%%rsp\n\t" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
@@ -1259,6 +1298,7 @@
_argvec[8] = (unsigned long)(arg8); \
_argvec[9] = (unsigned long)(arg9); \
__asm__ volatile( \
+ "subq $128,%%rsp\n\t" \
"pushq 72(%%rax)\n\t" \
"pushq 64(%%rax)\n\t" \
"pushq 56(%%rax)\n\t" \
@@ -1271,6 +1311,7 @@
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
VALGRIND_CALL_NOREDIR_RAX \
"addq $24, %%rsp\n" \
+ "addq $128,%%rsp\n\t" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
@@ -1296,6 +1337,7 @@
_argvec[9] = (unsigned long)(arg9); \
_argvec[10] = (unsigned long)(arg10); \
__asm__ volatile( \
+ "subq $128,%%rsp\n\t" \
"pushq 80(%%rax)\n\t" \
"pushq 72(%%rax)\n\t" \
"pushq 64(%%rax)\n\t" \
@@ -1309,6 +1351,7 @@
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
VALGRIND_CALL_NOREDIR_RAX \
"addq $32, %%rsp\n" \
+ "addq $128,%%rsp\n\t" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
@@ -1335,6 +1378,7 @@
_argvec[10] = (unsigned long)(arg10); \
_argvec[11] = (unsigned long)(arg11); \
__asm__ volatile( \
+ "subq $128,%%rsp\n\t" \
"pushq 88(%%rax)\n\t" \
"pushq 80(%%rax)\n\t" \
"pushq 72(%%rax)\n\t" \
@@ -1349,6 +1393,7 @@
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
VALGRIND_CALL_NOREDIR_RAX \
"addq $40, %%rsp\n" \
+ "addq $128,%%rsp\n\t" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
@@ -1376,6 +1421,7 @@
_argvec[11] = (unsigned long)(arg11); \
_argvec[12] = (unsigned long)(arg12); \
__asm__ volatile( \
+ "subq $128,%%rsp\n\t" \
"pushq 96(%%rax)\n\t" \
"pushq 88(%%rax)\n\t" \
"pushq 80(%%rax)\n\t" \
@@ -1391,6 +1437,7 @@
"movq (%%rax), %%rax\n\t" /* target->%rax */ \
VALGRIND_CALL_NOREDIR_RAX \
"addq $48, %%rsp\n" \
+ "addq $128,%%rsp\n\t" \
: /*out*/ "=a" (_res) \
: /*in*/ "a" (&_argvec[0]) \
: /*trash*/ "cc", "memory", __CALLER_SAVED_REGS \
|
|
From: <sv...@va...> - 2007-09-09 21:41:27
|
Author: sewardj
Date: 2007-09-09 22:41:28 +0100 (Sun, 09 Sep 2007)
New Revision: 6805
Log:
Modify two thread-notification events in the core-tool interface.
This removes track_post_thread_create and track_post_thread_join. The
core can only see low level thread creation and exiting, and has no
idea about pthread-level concepts like "pthread_create" and
"pthread_join", so these are a bit ambiguous.
Replace them with track_pre_thread_ll_create, which is notified before
a new thread makes any memory references, and
track_pre_thread_ll_exit, which is notified just before the new thread
exits, that is, after it has made its last memory reference.
Modified:
branches/THRCHECK/coregrind/m_syswrap/syswrap-amd64-linux.c
branches/THRCHECK/coregrind/m_syswrap/syswrap-linux.c
branches/THRCHECK/coregrind/m_syswrap/syswrap-x86-linux.c
branches/THRCHECK/coregrind/m_tooliface.c
branches/THRCHECK/coregrind/pub_core_tooliface.h
Modified: branches/THRCHECK/coregrind/m_syswrap/syswrap-amd64-linux.c
===================================================================
--- branches/THRCHECK/coregrind/m_syswrap/syswrap-amd64-linux.c 2007-09-09 21:34:23 UTC (rev 6804)
+++ branches/THRCHECK/coregrind/m_syswrap/syswrap-amd64-linux.c 2007-09-09 21:41:28 UTC (rev 6805)
@@ -267,6 +267,12 @@
ctst->client_stack_szB = 0;
}
+ /* Assume the clone will succeed, and tell any tool that wants to
+ know that this thread has come into existence. If the clone
+ fails, we'll send out a ll_exit notification for it at the out:
+ label below, to clean up. */
+ VG_TRACK ( pre_thread_ll_create, ptid, ctid );
+
if (flags & VKI_CLONE_SETTLS) {
if (debug)
VG_(printf)("clone child has SETTLS: tls at %p\n", tlsaddr);
@@ -292,6 +298,8 @@
/* clone failed */
VG_(cleanup_thread)(&ctst->arch);
ctst->status = VgTs_Empty;
+ /* oops. Better tell the tool the thread exited in a hurry :-) */
+ VG_TRACK( pre_thread_ll_exit, ctid );
}
return res;
Modified: branches/THRCHECK/coregrind/m_syswrap/syswrap-linux.c
===================================================================
--- branches/THRCHECK/coregrind/m_syswrap/syswrap-linux.c 2007-09-09 21:34:23 UTC (rev 6804)
+++ branches/THRCHECK/coregrind/m_syswrap/syswrap-linux.c 2007-09-09 21:41:28 UTC (rev 6805)
@@ -78,8 +78,6 @@
VG_(printf)("thread tid %d started: stack = %p\n",
tid, &tid);
- VG_TRACK ( post_thread_create, tst->os_state.parent, tid );
-
tst->os_state.lwpid = VG_(gettid)();
tst->os_state.threadgroup = VG_(getpid)();
@@ -128,6 +126,9 @@
c = VG_(count_living_threads)();
vg_assert(c >= 1); /* stay sane */
+ // Tell the tool this thread is exiting
+ VG_TRACK( pre_thread_ll_exit, tid );
+
if (c == 1) {
VG_(debugLog)(1, "syswrap-linux",
Modified: branches/THRCHECK/coregrind/m_syswrap/syswrap-x86-linux.c
===================================================================
--- branches/THRCHECK/coregrind/m_syswrap/syswrap-x86-linux.c 2007-09-09 21:34:23 UTC (rev 6804)
+++ branches/THRCHECK/coregrind/m_syswrap/syswrap-x86-linux.c 2007-09-09 21:41:28 UTC (rev 6805)
@@ -279,6 +279,15 @@
ctst->client_stack_szB = 0;
}
+ /* Assume the clone will succeed, and tell any tool that wants to
+ know that this thread has come into existence. We cannot defer
+ it beyond this point because sys_set_thread_area, just below,
+ causes tCheck to assert by making references to the new ThreadId
+ if we don't state the new thread exists prior to that point.
+ If the clone fails, we'll send out a ll_exit notification for it
+ at the out: label below, to clean up. */
+ VG_TRACK ( pre_thread_ll_create, ptid, ctid );
+
if (flags & VKI_CLONE_SETTLS) {
if (debug)
VG_(printf)("clone child has SETTLS: tls info at %p: idx=%d "
@@ -311,6 +320,8 @@
/* clone failed */
VG_(cleanup_thread)(&ctst->arch);
ctst->status = VgTs_Empty;
+ /* oops. Better tell the tool the thread exited in a hurry :-) */
+ VG_TRACK( pre_thread_ll_exit, ctid );
}
return res;
Modified: branches/THRCHECK/coregrind/m_tooliface.c
===================================================================
--- branches/THRCHECK/coregrind/m_tooliface.c 2007-09-09 21:34:23 UTC (rev 6804)
+++ branches/THRCHECK/coregrind/m_tooliface.c 2007-09-09 21:41:28 UTC (rev 6805)
@@ -332,8 +332,8 @@
DEF(track_start_client_code, ThreadId, ULong)
DEF(track_stop_client_code, ThreadId, ULong)
-DEF(track_post_thread_create, ThreadId, ThreadId)
-DEF(track_post_thread_join, ThreadId, ThreadId)
+DEF(track_pre_thread_ll_create, ThreadId, ThreadId)
+DEF(track_pre_thread_ll_exit, ThreadId)
DEF(track_pre_deliver_signal, ThreadId, Int sigNo, Bool)
DEF(track_post_deliver_signal, ThreadId, Int sigNo)
Modified: branches/THRCHECK/coregrind/pub_core_tooliface.h
===================================================================
--- branches/THRCHECK/coregrind/pub_core_tooliface.h 2007-09-09 21:34:23 UTC (rev 6804)
+++ branches/THRCHECK/coregrind/pub_core_tooliface.h 2007-09-09 21:41:28 UTC (rev 6805)
@@ -207,8 +207,8 @@
void (*track_start_client_code)(ThreadId, ULong);
void (*track_stop_client_code) (ThreadId, ULong);
- void (*track_post_thread_create)(ThreadId, ThreadId);
- void (*track_post_thread_join) (ThreadId, ThreadId);
+ void (*track_pre_thread_ll_create)(ThreadId, ThreadId);
+ void (*track_pre_thread_ll_exit) (ThreadId);
void (*track_pre_deliver_signal) (ThreadId, Int sigNo, Bool);
void (*track_post_deliver_signal)(ThreadId, Int sigNo);
|
|
From: <sv...@va...> - 2007-09-09 21:34:21
|
Author: sewardj
Date: 2007-09-09 22:34:23 +0100 (Sun, 09 Sep 2007)
New Revision: 6804
Log:
Split the scheduler initialisation into two phases, for reasons I
can't exactly remember. But I think it was so that the tool can be
told of the initial thread's TID before it is notified of any initial
address range permissions. Or something like that.
Modified:
branches/THRCHECK/coregrind/m_main.c
branches/THRCHECK/coregrind/m_scheduler/scheduler.c
branches/THRCHECK/coregrind/pub_core_scheduler.h
Modified: branches/THRCHECK/coregrind/m_main.c
===================================================================
--- branches/THRCHECK/coregrind/m_main.c 2007-09-09 21:29:50 UTC (rev 6803)
+++ branches/THRCHECK/coregrind/m_main.c 2007-09-09 21:34:23 UTC (rev 6804)
@@ -1163,6 +1163,7 @@
HChar* toolname = "memcheck"; // default to Memcheck
Int need_help = 0; // 0 = no, 1 = --help, 2 = --help-debug
UInt* client_auxv = NULL;
+ ThreadId tid_main = VG_INVALID_THREADID;
Int loglevel, i;
Bool logging_to_fd;
struct vki_rlimit zero = { 0, 0 };
@@ -1755,6 +1756,17 @@
}
//--------------------------------------------------------------
+ // Initialise the scheduler (phase 1) [generates tid_main]
+ // p: none, afaics
+ //--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Initialise scheduler (phase 1)\n");
+ tid_main = VG_(scheduler_init_phase1)();
+ vg_assert(tid_main >= 0 && tid_main < VG_N_THREADS
+ && tid_main != VG_INVALID_THREADID);
+ /* Tell the tool about tid_main */
+ VG_TRACK( pre_thread_ll_create, VG_INVALID_THREADID, tid_main );
+
+ //--------------------------------------------------------------
// Tell the tool about the initial client memory permissions
// p: aspacem
// p: mallocfree
@@ -1826,18 +1838,20 @@
}
//--------------------------------------------------------------
- // Initialise the scheduler
+ // Initialise the scheduler (phase 2)
+ // p: Initialise the scheduler (phase 1) [for tid_main]
// p: setup_file_descriptors() [else VG_(safe_fd)() breaks]
// p: setup_client_stack
//--------------------------------------------------------------
- VG_(debugLog)(1, "main", "Initialise scheduler\n");
+ VG_(debugLog)(1, "main", "Initialise scheduler (phase 2)\n");
{ NSegment const* seg
= VG_(am_find_nsegment)( the_iifii.initial_client_SP );
vg_assert(seg);
vg_assert(seg->kind == SkAnonC);
vg_assert(the_iifii.initial_client_SP >= seg->start);
vg_assert(the_iifii.initial_client_SP <= seg->end);
- VG_(scheduler_init)( seg->end, the_iifii.clstack_max_size );
+ VG_(scheduler_init_phase2)( tid_main,
+ seg->end, the_iifii.clstack_max_size );
}
//--------------------------------------------------------------
Modified: branches/THRCHECK/coregrind/m_scheduler/scheduler.c
===================================================================
--- branches/THRCHECK/coregrind/m_scheduler/scheduler.c 2007-09-09 21:29:50 UTC (rev 6803)
+++ branches/THRCHECK/coregrind/m_scheduler/scheduler.c 2007-09-09 21:34:23 UTC (rev 6804)
@@ -437,22 +437,17 @@
}
-/* Initialise the scheduler. Create a single "main" thread ready to
- run, with special ThreadId of one. This is called at startup. The
- caller subsequently initialises the guest state components of this
- main thread, thread 1.
+/* First phase of initialisation of the scheduler. Initialise the
+ bigLock, zeroise the VG_(threads) structure and decide on the
+ ThreadId of the root thread.
*/
-void VG_(scheduler_init) ( Addr clstack_end, SizeT clstack_size )
+ThreadId VG_(scheduler_init_phase1) ( void )
{
Int i;
ThreadId tid_main;
- VG_(debugLog)(1,"sched","sched_init: cls_end=0x%lx, cls_sz=%ld\n",
- clstack_end, clstack_size);
+ VG_(debugLog)(1,"sched","sched_init_phase1\n");
- vg_assert(VG_IS_PAGE_ALIGNED(clstack_end+1));
- vg_assert(VG_IS_PAGE_ALIGNED(clstack_size));
-
ML_(sema_init)(&the_BigLock);
for (i = 0 /* NB; not 1 */; i < VG_N_THREADS; i++) {
@@ -470,8 +465,28 @@
}
tid_main = VG_(alloc_ThreadState)();
- vg_assert(tid_main == 1);
+ return tid_main;
+}
+
+
+/* Second phase of initialisation of the scheduler. Given the root
+ ThreadId computed by first phase of initialisation, fill in stack
+ details and acquire bigLock. Initialise the scheduler. This is
+ called at startup. The caller subsequently initialises the guest
+ state components of this main thread.
+*/
+void VG_(scheduler_init_phase2) ( ThreadId tid_main,
+ Addr clstack_end,
+ SizeT clstack_size )
+{
+ VG_(debugLog)(1,"sched","sched_init_phase2: tid_main=%d, "
+ "cls_end=0x%lx, cls_sz=%ld\n",
+ tid_main, clstack_end, clstack_size);
+
+ vg_assert(VG_IS_PAGE_ALIGNED(clstack_end+1));
+ vg_assert(VG_IS_PAGE_ALIGNED(clstack_size));
+
VG_(threads)[tid_main].client_stack_highest_word
= clstack_end + 1 - sizeof(UWord);
VG_(threads)[tid_main].client_stack_szB
Modified: branches/THRCHECK/coregrind/pub_core_scheduler.h
===================================================================
--- branches/THRCHECK/coregrind/pub_core_scheduler.h 2007-09-09 21:29:50 UTC (rev 6803)
+++ branches/THRCHECK/coregrind/pub_core_scheduler.h 2007-09-09 21:34:23 UTC (rev 6804)
@@ -75,9 +75,16 @@
// The scheduler.
extern VgSchedReturnCode VG_(scheduler) ( ThreadId tid );
-// Initialise. Is passed the extent of the root thread's client stack.
-extern void VG_(scheduler_init) ( Addr clstack_end, SizeT clstack_size );
+// Initialise, phase 1. Zero out VG_(threads), decide on the root
+// ThreadId and initialise the bigLock.
+extern ThreadId VG_(scheduler_init_phase1) ( void );
+// Initialise, phase 2. Is passed the extent of the root thread's
+// client stack and the root ThreadId decided on by phase 1.
+extern void VG_(scheduler_init_phase2) ( ThreadId main_tid,
+ Addr clstack_end,
+ SizeT clstack_size );
+
/* Stats ... */
extern void VG_(print_scheduler_stats) ( void );
|
|
From: <sv...@va...> - 2007-09-09 21:29:49
|
Author: sewardj
Date: 2007-09-09 22:29:50 +0100 (Sun, 09 Sep 2007)
New Revision: 6803
Log:
Darn. This should have been included in r6802
(For VG_(record_ExeContext) et al, add a new parameter ...)
Modified:
branches/THRCHECK/coregrind/m_syswrap/syswrap-generic.c
Modified: branches/THRCHECK/coregrind/m_syswrap/syswrap-generic.c
===================================================================
--- branches/THRCHECK/coregrind/m_syswrap/syswrap-generic.c 2007-09-09 21:22:48 UTC (rev 6802)
+++ branches/THRCHECK/coregrind/m_syswrap/syswrap-generic.c 2007-09-09 21:29:50 UTC (rev 6803)
@@ -522,7 +522,7 @@
i->fd = fd;
i->pathname = VG_(arena_strdup)(VG_AR_CORE, pathname);
- i->where = (tid == -1) ? NULL : VG_(record_ExeContext)(tid);
+ i->where = (tid == -1) ? NULL : VG_(record_ExeContext)(tid, 0/*first_ip_delta*/);
}
// Record opening of an fd, and find its name.
|
|
From: <sv...@va...> - 2007-09-09 21:22:49
|
Author: sewardj
Date: 2007-09-09 22:22:48 +0100 (Sun, 09 Sep 2007)
New Revision: 6802
Log:
For VG_(record_ExeContext) et al, add a new parameter (first_ip_delta)
which is added to the initial IP value before the stack is unwound. A
safe value to pass is zero, which causes the existing behaviour to be
unchanged. This is a kludge needed to work around the incomplete
amd64 stack unwind info in glibc-2.5's clone() routine.
Modified:
branches/THRCHECK/coregrind/m_errormgr.c
branches/THRCHECK/coregrind/m_execontext.c
branches/THRCHECK/coregrind/m_stacktrace.c
branches/THRCHECK/helgrind/hg_main.c
branches/THRCHECK/include/pub_tool_execontext.h
branches/THRCHECK/include/pub_tool_stacktrace.h
branches/THRCHECK/memcheck/mc_main.c
branches/THRCHECK/memcheck/mc_malloc_wrappers.c
Modified: branches/THRCHECK/coregrind/m_errormgr.c
===================================================================
--- branches/THRCHECK/coregrind/m_errormgr.c 2007-09-09 20:57:49 UTC (rev 6801)
+++ branches/THRCHECK/coregrind/m_errormgr.c 2007-09-09 21:22:48 UTC (rev 6802)
@@ -380,7 +380,7 @@
err->count = 1;
err->tid = tid;
if (NULL == where)
- err->where = VG_(record_ExeContext)( tid );
+ err->where = VG_(record_ExeContext)( tid, 0 );
else
err->where = where;
Modified: branches/THRCHECK/coregrind/m_execontext.c
===================================================================
--- branches/THRCHECK/coregrind/m_execontext.c 2007-09-09 20:57:49 UTC (rev 6801)
+++ branches/THRCHECK/coregrind/m_execontext.c 2007-09-09 21:22:48 UTC (rev 6802)
@@ -277,7 +277,7 @@
ec_htab_size_idx++;
}
-ExeContext* VG_(record_ExeContext) ( ThreadId tid )
+ExeContext* VG_(record_ExeContext) ( ThreadId tid, Word first_ip_delta )
{
Int i;
Addr ips[VG_DEEPEST_BACKTRACE];
@@ -297,7 +297,8 @@
vg_assert(VG_(clo_backtrace_size) >= 1 &&
VG_(clo_backtrace_size) <= VG_DEEPEST_BACKTRACE);
- n_ips = VG_(get_StackTrace)( tid, ips, VG_(clo_backtrace_size) );
+ n_ips = VG_(get_StackTrace)( tid, ips, VG_(clo_backtrace_size),
+ first_ip_delta );
tl_assert(n_ips >= 1 && n_ips <= VG_(clo_backtrace_size));
/* Now figure out if we've seen this one before. First hash it so
Modified: branches/THRCHECK/coregrind/m_stacktrace.c
===================================================================
--- branches/THRCHECK/coregrind/m_stacktrace.c 2007-09-09 20:57:49 UTC (rev 6801)
+++ branches/THRCHECK/coregrind/m_stacktrace.c 2007-09-09 21:22:48 UTC (rev 6802)
@@ -369,7 +369,8 @@
return n_found;
}
-UInt VG_(get_StackTrace) ( ThreadId tid, StackTrace ips, UInt n_ips )
+UInt VG_(get_StackTrace) ( ThreadId tid, StackTrace ips, UInt n_ips,
+ Word first_ip_delta )
{
/* thread in thread table */
Addr ip = VG_(get_IP)(tid);
@@ -405,6 +406,10 @@
}
# endif
+ /* Take into account the first_ip_delta. */
+ vg_assert( sizeof(Addr) == sizeof(Word) );
+ ip += first_ip_delta;
+
if (0)
VG_(printf)("tid %d: stack_highest=%p ip=%p sp=%p fp=%p\n",
tid, stack_highest_word, ip, sp, fp);
@@ -446,7 +451,8 @@
void VG_(get_and_pp_StackTrace) ( ThreadId tid, UInt n_ips )
{
Addr ips[n_ips];
- UInt n_ips_obtained = VG_(get_StackTrace)(tid, ips, n_ips);
+ UInt n_ips_obtained = VG_(get_StackTrace)(tid, ips, n_ips,
+ 0/*first_ip_delta*/);
VG_(pp_StackTrace)(ips, n_ips_obtained);
}
Modified: branches/THRCHECK/helgrind/hg_main.c
===================================================================
--- branches/THRCHECK/helgrind/hg_main.c 2007-09-09 20:57:49 UTC (rev 6801)
+++ branches/THRCHECK/helgrind/hg_main.c 2007-09-09 21:22:48 UTC (rev 6802)
@@ -1600,7 +1600,7 @@
break;
}
- mutex->location = VG_(record_ExeContext)(tid);
+ mutex->location = VG_(record_ExeContext)(tid, 0);
mutex->state = state;
}
@@ -1845,7 +1845,7 @@
hc = VG_(malloc)(sizeof(HG_Chunk));
hc->data = p;
hc->size = size;
- hc->where = VG_(record_ExeContext)(tid);
+ hc->where = VG_(record_ExeContext)(tid, 0);
hc->tid = tid;
VG_(HT_add_node)( hg_malloc_list, (VgHashNode*)hc );
@@ -1921,7 +1921,7 @@
*prev_chunks_next_ptr = hc->next;
/* Record where freed */
- hc->where = VG_(record_ExeContext) ( tid );
+ hc->where = VG_(record_ExeContext) ( tid, 0 );
/* maintain a small window so that the error reporting machinery
knows about this memory */
@@ -1989,13 +1989,13 @@
if (hc->size == new_size) {
/* size unchanged */
- hc->where = VG_(record_ExeContext)(tid);
+ hc->where = VG_(record_ExeContext)(tid, 0);
return p;
} else if (hc->size > new_size) {
/* new size is smaller */
hc->size = new_size;
- hc->where = VG_(record_ExeContext)(tid);
+ hc->where = VG_(record_ExeContext)(tid, 0);
return p;
} else {
@@ -3076,7 +3076,7 @@
if (clo_execontext == EC_Some)
ecip = IP(VG_(get_IP)(tid), prevstate, tls);
else
- ecip = EC(VG_(record_ExeContext)(tid), prevstate, tls);
+ ecip = EC(VG_(record_ExeContext)(tid, 0), prevstate, tls);
setExeContext(a, ecip);
}
}
@@ -3181,7 +3181,7 @@
if (clo_execontext == EC_Some)
ecip = IP(VG_(get_IP)(tid), prevstate, tls);
else
- ecip = EC(VG_(record_ExeContext)(tid), prevstate, tls);
+ ecip = EC(VG_(record_ExeContext)(tid, 0), prevstate, tls);
setExeContext(a, ecip);
}
}
Modified: branches/THRCHECK/include/pub_tool_execontext.h
===================================================================
--- branches/THRCHECK/include/pub_tool_execontext.h 2007-09-09 20:57:49 UTC (rev 6801)
+++ branches/THRCHECK/include/pub_tool_execontext.h 2007-09-09 21:22:48 UTC (rev 6802)
@@ -51,8 +51,11 @@
//
// If called from generated code, use VG_(get_running_tid)() to get the
// current ThreadId. If called from non-generated code, the current
-// ThreadId should be passed in by the core.
-extern ExeContext* VG_(record_ExeContext) ( ThreadId tid );
+// ThreadId should be passed in by the core. The initial IP value to
+// use is adjusted by first_ip_delta before the stack is unwound.
+// A safe value to pass is zero.
+extern
+ExeContext* VG_(record_ExeContext) ( ThreadId tid, Word first_ip_delta );
// Apply a function to every element in the ExeContext. The parameter 'n'
// gives the index of the passed ip. Doesn't go below main() unless
Modified: branches/THRCHECK/include/pub_tool_stacktrace.h
===================================================================
--- branches/THRCHECK/include/pub_tool_stacktrace.h 2007-09-09 20:57:49 UTC (rev 6801)
+++ branches/THRCHECK/include/pub_tool_stacktrace.h 2007-09-09 21:22:48 UTC (rev 6802)
@@ -37,8 +37,11 @@
// Walks the stack to get instruction pointers from the top stack frames for
// thread 'tid'. Maximum of 'n_ips' addresses put into 'ips'; 0 is the top
// of the stack, 1 is its caller, etc. Everything from ips[n_ips] onwards
-// is undefined and should not be read.
-extern UInt VG_(get_StackTrace) ( ThreadId tid, StackTrace ips, UInt n_ips );
+// is undefined and should not be read. The initial IP value to
+// use is adjusted by first_ip_delta before the stack is unwound.
+// A safe value to pass is zero.
+extern UInt VG_(get_StackTrace) ( ThreadId tid, StackTrace ips, UInt n_ips,
+ Word first_ip_delta );
// Apply a function to every element in the StackTrace. The parameter 'n'
// gives the index of the passed ip. Doesn't go below main() unless
Modified: branches/THRCHECK/memcheck/mc_main.c
===================================================================
--- branches/THRCHECK/memcheck/mc_main.c 2007-09-09 20:57:49 UTC (rev 6801)
+++ branches/THRCHECK/memcheck/mc_main.c 2007-09-09 21:22:48 UTC (rev 6802)
@@ -4659,7 +4659,7 @@
cgbs[i].start = arg[1];
cgbs[i].size = arg[2];
cgbs[i].desc = VG_(strdup)((Char *)arg[3]);
- cgbs[i].where = VG_(record_ExeContext) ( tid );
+ cgbs[i].where = VG_(record_ExeContext) ( tid, 0/*first_ip_delta*/ );
*ret = i;
} else
Modified: branches/THRCHECK/memcheck/mc_malloc_wrappers.c
===================================================================
--- branches/THRCHECK/memcheck/mc_malloc_wrappers.c 2007-09-09 20:57:49 UTC (rev 6801)
+++ branches/THRCHECK/memcheck/mc_malloc_wrappers.c 2007-09-09 21:22:48 UTC (rev 6802)
@@ -131,7 +131,7 @@
mc->data = p;
mc->szB = szB;
mc->allockind = kind;
- mc->where = VG_(record_ExeContext)(tid);
+ mc->where = VG_(record_ExeContext)(tid, 0/*first_ip_delta*/);
/* Paranoia ... ensure the MC_Chunk is off-limits to the client, so
the mc->data field isn't visible to the leak checker. If memory
@@ -268,7 +268,7 @@
/* Put it out of harm's way for a while, if not from a client request */
if (MC_AllocCustom != mc->allockind) {
/* Record where freed */
- mc->where = VG_(record_ExeContext) ( tid );
+ mc->where = VG_(record_ExeContext) ( tid, 0/*first_ip_delta*/ );
add_to_freed_queue ( mc );
} else {
VG_(free) ( mc );
@@ -346,14 +346,14 @@
if (old_szB == new_szB) {
/* size unchanged */
- mc->where = VG_(record_ExeContext)(tid);
+ mc->where = VG_(record_ExeContext)(tid, 0/*first_ip_delta*/);
p_new = p_old;
} else if (old_szB > new_szB) {
/* new size is smaller */
MC_(make_mem_noaccess)( mc->data+new_szB, mc->szB-new_szB );
mc->szB = new_szB;
- mc->where = VG_(record_ExeContext)(tid);
+ mc->where = VG_(record_ExeContext)(tid, 0/*first_ip_delta*/);
p_new = p_old;
} else {
|
|
From: <sv...@va...> - 2007-09-09 20:57:47
|
Author: sewardj Date: 2007-09-09 21:57:49 +0100 (Sun, 09 Sep 2007) New Revision: 6801 Log: More boilerplate. Added: branches/THRCHECK/thrcheck/docs/ branches/THRCHECK/thrcheck/docs/Makefile.am branches/THRCHECK/thrcheck/tests/ branches/THRCHECK/thrcheck/tests/Makefile.am Added: branches/THRCHECK/thrcheck/docs/Makefile.am =================================================================== --- branches/THRCHECK/thrcheck/docs/Makefile.am (rev 0) +++ branches/THRCHECK/thrcheck/docs/Makefile.am 2007-09-09 20:57:49 UTC (rev 6801) @@ -0,0 +1 @@ +EXTRA_DIST = tc-manual.xml Added: branches/THRCHECK/thrcheck/tests/Makefile.am =================================================================== --- branches/THRCHECK/thrcheck/tests/Makefile.am (rev 0) +++ branches/THRCHECK/thrcheck/tests/Makefile.am 2007-09-09 20:57:49 UTC (rev 6801) @@ -0,0 +1,34 @@ + +# FIXME: this is completely bogus (a copy of Helgrind's one) + +# For AM_FLAG_M3264_PRI +include $(top_srcdir)/Makefile.flags.am + +noinst_SCRIPTS = filter_stderr + +EXTRA_DIST = $(noinst_SCRIPTS) \ + allok.stderr.exp allok.vgtest \ + deadlock.stderr.exp deadlock.vgtest \ + inherit.stderr.exp inherit.vgtest \ + race.stderr.exp race.vgtest \ + race2.stderr.exp race2.vgtest \ + readshared.stderr.exp readshared.vgtest \ + toobig-allocs.stderr.exp toobig-allocs.vgtest + +check_PROGRAMS = \ + allok deadlock inherit race race2 readshared + +# force -gstabs, because we don't print symaddr for DWARF yet +# Sigh, gcc-3.4.3 on ppc64 generates bogus .stabs. So disable it +# for now on ppc64-linux. +if VGP_PPC64_LINUX +AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g $(AM_FLAG_M3264_PRI) +else + +# In fact -gstabs is broken on many systems now +#AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -gstabs $(AM_FLAG_M3264_PRI) +AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g $(AM_FLAG_M3264_PRI) + +endif + +LDADD = -lpthread |
|
From: <sv...@va...> - 2007-09-09 20:24:00
|
Author: sewardj Date: 2007-09-09 21:24:00 +0100 (Sun, 09 Sep 2007) New Revision: 6800 Log: New tool directory. Added: branches/THRCHECK/thrcheck/ |
|
From: <sv...@va...> - 2007-09-09 19:43:47
|
Author: sewardj Date: 2007-09-09 20:43:32 +0100 (Sun, 09 Sep 2007) New Revision: 6799 Log: A copy of trunk r6798, for Thrcheck hackery. Added: branches/THRCHECK/ Copied: branches/THRCHECK (from rev 6798, trunk) Property changes on: branches/THRCHECK ___________________________________________________________________ Name: svn:ignore + acinclude.m4 aclocal.m4 autom4te-*.cache autom4te.cache bin cachegrind cachegrind.out.* compile config.guess config.h* config.log config.status config.sub configure default.supp depcomp include .in_place install-sh lib Makefile Makefile.in missing mkinstalldirs share stamp-h* svn-commit.tmp svn-commit.2.tmp valgrind valgrind.pc valgrind.spec valt_load_address*.lds vg_annotate vg_cachegen Name: svn:externals + VEX svn://svn.valgrind.org/vex/branches/THRCHECK |
|
From: <sv...@va...> - 2007-09-09 19:38:52
|
Author: sewardj Date: 2007-09-09 20:38:48 +0100 (Sun, 09 Sep 2007) New Revision: 1788 Log: A copy of trunk r1787, for Thrcheck hackery. Added: branches/THRCHECK/ Copied: branches/THRCHECK (from rev 1787, trunk) |
|
From: <js...@ac...> - 2007-09-09 12:27:50
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2007-09-09 09:00:01 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 220 tests, 10 stderr failures, 6 stdout failures, 0 posttest failures == memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-fp (stderr) none/tests/ppc32/round (stdout) none/tests/ppc32/round (stderr) none/tests/ppc32/test_fx (stdout) none/tests/ppc32/test_fx (stderr) none/tests/ppc32/test_gx (stdout) |
|
From: Tom H. <th...@cy...> - 2007-09-09 02:31:08
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-09-09 03:15:02 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 256 tests, 27 stderr failures, 1 stdout failure, 0 posttest 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/match-overrun (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2007-09-09 02:23:25
|
Nightly build on dellow ( x86_64, Fedora 7 ) started at 2007-09-09 03:10:02 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 293 tests, 4 stderr failures, 3 stdout failures, 0 posttest failures == 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) |
|
From: Tom H. <th...@cy...> - 2007-09-09 02:17:21
|
Nightly build on lloyd ( x86_64, Fedora Core 3 ) started at 2007-09-09 03:05:04 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 293 tests, 6 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2007-09-09 02:11:07
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-09-09 03:00:02 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 295 tests, 6 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: <js...@ac...> - 2007-09-09 00:16:33
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-09-09 02:00:01 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 228 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |