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
(22) |
2
(19) |
3
(8) |
4
(34) |
5
(14) |
6
(14) |
|
7
(12) |
8
(15) |
9
(15) |
10
(10) |
11
(10) |
12
(28) |
13
(11) |
|
14
(22) |
15
(29) |
16
(20) |
17
(15) |
18
(39) |
19
(11) |
20
(12) |
|
21
(8) |
22
(9) |
23
(8) |
24
(10) |
25
(9) |
26
(7) |
27
(7) |
|
28
(6) |
29
(6) |
30
(11) |
|
|
|
|
|
From: Stephen M.
|
The "coregrind_tools.html" file contains some obsolete documentation
about how to run Valgrind under GDB (i.e. for debugging bugs in
Valgrind and tools, rather than bugs in the program you're running
Valgrind on). The more recently added instructions in
"README_DEVELOPERS" seem to work fine, though. It seems to me that the
HTML documentation should either be updated with up-to-date
instructions, or replaced with a pointer to the README file.
The appended patch, for instance, implements the latter fix.
-- Stephen
Index: coregrind/docs/coregrind_tools.html
===================================================================
RCS file: /home/kde/valgrind/coregrind/docs/coregrind_tools.html,v
retrieving revision 1.3
diff -u -r1.3 coregrind_tools.html
--- coregrind/docs/coregrind_tools.html 2 Sep 2004 08:51:41 -0000 1.3
+++ coregrind/docs/coregrind_tools.html 9 Nov 2004 22:25:27 -0000
@@ -28,7 +28,7 @@
<h1 align=center>Valgrind Tools</h1>
<center>
A guide to writing new tools for Valgrind<br>
- This guide was last updated on 20030520
+ This guide was last updated on 20041109
</center>
<p>
@@ -541,39 +541,9 @@
Writing and debugging tools is not trivial. Here are some suggestions for
solving common problems.<p>
-If you are getting segmentation faults in C functions used by your tool, the
-usual GDB command:
-<blockquote><code>gdb <i>prog</i> core</code></blockquote>
-usually gives the location of the segmentation fault.<p>
-
If you want to debug C functions used by your tool, you can attach GDB to
-Valgrind with some effort:
-<ul>
- <li>Enable the following code in <code>coregrind/vg_main.c</code> by
- changing <code>if (0)</code> into <code>if (1)</code>:
-<pre>
- /* Hook to delay things long enough so we can get the pid and
- attach GDB in another shell. */
- if (0) {
- Int p, q;
- for (p = 0; p < 50000; p++)
- for (q = 0; q < 50000; q++) ;
- }
-</pre>
- </li><p>
- and rebuild Valgrind.
-
- <li>Then run:
- <blockquote><code>valgrind <i>prog</i></code></blockquote>
-
- Valgrind starts the program, printing its process id, and then delays for
- a few seconds (you may have to change the loop bounds to get a suitable
- delay).</li><p>
-
- <li>In a second shell run:
-
- <blockquote><code>gdb <i>prog</i> <i>pid</i></code></blockquote></li><p>
-</ul>
+Valgrind with some effort; see the file <code>README_DEVELOPERS</code> in CVS
+for instructions.<p>
GDB may be able to give you useful information. Note that by default
most of the system is built with <code>-fomit-frame-pointer</code>,
|
|
From: Nicholas N. <nj...@ca...> - 2004-11-09 16:45:42
|
CVS commit by nethercote:
Converted __NR_{mount,getpid,getppid}.
M +21 -17 coregrind/vg_syscalls.c 1.170
M +12 -2 memcheck/tests/scalar.c 1.4 [POSSIBLY UNSAFE: printf]
M +51 -5 memcheck/tests/scalar.stderr.exp 1.4
--- valgrind/coregrind/vg_syscalls.c #1.169:1.170
@@ -1163,13 +1163,17 @@ POST(ptrace)
}
-PRE(mount)
+PRE(sys_mount)
{
- // int mount(const char *source, const char *target,
- // const char *filesystemtype, unsigned long mountflags,
- // const void *data);
- PRINT( "mount( %p, %p, %p, %p, %p )" ,arg1,arg2,arg3);
- PRE_MEM_RASCIIZ( "mount(specialfile)", arg1);
- PRE_MEM_RASCIIZ( "mount(dir)", arg2);
- PRE_MEM_RASCIIZ( "mount(filesystemtype)", arg3);
+ // Nb: depending on 'flags', the 'type' and 'data' args may be ignored.
+ // We are conservative and check everything, except the memory pointed to
+ // by 'data'.
+ PRINT( "sys_mount( %p, %p, %p, %p, %p )" ,arg1,arg2,arg3);
+ PRE_REG_READ5(long, "mount",
+ char __user *, source, char __user *, target,
+ char __user *, type, unsigned long, flags,
+ void __user *, data);
+ PRE_MEM_RASCIIZ( "mount(source)", arg1);
+ PRE_MEM_RASCIIZ( "mount(target)", arg2);
+ PRE_MEM_RASCIIZ( "mount(type)", arg3);
}
@@ -2266,8 +2270,8 @@ PRE(getgid32)
}
-PRE(getpid)
+PRE(sys_getpid)
{
- /* pid_t getpid(void); */
- PRINT("getpid ()");
+ PRINT("sys_getpid ()");
+ PRE_REG_READ0(long, "getpid");
}
@@ -2284,8 +2288,8 @@ PRE(getpgrp)
}
-PRE(getppid)
+PRE(sys_getppid)
{
- /* pid_t getppid(void); */
- PRINT("getppid ()");
+ PRINT("sys_getppid ()");
+ PRE_REG_READ0(long, "getppid");
}
@@ -5789,5 +5793,5 @@ static const struct sys_info special_sys
static const struct sys_info sys_info[] = {
SYSBA(ptrace, 0),
- SYSB_(mount, MayBlock),
+ SYSX_(__NR_mount, sys_mount, MayBlock),
SYSB_(umount, 0),
@@ -5892,8 +5896,8 @@ static const struct sys_info sys_info[]
SYSB_(getgid, 0),
SYSB_(getgid32, 0),
- SYSB_(getpid, 0),
+ SYSX_(__NR_getpid, sys_getpid, 0),
SYSB_(getpgid, 0),
SYSB_(getpgrp, 0),
- SYSB_(getppid, 0),
+ SYSX_(__NR_getppid, sys_getppid, 0),
SYSBA(getresgid, 0),
SYSBA(getresgid32, 0),
--- valgrind/memcheck/tests/scalar.c #1.3:1.4
@@ -13,5 +13,5 @@
void GO(char* s) {
- fprintf(stderr, "---------- %s ----------\n", s);
+ fprintf(stderr, "---------- %s\n", s);
}
@@ -63,6 +63,12 @@ int main(void)
// __NR_oldstat 18
// __NR_lseek 19
- // __NR_getpid 20
+ // __NR_getpid 20 --> sys_getpid()
+ GO("__NR_getpid, 0 errors");
+ syscall(__NR_getpid);
+
// __NR_mount 21
+ GO("__NR_mount, 4 scalar errors, 3 memory errors");
+ syscall(__NR_mount, s0, s0, s0, i0, s0);
+
// __NR_umount 22
// __NR_setuid 23
@@ -107,5 +113,9 @@ int main(void)
// __NR_ustat 62
// __NR_dup2 63
+
// __NR_getppid 64
+ GO("__NR_getppid, 0 errors");
+ syscall(__NR_getppid);
+
// __NR_getpgrp 65
// __NR_setsid 66
--- valgrind/memcheck/tests/scalar.stderr.exp #1.3:1.4
@@ -1,3 +1,3 @@
----------- __NR_read, 1+3 scalar errors ----------
+---------- __NR_read, 1+3 scalar errors
Syscall param (syscallno) contains uninitialised byte(s)
at 0x........: syscall (in /...libc...)
@@ -19,5 +19,5 @@
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
----------- __NR_write, 3 scalar errors, 1 memory error ----------
+---------- __NR_write, 3 scalar errors, 1 memory error
Syscall param write(fd) contains uninitialised byte(s)
@@ -41,5 +41,5 @@
by 0x........: ...
Address 0x........ is not stack'd, malloc'd or (recently) free'd
----------- __NR_open(2), 2 scalar errors, 1 memory error ----------
+---------- __NR_open(2), 2 scalar errors, 1 memory error
Syscall param open(filename) contains uninitialised byte(s)
@@ -58,5 +58,5 @@
by 0x........: ...
Address 0x........ is not stack'd, malloc'd or (recently) free'd
----------- __NR_open(3), 1 scalar error ----------
+---------- __NR_open(3), 1 scalar error
Syscall param open(mode) contains uninitialised byte(s)
@@ -64,5 +64,51 @@
by 0x........: __libc_start_main (...libc...)
by 0x........: ...
----------- __NR_exit, 1 scalar error ----------
+---------- __NR_getpid, 0 errors
+---------- __NR_mount, 4 scalar errors, 3 memory errors
+
+Syscall param mount(source) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mount(target) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mount(type) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mount(flags) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mount(data) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param mount(source) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param mount(target) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param mount(type) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+---------- __NR_getppid, 0 errors
+---------- __NR_exit, 1 scalar error
Syscall param exit(error_code) contains uninitialised byte(s)
|
|
From: Nicholas N. <nj...@ca...> - 2004-11-09 16:20:52
|
CVS commit by nethercote:
- Convert open() to the new syscall regime.
- Improve scalar regtest; I will add new syscalls to it as I convert them.
A memcheck/tests/scalar_supp.c 1.1 [no copyright]
M +63 -25 coregrind/vg_syscalls.c 1.169
M +4 -3 memcheck/tests/Makefile.am 1.56
M +322 -8 memcheck/tests/scalar.c 1.3 [POSSIBLY UNSAFE: printf]
M +46 -0 memcheck/tests/scalar.stderr.exp 1.3
M +1 -0 memcheck/tests/scalar.vgtest 1.2
M +1 -1 memcheck/tests/scalar_supp.vgtest 1.2
--- valgrind/coregrind/vg_syscalls.c #1.168:1.169
@@ -45,19 +45,56 @@
#define X(syscallname, argname) syscallname"("#argname")"
+#define PRRSN \
+ SK_(pre_reg_read)(Vg_CoreSysCall, tid, "(syscallno)", \
+ R_SYSCALL_NUM, sizeof(UWord));
+
+#define PRRAn(n,s,a,t) \
+ SK_(pre_reg_read)(Vg_CoreSysCall, tid, X(s,a), \
+ R_SYSCALL_ARG##n, sizeof(t));
+
+#define PRE_REG_READ0(tr, s) \
+ if (VG_(defined_pre_reg_read)()) { \
+ PRRSN; \
+ }
+
+#define PRE_REG_READ1(tr, s, t1, a1) \
+ if (VG_(defined_pre_reg_read)()) { \
+ PRRSN; \
+ PRRAn(1,s,); \
+ }
+
+#define PRE_REG_READ2(tr, s, t1, a1, t2, a2) \
+ if (VG_(defined_pre_reg_read)()) { \
+ PRRSN; \
+ PRRAn(1,s,a1,t1); PRRAn(2,s,a2,t2); \
+ }
+
#define PRE_REG_READ3(tr, s, t1, a1, t2, a2, t3, a3) \
- do { \
- VG_TRACK( pre_reg_read, Vg_CoreSysCall, tid, "(syscallno)", R_SYSCALL_NUM, sizeof(t1)); \
- VG_TRACK( pre_reg_read, Vg_CoreSysCall, tid, X(s,a1), R_SYSCALL_ARG1, sizeof(t1)); \
- VG_TRACK( pre_reg_read, Vg_CoreSysCall, tid, X(s,a2), R_SYSCALL_ARG2, sizeof(t2)); \
- VG_TRACK( pre_reg_read, Vg_CoreSysCall, tid, X(s,a3), R_SYSCALL_ARG3, sizeof(t3)); \
- } while (0);
+ if (VG_(defined_pre_reg_read)()) { \
+ PRRSN; \
+ PRRAn(1,s,a1,t1); PRRAn(2,s,a2,t2); PRRAn(3,s,a3,t3); \
+ }
+
+#define PRE_REG_READ4(tr, s, t1, a1, t2, a2, t3, a3, t4, a4) \
+ if (VG_(defined_pre_reg_read)()) { \
+ PRRSN; \
+ PRRAn(1,s,a1,t1); PRRAn(2,s,a2,t2); PRRAn(3,s,a3,t3); \
+ PRRAn(4,s,a4,t4); \
+ }
+
+#define PRE_REG_READ5(tr, s, t1, a1, t2, a2, t3, a3, t4, a4, t5, a5) \
+ if (VG_(defined_pre_reg_read)()) { \
+ PRRSN; \
+ PRRAn(1,s,a1,t1); PRRAn(2,s,a2,t2); PRRAn(3,s,a3,t3); \
+ PRRAn(4,s,a4,t4); PRRAn(5,s,a5,t5); \
+ }
+
+#define PRE_REG_READ6(tr, s, t1, a1, t2, a2, t3, a3, t4, a4, t5, a5, t6, a6) \
+ if (VG_(defined_pre_reg_read)()) { \
+ PRRSN; \
+ PRRAn(1,s,a1,t1); PRRAn(2,s,a2,t2); PRRAn(3,s,a3,t3); \
+ PRRAn(4,s,a4,t4); PRRAn(5,s,a5,t5); PRRAn(6,s,a6,t6); \
+ }
-#if 0
- do { \
- if (VG_(defined_)()) { \
- SK_(pre_reg_read)(args); \
- } \
- } while(0)
-#endif
#define PRE_MEM_READ(zzname, zzaddr, zzlen) \
@@ -4094,18 +4131,21 @@ PRE(_newselect)
}
-PRE(open)
+PRE(sys_open)
{
- /* int open(const char *pathname, int flags, mode_t mode); */
if (arg2 & VKI_O_CREAT) {
- /* int open(const char *pathname, int flags, mode_t mode); */
- PRINT("open ( %p(%s), %d, %d )",arg1,arg1,arg2,arg3);
+ // 3-arg version
+ PRINT("sys_open ( %p(%s), %d, %d )",arg1,arg1,arg2,arg3);
+ PRE_REG_READ3(long, "open",
+ const char __user *, filename, int, flags, int, mode);
} else {
- /* int open(const char *pathname, int flags); */
- PRINT("open ( %p(%s), %d )",arg1,arg1,arg2);
+ // 2-arg version
+ PRINT("sys_open ( %p(%s), %d )",arg1,arg1,arg2);
+ PRE_REG_READ2(long, "open",
+ const char __user *, filename, int, flags);
}
- PRE_MEM_RASCIIZ( "open(pathname)", arg1 );
+ PRE_MEM_RASCIIZ( "open(filename)", arg1 );
}
-POST(open)
+POST(sys_open)
{
if (!fd_allowed(res, "open", tid, True)) {
@@ -5880,7 +5920,5 @@ static const struct sys_info sys_info[]
SYSBA(nanosleep, MayBlock|PostOnFail),
SYSB_(_newselect, MayBlock),
- SYSBA(open, MayBlock),
-// SYSBA(read, MayBlock),
-// SYSB_(write, MayBlock),
+ SYSXY(__NR_open, sys_open, MayBlock),
SYSXY(__NR_read, sys_read, MayBlock),
SYSX_(__NR_write, sys_write, MayBlock),
--- valgrind/memcheck/tests/Makefile.am #1.55:1.56
@@ -52,6 +52,6 @@
realloc2.stderr.exp realloc2.vgtest \
realloc3.stderr.exp realloc3.vgtest \
- scalar.stderr.exp scalar.vgtest \
- scalar_supp.stderr.exp scalar_supp.vgtest scalar.supp \
+ scalar.stderr.exp scalar.vgtest scalar.supp \
+ scalar_supp.stderr.exp scalar_supp.vgtest scalar_supp.c \
sigaltstack.stderr.exp sigaltstack.vgtest \
signal2.stderr.exp \
@@ -82,5 +82,5 @@
nanoleak new_nothrow \
null_socket overlap \
- realloc1 realloc2 realloc3 scalar sigaltstack signal2 \
+ realloc1 realloc2 realloc3 scalar scalar_supp sigaltstack signal2 \
str_tester supp1 supp2 suppfree \
trivialleak weirdioctl \
@@ -135,4 +135,5 @@
realloc3_SOURCES = realloc3.c
scalar_SOURCES = scalar.c
+scalar_supp_SOURCES = scalar_supp.c
signal2_SOURCES = signal2.c
supp1_SOURCES = supp.c
--- valgrind/memcheck/tests/scalar.c #1.2:1.3
@@ -1,5 +1,18 @@
+#include <assert.h>
+#include <fcntl.h>
+#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
+#include <sys/stat.h>
#include <sys/syscall.h>
+#include <sys/types.h>
+
+// Thorough syscall scalar arg checking. Also serves as thorough checking
+// for (very) basic syscall use. Generally not trying to do anything
+// meaningful with the syscalls.
+
+void GO(char* s) {
+ fprintf(stderr, "---------- %s ----------\n", s);
+}
int main(void)
@@ -7,16 +20,317 @@ int main(void)
// uninitialised, but we know pi[0] is 0x0
int* pi = malloc(sizeof(int));
+ int i0 = pi[0];
// uninitialised, but we know pc[0] points to 0x0
char** pc = malloc(sizeof(char*));
+ char* s0 = pc[0];
- // Five errors:
- // - the syscall number itself is undefined (but we know it's
- // 0 + __NR_write :)
- // - each of the scalar args are undefined
- // - the 2nd arg points to unaddressable memory.
- syscall(pi[0]+__NR_write, pi[0], pc[0], pi[0]+1);
+ // All __NR_xxx numbers are taken from x86
- return 0;
+ // __NR_exit 1
+ // (see below)
+
+ // __NR_fork 2
+
+ // __NR_read 3 --> sys_read()
+ // Nb: here we are also getting an error from the syscall arg itself.
+ GO("__NR_read, 1+3 scalar errors");
+ syscall(i0+__NR_read, i0, s0, i0);
+
+ // __NR_write 4 --> sys_write()
+ GO("__NR_write, 3 scalar errors, 1 memory error");
+ syscall(__NR_write, i0, s0, i0+1);
+
+ // __NR_open 5
+ GO("__NR_open(2), 2 scalar errors, 1 memory error");
+ syscall(__NR_open, s0, i0, i0+1);
+
+ GO("__NR_open(3), 1 scalar error");
+ syscall(__NR_open, "tmp_write_file_foo", O_CREAT, i0);
+
+ // __NR_close 6
+ // __NR_waitpid 7
+ // __NR_creat 8
+ // __NR_link 9
+ // __NR_unlink 10
+ // __NR_execve 11
+ // __NR_chdir 12
+ // __NR_time 13
+ // __NR_mknod 14
+ // __NR_chmod 15
+ // __NR_lchown 16
+ // __NR_break 17
+ // __NR_oldstat 18
+ // __NR_lseek 19
+ // __NR_getpid 20
+ // __NR_mount 21
+ // __NR_umount 22
+ // __NR_setuid 23
+ // __NR_getuid 24
+ // __NR_stime 25
+ // __NR_ptrace 26
+ // __NR_alarm 27
+ // __NR_oldfstat 28
+ // __NR_pause 29
+ // __NR_utime 30
+ // __NR_stty 31
+ // __NR_gtty 32
+ // __NR_access 33
+ // __NR_nice 34
+ // __NR_ftime 35
+ // __NR_sync 36
+ // __NR_kill 37
+ // __NR_rename 38
+ // __NR_mkdir 39
+ // __NR_rmdir 40
+ // __NR_dup 41
+ // __NR_pipe 42
+ // __NR_times 43
+ // __NR_prof 44
+ // __NR_brk 45
+ // __NR_setgid 46
+ // __NR_getgid 47
+ // __NR_signal 48
+ // __NR_geteuid 49
+ // __NR_getegid 50
+ // __NR_acct 51
+ // __NR_umount2 52
+ // __NR_lock 53
+ // __NR_ioctl 54
+ // __NR_fcntl 55
+ // __NR_mpx 56
+ // __NR_setpgid 57
+ // __NR_ulimit 58
+ // __NR_oldolduname 59
+ // __NR_umask 60
+ // __NR_chroot 61
+ // __NR_ustat 62
+ // __NR_dup2 63
+ // __NR_getppid 64
+ // __NR_getpgrp 65
+ // __NR_setsid 66
+ // __NR_sigaction 67
+ // __NR_sgetmask 68
+ // __NR_ssetmask 69
+ // __NR_setreuid 70
+ // __NR_setregid 71
+ // __NR_sigsuspend 72
+ // __NR_sigpending 73
+ // __NR_sethostname 74
+ // __NR_setrlimit 75
+ // __NR_getrlimit 76 /* Back compatible 2Gig limited rlimit */
+ // __NR_getrusage 77
+ // __NR_gettimeofday 78
+ // __NR_settimeofday 79
+ // __NR_getgroups 80
+ // __NR_setgroups 81
+ // __NR_select 82
+ // __NR_symlink 83
+ // __NR_oldlstat 84
+ // __NR_readlink 85
+ // __NR_uselib 86
+ // __NR_swapon 87
+ // __NR_reboot 88
+ // __NR_readdir 89
+ // __NR_mmap 90
+ // __NR_munmap 91
+ // __NR_truncate 92
+ // __NR_ftruncate 93
+ // __NR_fchmod 94
+ // __NR_fchown 95
+ // __NR_getpriority 96
+ // __NR_setpriority 97
+ // __NR_profil 98
+ // __NR_statfs 99
+ // __NR_fstatfs 100
+ // __NR_ioperm 101
+ // __NR_socketcall 102
+ // __NR_syslog 103
+ // __NR_setitimer 104
+ // __NR_getitimer 105
+ // __NR_stat 106
+ // __NR_lstat 107
+ // __NR_fstat 108
+ // __NR_olduname 109
+ // __NR_iopl 110
+ // __NR_vhangup 111
+ // __NR_idle 112
+ // __NR_vm86old 113
+ // __NR_wait4 114
+ // __NR_swapoff 115
+ // __NR_sysinfo 116
+ // __NR_ipc 117
+ // __NR_fsync 118
+ // __NR_sigreturn 119
+ // __NR_clone 120
+ // __NR_setdomainname 121
+ // __NR_uname 122
+ // __NR_modify_ldt 123
+ // __NR_adjtimex 124
+ // __NR_mprotect 125
+ // __NR_sigprocmask 126
+ // __NR_create_module 127
+ // __NR_init_module 128
+ // __NR_delete_module 129
+ // __NR_get_kernel_syms 130
+ // __NR_quotactl 131
+ // __NR_getpgid 132
+ // __NR_fchdir 133
+ // __NR_bdflush 134
+ // __NR_sysfs 135
+ // __NR_personality 136
+ // __NR_afs_syscall 137 /* Syscall for Andrew File System */
+ // __NR_setfsuid 138
+ // __NR_setfsgid 139
+ // __NR__llseek 140
+ // __NR_getdents 141
+ // __NR__newselect 142
+ // __NR_flock 143
+ // __NR_msync 144
+ // __NR_readv 145
+ // __NR_writev 146
+ // __NR_getsid 147
+ // __NR_fdatasync 148
+ // __NR__sysctl 149
+ // __NR_mlock 150
+ // __NR_munlock 151
+ // __NR_mlockall 152
+ // __NR_munlockall 153
+ // __NR_sched_setparam 154
+ // __NR_sched_getparam 155
+ // __NR_sched_setscheduler 156
+ // __NR_sched_getscheduler 157
+ // __NR_sched_yield 158
+ // __NR_sched_get_priority_max 159
+ // __NR_sched_get_priority_min 160
+ // __NR_sched_rr_get_interval 161
+ // __NR_nanosleep 162
+ // __NR_mremap 163
+ // __NR_setresuid 164
+ // __NR_getresuid 165
+ // __NR_vm86 166
+ // __NR_query_module 167
+ // __NR_poll 168
+ // __NR_nfsservctl 169
+ // __NR_setresgid 170
+ // __NR_getresgid 171
+ // __NR_prctl 172
+ // __NR_rt_sigreturn 173
+ // __NR_rt_sigaction 174
+ // __NR_rt_sigprocmask 175
+ // __NR_rt_sigpending 176
+ // __NR_rt_sigtimedwait 177
+ // __NR_rt_sigqueueinfo 178
+ // __NR_rt_sigsuspend 179
+ // __NR_pread64 180
+ // __NR_pwrite64 181
+ // __NR_chown 182
+ // __NR_getcwd 183
+ // __NR_capget 184
+ // __NR_capset 185
+ // __NR_sigaltstack 186
+ // __NR_sendfile 187
+ // __NR_getpmsg 188 /* some people actually want streams */
+ // __NR_putpmsg 189 /* some people actually want streams */
+ // __NR_vfork 190
+ // __NR_ugetrlimit 191 /* SuS compliant getrlimit */
+ // __NR_mmap2 192
+ // __NR_truncate64 193
+ // __NR_ftruncate64 194
+ // __NR_stat64 195
+ // __NR_lstat64 196
+ // __NR_fstat64 197
+ // __NR_lchown32 198
+ // __NR_getuid32 199
+ // __NR_getgid32 200
+ // __NR_geteuid32 201
+ // __NR_getegid32 202
+ // __NR_setreuid32 203
+ // __NR_setregid32 204
+ // __NR_getgroups32 205
+ // __NR_setgroups32 206
+ // __NR_fchown32 207
+ // __NR_setresuid32 208
+ // __NR_getresuid32 209
+ // __NR_setresgid32 210
+ // __NR_getresgid32 211
+ // __NR_chown32 212
+ // __NR_setuid32 213
+ // __NR_setgid32 214
+ // __NR_setfsuid32 215
+ // __NR_setfsgid32 216
+ // __NR_pivot_root 217
+ // __NR_mincore 218
+ // __NR_madvise 219
+ // __NR_madvise1 219 /* delete when C lib stub is removed */
+ // __NR_getdents64 220
+ // __NR_fcntl64 221
+/* 223 is unused */
+ // __NR_gettid 224
+ // __NR_readahead 225
+ // __NR_setxattr 226
+ // __NR_lsetxattr 227
+ // __NR_fsetxattr 228
+ // __NR_getxattr 229
+ // __NR_lgetxattr 230
+ // __NR_fgetxattr 231
+ // __NR_listxattr 232
+ // __NR_llistxattr 233
+ // __NR_flistxattr 234
+ // __NR_removexattr 235
+ // __NR_lremovexattr 236
+ // __NR_fremovexattr 237
+ // __NR_tkill 238
+ // __NR_sendfile64 239
+ // __NR_futex 240
+ // __NR_sched_setaffinity 241
+ // __NR_sched_getaffinity 242
+ // __NR_set_thread_area 243
+ // __NR_get_thread_area 244
+ // __NR_io_setup 245
+ // __NR_io_destroy 246
+ // __NR_io_getevents 247
+ // __NR_io_submit 248
+ // __NR_io_cancel 249
+ // __NR_fadvise64 250
+
+ // __NR_exit_group 252
+ // __NR_lookup_dcookie 253
+ // __NR_epoll_create 254
+ // __NR_epoll_ctl 255
+ // __NR_epoll_wait 256
+ // __NR_remap_file_pages 257
+ // __NR_set_tid_address 258
+ // __NR_timer_create 259
+ // __NR_timer_settime (__NR_timer_create+1)
+ // __NR_timer_gettime (__NR_timer_create+2)
+ // __NR_timer_getoverrun (__NR_timer_create+3)
+ // __NR_timer_delete (__NR_timer_create+4)
+ // __NR_clock_settime (__NR_timer_create+5)
+ // __NR_clock_gettime (__NR_timer_create+6)
+ // __NR_clock_getres (__NR_timer_create+7)
+ // __NR_clock_nanosleep (__NR_timer_create+8)
+ // __NR_statfs64 268
+ // __NR_fstatfs64 269
+ // __NR_tgkill 270
+ // __NR_utimes 271
+ // __NR_fadvise64_64 272
+ // __NR_vserver 273
+ // __NR_mbind 274
+ // __NR_get_mempolicy 275
+ // __NR_set_mempolicy 276
+ // __NR_mq_open 277
+ // __NR_mq_unlink (__NR_mq_open+1)
+ // __NR_mq_timedsend (__NR_mq_open+2)
+ // __NR_mq_timedreceive (__NR_mq_open+3)
+ // __NR_mq_notify (__NR_mq_open+4)
+ // __NR_mq_getsetattr (__NR_mq_open+5)
+ // __NR_sys_kexec_load 283
+
+ // __NR_exit 1 --> sys_exit()
+ GO("__NR_exit, 1 scalar error");
+ syscall(__NR_exit, i0);
+
+ assert(0);
}
--- valgrind/memcheck/tests/scalar.stderr.exp #1.2:1.3
@@ -1,2 +1,3 @@
+---------- __NR_read, 1+3 scalar errors ----------
Syscall param (syscallno) contains uninitialised byte(s)
at 0x........: syscall (in /...libc...)
@@ -4,4 +5,20 @@
by 0x........: ...
+Syscall param read(fd) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param read(buf) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param read(count) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+---------- __NR_write, 3 scalar errors, 1 memory error ----------
+
Syscall param write(fd) contains uninitialised byte(s)
at 0x........: syscall (in /...libc...)
@@ -24,2 +41,31 @@
by 0x........: ...
Address 0x........ is not stack'd, malloc'd or (recently) free'd
+---------- __NR_open(2), 2 scalar errors, 1 memory error ----------
+
+Syscall param open(filename) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param open(flags) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+
+Syscall param open(filename) points to unaddressable byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+---------- __NR_open(3), 1 scalar error ----------
+
+Syscall param open(mode) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
+---------- __NR_exit, 1 scalar error ----------
+
+Syscall param exit(error_code) contains uninitialised byte(s)
+ at 0x........: syscall (in /...libc...)
+ by 0x........: __libc_start_main (...libc...)
+ by 0x........: ...
--- valgrind/memcheck/tests/scalar.vgtest #1.1:1.2
@@ -1,2 +1,3 @@
prog: scalar
vgopts: -q
+delete: tmp_write_file_foo
--- valgrind/memcheck/tests/scalar_supp.vgtest #1.1:1.2
@@ -1,2 +1,2 @@
-prog: scalar
+prog: scalar_supp
vgopts: -q --suppressions=scalar.supp
|
|
From: Nicholas N. <nj...@ca...> - 2004-11-09 14:58:14
|
CVS commit by nethercote:
Improve pth_cvsimple test in two ways:
1. Make the output deterministic; different thread interleaving from expected
was causing failures for me.
2. Make it actually use the condition variable -- the condvar stupidly wasn't
actually being used in the expected case, because the other threads finished
all their work before pthread_cond_wait() even got called, and this prevented
the condition guarding pthread_cond_wait() from succeeding.
M +22 -15 pth_cvsimple.c 1.3 [POSSIBLY UNSAFE: printf]
M +22 -22 pth_cvsimple.stdout.exp 1.3
--- valgrind/corecheck/tests/pth_cvsimple.c #1.2:1.3
@@ -10,5 +10,5 @@
* cvsimple.c
*
- * Demonstrates pthread cancellation.
+ * Demonstrates pthread condvars.
*
*/
@@ -21,4 +21,5 @@
#define COUNT_THRES 12
+int condvar_was_hit = 0;
int count = 0;
int thread_ids[3] = {0,1,2};
@@ -26,16 +27,14 @@ pthread_mutex_t count_lock=PTHREAD_MUTEX
pthread_cond_t count_hit_threshold=PTHREAD_COND_INITIALIZER;
-void *inc_count(void *idp)
+void *inc_count(void *null)
{
int i=0;
- int *my_id = idp;
for (i=0; i<TCOUNT; i++) {
pthread_mutex_lock(&count_lock);
count++;
- printf("inc_counter(): thread %d, count = %d, unlocking mutex\n",
- *my_id, count);
+ printf("inc_counter(): count = %d, unlocking mutex\n", count);
if (count == COUNT_THRES) {
- printf("inc_count(): Thread %d, count %d\n", *my_id, count);
+ printf("hit threshold!\n");
pthread_cond_signal(&count_hit_threshold);
}
@@ -46,15 +45,11 @@ void *inc_count(void *idp)
}
-void *watch_count(void *idp)
+void *watch_count(void *null)
{
- int *my_id = idp;
-
- printf("watch_count(): thread %d\n", *my_id);
- fflush(stdout);
pthread_mutex_lock(&count_lock);
while (count < COUNT_THRES) {
pthread_cond_wait(&count_hit_threshold, &count_lock);
- printf("watch_count(): thread %d, count %d\n", *my_id, count);
+ condvar_was_hit = 1;
}
@@ -70,7 +65,7 @@ main(void)
pthread_t threads[3];
- pthread_create(&threads[0], NULL, inc_count, (void *)&thread_ids[0]);
- pthread_create(&threads[1], NULL, inc_count, (void *)&thread_ids[1]);
- pthread_create(&threads[2], NULL, watch_count, (void *)&thread_ids[2]);
+ pthread_create(&threads[0], NULL, watch_count, NULL);
+ pthread_create(&threads[1], NULL, inc_count, NULL);
+ pthread_create(&threads[2], NULL, inc_count, NULL);
for (i = 0; i < NUM_THREADS; i++) {
@@ -78,4 +73,16 @@ main(void)
}
+ // Nb: it's not certain that we'll hit here. It's possible that the two
+ // inc_count threads could fully run before watch_count begins, and so
+ // pthread_cond_wait() is never called. Or, we could get a spurious
+ // wake-up in watch_count(). Nonetheless, it's very likely that things
+ // will work out as expected, since we're starting watch_count() first.
+ if (condvar_was_hit == 1)
+ printf("condvar was hit!\n");
+ else if (condvar_was_hit > 1)
+ printf("condvar was multi-hit...\n");
+ else
+ printf("condvar was missed...\n");
+
return 0;
}
--- valgrind/corecheck/tests/pth_cvsimple.stdout.exp #1.2:1.3
@@ -1,22 +1,22 @@
-inc_counter(): thread 0, count = 1, unlocking mutex
-inc_counter(): thread 0, count = 2, unlocking mutex
-inc_counter(): thread 0, count = 3, unlocking mutex
-inc_counter(): thread 0, count = 4, unlocking mutex
-inc_counter(): thread 0, count = 5, unlocking mutex
-inc_counter(): thread 0, count = 6, unlocking mutex
-inc_counter(): thread 0, count = 7, unlocking mutex
-inc_counter(): thread 0, count = 8, unlocking mutex
-inc_counter(): thread 0, count = 9, unlocking mutex
-inc_counter(): thread 0, count = 10, unlocking mutex
-inc_counter(): thread 1, count = 11, unlocking mutex
-inc_counter(): thread 1, count = 12, unlocking mutex
-inc_count(): Thread 1, count 12
-inc_counter(): thread 1, count = 13, unlocking mutex
-inc_counter(): thread 1, count = 14, unlocking mutex
-inc_counter(): thread 1, count = 15, unlocking mutex
-inc_counter(): thread 1, count = 16, unlocking mutex
-inc_counter(): thread 1, count = 17, unlocking mutex
-inc_counter(): thread 1, count = 18, unlocking mutex
-inc_counter(): thread 1, count = 19, unlocking mutex
-inc_counter(): thread 1, count = 20, unlocking mutex
-watch_count(): thread 2
+inc_counter(): count = 1, unlocking mutex
+inc_counter(): count = 2, unlocking mutex
+inc_counter(): count = 3, unlocking mutex
+inc_counter(): count = 4, unlocking mutex
+inc_counter(): count = 5, unlocking mutex
+inc_counter(): count = 6, unlocking mutex
+inc_counter(): count = 7, unlocking mutex
+inc_counter(): count = 8, unlocking mutex
+inc_counter(): count = 9, unlocking mutex
+inc_counter(): count = 10, unlocking mutex
+inc_counter(): count = 11, unlocking mutex
+inc_counter(): count = 12, unlocking mutex
+hit threshold!
+inc_counter(): count = 13, unlocking mutex
+inc_counter(): count = 14, unlocking mutex
+inc_counter(): count = 15, unlocking mutex
+inc_counter(): count = 16, unlocking mutex
+inc_counter(): count = 17, unlocking mutex
+inc_counter(): count = 18, unlocking mutex
+inc_counter(): count = 19, unlocking mutex
+inc_counter(): count = 20, unlocking mutex
+condvar was hit!
|
|
From: Nicholas N. <nj...@ca...> - 2004-11-09 14:35:54
|
CVS commit by nethercote:
Disable --skin=, so you have to use --tool= now. No great loss.
M +2 -4 vg_main.c 1.229
--- valgrind/coregrind/vg_main.c #1.228:1.229
@@ -1646,6 +1646,5 @@ static void pre_process_cmd_line_options
*need_help = 2;
- } else if (VG_CLO_STREQN(7, vg_argv[i], "--tool=") ||
- VG_CLO_STREQN(7, vg_argv[i], "--skin=")) {
+ } else if (VG_CLO_STREQN(7, vg_argv[i], "--tool=")) {
*tool = &vg_argv[i][7];
@@ -1718,6 +1717,5 @@ static void process_cmd_line_options( UI
/* Ignore these options - they've already been handled */
- if (VG_CLO_STREQN(7, arg, "--tool=") ||
- VG_CLO_STREQN(7, arg, "--skin="))
+ if (VG_CLO_STREQN(7, arg, "--tool="))
continue;
if (VG_CLO_STREQN(7, arg, "--exec="))
|
|
From: Tom H. <th...@cy...> - 2004-11-09 09:34:48
|
In message <Pin...@he...>
Nicholas Nethercote <nj...@ca...> wrote:
> Hmm, I see that for 'audi' and 'dunsmere' all the memcheck failures
> are ones that involve "syscall param foo uninitiailised" errors... can
> you send me a copy of eg. memcheck/tests/badpoll.stderr.out? Thanks.
Those failures (including the new scalar ones) are all down to the
fact that those two machines both have the C library debug data
installed which means the backtraces valgrind generates have source
location details in like this:
*** badpoll.stderr.exp 2004-11-08 19:20:09.000000000 +0000
--- badpoll.stderr.out 2004-11-09 08:53:03.000000000 +0000
***************
*** 2 ****
! at 0x........: poll (in /...libc...)
--- 2 ----
! at 0x........: poll (poll.c:85)
***************
*** 9 ****
! at 0x........: poll (in /...libc...)
--- 9 ----
! at 0x........: poll (poll.c:85)
In fact I believe that all the current failures on those two machine
are caused by this problem.
Tom
--
Tom Hughes (th...@cy...)
Software Engineer, Cyberscience Corporation
http://www.cyberscience.com/
|
|
From: Nicholas N. <nj...@ca...> - 2004-11-09 09:13:47
|
On Tue, 9 Nov 2004, Tom Hughes wrote: > Nightly build on audi ( Red Hat 9 ) started at 2004-11-09 03:15:04 GMT > > == 186 tests, 11 stderr failures, 0 stdout failures ================= > corecheck/tests/fdleak_cmsg (stderr) > corecheck/tests/fdleak_fcntl (stderr) > corecheck/tests/fdleak_ipv4 (stderr) > corecheck/tests/fdleak_socketpair (stderr) > memcheck/tests/badpoll (stderr) > memcheck/tests/buflen_check (stderr) > memcheck/tests/execve (stderr) > memcheck/tests/execve2 (stderr) > memcheck/tests/scalar (stderr) > memcheck/tests/scalar_supp (stderr) > memcheck/tests/writev (stderr) Hmm, I see that for 'audi' and 'dunsmere' all the memcheck failures are ones that involve "syscall param foo uninitiailised" errors... can you send me a copy of eg. memcheck/tests/badpoll.stderr.out? Thanks. N |
|
From: Tom H. <th...@cy...> - 2004-11-09 08:58:40
|
In message <Pin...@he...>
Nicholas Nethercote <nj...@ca...> wrote:
> On Mon, 8 Nov 2004, Tom Hughes wrote:
>
>>> But the __NR_foo name means different things on different architectures.
>>
>> Ah right. I didn't realise that there were differences like that
>> between platforms. I understand the logic now.
>
> Yeah, it took me quite a while to understand how it worked, and how
> Valgrind should handle it. The key thing to look at is
> linux/arch/<arch>/kernel/entry.S, which contains the 'sys_call_table',
> which is the complete __NR_foo --> sys_foo() mapping.
Oh I knew about the system call table, just not that some
architectures used the same routine to handle different calls.
Tom
--
Tom Hughes (th...@cy...)
Software Engineer, Cyberscience Corporation
http://www.cyberscience.com/
|
|
From: Nicholas N. <nj...@ca...> - 2004-11-09 08:50:06
|
On Mon, 8 Nov 2004, Tom Hughes wrote: >> But the __NR_foo name means different things on different architectures. > > Ah right. I didn't realise that there were differences like that > between platforms. I understand the logic now. Yeah, it took me quite a while to understand how it worked, and how Valgrind should handle it. The key thing to look at is linux/arch/<arch>/kernel/entry.S, which contains the 'sys_call_table', which is the complete __NR_foo --> sys_foo() mapping. N |
|
From: <js...@ac...> - 2004-11-09 03:56:45
|
Nightly build on phoenix ( SuSE 9.1 ) started at 2004-11-09 03:50:00 GMT Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow insn_basic: valgrind ./insn_basic insn_cmov: valgrind ./insn_cmov insn_fpu: valgrind ./insn_fpu insn_mmx: valgrind ./insn_mmx insn_mmxext: (cpu_test failed, skipping) insn_sse: valgrind ./insn_sse insn_sse2: (cpu_test failed, skipping) int: valgrind ./int pushpopseg: valgrind ./pushpopseg rcl_assert: valgrind ./rcl_assert seg_override: valgrind ./seg_override -- Finished tests in none/tests/x86 ------------------------------------ yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 181 tests, 2 stderr failures, 0 stdout failures ================= corecheck/tests/fdleak_fcntl (stderr) memcheck/tests/writev (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <to...@co...> - 2004-11-09 03:26:47
|
Nightly build on dunsmere ( Fedora Core 2 ) started at 2004-11-09 03:20:02 GMT Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow rcl_assert: valgrind ./rcl_assert seg_override: valgrind ./seg_override -- Finished tests in none/tests/x86 ------------------------------------ yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 186 tests, 11 stderr failures, 0 stdout failures ================= corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/fdleak_fcntl (stderr) corecheck/tests/fdleak_ipv4 (stderr) corecheck/tests/fdleak_socketpair (stderr) memcheck/tests/badpoll (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_supp (stderr) memcheck/tests/writev (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2004-11-09 03:20:52
|
Nightly build on audi ( Red Hat 9 ) started at 2004-11-09 03:15:04 GMT Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow rcl_assert: valgrind ./rcl_assert seg_override: valgrind ./seg_override -- Finished tests in none/tests/x86 ------------------------------------ yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 186 tests, 11 stderr failures, 0 stdout failures ================= corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/fdleak_fcntl (stderr) corecheck/tests/fdleak_ipv4 (stderr) corecheck/tests/fdleak_socketpair (stderr) memcheck/tests/badpoll (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_supp (stderr) memcheck/tests/writev (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2004-11-09 03:14:05
|
Nightly build on ginetta ( Red Hat 8.0 ) started at 2004-11-09 03:10:03 GMT Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow cpuid: valgrind ./cpuid dastest: valgrind ./dastest fpu_lazy_eflags: valgrind ./fpu_lazy_eflags insn_basic: valgrind ./insn_basic insn_cmov: valgrind ./insn_cmov insn_fpu: valgrind ./insn_fpu insn_mmx: valgrind ./insn_mmx insn_mmxext: valgrind ./insn_mmxext insn_sse: valgrind ./insn_sse insn_sse2: (cpu_test failed, skipping) int: valgrind ./int pushpopseg: valgrind ./pushpopseg rcl_assert: valgrind ./rcl_assert seg_override: valgrind ./seg_override -- Finished tests in none/tests/x86 ------------------------------------ yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 186 tests, 0 stderr failures, 0 stdout failures ================= |
|
From: Tom H. <th...@cy...> - 2004-11-09 03:08:46
|
Nightly build on alvis ( Red Hat 7.3 ) started at 2004-11-09 03:05:03 GMT Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow fpu_lazy_eflags: valgrind ./fpu_lazy_eflags insn_basic: valgrind ./insn_basic insn_cmov: valgrind ./insn_cmov insn_fpu: valgrind ./insn_fpu insn_mmx: valgrind ./insn_mmx insn_mmxext: valgrind ./insn_mmxext insn_sse: valgrind ./insn_sse insn_sse2: (cpu_test failed, skipping) int: valgrind ./int pushpopseg: valgrind ./pushpopseg rcl_assert: valgrind ./rcl_assert seg_override: valgrind ./seg_override -- Finished tests in none/tests/x86 ------------------------------------ yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 186 tests, 1 stderr failure, 0 stdout failures ================= memcheck/tests/vgtest_ume (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2004-11-09 03:04:10
|
Nightly build on standard ( Red Hat 7.2 ) started at 2004-11-09 03:00:02 GMT Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow fpu_lazy_eflags: valgrind ./fpu_lazy_eflags insn_basic: valgrind ./insn_basic insn_cmov: valgrind ./insn_cmov insn_fpu: valgrind ./insn_fpu insn_mmx: valgrind ./insn_mmx insn_mmxext: valgrind ./insn_mmxext insn_sse: valgrind ./insn_sse insn_sse2: (cpu_test failed, skipping) int: valgrind ./int pushpopseg: valgrind ./pushpopseg rcl_assert: valgrind ./rcl_assert seg_override: valgrind ./seg_override -- Finished tests in none/tests/x86 ------------------------------------ yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 186 tests, 1 stderr failure, 0 stdout failures ================= memcheck/tests/vgtest_ume (stderr) make: *** [regtest] Error 1 |