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
(15) |
2
(12) |
3
(11) |
4
(20) |
5
(6) |
|
6
(6) |
7
(7) |
8
(8) |
9
(17) |
10
(25) |
11
(27) |
12
(6) |
|
13
(28) |
14
(16) |
15
(20) |
16
(9) |
17
(26) |
18
(7) |
19
(25) |
|
20
(7) |
21
(18) |
22
(25) |
23
(15) |
24
(21) |
25
(32) |
26
(15) |
|
27
(23) |
28
(33) |
|
|
|
|
|
|
From: Tom H. <th...@cy...> - 2005-02-28 03:17:32
|
Nightly build on ginetta ( Red Hat 8.0 ) started at 2005-02-28 03:10:03 GMT Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow rm: cannot remove `vgcore.pid*': No such file or directory (cleanup operation failed: rm vgcore.pid*) 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 ---------------------------------------- == 212 tests, 8 stderr failures, 0 stdout failures ================= helgrind/tests/allok (stderr) helgrind/tests/deadlock (stderr) helgrind/tests/inherit (stderr) helgrind/tests/race (stderr) helgrind/tests/race2 (stderr) helgrind/tests/readshared (stderr) memcheck/tests/pth_once (stderr) memcheck/tests/threadederrno (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2005-02-28 03:16:27
|
Nightly build on standard ( Red Hat 7.2 ) started at 2005-02-28 03:00:03 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 ---------------------------------------- == 212 tests, 11 stderr failures, 0 stdout failures ================= addrcheck/tests/leak-tree (stderr) helgrind/tests/allok (stderr) helgrind/tests/deadlock (stderr) helgrind/tests/inherit (stderr) helgrind/tests/race (stderr) helgrind/tests/race2 (stderr) helgrind/tests/readshared (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pth_once (stderr) memcheck/tests/threadederrno (stderr) memcheck/tests/vgtest_ume (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2005-02-28 03:12:39
|
Nightly build on alvis ( Red Hat 7.3 ) started at 2005-02-28 03:05:03 GMT Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 212 tests, 14 stderr failures, 0 stdout failures ================= addrcheck/tests/leak-tree (stderr) helgrind/tests/allok (stderr) helgrind/tests/deadlock (stderr) helgrind/tests/inherit (stderr) helgrind/tests/race (stderr) helgrind/tests/race2 (stderr) helgrind/tests/readshared (stderr) massif/tests/toobig-allocs (stderr) massif/tests/true_html (stderr) massif/tests/true_text (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pth_once (stderr) memcheck/tests/threadederrno (stderr) memcheck/tests/vgtest_ume (stderr) make: *** [regtest] Error 1 |
|
From: Jeremy F. <je...@go...> - 2005-02-28 01:13:07
|
CVS commit by fitzhardinge:
Insert MALLOCLIKE/FREELIKE instrumentation into VG_(arena_*) functions.
I'm not convinced this is correct yet, but it works enough.
This change includes some fixes for problems found while running V
under memcheck.
M +11 -4 stage1.c 1.33
M +11 -3 vg_main.c 1.254
M +17 -8 vg_malloc2.c 1.35
M +1 -0 vg_signals.c 1.134
M +4 -4 vg_symtab2.c 1.104
--- valgrind/coregrind/vg_malloc2.c #1.34:1.35
@@ -32,4 +32,5 @@
#include "core.h"
+#include "memcheck/memcheck.h"
//#define DEBUG_MALLOC // turn on heavyweight debugging machinery
@@ -479,4 +480,5 @@ Superblock* newSuperblock ( Arena* a, Si
}
vg_assert(NULL != sb);
+ VALGRIND_DISCARD(VALGRIND_MAKE_WRITABLE(sb, cszB));
vg_assert(0 == (Addr)sb % VG_MIN_MALLOC_SZB);
sb->n_payload_bytes = cszB - sizeof(Superblock);
@@ -867,4 +869,5 @@ void mkFreeBlock ( Arena* a, Block* b, S
SizeT pszB = bszB_to_pszB(a, bszB);
vg_assert(b_lno == pszB_to_listNo(pszB));
+ VALGRIND_DISCARD(VALGRIND_MAKE_WRITABLE(b, bszB));
// Set the size fields and indicate not-in-use.
set_bszB_lo(b, mk_free_bszB(bszB));
@@ -896,4 +899,5 @@ void mkInuseBlock ( Arena* a, Block* b,
UInt i;
vg_assert(bszB >= min_useful_bszB(a));
+ VALGRIND_MAKE_WRITABLE(b, bszB);
set_bszB_lo(b, mk_inuse_bszB(bszB));
set_bszB_hi(b, mk_inuse_bszB(bszB));
@@ -1030,4 +1034,6 @@ void* VG_(arena_malloc) ( ArenaId aid, S
v = get_block_payload(a, b);
vg_assert( (((Addr)v) & (VG_MIN_MALLOC_SZB-1)) == 0 );
+
+ VALGRIND_MALLOCLIKE_BLOCK(v, req_pszB, 0, False);
return v;
}
@@ -1125,4 +1131,6 @@ void VG_(arena_free) ( ArenaId aid, void
# endif
+ VALGRIND_FREELIKE_BLOCK(ptr, 0);
+
VGP_POPCC(VgpMalloc);
}
@@ -1251,4 +1259,7 @@ void* VG_(arena_malloc_aligned) ( ArenaI
vg_assert( (((Addr)align_p) % req_alignB) == 0 );
+
+ VALGRIND_MALLOCLIKE_BLOCK(align_p, req_pszB, 0, False);
+
return align_p;
}
@@ -1269,5 +1280,4 @@ SizeT VG_(arena_payload_szB) ( ArenaId a
void* VG_(arena_calloc) ( ArenaId aid, SizeT alignB, SizeT nmemb, SizeT nbytes )
{
- UInt i;
SizeT size;
UChar* p;
@@ -1283,5 +1293,7 @@ void* VG_(arena_calloc) ( ArenaId aid, S
p = VG_(arena_malloc_aligned) ( aid, alignB, size );
- for (i = 0; i < size; i++) p[i] = 0;
+ VG_(memset)(p, 0, nbytes);
+
+ VALGRIND_MALLOCLIKE_BLOCK(p, nbytes, 0, True);
VGP_POPCC(VgpMalloc);
@@ -1296,6 +1308,5 @@ void* VG_(arena_realloc) ( ArenaId aid,
Arena* a;
SizeT old_bszB, old_pszB;
- UInt i;
- UChar *p_old, *p_new;
+ UChar *p_new;
Block* b;
@@ -1326,9 +1337,7 @@ void* VG_(arena_realloc) ( ArenaId aid,
}
- p_old = (UChar*)ptr;
- for (i = 0; i < old_pszB; i++)
- p_new[i] = p_old[i];
+ VG_(memcpy)(p_new, ptr, old_pszB);
- VG_(arena_free)(aid, p_old);
+ VG_(arena_free)(aid, ptr);
VGP_POPCC(VgpMalloc);
--- valgrind/coregrind/vg_main.c #1.253:1.254
@@ -46,4 +46,6 @@
#include <unistd.h>
+#include "memcheck/memcheck.h"
+
#ifndef AT_DCACHEBSIZE
#define AT_DCACHEBSIZE 19
@@ -1178,5 +1180,5 @@ static void load_tool( const char *tooln
{
Bool ok;
- int len = strlen(VG_(libdir)) + strlen(toolname)*2 + 16;
+ int len = strlen(VG_(libdir)) + strlen(toolname) + 16;
char buf[len];
void* handle;
@@ -2184,8 +2186,12 @@ static void build_segment_map_callback (
vg_assert(0 != r_esp);
if (is_stack_segment) {
- if (0)
- VG_(message)(Vg_DebugMsg, "invalidating stack area: %x .. %x",
+ if (0) {
+ VG_(message)(Vg_DebugMsg, "invalidating stack area: %p .. %p",
start,r_esp);
+ VG_(message)(Vg_DebugMsg, " validating stack area: %p .. %p",
+ r_esp, start+size);
+ }
VG_TRACK( die_mem_stack, start, r_esp-start );
+ VG_TRACK( post_mem_write, r_esp, (start+size)-r_esp );
}
}
@@ -2466,4 +2473,5 @@ int main(int argc, char **argv, char **e
sp_at_startup = setup_client_stack(init_sp, cl_argv, env, &info,
&client_auxv);
+ free(env);
}
--- valgrind/coregrind/stage1.c #1.32:1.33
@@ -44,4 +44,5 @@
#include "core.h"
#include "ume.h"
+#include "memcheck/memcheck.h"
static int stack[SIGSTKSZ*4];
@@ -304,8 +305,5 @@ int main(int argc, char** argv)
{
struct rlimit rlim;
- const char *cp = getenv(VALGRINDLIB);
-
- if (cp != NULL)
- valgrind_lib = cp;
+ const char *cp;
// Initial stack pointer is to argc, which is immediately before argv[0]
@@ -313,4 +311,13 @@ int main(int argc, char** argv)
init_sp = argv - 1;
+ /* The Linux libc startup sequence leaves this in an apparently
+ undefined state, but it really is defined, so mark it so. */
+ VALGRIND_MAKE_READABLE(init_sp, sizeof(int));
+
+ cp = getenv(VALGRINDLIB);
+
+ if (cp != NULL)
+ valgrind_lib = cp;
+
/* Set the address space limit as high as it will go, since we make
a lot of very large mappings. */
--- valgrind/coregrind/vg_symtab2.c #1.103:1.104
@@ -1106,5 +1106,5 @@ static
Addr find_debug_file( Char* objpath, Char* debugname, UInt crc, UInt* size )
{
- Char *objdir = VG_(strdup)(objpath);
+ Char *objdir = VG_(arena_strdup)(VG_AR_SYMTAB, objpath);
Char *objdirptr;
Char *debugpath;
@@ -1114,5 +1114,5 @@ Addr find_debug_file( Char* objpath, Cha
*objdirptr = '\0';
- debugpath = VG_(malloc)(VG_(strlen)(objdir) + VG_(strlen)(debugname) + 16);
+ debugpath = VG_(arena_malloc)(VG_AR_SYMTAB, VG_(strlen)(objdir) + VG_(strlen)(debugname) + 16);
VG_(sprintf)(debugpath, "%s/%s", objdir, debugname);
@@ -1126,6 +1126,6 @@ Addr find_debug_file( Char* objpath, Cha
}
- VG_(free)(debugpath);
- VG_(free)(objdir);
+ VG_(arena_free)(VG_AR_SYMTAB, debugpath);
+ VG_(arena_free)(VG_AR_SYMTAB, objdir);
return addr;
--- valgrind/coregrind/vg_signals.c #1.133:1.134
@@ -2080,4 +2080,5 @@ void VG_(sigstartup_actions) ( void )
tsa.ksa_handler = (void *)vg_sync_signalhandler;
tsa.sa_flags = VKI_SA_SIGINFO;
+ tsa.sa_restorer = 0;
VG_(sigfillset)(&tsa.sa_mask);
|
|
From: Jeremy F. <je...@go...> - 2005-02-28 01:09:10
|
CVS commit by fitzhardinge:
Add a simple memset().
M +10 -0 mac_replace_strmem.c 1.15
--- valgrind/memcheck/mac_replace_strmem.c #1.14:1.15
@@ -353,4 +353,14 @@ char* stpcpy ( char* dst, const char* sr
}
+void *memset(void *s, int c, size_t n)
+{
+ unsigned char *cp = s;
+
+ while(n--)
+ *cp++ = c;
+
+ return s;
+}
+
/*--------------------------------------------------------------------*/
|
|
From: Jeremy F. <je...@go...> - 2005-02-28 01:08:36
|
CVS commit by fitzhardinge:
A little refactoring to add a standard set of comparison functions for
skiplists, since many lists are using the same key types.
M +1 -15 coregrind/vg_memory.c 1.93
M +3 -17 coregrind/vg_redir.c 1.6
M +63 -2 coregrind/vg_skiplist.c 1.9
M +2 -15 coregrind/vg_threadmodel.c 1.2
M +8 -2 include/tool.h.base 1.27
--- valgrind/coregrind/vg_skiplist.c #1.8:1.9
@@ -4,6 +4,6 @@
emulator for monitoring program execution on x86-Unixes.
- Copyright (C) 2002-2004 Nicholas Nethercote
- nj...@ca...
+ Copyright (C) 2002-2004 Jeremy Fitzhardinge
+ je...@go...
This program is free software; you can redistribute it and/or
@@ -450,2 +450,63 @@ void *VG_(SkipList_Remove)(SkipList *l,
return data_of_node(l, n);
}
+
+void VG_(SkipList_for_each_node)(const SkipList *l,
+ void (*fn)(void *node, void *arg), void *arg)
+{
+ void *n;
+
+ for(n = VG_(SkipNode_First)(l);
+ n != NULL;
+ n = VG_(SkipNode_Next)(l, n))
+ (*fn)(n, arg);
+}
+
+
+/* --------------------------------------------------
+ Comparison functions
+ -------------------------------------------------- */
+Int VG_(cmp_Int)(const void *v1, const void *v2)
+{
+ Int a = *(const Int *)v1;
+ Int b = *(const Int *)v2;
+
+ if (a < b)
+ return -1;
+ if (a == b)
+ return 0;
+ return 1;
+}
+
+Int VG_(cmp_UInt)(const void *v1, const void *v2)
+{
+ UInt a = *(const UInt *)v1;
+ UInt b = *(const UInt *)v2;
+
+ if (a < b)
+ return -1;
+ if (a == b)
+ return 0;
+ return 1;
+}
+
+Int VG_(cmp_Addr)(const void *v1, const void *v2)
+{
+ Addr a = *(const Addr *)v1;
+ Addr b = *(const Addr *)v2;
+
+ if (a < b)
+ return -1;
+ if (a == b)
+ return 0;
+ return 1;
+}
+
+Int VG_(cmp_string)(const void *v1, const void *v2)
+{
+ const Char *a = *(const Char **)v1;
+ const Char *b = *(const Char **)v2;
+
+ return VG_(strcmp)(a, b);
+}
+
+
--- valgrind/coregrind/vg_threadmodel.c #1.1:1.2
@@ -239,10 +239,5 @@ static void do_thread_dead(struct thread
}
-static Int tidcmp(const void *v1, const void *v2)
-{
- return *(Int *)v1 - *(Int *)v2;
-}
-
-static SkipList sk_threads = SKIPLIST_INIT(struct thread, tid, tidcmp, NULL, VG_AR_CORE);
+static SkipList sk_threads = SKIPLIST_INIT(struct thread, tid, VG_(cmp_UInt), NULL, VG_AR_CORE);
static struct thread *thread_get(ThreadId tid)
@@ -610,13 +605,5 @@ static void mutex_report(ThreadId tid, A
}
-static Int mutexcmp(const void *v1, const void *v2)
-{
- Addr a = *(Addr *)v1;
- Addr b = *(Addr *)v2;
-
- return (a < b) ? -1 : (a == b ? 0 : 1);
-}
-
-static SkipList sk_mutex = SKIPLIST_INIT(struct mutex, mutex, mutexcmp, NULL, VG_AR_CORE);
+static SkipList sk_mutex = SKIPLIST_INIT(struct mutex, mutex, VG_(cmp_Addr), NULL, VG_AR_CORE);
static struct mutex *mx_get(Addr mutexp)
--- valgrind/coregrind/vg_memory.c #1.92:1.93
@@ -38,18 +38,4 @@
static const Bool mem_debug = False;
-static Int addrcmp(const void *ap, const void *bp)
-{
- Addr a = *(Addr *)ap;
- Addr b = *(Addr *)bp;
- Int ret;
-
- if (a == b)
- ret = 0;
- else
- ret = (a < b) ? -1 : 1;
-
- return ret;
-}
-
static Char *straddr(void *p)
{
@@ -61,5 +47,5 @@ static Char *straddr(void *p)
}
-static SkipList sk_segments = SKIPLIST_INIT(Segment, addr, addrcmp, straddr, VG_AR_CORE);
+static SkipList sk_segments = SKIPLIST_INIT(Segment, addr, VG_(cmp_Addr), straddr, VG_AR_CORE);
/*--------------------------------------------------------------*/
--- valgrind/coregrind/vg_redir.c #1.5:1.6
@@ -76,18 +76,4 @@ struct _CodeRedirect {
};
-static Int cmp_addrp(const void *ap, const void *bp)
-{
- Addr a = *(Addr *)ap;
- Addr b = *(Addr *)bp;
- Int ret;
-
- if (a == b)
- ret = 0;
- else
- ret = (a < b) ? -1 : 1;
-
- return ret;
-}
-
static Char *straddr(void *p)
{
@@ -100,5 +86,5 @@ static Char *straddr(void *p)
static SkipList sk_resolved_redir = SKIPLIST_INIT(CodeRedirect, from_addr,
- cmp_addrp, straddr, VG_AR_SYMTAB);
+ VG_(cmp_Addr), straddr, VG_AR_SYMTAB);
static CodeRedirect *unresolved_redir = NULL;
@@ -574,9 +560,9 @@ struct wrapper_return {
/* A mapping from eip of wrapped function entrypoints to actual wrappers */
-static SkipList wrapped_functions = SKIPLIST_INIT(struct wrapped_function, eip, cmp_addrp,
+static SkipList wrapped_functions = SKIPLIST_INIT(struct wrapped_function, eip, VG_(cmp_Addr),
NULL, VG_AR_SYMTAB);
/* A set of EIPs which are return addresses for wrapped functions */
-static SkipList wrapper_returns = SKIPLIST_INIT(struct wrapper_return, eip, cmp_addrp,
+static SkipList wrapper_returns = SKIPLIST_INIT(struct wrapper_return, eip, VG_(cmp_Addr),
NULL, VG_AR_SYMTAB);
--- valgrind/include/tool.h.base #1.26:1.27
@@ -1690,6 +1690,12 @@
extern void *VG_(SkipList_Find_Exact) (const SkipList *l, void *key);
extern void *VG_(SkipList_Find_After) (const SkipList *l, void *key);
-extern void VG_(SkipList_Insert)( SkipList *l, void *data);
-extern void *VG_(SkipList_Remove)( SkipList *l, void *key);
+extern void VG_(SkipList_Insert) ( SkipList *l, void *data);
+extern void *VG_(SkipList_Remove) ( SkipList *l, void *key);
+
+/* Some useful standard comparisons */
+extern Int VG_(cmp_Addr) (const void *a, const void *b);
+extern Int VG_(cmp_Int) (const void *a, const void *b);
+extern Int VG_(cmp_UInt) (const void *a, const void *b);
+extern Int VG_(cmp_string)(const void *a, const void *b);
/* Node (element) operations:
|
|
From: Jeremy F. <je...@go...> - 2005-02-28 01:07:54
|
CVS commit by fitzhardinge:
Fix the sigsuspend syscalls, by making sure the change of the signal
mask is atomic with respect to the syscall blocking. This should fix
the problems with LinuxThreads programs hanging.
M +14 -16 vg_signals.c 1.133
M +1 -5 vg_syscalls.c 1.255
--- valgrind/coregrind/vg_syscalls.c #1.254:1.255
@@ -5461,5 +5461,4 @@ PRE(sys_sigsuspend, MayBlock)
int, history0, int, history1,
vki_old_sigset_t, mask);
- convert_sigset_to_rt((vki_old_sigset_t *)arg3, &tst->eff_sig_mask);
}
@@ -5475,8 +5474,6 @@ PRE(sys_rt_sigsuspend, MayBlock)
PRINT("sys_rt_sigsuspend ( %p, %d )", arg1,arg2 );
PRE_REG_READ2(int, "rt_sigsuspend", vki_sigset_t *, mask, vki_size_t, size)
- if (arg1 != (Addr)NULL) {
+ if (arg1 != (Addr)NULL)
SYS_PRE_MEM_READ( "rt_sigsuspend(mask)", arg1, sizeof(vki_sigset_t) );
- tst->eff_sig_mask = *(vki_sigset_t *)arg1;
- }
}
--- valgrind/coregrind/vg_signals.c #1.132:1.133
@@ -1621,4 +1621,10 @@ void vg_async_signalhandler ( Int sigNo,
sigNo, tid, info->si_code);
+ /* Update the thread's effective signal mask. The only syscall
+ this should apply to is sigsuspend, which has a temporary signal
+ mask set for signals delivered while it is blocked. The signal
+ handler will restore this on signal return. */
+ tst->eff_sig_mask = uc->uc_sigmask;
+
/* Update thread state properly */
VGA_(interrupted_syscall)(tid, uc,
@@ -1729,17 +1735,11 @@ void vg_sync_signalhandler ( Int sigNo,
Action: make thread runnable, queue signal, resume scheduler
*/
- Bool resume_sched = False;
-
if (VG_(threads)[tid].status == VgTs_WaitSys) {
- /* This is like a normal async signal, but we can't simply
- call async_signalhandler because the client may actually
- have the signal blocked, so we still need to queue it. */
- resume_sched = True;
-
- VG_(set_running)(tid);
-
- /* Update thread state properly */
- VGA_(interrupted_syscall)(tid, uc,
- !!(vg_scss.scss_per_sig[sigNo].scss_flags & VKI_SA_RESTART));
+ /* Since this signal interrupted a syscall, it means the
+ client's signal mask was applied, so we can't get here
+ unless the client wants this signal right now. This means
+ we can simply use the async_signalhandler. */
+ vg_async_signalhandler(sigNo, info, uc);
+ VG_(core_panic)("vg_async_signalhandler returned!?\n");
}
@@ -1769,6 +1769,6 @@ void vg_sync_signalhandler ( Int sigNo,
if (VG_(clo_trace_signals))
- VG_(message)(Vg_DebugMsg, "Routing user-sent sync signal %d via queue; resume_sched=%d",
- sigNo, resume_sched);
+ VG_(message)(Vg_DebugMsg, "Routing user-sent sync signal %d via queue",
+ sigNo);
/* Since every thread has these signals unblocked, we can't rely
@@ -1780,6 +1780,4 @@ void vg_sync_signalhandler ( Int sigNo,
queue_signal(0, info); /* shared pending */
- if (resume_sched)
- VG_(resume_scheduler)(tid);
return;
}
|
|
From: Jeremy F. <je...@go...> - 2005-02-28 00:57:07
|
Nicholas Nethercote wrote:
> * Approx 2/3 of respondents used --leak-check always/almost always, the
> rest sometimes use it.
>
> Recommendation: make --leak-check=yes the default.
What about a lightweight leak-check which is always enabled, but only
reports a summary of leaked memory, and a CLO which reports the full
details of leaked memory?
J
|
|
From: Nicholas N. <nj...@cs...> - 2005-02-27 19:59:14
|
On Fri, 25 Feb 2005, Julian Seward wrote: >> And should we consider defaulting to memcheck again? > > Personally I would like that. I find it annoying to constantly > have to type --tool=memcheck (but not _always_, so .valgrindrc > isn't the answer). .valgrindrc works with that. I'm in the same situation, so I have --tool=memcheck in my .valgrindrc, and if I want to run something else I just put that on the command line; command line-specified options take precedence over the .valgrindrc ones so it all just works. I'm not convinced about defaulting to Memcheck, but if I'm overruled, so be it. Recall that I originally made this change in response to the survey responses from November 2003 -- many people were confused about this, and didn't realise that Valgrind != Memcheck. I think we still have that confusion, although perhaps it's not so bad now that we use "tool" consistently rather than "skin". If we do default to Memcheck, I could mention the existence of other tools briefly in the Quick Start guide, maybe that would be enough. > But perhaps we should. In an underhand way it creates the > expectation amongst programmers that their programs should have > no detectable leaks, and that leaks will be tested for routinely > -- every time V is run. Yes, so that's good. > And it helps our software engineering too. Currently the checker > is basically an optional component and doesn't get tested enough. > If it was engaged by default, we would know much sooner if there was > anything broken about it. I think it gets used plenty by real people, but we as developers don't test it much. But it's still a good point. We'd have to change the test outputs a lot, though. ---- FWIW, I analysed the 14 newer survey responses more carefully. Here are the counts for the always/almost always used options, and the sometimes used options: Always/almost always used: --leak-check: 10 --num-callers: 7 (10 or more, 16, 10, 100, 8, 10, 10) --tool=memcheck: 4 (under-reported) --show-reachable: 4 --suppressions: 2 --trace-children=yes: 2 --error-limit=no: 1 -q: 1 Sometimes used: --leak-check: 5 --show-reachable: 3 --gdb-attach: 2 --logfile-fd=4 2 (4, -1) --leak-resolution=high: 2 --num-callers: 2 (30, 8) -v: 1 --help: 1 [I see that the --leak-check counts add up to 15. Must have counted one twice, whoops.] I guess the aim here should be that there is no option that a majority of users are almost always setting -- anything like that should be a default. Analysis and recommendations: * 12/14 use Memcheck 90% or more of the time. (The count of 4 is under-reported.) Recommendation: make it default again, and make it clear in the quick start guide that there are other tools. * Approx 2/3 of respondents used --leak-check always/almost always, the rest sometimes use it. Recommendation: make --leak-check=yes the default. * Half of users always increase --num-callers, and 2/14 sometimes do. It looks like 10 might be a good default, maybe 12. I'm guessing those that put it much higher are using C++ STL. (You could argue that it should be much higher, since it's probably not such a bad thing to have the whole trace present.) Recommendation: make --num-callers=12 the default. * --show-reachable=yes is quite popular, but not super-popular. Recommendation: leave --show-reachable=no the default. If no-one objects, I will commit these changes soon. N |
|
From: Nicholas N. <nj...@cs...> - 2005-02-27 17:57:58
|
On Thu, 24 Feb 2005, Jeremy Fitzhardinge wrote: > I already changed it to > > 4142 (128+4014) bytes in 1 blocks are definitely lost in loss record 461 of > 483 > > > I suppose that could be > > 4142 (128 direct, 4014 indirect) bytes in 1 blocks are definitely lost in > loss record 461 of 483 I think the latter is better -- it gives a knowledgeable user a reasonable chance to understand what it means without reading the manual. N |
|
From: Jeroen Ruigrok/a. <as...@wx...> - 2005-02-27 17:52:11
|
-On [20050227 18:42], Nicholas Nethercote (nj...@cs...) wrote: >Good to hear. What is DragonFly exactly? Looks like a FreeBSD fork >designed to handle multi-processor/clustered systems well? Does the world >really need another BSD? :) www.dragonflybsd.org And yes, it is, amongst things a BSD aimed at clustering, but also a lot of other changes. It is the result of dissatisfaction of the direction FreeBSD 5.x took architectually-wise. >BTW, I assume you're working off the CVS HEAD, rather than 2.2.0? If not, >you should be, there have been big changes since 2.2.0 that should make >your life much easier. Of course, I am using CVS. : ) >If we one day support hundreds of platforms and it becomes a problem, we >can do something about it then :) OK, will do. -- Jeroen Ruigrok van der Werven <asmodai(at)wxs.nl> / asmodai / kita no mono Free Tibet! http://www.savetibet.org/ | http://ashemedai.deviantart.com/ http://www.tendra.org/ | http://www.in-nomine.org/ Under this standard shalt thou conquer... |
|
From: Nicholas N. <nj...@cs...> - 2005-02-27 17:36:30
|
On Sun, 27 Feb 2005, Jeroen Ruigrok/asmodai wrote: > Given I am extending the code base for DragonFly support (and if I can > manage some other BSDs as well) I am encountering some things. Good to hear. What is DragonFly exactly? Looks like a FreeBSD fork designed to handle multi-processor/clustered systems well? Does the world really need another BSD? :) BTW, I assume you're working off the CVS HEAD, rather than 2.2.0? If not, you should be, there have been big changes since 2.2.0 that should make your life much easier. > configure.in: > > AC_OUTPUT( > [snip...] > include/x86/Makefile > include/linux/Makefile > include/x86-linux/Makefile > [snip...] > ) > > I thought about doing linux -> $VG_OS and x86-linux -> $VG_PLATFORM, but of > course automake does not like this, since it doesn't know about $VG_OS or > $VG_PLATFORM since that's set at runtime by configure. > > Any ideas/suggestions about this? Since it seems a bit awkward to create > all Makefiles for all OSes and targets when only one combination should > suffice. I wouldn't worry about it. The disadvantage of it is that it causes the distro to use some extra disk space, and it requires a tiny amount of extra time for those running configure.in. These aren't very important. The big advantage of doing it this way is that the code tree you have after running autoconf will work for any platform, which seems to me like a very good thing. If we one day support hundreds of platforms and it becomes a problem, we can do something about it then :) N |
|
From: Nicholas N. <nj...@cs...> - 2005-02-27 17:19:44
|
CVS commit by nethercote:
Added Citadel.
M +3 -0 users.html 1.81
--- devel-home/valgrind/users.html #1.80:1.81
@@ -509,4 +509,7 @@
<dd>A freely available and fully compliant C++ implementation of the CORBA
standard.
+
+<dt><a href="http://www.citadel.org/">Citadel</a>
+<dd>An open source, standalone, groupware and collaboration server.
</dl>
|
|
From: Jeroen Ruigrok/a. <as...@wx...> - 2005-02-27 15:08:13
|
Given I am extending the code base for DragonFly support (and if I can manage some other BSDs as well) I am encountering some things. Some have already been put into Bugzilla (hi Julian : )). One thing I am encountering is: configure.in: AC_OUTPUT( [snip...] include/x86/Makefile include/linux/Makefile include/x86-linux/Makefile [snip...] ) I thought about doing linux -> $VG_OS and x86-linux -> $VG_PLATFORM, but of course automake does not like this, since it doesn't know about $VG_OS or $VG_PLATFORM since that's set at runtime by configure. Any ideas/suggestions about this? Since it seems a bit awkward to create all Makefiles for all OSes and targets when only one combination should suffice. -- Jeroen Ruigrok van der Werven <asmodai(at)wxs.nl> / asmodai / kita no mono Free Tibet! http://www.savetibet.org/ | http://ashemedai.deviantart.com/ http://www.tendra.org/ | http://www.in-nomine.org/ The only reason for time is so that everything doesn't happen at once... |
|
From: Dirk M. <dm...@gm...> - 2005-02-27 14:50:03
|
On Saturday 26 February 2005 22:53, Julian Seward wrote: > > I thought that was discussed the other day and we decided to fix the > > problem rather than hide it. > Exactly so. Dirk, could you please undo this? ehmm, fixing this will cause massive code changes, which will make merging even more difficult. I've actually tried that a few weeks ago, and there is not even a clean way of doing it. Dirk |
|
From: Julian S. <js...@ac...> - 2005-02-27 14:35:53
|
Thanks Dirk. Appreciated. Sorry for the unfortunate timing of this. J On Sunday 27 February 2005 14:07, Dirk Mueller wrote: > On Sunday 27 February 2005 02:51, Julian Seward wrote: > > Please back these out. Cleaning up for gcc4 is obviously a good > > thing to do (there was a discussion on the list only yesterday) > > but now is not a good time to do it. > > Reverted the comment-only changes. I hope the two changes to configure.in > are okay, still? If its causing headaches I'm more than willing to merge > them into the vex branch myself to avoid the merging trouble for you. |
|
From: Dirk M. <mu...@kd...> - 2005-02-27 14:07:53
|
On Sunday 27 February 2005 02:51, Julian Seward wrote: > Please back these out. Cleaning up for gcc4 is obviously a good > thing to do (there was a discussion on the list only yesterday) > but now is not a good time to do it. Reverted the comment-only changes. I hope the two changes to configure.in are okay, still? If its causing headaches I'm more than willing to merge them into the vex branch myself to avoid the merging trouble for you. -- Dirk//\ |
|
From: Dirk M. <mu...@kd...> - 2005-02-27 14:03:29
|
CVS commit by mueller:
revert my last commits
M +16 -17 coregrind/x86/core_arch.h 1.26
M +107 -108 include/x86-linux/vki_arch.h 1.15
M +4 -4 include/x86-linux/vki_arch_posixtypes.h 1.5
--- valgrind/coregrind/x86/core_arch.h #1.25:1.26
@@ -32,6 +32,6 @@
#define __X86_CORE_ARCH_H
-#include "core_arch_asm.h"
-#include "tool_arch.h"
+#include "core_arch_asm.h" // arch-specific asm stuff
+#include "tool_arch.h" // arch-specific tool stuff
/* ---------------------------------------------------------------------
@@ -39,5 +39,5 @@
------------------------------------------------------------------ */
-/* Accessors for the arch_thread_t */
+// Accessors for the arch_thread_t
#define ARCH_INSTR_PTR(regs) ((regs).m_eip)
#define ARCH_STACK_PTR(regs) ((regs).m_esp)
@@ -65,19 +65,19 @@
#define ARCH_CLREQ_RET(regs) ((regs).m_edx)
-/* Accessors for the ThreadState */
+// Accessors for the ThreadState
#define R_CLREQ_RET R_EDX
#define R_PTHREQ_RET R_EDX
-/* Stack frame layout and linkage */
+// Stack frame layout and linkage
#define FIRST_STACK_FRAME(ebp) (ebp)
#define STACK_FRAME_RET(ebp) (((UWord*)ebp)[1])
#define STACK_FRAME_NEXT(ebp) (((UWord*)ebp)[0])
-/* Offsets of interesting registers */
+// Offsets of interesting registers
#define VGOFF_INSTR_PTR VGOFF_(m_eip)
#define VGOFF_STACK_PTR VGOFF_(m_esp)
#define VGOFF_FRAME_PTR VGOFF_(m_ebp)
-/* Get stack pointer and frame pointer */
+// Get stack pointer and frame pointer
#define ARCH_GET_REAL_STACK_PTR(esp) do { \
asm("movl %%esp, %0" : "=r" (esp)); \
@@ -164,5 +164,5 @@ extern const Char VG_(helper_cmpxchg8b)[
------------------------------------------------------------------ */
-/* XXX: eventually this will be x86-private, not seen by the core(?) */
+// XXX: eventually this will be x86-private, not seen by the core(?)
/* This is the hardware-format for a segment descriptor, ie what the
@@ -197,11 +197,11 @@ typedef struct _LDT_ENTRY {
------------------------------------------------------------------ */
-/* Total number of spill slots available for register allocation. */
+// Total number of spill slots available for register allocation.
#define VG_MAX_SPILLSLOTS 24
-/* Valgrind's stack size, in words. */
+// Valgrind's stack size, in words.
#define VG_STACK_SIZE_W 16384
-/* Base address of client address space. */
+// Base address of client address space.
#define CLIENT_BASE 0x00000000ul
@@ -255,9 +255,8 @@ struct i387_fxsave_struct {
-/* Architecture-specific part of a ThreadState
- XXX: eventually this should be made abstract, ie. the fields not visible
- to the core... then VgLdtEntry can be made non-visible to the core
- also.
-*/
+// Architecture-specific part of a ThreadState
+// XXX: eventually this should be made abstract, ie. the fields not visible
+// to the core... then VgLdtEntry can be made non-visible to the core
+// also.
typedef struct {
/* Saved machine context. Note the FPU state, %EIP and segment
@@ -333,5 +332,5 @@ arch_thread_t;
void VGA_(signal_return)(ThreadId tid, Bool isRT);
-#endif /* __X86_CORE_ARCH_H */
+#endif // __X86_CORE_ARCH_H
/*--------------------------------------------------------------------*/
--- valgrind/include/x86-linux/vki_arch.h #1.14:1.15
@@ -32,10 +32,10 @@
#define __X86_LINUX_VKI_ARCH_H
-/* x86 is little-endian. */
+// x86 is little-endian.
#define VKI_LITTLE_ENDIAN 1
-/*----------------------------------------------------------------------*/
-/* From linux-2.6.8.1/include/asm-i386/types.h */
-/*----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/types.h
+//----------------------------------------------------------------------
typedef unsigned char __vki_u8;
@@ -53,7 +53,7 @@ typedef unsigned short vki_u16;
typedef unsigned int vki_u32;
-/*----------------------------------------------------------------------*/
-/* From linux-2.6.8.1/include/asm-i386/page.h */
-/*----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/page.h
+//----------------------------------------------------------------------
/* PAGE_SHIFT determines the page size */
@@ -61,7 +61,7 @@ typedef unsigned int vki_u32;
#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT)
-/*----------------------------------------------------------------------*/
-/* From linux-2.6.8.1/include/asm-i386/signal.h */
-/*----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/signal.h
+//----------------------------------------------------------------------
#define VKI_MINSIGSTKSZ 2048
@@ -81,5 +81,5 @@ typedef __vki_restorefn_t __user *__vki_
#define VKI_SIG_IGN ((__vki_sighandler_t)1) /* ignore signal */
-/*#ifdef __KERNEL__*/
+//#ifdef __KERNEL__
/* Most things should be clean enough to redefine this at will, if care
is taken to make libc match. */
@@ -94,5 +94,5 @@ typedef struct {
unsigned long sig[_VKI_NSIG_WORDS];
} vki_sigset_t;
-/*#endif*/
+//#endif
#define VKI_SIGHUP 1
@@ -102,5 +102,5 @@ typedef struct {
#define VKI_SIGTRAP 5
#define VKI_SIGABRT 6
-/*#define VKI_SIGIOT 6*/
+//#define VKI_SIGIOT 6
#define VKI_SIGBUS 7
#define VKI_SIGFPE 8
@@ -132,11 +132,11 @@ typedef struct {
/* These should not be considered constants from userland. */
#define VKI_SIGRTMIN 32
-/* [[This was (_NSIG-1) in 2.4.X... not sure if it matters.]] */
+// [[This was (_NSIG-1) in 2.4.X... not sure if it matters.]]
#define VKI_SIGRTMAX _VKI_NSIG
/* Use high signals because native pthreads wants to use low */
-#define VKI_SIGVGKILL (VG_(max_signal)-0) /* [[internal: kill]] */
-#define VKI_SIGVGCHLD (VG_(max_signal)-1) /* [[internal: thread death]] */
-#define VKI_SIGVGRTUSERMAX (VG_(max_signal)-2) /* [[internal: last user-usable RT signal]] */
+#define VKI_SIGVGKILL (VG_(max_signal)-0) // [[internal: kill]]
+#define VKI_SIGVGCHLD (VG_(max_signal)-1) // [[internal: thread death]]
+#define VKI_SIGVGRTUSERMAX (VG_(max_signal)-2) // [[internal: last user-usable RT signal]]
#define VKI_SA_NOCLDSTOP 0x00000001u
@@ -150,5 +150,5 @@ typedef struct {
#define VKI_SA_NOMASK VKI_SA_NODEFER
#define VKI_SA_ONESHOT VKI_SA_RESETHAND
-/*#define VKI_SA_INTERRUPT 0x20000000 dummy -- ignored */
+//#define VKI_SA_INTERRUPT 0x20000000 /* dummy -- ignored */
#define VKI_SA_RESTORER 0x04000000
@@ -158,9 +158,8 @@ typedef struct {
struct vki_old_sigaction {
- /* [[Nb: a 'k' prefix is added to "sa_handler" because
- bits/sigaction.h (which gets dragged in somehow via signal.h)
- #defines it as something else. Since that is done for glibc's
- purposes, which we don't care about here, we use our own name.]]
- */
+ // [[Nb: a 'k' prefix is added to "sa_handler" because
+ // bits/sigaction.h (which gets dragged in somehow via signal.h)
+ // #defines it as something else. Since that is done for glibc's
+ // purposes, which we don't care about here, we use our own name.]]
__vki_sighandler_t ksa_handler;
vki_old_sigset_t sa_mask;
@@ -170,5 +169,5 @@ struct vki_old_sigaction {
struct vki_sigaction {
- /* [[See comment about extra 'k' above]] */
+ // [[See comment about extra 'k' above]]
__vki_sighandler_t ksa_handler;
unsigned long sa_flags;
@@ -183,7 +182,7 @@ typedef struct vki_sigaltstack {
} vki_stack_t;
-/*----------------------------------------------------------------------*/
-/* From linux-2.6.8.1/include/asm-i386/sigcontext.h */
-/*----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/sigcontext.h
+//----------------------------------------------------------------------
struct _vki_fpreg {
@@ -249,7 +248,7 @@ struct vki_sigcontext {
};
-/*----------------------------------------------------------------------*/
-/* From linux-2.6.8.1/include/asm-i386/mman.h */
-/*----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/mman.h
+//----------------------------------------------------------------------
#define VKI_PROT_NONE 0x0 /* No page permissions */
@@ -260,12 +259,12 @@ struct vki_sigcontext {
#define VKI_MAP_SHARED 0x01 /* Share changes */
#define VKI_MAP_PRIVATE 0x02 /* Changes are private */
-/*#define VKI_MAP_TYPE 0x0f */ /* Mask for type of mapping */
+//#define VKI_MAP_TYPE 0x0f /* Mask for type of mapping */
#define VKI_MAP_FIXED 0x10 /* Interpret addr exactly */
#define VKI_MAP_ANONYMOUS 0x20 /* don't use a file */
#define VKI_MAP_NORESERVE 0x4000 /* don't check for reservations */
-/*----------------------------------------------------------------------*/
-/* From linux-2.6.8.1/include/asm-i386/fcntl.h */
-/*----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/fcntl.h
+//----------------------------------------------------------------------
#define VKI_O_RDONLY 00
@@ -279,5 +278,5 @@ struct vki_sigcontext {
#define VKI_F_DUPFD 0 /* dup */
-/*#define VKI_F_GETFD 1*/ /* get close_on_exec */
+//#define VKI_F_GETFD 1 /* get close_on_exec */
#define VKI_F_SETFD 2 /* set/clear close_on_exec */
#define VKI_F_GETFL 3 /* get file->f_flags */
@@ -296,7 +295,7 @@ struct vki_sigcontext {
-/*----------------------------------------------------------------------*/
-/* From linux-2.6.8.1/include/asm-i386/resource.h */
-/*----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/resource.h
+//----------------------------------------------------------------------
#define VKI_RLIMIT_DATA 2 /* max data size */
@@ -305,7 +304,7 @@ struct vki_sigcontext {
#define VKI_RLIMIT_NOFILE 7 /* max number of open files */
-/*----------------------------------------------------------------------*/
-/* From linux-2.6.8.1/include/asm-i386/socket.h */
-/*----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/socket.h
+//----------------------------------------------------------------------
#define VKI_SOL_SOCKET 1
@@ -315,7 +314,7 @@ struct vki_sigcontext {
#define VKI_SOCK_STREAM 1 /* stream (connection) socket */
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/sockios.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/sockios.h
+//----------------------------------------------------------------------
#define VKI_SIOCSPGRP 0x8902
@@ -323,7 +322,7 @@ struct vki_sigcontext {
#define VKI_SIOCGSTAMP 0x8906 /* Get stamp */
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/stat.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/stat.h
+//----------------------------------------------------------------------
#define VKI_S_IFMT 00170000
@@ -402,7 +401,7 @@ struct vki_stat64 {
};
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/statfs.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/statfs.h
+//----------------------------------------------------------------------
struct vki_statfs {
@@ -420,7 +419,7 @@ struct vki_statfs {
};
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/termios.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/termios.h
+//----------------------------------------------------------------------
struct vki_winsize {
@@ -442,7 +441,7 @@ struct vki_termio {
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/termbits.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/termbits.h
+//----------------------------------------------------------------------
typedef unsigned char vki_cc_t;
@@ -459,7 +458,7 @@ struct vki_termios {
};
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/ioctl.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/ioctl.h
+//----------------------------------------------------------------------
#define _VKI_IOC_NRBITS 8
@@ -507,7 +506,7 @@ extern unsigned int __vki_invalid_size_a
#define _VKI_IOC_SIZE(nr) (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK)
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/ioctls.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/ioctls.h
+//----------------------------------------------------------------------
#define VKI_TCGETS 0x5401
@@ -540,7 +539,7 @@ extern unsigned int __vki_invalid_size_a
#define VKI_FIOASYNC 0x5452
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/poll.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/poll.h
+//----------------------------------------------------------------------
/* These are specified by iBCS2 */
@@ -553,7 +552,7 @@ struct vki_pollfd {
};
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/user.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/user.h
+//----------------------------------------------------------------------
struct vki_user_i387_struct {
@@ -600,7 +599,7 @@ struct vki_user_regs_struct {
};
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/elf.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/elf.h
+//----------------------------------------------------------------------
typedef unsigned long vki_elf_greg_t;
@@ -614,7 +613,7 @@ typedef struct vki_user_fxsr_struct vki_
#define VKI_AT_SYSINFO 32
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/ucontext.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/ucontext.h
+//----------------------------------------------------------------------
struct vki_ucontext {
@@ -626,7 +625,7 @@ struct vki_ucontext {
};
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/segment.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/segment.h
+//----------------------------------------------------------------------
#define VKI_GDT_ENTRY_TLS_ENTRIES 3
@@ -634,7 +633,7 @@ struct vki_ucontext {
#define VKI_GDT_ENTRY_TLS_MAX (VKI_GDT_ENTRY_TLS_MIN + VKI_GDT_ENTRY_TLS_ENTRIES - 1)
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/ldt.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/ldt.h
+//----------------------------------------------------------------------
/* [[Nb: This is the structure passed to the modify_ldt syscall. Just so as
@@ -652,18 +651,18 @@ struct vki_user_desc {
unsigned int seg_not_present:1;
unsigned int useable:1;
- /* [[Nb: this field is not in the kernel sources, but it has always
- been in the Valgrind sources so I will keep it there in case it's
- important... this is an x86-defined data structure so who
- knows; maybe it's important to set this field to zero at some
- point. --njn]] */
+ // [[Nb: this field is not in the kernel sources, but it has always
+ // been in the Valgrind sources so I will keep it there in case it's
+ // important... this is an x86-defined data structure so who
+ // knows; maybe it's important to set this field to zero at some
+ // point. --njn]]
unsigned int reserved:25;
};
-/* [[Nb: for our convenience within Valgrind, use a more specific name]] */
+// [[Nb: for our convenience within Valgrind, use a more specific name]]
typedef struct vki_user_desc vki_modify_ldt_t;
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/ipcbuf.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/ipcbuf.h
+//----------------------------------------------------------------------
struct vki_ipc64_perm
@@ -682,7 +681,7 @@ struct vki_ipc64_perm
};
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/sembuf.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/sembuf.h
+//----------------------------------------------------------------------
struct vki_semid64_ds {
@@ -697,7 +696,7 @@ struct vki_semid64_ds {
};
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/msgbuf.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/msgbuf.h
+//----------------------------------------------------------------------
struct vki_msqid64_ds {
@@ -718,7 +717,7 @@ struct vki_msqid64_ds {
};
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/ipc.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/ipc.h
+//----------------------------------------------------------------------
struct vki_ipc_kludge {
@@ -727,7 +726,7 @@ struct vki_ipc_kludge {
};
-/*----------------------------------------------------------------------
- From linux-2.6.8.1/include/asm-i386/shmbuf.h
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/shmbuf.h
+//----------------------------------------------------------------------
struct vki_shmid64_ds {
@@ -759,7 +758,7 @@ struct vki_shminfo64 {
};
-/*----------------------------------------------------------------------
- DRM ioctls
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// DRM ioctls
+//----------------------------------------------------------------------
struct vki_drm_buf_pub {
Int idx; /**< Index into the master buffer list */
@@ -779,9 +778,9 @@ struct vki_drm_buf_map {
-/*----------------------------------------------------------------------
- And that's it!
- ----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// And that's it!
+//----------------------------------------------------------------------
-#endif /* __X86_LINUX_VKI_ARCH_H */
+#endif // __X86_LINUX_VKI_ARCH_H
/*--------------------------------------------------------------------*/
--- valgrind/include/x86-linux/vki_arch_posixtypes.h #1.4:1.5
@@ -33,7 +33,7 @@
#define __X86_LINUX_VKI_ARCH_POSIXTYPES_H
-/*----------------------------------------------------------------------*/
-/* From linux-2.6.8.1/include/asm-i386/posix_types.h */
-/*----------------------------------------------------------------------*/
+//----------------------------------------------------------------------
+// From linux-2.6.8.1/include/asm-i386/posix_types.h
+//----------------------------------------------------------------------
typedef unsigned short __vki_kernel_mode_t;
@@ -62,5 +62,5 @@ typedef struct {
} __vki_kernel_fsid_t;
-#endif /* __X86_LINUX_VKI_ARCH_POSIXTYPES_H */
+#endif // __X86_LINUX_VKI_ARCH_POSIXTYPES_H
/*--------------------------------------------------------------------*/
|
|
From: Tom H. <to...@co...> - 2005-02-27 12:19:39
|
In message <422...@go...>
Jeremy Fitzhardinge <je...@go...> wrote:
> Oh, OK, I see what's happening. sigsuspend is supposed to atomically
> install the new signal mask and then block waiting for one of those
> signals to arrive. That new signal mask is current for any signal
> handlers which are executed, but then the old one restored once the
> syscall returns (once all the signal handlers have returned).
>
> PRE(*sigsuspend) is putting the temp mask into eff_sig_mask, which then
> makes client_syscall set it explicitly with sigprocmask, rather than
> letting sigsuspend do its atomic set-then-block thing.
>
> Does this patch fix it for you?
It looks like it. I've had it running pth_cancel2 over and over
for an hour or two now and there haven't been any hangs yet.
Tom
--
Tom Hughes (to...@co...)
http://www.compton.nu/
|
|
From: Tom H. <to...@co...> - 2005-02-27 03:28:45
|
Nightly build on dunsmere ( Fedora Core 3 ) started at 2005-02-27 03:20:03 GMT Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow rm: cannot remove `vgcore.pid*': No such file or directory (cleanup operation failed: rm vgcore.pid*) 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 ---------------------------------------- == 214 tests, 8 stderr failures, 0 stdout failures ================= helgrind/tests/allok (stderr) helgrind/tests/deadlock (stderr) helgrind/tests/inherit (stderr) helgrind/tests/race (stderr) helgrind/tests/race2 (stderr) helgrind/tests/readshared (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_supp (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2005-02-27 03:23:50
|
Nightly build on audi ( Red Hat 9 ) started at 2005-02-27 03:15:03 GMT Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow insn_sse2: (skipping, prereq failed: ../../../tests/cputest x86-sse2) int: valgrind ./int rm: cannot remove `vgcore.pid*': No such file or directory (cleanup operation failed: rm vgcore.pid*) 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 ---------------------------------------- == 213 tests, 6 stderr failures, 0 stdout failures ================= helgrind/tests/allok (stderr) helgrind/tests/deadlock (stderr) helgrind/tests/inherit (stderr) helgrind/tests/race (stderr) helgrind/tests/race2 (stderr) helgrind/tests/readshared (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2005-02-27 03:17:48
|
Nightly build on ginetta ( Red Hat 8.0 ) started at 2005-02-27 03:10:02 GMT Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow rm: cannot remove `vgcore.pid*': No such file or directory (cleanup operation failed: rm vgcore.pid*) 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 ---------------------------------------- == 212 tests, 8 stderr failures, 0 stdout failures ================= helgrind/tests/allok (stderr) helgrind/tests/deadlock (stderr) helgrind/tests/inherit (stderr) helgrind/tests/race (stderr) helgrind/tests/race2 (stderr) helgrind/tests/readshared (stderr) memcheck/tests/pth_once (stderr) memcheck/tests/threadederrno (stderr) make: *** [regtest] Error 1 |
|
From: Jeremy F. <je...@go...> - 2005-02-27 02:31:16
|
Tom Hughes wrote:
>So the main thread (thread 1) calls sigsuspend to wait for the signal
>from the manager thread (thread 2) to say that it is done. Unfortunately
>the signal arrives while the system call is still being setup so we
>decide to restart the system call and wound up sat in sigsuspend waiting
>for a signal that will never arrive.
>
>
Oh, OK, I see what's happening. sigsuspend is supposed to atomically
install the new signal mask and then block waiting for one of those
signals to arrive. That new signal mask is current for any signal
handlers which are executed, but then the old one restored once the
syscall returns (once all the signal handlers have returned).
PRE(*sigsuspend) is putting the temp mask into eff_sig_mask, which then
makes client_syscall set it explicitly with sigprocmask, rather than
letting sigsuspend do its atomic set-then-block thing.
Does this patch fix it for you?
J
|
|
From: Julian S. <js...@ac...> - 2005-02-27 01:51:57
|
> I wish you'd given us a heads-up before checking all this stuff. It's > causing masses of conflicts with my pending changes, and it will just > make the Vex merge even more of a pain; it would be better to hold off > this cosmetic stuff until after the merge. I completely agree; this is going to cause a huge amount of difficulty in merging the cvs head and the amd64/etc dev line, something which looked difficult even before this. Please back these out. Cleaning up for gcc4 is obviously a good thing to do (there was a discussion on the list only yesterday) but now is not a good time to do it. J |
|
From: Jeremy F. <je...@go...> - 2005-02-27 01:35:59
|
Dirk Mueller wrote:
>CVS commit by mueller:
>
>these are used as function pointers, can't use regparms here, as gcc
>tries to tell you:
>
>mc_main.c:1968: warning: passing arg 1 of `vgPlain_init_new_mem_stack_4' from incompatible pointer type
>
>
Ah, no, surely the fix is to change the type of the pointer to include
the regparm? [ I see you reverted it. ]
I wish you'd given us a heads-up before checking all this stuff. It's
causing masses of conflicts with my pending changes, and it will just
make the Vex merge even more of a pain; it would be better to hold off
this cosmetic stuff until after the merge. Also, someone (Nick?) went
through and converted a lot of the comments to C99/C++ not long ago;
what's the motive behind converting them all back? gcc has always
supported them, no?
J
|