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
(32) |
2
(22) |
3
(47) |
4
(29) |
5
(18) |
6
(16) |
|
7
(21) |
8
(29) |
9
(23) |
10
(68) |
11
(20) |
12
(17) |
13
(17) |
|
14
(27) |
15
(26) |
16
(21) |
17
(13) |
18
(19) |
19
(29) |
20
(13) |
|
21
(9) |
22
(8) |
23
(29) |
24
(56) |
25
(21) |
26
(46) |
27
(33) |
|
28
(25) |
29
(41) |
30
(35) |
31
(28) |
|
|
|
|
From: <sv...@va...> - 2005-08-19 20:23:50
|
Author: dirk
Date: 2005-08-19 21:23:49 +0100 (Fri, 19 Aug 2005)
New Revision: 4468
Log:
make it work for SL10
Modified:
trunk/glibc-2.3.supp
Modified: trunk/glibc-2.3.supp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/glibc-2.3.supp 2005-08-19 20:23:27 UTC (rev 4467)
+++ trunk/glibc-2.3.supp 2005-08-19 20:23:49 UTC (rev 4468)
@@ -449,7 +449,7 @@
index-not-intercepted-early-enough-HACK-1
Memcheck:Cond
fun:index
- fun:expand_dynamic_string_token
+ obj:*
fun:_dl_map_object
}
{
@@ -457,7 +457,7 @@
Memcheck:Cond
fun:index
fun:_dl_map_object
- fun:map_doit
+ obj:*
fun:_dl_catch_error
}
{
@@ -465,6 +465,6 @@
Memcheck:Cond
fun:index
fun:_dl_map_object
- fun:dl_main
+ obj:*
fun:_dl_sysdep_start
}
|
|
From: <sv...@va...> - 2005-08-19 20:23:30
|
Author: dirk Date: 2005-08-19 21:23:27 +0100 (Fri, 19 Aug 2005) New Revision: 4467 Log: fix compilation Modified: branches/VALGRIND_3_0_BRANCH/none/tests/mq.c Modified: branches/VALGRIND_3_0_BRANCH/none/tests/mq.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/VALGRIND_3_0_BRANCH/none/tests/mq.c 2005-08-19 20:23:12 UTC = (rev 4466) +++ branches/VALGRIND_3_0_BRANCH/none/tests/mq.c 2005-08-19 20:23:27 UTC = (rev 4467) @@ -3,6 +3,8 @@ #include <stdlib.h> #include <string.h> =20 +#include <errno.h> + #ifdef HAVE_MQUEUE_H =20 #include <mqueue.h> |
|
From: <sv...@va...> - 2005-08-19 20:23:14
|
Author: dirk
Date: 2005-08-19 21:23:12 +0100 (Fri, 19 Aug 2005)
New Revision: 4466
Log:
make it work for SL10
Modified:
branches/VALGRIND_3_0_BRANCH/glibc-2.3.supp
Modified: branches/VALGRIND_3_0_BRANCH/glibc-2.3.supp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VALGRIND_3_0_BRANCH/glibc-2.3.supp 2005-08-19 20:23:05 UTC (=
rev 4465)
+++ branches/VALGRIND_3_0_BRANCH/glibc-2.3.supp 2005-08-19 20:23:12 UTC (=
rev 4466)
@@ -449,7 +449,7 @@
index-not-intercepted-early-enough-HACK-1
Memcheck:Cond
fun:index
- fun:expand_dynamic_string_token
+ obj:*
fun:_dl_map_object
}
{
@@ -457,7 +457,7 @@
Memcheck:Cond
fun:index
fun:_dl_map_object
- fun:map_doit
+ obj:*
fun:_dl_catch_error
}
{
@@ -465,6 +465,6 @@
Memcheck:Cond
fun:index
fun:_dl_map_object
- fun:dl_main
+ obj:*
fun:_dl_sysdep_start
}
|
|
From: <sv...@va...> - 2005-08-19 20:23:10
|
Author: sewardj
Date: 2005-08-19 21:23:05 +0100 (Fri, 19 Aug 2005)
New Revision: 4465
Log:
rm now-redundant macros.
Modified:
trunk/coregrind/m_stacktrace.c
Modified: trunk/coregrind/m_stacktrace.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_stacktrace.c 2005-08-19 16:02:59 UTC (rev 4464)
+++ trunk/coregrind/m_stacktrace.c 2005-08-19 20:23:05 UTC (rev 4465)
@@ -45,23 +45,6 @@
/*--- Exported functions. ---*/
/*------------------------------------------------------------*/
=20
-// Stack frame layout and linkage
-#if defined(VGP_x86_linux)
-# define FIRST_STACK_FRAME(ebp) (ebp)
-# define STACK_FRAME_RET(ebp) (((UWord*)ebp)[1])
-# define STACK_FRAME_NEXT(ebp) (((UWord*)ebp)[0])
-#elif defined(VGP_amd64_linux)
-# define FIRST_STACK_FRAME(rbp) (rbp)
-# define STACK_FRAME_RET(rbp) (((UWord*)rbp)[1])
-# define STACK_FRAME_NEXT(rbp) (((UWord*)rbp)[0])
-#elif defined(VGP_ppc32_linux)
-# define FIRST_STACK_FRAME(sp) (((UWord*)(sp))[0])
-# define STACK_FRAME_RET(sp) (((UWord*)(sp))[1])
-# define STACK_FRAME_NEXT(sp) (((UWord*)(sp))[0])
-#else
-# error Unknown platform
-#endif
-
/* Take a snapshot of the client's stack, putting the up to 'n_ips'
IPs into 'ips'. In order to be thread-safe, we pass in the
thread's IP SP, FP if that's meaningful, and LR if that's
|
|
From: Julian S. <js...@ac...> - 2005-08-19 20:03:21
|
> Could you tell me the reasons (technical) this work is far from complete > and currently disabled? Supporting a new architecture is a lot of work, not just in the initial development, but also in terms of long-term maintenance and support. When you say "ARM platform", what do you mean, exactly? It is not just the ARM cpu that is important; also the OS/environment makes a big difference. J |
|
From: Carlos A. <car...@in...> - 2005-08-19 17:34:17
|
Tom Hughes wrote: >In message <430...@in...> > Carlos Aguiar <car...@in...> wrote: > > > >>I would like to know if there is any ongoing project to create a version >>of Valgrind to ARM plataform. >> >> > >Not that I know of. Some initial work was done but it is far from >complete and is currently disabled. > >Tom > > > Hi Tom, Could you tell me the reasons (technical) this work is far from complete and currently disabled? BR, Carlos. -- Carlos Eduardo Software Engineer Nokia Institute of Technology - INdT Embedded Linux Laboratory - 10LE Phone: +55 92 2126-1079 Mobile: +55 92 8127-1797 E-mail: car...@in... |
|
From: Tom H. <to...@co...> - 2005-08-19 16:37:32
|
In message <430...@in...>
Carlos Aguiar <car...@in...> wrote:
> I would like to know if there is any ongoing project to create a version
> of Valgrind to ARM plataform.
Not that I know of. Some initial work was done but it is far from
complete and is currently disabled.
Tom
--
Tom Hughes (to...@co...)
http://www.compton.nu/
|
|
From: Carlos A. <car...@in...> - 2005-08-19 16:34:14
|
Hello all, I would like to know if there is any ongoing project to create a version of Valgrind to ARM plataform. BR, Carlos. -- Carlos Eduardo Software Engineer Nokia Institute of Technology - INdT Embedded Linux Laboratory - 10LE Phone: +55 92 2126-1079 Mobile: +55 92 8127-1797 E-mail: car...@in... |
|
From: <sv...@va...> - 2005-08-19 16:03:03
|
Author: sewardj
Date: 2005-08-19 17:02:59 +0100 (Fri, 19 Aug 2005)
New Revision: 4464
Log:
Incorporate a patch from Craig Chaney which gives better stack
snapshots on ppc32-linux in the presence of functions subject to
leaf-function optimisations.
At the same time, simplify the stack unwinding logic by basically
implementing it separately for each target. Having a single piece of
logic for amd64 and x86 was tenable, but merging ppc32 into it is too
confusing. So now there is an x86/amd64 unwinder and a ppc32
unwinder.
This requires plumbing a link-register value into
VG_(get_StackTrace2), and that in turn requires passing it around
several other stack-trace-related functions. Hence 7 changed files.
Modified:
trunk/coregrind/m_libcassert.c
trunk/coregrind/m_machine.c
trunk/coregrind/m_signals.c
trunk/coregrind/m_stacktrace.c
trunk/coregrind/pub_core_libcassert.h
trunk/coregrind/pub_core_stacktrace.h
trunk/include/pub_tool_machine.h
Modified: trunk/coregrind/m_libcassert.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_libcassert.c 2005-08-19 10:07:29 UTC (rev 4463)
+++ trunk/coregrind/m_libcassert.c 2005-08-19 16:02:59 UTC (rev 4464)
@@ -94,7 +94,8 @@
}
=20
__attribute__ ((noreturn))
-static void report_and_quit ( const Char* report, Addr ip, Addr sp, Addr=
fp )
+static void report_and_quit ( const Char* report,=20
+ Addr ip, Addr sp, Addr fp, Addr lr )
{
Addr stacktop;
Addr ips[BACKTRACE_DEPTH];
@@ -111,7 +112,7 @@
stacktop =3D tst->os_state.valgrind_stack_base +=20
tst->os_state.valgrind_stack_szB;
=20
- VG_(get_StackTrace2)(ips, BACKTRACE_DEPTH, ip, sp, fp, sp, stacktop);
+ VG_(get_StackTrace2)(ips, BACKTRACE_DEPTH, ip, sp, fp, lr, sp, stackt=
op);
VG_(pp_StackTrace) (ips, BACKTRACE_DEPTH);
=20
// Don't print this, as it's not terribly interesting and avoids a
@@ -166,30 +167,30 @@
if (!VG_STREQ(buf, ""))
VG_(printf)("%s: %s\n", component, buf );
=20
- report_and_quit(bugs_to, 0,0,0);
+ report_and_quit(bugs_to, 0,0,0,0);
}
=20
__attribute__ ((noreturn))
static void panic ( Char* name, Char* report, Char* str,
- Addr ip, Addr sp, Addr fp )
+ Addr ip, Addr sp, Addr fp, Addr lr )
{
VG_(printf)("\n%s: the 'impossible' happened:\n %s\n", name, str);
- report_and_quit(report, ip, sp, fp);
+ report_and_quit(report, ip, sp, fp, lr);
}
=20
-void VG_(core_panic_at) ( Char* str, Addr ip, Addr sp, Addr fp )
+void VG_(core_panic_at) ( Char* str, Addr ip, Addr sp, Addr fp, Addr lr =
)
{
- panic("valgrind", VG_BUGS_TO, str, ip, sp, fp);
+ panic("valgrind", VG_BUGS_TO, str, ip, sp, fp, lr);
}
=20
void VG_(core_panic) ( Char* str )
{
- VG_(core_panic_at)(str, 0,0,0);
+ VG_(core_panic_at)(str, 0,0,0,0);
}
=20
void VG_(tool_panic) ( Char* str )
{
- panic(VG_(details).name, VG_(details).bug_reports_to, str, 0,0,0);
+ panic(VG_(details).name, VG_(details).bug_reports_to, str, 0,0,0,0);
}
=20
/* Print some helpful-ish text about unimplemented things, and give up. =
*/
Modified: trunk/coregrind/m_machine.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_machine.c 2005-08-19 10:07:29 UTC (rev 4463)
+++ trunk/coregrind/m_machine.c 2005-08-19 16:02:59 UTC (rev 4464)
@@ -53,6 +53,17 @@
return FRAME_PTR( VG_(threads)[tid].arch );
}
=20
+Addr VG_(get_LR) ( ThreadId tid )
+{
+# if defined(VGA_ppc32)
+ return VG_(threads)[tid].arch.vex.guest_LR;
+# elif defined(VGA_x86) || defined(VGA_amd64)
+ return 0;
+# else
+# error "Unknown arch"
+# endif
+}
+
void VG_(set_SP) ( ThreadId tid, Addr sp )
{
STACK_PTR( VG_(threads)[tid].arch ) =3D sp;
Modified: trunk/coregrind/m_signals.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_signals.c 2005-08-19 10:07:29 UTC (rev 4463)
+++ trunk/coregrind/m_signals.c 2005-08-19 16:02:59 UTC (rev 4464)
@@ -134,28 +134,31 @@
# define VG_UCONTEXT_STACK_PTR(uc) ((uc)->uc_mcontext.esp)
# define VG_UCONTEXT_FRAME_PTR(uc) ((uc)->uc_mcontext.ebp)
# define VG_UCONTEXT_SYSCALL_NUM(uc) ((uc)->uc_mcontext.eax)
-# define VG_UCONTEXT_SYSCALL_SYSRES(uc) \
+# define VG_UCONTEXT_SYSCALL_SYSRES(uc) \
/* Convert the value in uc_mcontext.eax into a SysRes. */ \
VG_(mk_SysRes_x86_linux)( (uc)->uc_mcontext.eax )
+# define VG_UCONTEXT_LINK_REG(uc) 0 /* Dude, where's my LR? */
=20
#elif defined(VGP_amd64_linux)
# define VG_UCONTEXT_INSTR_PTR(uc) ((uc)->uc_mcontext.rip)
# define VG_UCONTEXT_STACK_PTR(uc) ((uc)->uc_mcontext.rsp)
# define VG_UCONTEXT_FRAME_PTR(uc) ((uc)->uc_mcontext.rbp)
# define VG_UCONTEXT_SYSCALL_NUM(uc) ((uc)->uc_mcontext.rax)
-# define VG_UCONTEXT_SYSCALL_SYSRES(uc) \
+# define VG_UCONTEXT_SYSCALL_SYSRES(uc) \
/* Convert the value in uc_mcontext.rax into a SysRes. */ \
VG_(mk_SysRes_amd64_linux)( (uc)->uc_mcontext.rax )
+# define VG_UCONTEXT_LINK_REG(uc) 0 /* No LR on amd64 either */
=20
#elif defined(VGP_ppc32_linux)
# define VG_UCONTEXT_INSTR_PTR(uc) ((uc)->uc_mcontext.mc_gregs[VK=
I_PT_NIP])
# define VG_UCONTEXT_STACK_PTR(uc) ((uc)->uc_mcontext.mc_gregs[1]=
)
# define VG_UCONTEXT_FRAME_PTR(uc) ((uc)->uc_mcontext.mc_gregs[1]=
)
# define VG_UCONTEXT_SYSCALL_NUM(uc) ((uc)->uc_mcontext.mc_gregs[0]=
)
-# define VG_UCONTEXT_SYSCALL_SYSRES(uc) =
\
+# define VG_UCONTEXT_SYSCALL_SYSRES(uc) =
\
/* Convert the values in uc_mcontext r3,cr into a SysRes. */ =
\
VG_(mk_SysRes_ppc32_linux)( (uc)->uc_mcontext.mc_gregs[3], =
\
(uc)->uc_mcontext.mc_gregs[VKI_PT_CCR] )
+# define VG_UCONTEXT_LINK_REG(uc) ((uc)->uc_mcontext.mc_gregs[VK=
I_PT_LNK])=20
=20
#else
# error Unknown platform
@@ -1966,7 +1969,8 @@
VG_(core_panic_at)("Killed by fatal signal",
VG_UCONTEXT_INSTR_PTR(uc),
VG_UCONTEXT_STACK_PTR(uc),
- VG_UCONTEXT_FRAME_PTR(uc));
+ VG_UCONTEXT_FRAME_PTR(uc),
+ VG_UCONTEXT_LINK_REG(uc));
}
}
=20
Modified: trunk/coregrind/m_stacktrace.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_stacktrace.c 2005-08-19 10:07:29 UTC (rev 4463)
+++ trunk/coregrind/m_stacktrace.c 2005-08-19 16:02:59 UTC (rev 4464)
@@ -62,30 +62,33 @@
# error Unknown platform
#endif
=20
-/* Take a snapshot of the client's stack, putting the up to 'n_ips' IPs=20
- into 'ips'. In order to be thread-safe, we pass in the thread's IP
- and FP. Returns number of IPs put in 'ips'. */
+/* Take a snapshot of the client's stack, putting the up to 'n_ips'
+ IPs into 'ips'. In order to be thread-safe, we pass in the
+ thread's IP SP, FP if that's meaningful, and LR if that's
+ meaningful. Returns number of IPs put in 'ips'.
+*/
UInt VG_(get_StackTrace2) ( Addr* ips, UInt n_ips,=20
- Addr ip, Addr sp, Addr fp,
+ Addr ip, Addr sp, Addr fp, Addr lr,
Addr fp_min, Addr fp_max_orig )
{
- static const Bool debug =3D False;
- Int i;
- Addr fp_max;
- UInt n_found =3D 0;
+ Bool lr_is_first_RA =3D False; /* ppc only */
+ Bool debug =3D False;
+ Int i;
+ Addr fp_max;
+ UInt n_found =3D 0;
=20
VGP_PUSHCC(VgpExeContext);
=20
- /* First snaffle IPs from the client's stack into ips[0 .. n_ips-1],=20
- putting zeroes in when the trail goes cold, which we guess to be w=
hen
- FP is not a reasonable stack location. We also assert that FP
- increases down the chain. */
+ vg_assert(sizeof(Addr) =3D=3D sizeof(UWord));
+ vg_assert(sizeof(Addr) =3D=3D sizeof(void*));
=20
- // Gives shorter stack trace for tests/badjump.c
- // JRS 2002-aug-16: I don't think this is a big deal; looks ok for
- // most "normal" backtraces.
- // NJN 2002-sep-05: traces for pthreaded programs are particularly ba=
d.
+ /* Snaffle IPs from the client's stack into ips[0 .. n_ips-1],
+ putting zeroes in when the trail goes cold, which we guess to be
+ when FP is not a reasonable stack location. */
=20
+ for (i =3D 0; i < n_ips; i++)
+ ips[i] =3D 0;
+
// JRS 2002-sep-17: hack, to round up fp_max to the end of the
// current page, at least. Dunno if it helps.
// NJN 2002-sep-17: seems to -- stack traces look like 1.0.X again
@@ -100,68 +103,124 @@
* offending stack traces only have one item. --njn, 2002-aug-16 */
/* vg_assert(fp_min <=3D fp_max);*/
=20
- ips[0] =3D ip;
- i =3D 1;
-
if (fp_min + VG_(clo_max_stackframe) <=3D fp_max) {
/* If the stack is ridiculously big, don't poke around ... but
don't bomb out either. Needed to make John Regehr's
user-space threads package work. JRS 20021001 */
- } else {
+ ips[0] =3D ip;
+ VGP_POPCC(VgpExeContext);
+ return 1;
+ }=20
=20
- fp =3D FIRST_STACK_FRAME(fp);
+ /* Otherwise unwind the stack in a platform-specific way. Trying
+ to merge the x86, amd64 and ppc32 logic into a single piece of
+ code is just too confusing. */
=20
- while (True) {
+ /*--------------------- x86 and amd64 ---------------------*/
=20
- if (i >=3D n_ips)
- break;
+# if defined(VGP_x86_linux) || defined(VGP_amd64_linux)
=20
- /* Try to derive a new (ip,sp,fp) triple from the current
- set. */
+ /* fp is %ebp/%rbp. sp is %esp/%rsp. ip is %eip/%rip. */
=20
- /* First off, see if there is any CFI info to hand which can
- be used. */
- if ( VG_(use_CFI_info)( &ip, &sp, &fp, fp_min, fp_max ) ) {
- ips[i++] =3D ip;
- if (debug)
- VG_(printf)(" ipsC[%d]=3D%08p\n", i-1, ips[i-1]);
- continue;
- }
+ ips[0] =3D ip;
+ i =3D 1;
=20
- /* If VG_(use_CFI_info) fails, it won't modify ip/sp/fp, so
- we can safely try the old-fashioned method. */
- /* This bit is supposed to deal with frames resulting from
- functions which begin "pushl% ebp ; movl %esp, %ebp" (x86)
- or "pushq %rbp ; movq %rsp, %rbp" (amd64). Unfortunately,
- since we can't (easily) look at the insns at the start of
- the fn, like GDB does, there's no reliable way to tell.
- Hence the hack of first trying out CFI, and if that fails,
- then use this as a fallback. */
- if (fp_min <=3D fp && fp <=3D fp_max) {
- /* fp looks sane, so use it. */
- ip =3D STACK_FRAME_RET(fp);
- sp =3D fp + sizeof(Addr) /*saved %ebp/%rbp*/=20
- + sizeof(Addr) /*ra*/;
- fp =3D STACK_FRAME_NEXT(fp);
- ips[i++] =3D ip;
- if (debug)
- VG_(printf)(" ipsF[%d]=3D%08p\n", i-1, ips[i-1]);
- continue;
- }
+ while (True) {
=20
- /* No luck there. We have to give up. */
+ if (i >=3D n_ips)
break;
+
+ /* Try to derive a new (ip,sp,fp) triple from the current
+ set. */
+
+ /* First off, see if there is any CFI info to hand which can
+ be used. */
+ if ( VG_(use_CFI_info)( &ip, &sp, &fp, fp_min, fp_max ) ) {
+ ips[i++] =3D ip;
+ if (debug)
+ VG_(printf)(" ipsC[%d]=3D%08p\n", i-1, ips[i-1]);
+ continue;
}
=20
+ /* If VG_(use_CFI_info) fails, it won't modify ip/sp/fp, so
+ we can safely try the old-fashioned method. */
+ /* This bit is supposed to deal with frames resulting from
+ functions which begin "pushl% ebp ; movl %esp, %ebp" (x86)
+ or "pushq %rbp ; movq %rsp, %rbp" (amd64). Unfortunately,
+ since we can't (easily) look at the insns at the start of
+ the fn, like GDB does, there's no reliable way to tell.
+ Hence the hack of first trying out CFI, and if that fails,
+ then use this as a fallback. */
+ if (fp_min <=3D fp && fp <=3D fp_max) {
+ /* fp looks sane, so use it. */
+ ip =3D (((UWord*)fp)[1]);
+ sp =3D fp + sizeof(Addr) /*saved %ebp/%rbp*/=20
+ + sizeof(Addr) /*ra*/;
+ fp =3D (((UWord*)fp)[0]);
+ ips[i++] =3D ip;
+ if (debug)
+ VG_(printf)(" ipsF[%d]=3D%08p\n", i-1, ips[i-1]);
+ continue;
+ }
+
+ /* No luck there. We have to give up. */
+ break;
}
- n_found =3D i;
=20
- /* Put zeroes in the rest. */
- for (; i < n_ips; i++) {
- ips[i] =3D 0;
+ /*--------------------- ppc32 ---------------------*/
+
+# elif defined(VGP_ppc32_linux)
+
+ /* fp is %r1. ip is %cia. Note, ppc uses r1 as both the stack and
+ frame pointers. */
+
+ lr_is_first_RA =3D False;
+ {
+# define M_VG_ERRTXT 1000
+ UChar buf_lr[M_VG_ERRTXT], buf_ip[M_VG_ERRTXT];
+ if (VG_(get_fnname_nodemangle) (lr, buf_lr, M_VG_ERRTXT))
+ if (VG_(get_fnname_nodemangle) (ip, buf_ip, M_VG_ERRTXT))
+ if (VG_(strncmp)(buf_lr, buf_ip, M_VG_ERRTXT))
+ lr_is_first_RA =3D True;
+# undef M_VG_ERRTXT
}
+
+ ips[0] =3D ip;
+ i =3D 1;
+ fp =3D (((UWord*)fp)[0]);
+
+ while (True) {
+
+ if (i >=3D n_ips)
+ break;
+
+ /* Try to derive a new (ip,fp) pair from the current set. */
+
+ if (fp_min <=3D fp && fp <=3D fp_max) {
+ /* fp looks sane, so use it. */
+
+ if (i =3D=3D 1 && lr_is_first_RA)
+ ip =3D lr;
+ else
+ ip =3D (((UWord*)fp)[1]);
+
+ fp =3D (((UWord*)fp)[0]);
+ ips[i++] =3D ip;
+ if (debug)
+ VG_(printf)(" ipsF[%d]=3D%08p\n", i-1, ips[i-1]);
+ continue;
+ }
+
+ /* No luck there. We have to give up. */
+ break;
+ }
+
+# else
+# error "Unknown platform"
+# endif
+
+ n_found =3D i;
VGP_POPCC(VgpExeContext);
-
return n_found;
}
=20
@@ -171,6 +230,7 @@
Addr ip =3D VG_(get_IP)(tid);
Addr fp =3D VG_(get_FP)(tid);
Addr sp =3D VG_(get_SP)(tid);
+ Addr lr =3D VG_(get_LR)(tid);
Addr stack_highest_word =3D VG_(threads)[tid].client_stack_highest_wo=
rd;
=20
# if defined(VGP_x86_linux)
@@ -194,7 +254,7 @@
VG_(printf)("tid %d: stack_highest=3D%p ip=3D%p sp=3D%p fp=3D%p\n"=
,
tid, stack_highest_word, ip, sp, fp);
=20
- return VG_(get_StackTrace2)(ips, n_ips, ip, sp, fp, sp, stack_highest=
_word);
+ return VG_(get_StackTrace2)(ips, n_ips, ip, sp, fp, lr, sp, stack_hig=
hest_word);
}
=20
static void printIpDesc(UInt n, Addr ip)
Modified: trunk/coregrind/pub_core_libcassert.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/pub_core_libcassert.h 2005-08-19 10:07:29 UTC (rev 44=
63)
+++ trunk/coregrind/pub_core_libcassert.h 2005-08-19 16:02:59 UTC (rev 44=
64)
@@ -63,7 +63,8 @@
__attribute__ ((__noreturn__))
extern void VG_(core_panic) ( Char* str );
__attribute__ ((__noreturn__))
-extern void VG_(core_panic_at) ( Char* str, Addr ip, Addr sp, Addr fp=
);
+extern void VG_(core_panic_at) ( Char* str,=20
+ Addr ip, Addr sp, Addr fp, Addr lr )=
;
=20
/* Called when some unhandleable client behaviour is detected.
Prints a msg and aborts. */
Modified: trunk/coregrind/pub_core_stacktrace.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/pub_core_stacktrace.h 2005-08-19 10:07:29 UTC (rev 44=
63)
+++ trunk/coregrind/pub_core_stacktrace.h 2005-08-19 16:02:59 UTC (rev 44=
64)
@@ -40,7 +40,7 @@
=20
// Variant that gives a little more control over the stack-walking.
extern UInt VG_(get_StackTrace2) ( StackTrace ips, UInt n_ips,=20
- Addr ip, Addr sp, Addr fp,=20
+ Addr ip, Addr sp, Addr fp, Addr lr,
Addr fp_min, Addr fp_max );
=20
#endif // __PUB_CORE_STACKTRACE_H
Modified: trunk/include/pub_tool_machine.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/include/pub_tool_machine.h 2005-08-19 10:07:29 UTC (rev 4463)
+++ trunk/include/pub_tool_machine.h 2005-08-19 16:02:59 UTC (rev 4464)
@@ -53,6 +53,7 @@
extern Addr VG_(get_SP) ( ThreadId tid );
extern Addr VG_(get_IP) ( ThreadId tid );
extern Addr VG_(get_FP) ( ThreadId tid );
+extern Addr VG_(get_LR) ( ThreadId tid );
=20
extern void VG_(set_SP) ( ThreadId tid, Addr sp );
extern void VG_(set_IP) ( ThreadId tid, Addr ip );
|
|
From: <sv...@va...> - 2005-08-19 10:07:32
|
Author: sewardj
Date: 2005-08-19 11:07:29 +0100 (Fri, 19 Aug 2005)
New Revision: 4463
Log:
Enable a few more syscalls on ppc32-linux.
Modified:
trunk/coregrind/m_syswrap/syswrap-generic.c
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
trunk/coregrind/vki_unistd-ppc32-linux.h
Modified: trunk/coregrind/m_syswrap/syswrap-generic.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-generic.c 2005-08-19 09:07:34 UTC (=
rev 4462)
+++ trunk/coregrind/m_syswrap/syswrap-generic.c 2005-08-19 10:07:29 UTC (=
rev 4463)
@@ -5409,7 +5409,7 @@
// XXX: This syscall is not used on amd64 -- it only provides
// sys_rt_sigprocmask, which uses sigset_t rather than old_sigset_t=
.
// This wrapper is only suitable for 32-bit architectures.
-#if defined(VGP_x86_linux)
+#if defined(VGP_x86_linux) || defined(VGP_ppc32_linux)
PRE(sys_sigprocmask)
{
vki_old_sigset_t* set;
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2005-08-19 09:07:34 U=
TC (rev 4462)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2005-08-19 10:07:29 U=
TC (rev 4463)
@@ -1990,7 +1990,7 @@
//..=20
//.. // (__NR_stime, sys_stime), // 25 * (S=
Vr4,SVID,X/OPEN)
//.. PLAXY(__NR_ptrace, sys_ptrace), // 26
-//.. GENX_(__NR_alarm, sys_alarm), // 27
+ GENX_(__NR_alarm, sys_alarm), // 27
//.. // (__NR_oldfstat, sys_fstat), // 28 * L =
-- obsolete
GENX_(__NR_pause, sys_pause), // 29
//..=20
@@ -2109,7 +2109,7 @@
//.. LINXY(__NR_adjtimex, sys_adjtimex), // 124
//..=20
GENXY(__NR_mprotect, sys_mprotect), // 125
-//.. GENXY(__NR_sigprocmask, sys_sigprocmask), // 126
+ GENXY(__NR_sigprocmask, sys_sigprocmask), // 126
//.. // Nb: create_module() was removed 2.4-->2.6
//.. GENX_(__NR_create_module, sys_ni_syscall), // 127
//.. GENX_(__NR_init_module, sys_init_module), // 128
@@ -2183,7 +2183,7 @@
//.. GENXY(__NR_capget, sys_capget), // 183
//..=20
//.. GENX_(__NR_capset, sys_capset), // 184
-//.. GENXY(__NR_sigaltstack, sys_sigaltstack), // 185
+ GENXY(__NR_sigaltstack, sys_sigaltstack), // 185
//.. LINXY(__NR_sendfile, sys_sendfile), // 186
//.. GENXY(__NR_getpmsg, sys_getpmsg), // 187
//.. GENX_(__NR_putpmsg, sys_putpmsg), // 188
@@ -2211,7 +2211,7 @@
GENXY(__NR_fcntl64, sys_fcntl64), // 204
//.. GENX_(__NR_madvise, sys_madvise), // 205
//.. GENXY(__NR_mincore, sys_mincore), // 206
-//.. LINX_(__NR_gettid, sys_gettid), // 207
+ LINX_(__NR_gettid, sys_gettid), // 207
//.. LINX_(__NR_tkill, sys_tkill), // 208 */L=
inux
//.. GENX_(__NR_setxattr, sys_setxattr), // 209
//.. GENX_(__NR_lsetxattr, sys_lsetxattr), // 210
Modified: trunk/coregrind/vki_unistd-ppc32-linux.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vki_unistd-ppc32-linux.h 2005-08-19 09:07:34 UTC (rev=
4462)
+++ trunk/coregrind/vki_unistd-ppc32-linux.h 2005-08-19 10:07:29 UTC (rev=
4463)
@@ -56,7 +56,7 @@
#define __NR_getuid 24
//#define __NR_stime 25
//#define __NR_ptrace 26
-//#define __NR_alarm 27
+#define __NR_alarm 27
//#define __NR_oldfstat 28
#define __NR_pause 29
#define __NR_utime 30
|
|
From: <sv...@va...> - 2005-08-19 09:07:38
|
Author: sewardj Date: 2005-08-19 10:07:34 +0100 (Fri, 19 Aug 2005) New Revision: 4462 Log: Fix signedness-of-char problem which caused this to segfault on ppc32-lin= ux. Modified: trunk/memcheck/tests/oset_test.c Modified: trunk/memcheck/tests/oset_test.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/memcheck/tests/oset_test.c 2005-08-19 00:23:11 UTC (rev 4461) +++ trunk/memcheck/tests/oset_test.c 2005-08-19 09:07:34 UTC (rev 4462) @@ -10,7 +10,13 @@ #include "pub_core_libcprint.h" =20 // I need this to avoid some signedness warnings, not sure why -#define Char char +// #define Char char +// jrs 19 Aug 2005: m_oset.c relies on Char being a signed char. +// It appears that plain 'char' on ppc32 is unsigned and so the +// above #define screws up the AVL tree balancing logic and +// leads to segfaults. Commenting it out and using the standard +// definition of Char from pub_core_basics.h seems a good solution +// as that has the same signedness on all platforms. =20 // Crudely redirect various VG_(foo)() functions to their libc equivalen= ts. #undef vg_assert |
|
From: Tom H. <th...@cy...> - 2005-08-19 03:37:35
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2005-08-19 03:00:03 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 162 tests, 7 stderr failures, 1 stdout failure ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/tls (stdout) ================================================= == 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 == 161 tests, 7 stderr failures, 1 stdout failure ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/tls (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Aug 19 03:36:17 2005 --- new.short Fri Aug 19 04:37:21 2005 *************** *** 8,10 **** ! == 161 tests, 7 stderr failures, 1 stdout failure ================= memcheck/tests/sigprocmask (stderr) --- 8,10 ---- ! == 162 tests, 7 stderr failures, 1 stdout failure ================= memcheck/tests/sigprocmask (stderr) |
|
From: Tom H. <to...@co...> - 2005-08-19 02:41:51
|
Nightly build on dunsmere ( athlon, Fedora Core 4 ) started at 2005-08-19 03:30:04 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 185 tests, 5 stderr failures, 0 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (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 == 184 tests, 5 stderr failures, 0 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Aug 19 03:35:57 2005 --- new.short Fri Aug 19 03:41:44 2005 *************** *** 8,10 **** ! == 184 tests, 5 stderr failures, 0 stdout failures ================= memcheck/tests/leak-tree (stderr) --- 8,10 ---- ! == 185 tests, 5 stderr failures, 0 stdout failures ================= memcheck/tests/leak-tree (stderr) |
|
From: Tom H. <th...@cy...> - 2005-08-19 02:27:24
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2005-08-19 03:15:03 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 184 tests, 15 stderr failures, 2 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) none/tests/faultstatus (stderr) none/tests/x86/cmpxchg8b (stdout) none/tests/x86/cmpxchg8b (stderr) none/tests/x86/int (stderr) none/tests/x86/yield (stdout) ================================================= == 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 == 183 tests, 15 stderr failures, 1 stdout failure ================= memcheck/tests/addressable (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) none/tests/faultstatus (stderr) none/tests/x86/cmpxchg8b (stdout) none/tests/x86/cmpxchg8b (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Aug 19 03:21:22 2005 --- new.short Fri Aug 19 03:27:19 2005 *************** *** 8,10 **** ! == 183 tests, 15 stderr failures, 1 stdout failure ================= memcheck/tests/addressable (stderr) --- 8,10 ---- ! == 184 tests, 15 stderr failures, 2 stdout failures ================= memcheck/tests/addressable (stderr) *************** *** 25,26 **** --- 25,27 ---- none/tests/x86/int (stderr) + none/tests/x86/yield (stdout) |
|
From: Tom H. <th...@cy...> - 2005-08-19 02:23:34
|
Nightly build on ginetta ( i686, Red Hat 8.0 ) started at 2005-08-19 03:10:08 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 184 tests, 2 stderr failures, 0 stdout failures ================= none/tests/faultstatus (stderr) none/tests/x86/int (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 == 183 tests, 2 stderr failures, 0 stdout failures ================= none/tests/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Aug 19 03:17:50 2005 --- new.short Fri Aug 19 03:23:30 2005 *************** *** 8,10 **** ! == 183 tests, 2 stderr failures, 0 stdout failures ================= none/tests/faultstatus (stderr) --- 8,10 ---- ! == 184 tests, 2 stderr failures, 0 stdout failures ================= none/tests/faultstatus (stderr) |
|
From: Tom H. <th...@cy...> - 2005-08-19 02:19:42
|
Nightly build on dellow ( x86_64, Fedora Core 4 ) started at 2005-08-19 03:10:08 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 162 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (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 == 161 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Aug 19 03:15:55 2005 --- new.short Fri Aug 19 03:19:38 2005 *************** *** 8,10 **** ! == 161 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) --- 8,10 ---- ! == 162 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) |
|
From: Tom H. <th...@cy...> - 2005-08-19 02:16:03
|
Nightly build on aston ( x86_64, Fedora Core 3 ) started at 2005-08-19 03:05:09 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 162 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (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 == 161 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Aug 19 03:11:31 2005 --- new.short Fri Aug 19 03:15:53 2005 *************** *** 8,10 **** ! == 161 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) --- 8,10 ---- ! == 162 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) |
|
From: <sv...@va...> - 2005-08-19 00:23:16
|
Author: sewardj
Date: 2005-08-19 01:22:44 +0100 (Fri, 19 Aug 2005)
New Revision: 4460
Log:
- Fix bug causing thread slots not to get reused
- yet more syscalls on ppc32
Modified:
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2005-08-19 00:22:39 U=
TC (rev 4459)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2005-08-19 00:22:44 U=
TC (rev 4460)
@@ -184,15 +184,16 @@
reallocation. We need to make sure we don't touch the stack
between marking it Empty and exiting. Hence the
assembler. */
+ { UInt vgts_empty =3D (UInt)VgTs_Empty;
+ asm volatile (
+ "stw %1,%0\n\t" /* set tst->status =3D VgTs_Empty */
+ "li 0,%2\n\t" /* set r0 =3D __NR_exit */
+ "lwz 3,%3\n\t" /* set r3 =3D tst->os_state.exitcode =
*/
+ "sc\n\t" /* exit(tst->os_state.exitcode) */
+ : "=3Dm" (tst->status)
+ : "r" (vgts_empty), "n" (__NR_exit), "m" (tst->os_state.exitco=
de));
+ }
=20
- asm volatile (
- "stw %1,%0\n\t" /* set tst->status =3D VgTs_Empty */
- "li 0,%2\n\t" /* set r0 =3D __NR_exit */
- "lwz 3,%3\n\t" /* set r3 =3D tst->os_state.exitcode */
- "sc\n\t" /* exit(tst->os_state.exitcode) */
- : "=3Dm" (tst->status)
- : "n" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode=
));
-
VG_(core_panic)("Thread exit failed?\n");
}
=20
@@ -2171,7 +2172,7 @@
=20
GENXY(__NR_rt_sigprocmask, sys_rt_sigprocmask), // 174
//.. GENXY(__NR_rt_sigpending, sys_rt_sigpending), // 175
-//.. GENXY(__NR_rt_sigtimedwait, sys_rt_sigtimedwait), // 176
+ GENXY(__NR_rt_sigtimedwait, sys_rt_sigtimedwait), // 176
//.. GENXY(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo), // 177
//.. GENX_(__NR_rt_sigsuspend, sys_rt_sigsuspend), // 178
//..=20
|
|
From: <sv...@va...> - 2005-08-19 00:23:16
|
Author: dirk Date: 2005-08-19 01:23:11 +0100 (Fri, 19 Aug 2005) New Revision: 4461 Log: update Modified: trunk/docs/internals/3_0_BUGSTATUS.txt Modified: trunk/docs/internals/3_0_BUGSTATUS.txt =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/docs/internals/3_0_BUGSTATUS.txt 2005-08-19 00:22:44 UTC (rev 4= 460) +++ trunk/docs/internals/3_0_BUGSTATUS.txt 2005-08-19 00:23:11 UTC (rev 4= 461) @@ -293,7 +293,7 @@ I suppose it would be good to apply these. They seem low risk. =20 FIXED-TRUNK: 4429 -FIXED-30BRANCH: no +FIXED-30BRANCH: 4458 =20 ---------------------------------------------------------------- =20 @@ -328,24 +328,17 @@ =20 ---------------------------------------------------------------- =20 -Description of leak errors in manual. - -FIXED-TRUNK: 4427 -FIXED-30BRANCH: TODO - ----------------------------------------------------------------- - 110830 configuring with --host fails to build 32 bit on 64 bit target =20 FIXED-TRUNK: 4442 -FIXED-30BRANCH: TODO +FIXED-30BRANCH: 4459 =20 ---------------------------------------------------------------- =20 110875 Assertion when execve fails =20 FIXED-TRUNK: 4435 -FIXED-30BRANCH: TODO +FIXED-30BRANCH: 4457 =20 ---------------------------------------------------------------- =20 |
|
From: <sv...@va...> - 2005-08-19 00:23:09
|
Author: dirk Date: 2005-08-19 01:22:39 +0100 (Fri, 19 Aug 2005) New Revision: 4459 Log: merge: fix build of 32bit target on 64bit host Modified: branches/VALGRIND_3_0_BRANCH/coregrind/Makefile.am Modified: branches/VALGRIND_3_0_BRANCH/coregrind/Makefile.am =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/VALGRIND_3_0_BRANCH/coregrind/Makefile.am 2005-08-19 00:21:0= 3 UTC (rev 4458) +++ branches/VALGRIND_3_0_BRANCH/coregrind/Makefile.am 2005-08-19 00:22:3= 9 UTC (rev 4459) @@ -189,14 +189,14 @@ # So we search for the line with a hex value "+ SIZEOF_HEADERS", and rep= lace # all the hex values in that line with "kickstart_base". stage2.lds: Makefile - $(CC) -Wl,--verbose -nostdlib 2>&1 | sed \ + $(CC) $(AM_CFLAGS) -Wl,--verbose -nostdlib 2>&1 | sed \ -e '1,/^=3D=3D=3D=3D=3D\+$$/d' \ -e '/^=3D=3D=3D=3D=3D\+$$/d' \ -e '/\. =3D 0x[0-9A-Fa-f]\+ + SIZEOF_HEADERS/s/0x[0-9A-Fa-f]\+/kicksta= rt_base/g' > $@ \ || rm -f $@ =20 @VEX_DIR@/libvex.a: @VEX_DIR@/priv/main/vex_svnversion.h - $(MAKE) -C @VEX_DIR@ libvex.a EXTRA_CFLAGS=3D"@PIE_AM_CFLAGS@" + $(MAKE) -C @VEX_DIR@ libvex.a EXTRA_CFLAGS=3D"@ARCH_CORE_AM_CFLAGS@ @PI= E_AM_CFLAGS@" =20 @VEX_DIR@/priv/main/vex_svnversion.h: $(MAKE) -C @VEX_DIR@ version |
|
From: <sv...@va...> - 2005-08-19 00:21:42
|
Author: dirk
Date: 2005-08-19 01:21:03 +0100 (Fri, 19 Aug 2005)
New Revision: 4458
Log:
merge: fix regression tests
Modified:
branches/VALGRIND_3_0_BRANCH/cachegrind/cg-x86.c
branches/VALGRIND_3_0_BRANCH/cachegrind/tests/filter_stderr
branches/VALGRIND_3_0_BRANCH/none/tests/mq.c
Modified: branches/VALGRIND_3_0_BRANCH/cachegrind/cg-x86.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VALGRIND_3_0_BRANCH/cachegrind/cg-x86.c 2005-08-19 00:18:26 =
UTC (rev 4457)
+++ branches/VALGRIND_3_0_BRANCH/cachegrind/cg-x86.c 2005-08-19 00:21:03 =
UTC (rev 4458)
@@ -108,8 +108,7 @@
VG_(tool_panic)("IA-64 cache detected?!");
=20
case 0x22: case 0x23: case 0x25: case 0x29:=20
- VG_(message)(Vg_DebugMsg,=20
- "warning: L3 cache detected but ignored\n");
+ VG_(message)(Vg_DebugMsg, "warning: L3 cache detected but igno=
red");
break;
=20
/* These are sectored, whatever that means */
Modified: branches/VALGRIND_3_0_BRANCH/cachegrind/tests/filter_stderr
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VALGRIND_3_0_BRANCH/cachegrind/tests/filter_stderr 2005-08-1=
9 00:18:26 UTC (rev 4457)
+++ branches/VALGRIND_3_0_BRANCH/cachegrind/tests/filter_stderr 2005-08-1=
9 00:21:03 UTC (rev 4458)
@@ -13,7 +13,7 @@
# Remove numbers from I1/D1/L2/L2i/L2d "misses:" and "miss rates:" lines
sed "s/\(\(I1\|D1\|L2\|L2i\|L2d\) *\(misses\|miss rate\):\)[ 0-9,()+rdw%=
\.]*$/\1/" |
=20
-# Remove warnings lines for P4s:
+# Remove CPUID warnings lines for P4s and other machines
sed "/warning: Pentium with 12 K micro-op instruction trace cache/d" |
-sed "/Simulating a 16 KB cache with 32 B lines/d"
-
+sed "/Simulating a 16 KB cache with 32 B lines/d" |
+sed "/warning: L3 cache detected but ignored/d"
Modified: branches/VALGRIND_3_0_BRANCH/none/tests/mq.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VALGRIND_3_0_BRANCH/none/tests/mq.c 2005-08-19 00:18:26 UTC =
(rev 4457)
+++ branches/VALGRIND_3_0_BRANCH/none/tests/mq.c 2005-08-19 00:21:03 UTC =
(rev 4458)
@@ -24,6 +24,8 @@
=20
if ((mqdw =3D mq_open("/valgrind-mqueue", O_CREAT|O_EXCL|O_WRONLY, 060=
0, &mqa)) < 0)
{
+ if (errno =3D=3D ENOSYS)
+ exit(0);
perror("mq_open");
exit(1);
}
|
|
From: <sv...@va...> - 2005-08-19 00:18:32
|
Author: dirk
Date: 2005-08-19 01:18:26 +0100 (Fri, 19 Aug 2005)
New Revision: 4457
Log:
backport: add assertion when execve fails
Modified:
branches/VALGRIND_3_0_BRANCH/coregrind/m_syswrap/syswrap-generic.c
Modified: branches/VALGRIND_3_0_BRANCH/coregrind/m_syswrap/syswrap-generi=
c.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VALGRIND_3_0_BRANCH/coregrind/m_syswrap/syswrap-generic.c 20=
05-08-19 00:17:24 UTC (rev 4456)
+++ branches/VALGRIND_3_0_BRANCH/coregrind/m_syswrap/syswrap-generic.c 20=
05-08-19 00:18:26 UTC (rev 4457)
@@ -2412,8 +2412,9 @@
=20
/* If we got here, then the execve failed. We've already made too
much of a mess of ourselves to continue, so we have to abort. */
+ vg_assert(FAILURE);
VG_(message)(Vg_UserMsg, "execve(%p(%s), %p, %p) failed, errno %d",
- ARG1, ARG1, ARG2, ARG3, -RES);
+ ARG1, ARG1, ARG2, ARG3, RES_unchecked);
VG_(message)(Vg_UserMsg, "EXEC FAILED: I can't recover from "
"execve() failing, so I'm dying.");
VG_(message)(Vg_UserMsg, "Add more stringent tests in PRE(sys_execve)=
, "
|
|
From: <sv...@va...> - 2005-08-19 00:17:53
|
Author: dirk Date: 2005-08-19 01:17:24 +0100 (Fri, 19 Aug 2005) New Revision: 4456 Log: update Modified: trunk/docs/internals/3_0_BUGSTATUS.txt Modified: trunk/docs/internals/3_0_BUGSTATUS.txt =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/docs/internals/3_0_BUGSTATUS.txt 2005-08-19 00:17:11 UTC (rev 4= 455) +++ trunk/docs/internals/3_0_BUGSTATUS.txt 2005-08-19 00:17:24 UTC (rev 4= 456) @@ -352,7 +352,7 @@ Updates to Memcheck manual =20 FIXED-TRUNK: 4419, 4427, 4434 -FIXED-30BRANCH: TODO +FIXED-30BRANCH: 4455 =20 ---------------------------------------------------------------- =20 |
|
From: <sv...@va...> - 2005-08-19 00:17:47
|
Author: dirk
Date: 2005-08-19 01:17:11 +0100 (Fri, 19 Aug 2005)
New Revision: 4455
Log:
merge: Updates to Memcheck manual
Modified:
branches/VALGRIND_3_0_BRANCH/memcheck/docs/mc-manual.xml
Modified: branches/VALGRIND_3_0_BRANCH/memcheck/docs/mc-manual.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/VALGRIND_3_0_BRANCH/memcheck/docs/mc-manual.xml 2005-08-19 0=
0:15:57 UTC (rev 4454)
+++ branches/VALGRIND_3_0_BRANCH/memcheck/docs/mc-manual.xml 2005-08-19 0=
0:17:11 UTC (rev 4455)
@@ -14,8 +14,8 @@
xreflabel=3D"Kinds of bugs that Memcheck can find">
<title>Kinds of bugs that Memcheck can find</title>
=20
-<para>Memcheck is Valgrind-1.0.X's checking mechanism bundled up
-into a tool. All reads and writes of memory are checked, and
+<para>Memcheck is Valgrind's heavyweight memory checking
+tool. All reads and writes of memory are checked, and
calls to malloc/new/free/delete are intercepted. As a result,
Memcheck can detect the following problems:</para>
=20
@@ -142,8 +142,7 @@
[default]</para>
<para><computeroutput>--workaround-gcc296-bugs=3Dyes</computeroutput=
></para>
<para>When enabled, assume that reads and writes some small
- distance below the stack pointer
- <computeroutput>%esp</computeroutput> are due to bugs in gcc
+ distance below the stack pointer are due to bugs in gcc
2.96, and does not report them. The "small distance" is 256
bytes by default. Note that gcc 2.96 is the default compiler
on some popular Linux distributions (RedHat 7.X, Mandrake)
@@ -234,10 +233,10 @@
=20
<para>In this example, Memcheck can't identify the address.
Actually the address is on the stack, but, for some reason, this
-is not a valid stack address -- it is below the stack pointer,
-<literal>%esp</literal>, and that isn't allowed. In this
+is not a valid stack address -- it is below the stack pointer
+and that isn't allowed. In this
particular case it's probably caused by gcc generating invalid
-code, a known bug in various flavours of gcc.</para>
+code, a known bug in various versions of gcc.</para>
=20
<para>Note that Memcheck only tells you that your program is
about to access memory at an illegal address. It can't stop the
@@ -427,8 +426,8 @@
=20
<para>Here's an example of two system calls with invalid parameters:</pa=
ra>
<programlisting><![CDATA[
- #include <stdlib.h>
- #include <unistd.h>
+ #include <stdlib.h>
+ #include <unistd.h>
int main( void )
{
char* arr =3D malloc(10);
@@ -506,12 +505,91 @@
</sect2>
=20
=20
+<sect2 id=3D"mc-manual.leaks" xreflabel=3D"Memory leak detection">
+<title>Memory leak detection</title>
+
+<para>Memcheck keeps track of all memory blocks issued in
+response to calls to malloc/calloc/realloc/new. So when the
+program exits, it knows which blocks have not been freed.
+</para>
+
+<para>If <computeroutput>--leak-check</computeroutput> is set
+appropriately, for each remaining block, Memcheck scans the entire
+address space of the process, looking for pointers to the block.
+Each block fits into one of the three following categories.</para>
+
+<itemizedlist>
+
+ <listitem>
+ <para>Still reachable: A pointer to the start
+ of the block is found. This usually indicates programming
+ sloppiness; since the block is still pointed at, the
+ programmer could, at least in principle, free'd it before
+ program exit. Because these are very common and arguably
+ not a problem, Memcheck won't report such blocks unless
+ <computeroutput>--show-reachable=3Dyes</computeroutput> is
+ specified.</para>
+ </listitem>
+
+ <listitem>
+ <para>Possibly lost, or "dubious": A pointer to the
+ interior of the block is found. The pointer might originally
+ have pointed to the start and have been moved along, or it
+ might be entirely unrelated. Memcheck deems such a block as
+ "dubious", because it's unclear whether or not a pointer to it
+ still exists.</para>
+ </listitem>
+
+ <listitem>
+ <para>Definitely lost, or "leaked": The worst
+ outcome is that no pointer to the block can be found. The
+ block is classified as "leaked", because the programmer could
+ not possibly have freed it at program exit, since no pointer
+ to it exists. This is likely a symptom of having lost the
+ pointer at some earlier point in the program.</para>
+ </listitem>
+
+</itemizedlist>
+
+<para>For each block mentioned, Memcheck will also tell you where
+the block was allocated. It cannot tell you how or why the
+pointer to a leaked block has been lost; you have to work that
+out for yourself. In general, you should attempt to ensure your
+programs do not have any leaked or dubious blocks at exit.</para>
+
+<para>For example:</para>
+<programlisting><![CDATA[
+8 bytes in 1 blocks are definitely lost in loss record 1 of 14
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: mk (leak-tree.c:11)
+ by 0x........: main (leak-tree.c:39)
+
+88 (8 direct, 80 indirect) bytes in 1 blocks are definitely lost in loss=
record 13 of 14
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: mk (leak-tree.c:11)
+ by 0x........: main (leak-tree.c:25)
+]]></programlisting>
+
+<para>The first message describes a simple case of a single 8 byte
+block that has been definitely lost. The second case
+mentions both "direct" and "indirect" leaks. The distinction is
+that a direct leak is a block which has no pointers to it. An
+indirect leak is a block which is only pointed to by other leaked
+blocks. Both kinds of leak are bad.</para>
+
+<para>The precise area of memory in which Memcheck searches for
+pointers is: all naturally-aligned 4-byte words for which all A
+bits indicate addressibility and all V bits indicated that the
+stored value is actually valid.</para>
+
+</sect2>
+
</sect1>
=20
=20
=20
-<sect1 id=3D"mc-manual.suppfiles" xreflabel=3D"Writing suppressions file=
s">
-<title>Writing suppressions files</title>
+<sect1 id=3D"mc-manual.suppfiles" xreflabel=3D"Writing suppression files=
">
+<title>Writing suppression files</title>
=20
<para>The basic suppression format is described in=20
<xref linkend=3D"manual-core.suppress"/>.</para>
@@ -564,7 +642,7 @@
</listitem>
=20
<listitem>
- <para><computeroutput>Overlap</computeroutput>, meaning a
+ <para>Or: <computeroutput>Overlap</computeroutput>, meaning a
<computeroutput>src</computeroutput> /
<computeroutput>dst</computeroutput> overlap in
<computeroutput>memcpy() or a similar
@@ -572,9 +650,8 @@
</listitem>
=20
<listitem>
- <para>Last but not least, you can suppress leak reports with
- <computeroutput>Leak</computeroutput>. Leak suppression was
- added in valgrind-1.9.3, I believe.</para>
+ <para>Or: <computeroutput>Leak</computeroutput>, meaning
+ a memory leak.</para>
</listitem>
=20
</itemizedlist>
@@ -612,7 +689,7 @@
<title>Valid-value (V) bits</title>
=20
<para>It is simplest to think of Memcheck implementing a
-synthetic Intel x86 CPU which is identical to a real CPU, except
+synthetic CPU which is identical to a real CPU, except
for one crucial detail. Every bit (literally) of data processed,
stored and handled by the real CPU has, in the synthetic CPU, an
associated "valid-value" bit, which says whether or not the
@@ -631,8 +708,8 @@
=20
<para>In short, each bit in the system has an associated V bit,
which follows it around everywhere, even inside the CPU. Yes,
-the CPU's (integer and <computeroutput>%eflags</computeroutput>)
-registers have their own V bit vectors.</para>
+all the CPU's registers (integer, floating point, and condition=20
+registers) have their own V bit vectors.</para>
=20
<para>Copying values around does not cause Memcheck to check for,
or report on, errors. However, when a value is used in a way
@@ -673,14 +750,14 @@
action of your program -- that Memcheck complains.</para>
=20
<para>Most low level operations, such as adds, cause Memcheck to
-use the <literal>V bits</literal> for the operands to calculate
-the V bits for the result. Even if the result is partially or
-wholly undefined, it does not complain.</para>
+use the V bits for the operands to calculate the V bits for the result.
+Even if the result is partially or wholly undefined, it does not
+complain.</para>
=20
-<para>Checks on definedness only occur in two places: when a
-value is used to generate a memory address, and where control
-flow decision needs to be made. Also, when a system call is
-detected, valgrind checks definedness of parameters as
+<para>Checks on definedness only occur in three places: when a
+value is used to generate a memory address, when control
+flow decision needs to be made, and when a system call is
+detected, Valgrind checks definedness of parameters as
required.</para>
=20
<para>If a check should detect undefinedness, an error message is
@@ -729,20 +806,6 @@
warning will only be emitted if the uninitialised values are
later used.</para>
=20
-<para>One final twist to this story. The above scheme allows
-garbage to pass through the CPU's integer registers without
-complaint. It does this by giving the integer registers
-<literal>V</literal> tags, passing these around in the expected
-way. This complicated and computationally expensive to do, but
-is necessary. Memcheck is more simplistic about floating-point
-loads and stores. In particular, <literal>V</literal> bits for
-data read as a result of floating-point loads are checked at the
-load instruction. So if your program uses the floating-point
-registers to do memory-to-memory copies, you will get complaints
-about uninitialised values. Fortunately, I have not yet
-encountered a program which (ab)uses the floating-point registers
-in this way.</para>
-
</sect2>
=20
=20
@@ -756,23 +819,22 @@
latter issue.</para>
=20
<para>As described above, every bit in memory or in the CPU has
-an associated valid-value (<literal>V</literal>) bit. In
+an associated valid-value (V) bit. In
addition, all bytes in memory, but not in the CPU, have an
-associated valid-address (<literal>A</literal>) bit. This
+associated valid-address (A) bit. This
indicates whether or not the program can legitimately read or
write that location. It does not give any indication of the
validity or the data at that location -- that's the job of the
-<literal>V</literal> bits -- only whether or not the location may
+V bits -- only whether or not the location may
be accessed.</para>
=20
<para>Every time your program reads or writes memory, Memcheck
-checks the <literal>A</literal> bits associated with the address.
+checks the A bits associated with the address.
If any of them indicate an invalid address, an error is emitted.
Note that the reads and writes themselves do not change the A
bits, only consult them.</para>
=20
-<para>So how do the <literal>A</literal> bits get set/cleared?
-Like this:</para>
+<para>So how do the A bits get set/cleared? Like this:</para>
=20
<itemizedlist>
<listitem>
@@ -788,15 +850,14 @@
</listitem>
=20
<listitem>
-
<para>When the stack pointer register
- (<literal>%esp</literal>) moves up or down,
- <literal>A</literal> bits are set. The rule is that the area
- from <literal>%esp</literal> up to the base of the stack is
- marked as accessible, and below <literal>%esp</literal> is
+ (<literal>SP</literal>) moves up or down,
+ A bits are set. The rule is that the area
+ from <literal>SP</literal> up to the base of the stack is
+ marked as accessible, and below <literal>SP</literal> is
inaccessible. (If that sounds illogical, bear in mind that
the stack grows down, not up, on almost all Unix systems,
- including GNU/Linux.) Tracking <literal>%esp</literal> like
+ including GNU/Linux.) Tracking <literal>SP</literal> like
this has the useful side-effect that the section of stack
used by a function for local variables etc is automatically
marked accessible on function entry and inaccessible on
@@ -830,66 +891,49 @@
<itemizedlist>
<listitem>
<para>Each byte in memory has 8 associated
- <literal>V</literal> (valid-value) bits, saying whether or
+ V (valid-value) bits, saying whether or
not the byte has a defined value, and a single
- <literal>A</literal> (valid-address) bit, saying whether or
+ A (valid-address) bit, saying whether or
not the program currently has the right to read/write that
address.</para>
</listitem>
=20
<listitem>
<para>When memory is read or written, the relevant
- <literal>A</literal> bits are consulted. If they indicate an
+ A bits are consulted. If they indicate an
invalid address, Valgrind emits an Invalid read or Invalid
write error.</para>
</listitem>
=20
<listitem>
- <para>When memory is read into the CPU's integer registers,
- the relevant <literal>V</literal> bits are fetched from
+ <para>When memory is read into the CPU's registers,
+ the relevant V bits are fetched from
memory and stored in the simulated CPU. They are not
consulted.</para>
</listitem>
=20
<listitem>
- <para>When an integer register is written out to memory, the
- <literal>V</literal> bits for that register are written back
+ <para>When a register is written out to memory, the
+ V bits for that register are written back
to memory too.</para>
</listitem>
=20
<listitem>
- <para>When memory is read into the CPU's floating point
- registers, the relevant <literal>V</literal> bits are read
- from memory and they are immediately checked. If any are
- invalid, an uninitialised value error is emitted. This
- precludes using the floating-point registers to copy
- possibly-uninitialised memory, but simplifies Valgrind in
- that it does not have to track the validity status of the
- floating-point registers.</para>
- </listitem>
-
- <listitem>
- <para>As a result, when a floating-point register is written
- to memory, the associated V bits are set to indicate a valid
- value.</para>
- </listitem>
-
- <listitem>
- <para>When values in integer CPU registers are used to
+ <para>When values in CPU registers are used to
generate a memory address, or to determine the outcome of a
- conditional branch, the <literal>V</literal> bits for those
+ conditional branch, the V bits for those
values are checked, and an error emitted if any of them are
undefined.</para>
</listitem>
=20
<listitem>
- <para>When values in integer CPU registers are used for any
+ <para>When values in CPU registers are used for any
other purpose, Valgrind computes the V bits for the result,
but does not check them.</para>
</listitem>
=20
<listitem>
- <para>One the <literal>V</literal> bits for a value in the
+ <para>One the V bits for a value in the
CPU have been checked, they are then set to indicate
validity. This avoids long chains of errors.</para>
</listitem>
@@ -965,63 +1009,6 @@
=20
=20
=20
-<sect1 id=3D"mc-manual.leaks" xreflabel=3D"Memory leak detection">
-<title>Memory leak detection</title>
-
-<para>Memcheck keeps track of all memory blocks issued in
-response to calls to malloc/calloc/realloc/new. So when the
-program exits, it knows which blocks are still outstanding --
-have not been returned, in other words. Ideally, you want your
-program to have no blocks still in use at exit. But many
-programs do.</para>
-
-<para>For each such block, Memcheck scans the entire address
-space of the process, looking for pointers to the block. One of
-three situations may result:</para>
-
-<itemizedlist>
-
- <listitem>
- <para>A pointer to the start of the block is found. This
- usually indicates programming sloppiness; since the block is
- still pointed at, the programmer could, at least in
- principle, free'd it before program exit.</para>
- </listitem>
-
- <listitem>
- <para>A pointer to the interior of the block is found. The
- pointer might originally have pointed to the start and have
- been moved along, or it might be entirely unrelated.
- Memcheck deems such a block as "dubious", that is, possibly
- leaked, because it's unclear whether or not a pointer to it
- still exists.</para>
- </listitem>
-
- <listitem>
- <para>The worst outcome is that no pointer to the block can
- be found. The block is classified as "leaked", because the
- programmer could not possibly have free'd it at program exit,
- since no pointer to it exists. This might be a symptom of
- having lost the pointer at some earlier point in the
- program.</para>
- </listitem>
-
-</itemizedlist>
-
-<para>Memcheck reports summaries about leaked and dubious blocks.
-For each such block, it will also tell you where the block was
-allocated. This should help you figure out why the pointer to it
-has been lost. In general, you should attempt to ensure your
-programs do not have any leaked or dubious blocks at exit.</para>
-
-<para>The precise area of memory in which Memcheck searches for
-pointers is: all naturally-aligned 4-byte words for which all A
-bits indicate addressibility and all V bits indicated that the
-stored value is actually valid.</para>
-
-</sect1>
-
-
<sect1 id=3D"mc-manual.clientreqs" xreflabel=3D"Client requests">
<title>Client Requests</title>
=20
|
|
From: <sv...@va...> - 2005-08-19 00:15:59
|
Author: dirk Date: 2005-08-19 01:15:57 +0100 (Fri, 19 Aug 2005) New Revision: 4454 Log: update Modified: trunk/docs/internals/3_0_BUGSTATUS.txt Modified: trunk/docs/internals/3_0_BUGSTATUS.txt =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/docs/internals/3_0_BUGSTATUS.txt 2005-08-19 00:15:43 UTC (rev 4= 453) +++ trunk/docs/internals/3_0_BUGSTATUS.txt 2005-08-19 00:15:57 UTC (rev 4= 454) @@ -359,7 +359,7 @@ Fixed broken malloc_usable_size() =20 FIXED-TRUNK: 4439 -FIXED-30BRANCH: TODO +FIXED-30BRANCH: 4453 =20 ---------------------------------------------------------------- =20 |