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
(1) |
2
(2) |
3
|
4
(1) |
5
(6) |
6
|
|
7
(1) |
8
|
9
(1) |
10
(2) |
11
(6) |
12
(3) |
13
(3) |
|
14
|
15
(11) |
16
(8) |
17
(5) |
18
(5) |
19
(5) |
20
(3) |
|
21
(2) |
22
(4) |
23
(5) |
24
(4) |
25
|
26
|
27
|
|
28
(8) |
|
|
|
|
|
|
|
From: Bart V. A. <bva...@ac...> - 2010-02-15 13:23:44
|
On Mon, Feb 15, 2010 at 12:52 PM, Konstantin Serebryany <kon...@gm...> wrote: > On Mon, Feb 15, 2010 at 2:45 PM, Bart Van Assche <bva...@ac...> wrote: >> On Mon, Feb 15, 2010 at 12:11 PM, <dat...@go...> wrote: >>> Revision: 1655 >>> Author: kon...@gm... >>> Date: Mon Feb 15 03:10:36 2010 >>> Log: added ANNOTATE_BENIGN_RACE_SIZED; ANNOTATE_BENIGN_RACE_STATIC uses >>> *_SIZED variant now >>> http://code.google.com/p/data-race-test/source/detail?r=1655 >> [ ... ] >> >> Hello Konstantin, >> >> Have you already considered deprecating ANNOTATE_BENIGN_RACE(), since >> this annotation doesn't have precisely defined semantics ? > > Well, it does have precisely defined semantics now. :) > It is equivalent to ANNOTATE_BENIGN_RACE_SIZED(mem, 1, descr); As far as I know this is the first time it is specified how many bytes ANNOTATE_BENIGN_RACE() applies to. I'm not sure it is a good idea to choose a range of one byte, given that e.g. the following code is present in the TSAN unittests: int GLOB = 0; ... ANNOTATE_BENIGN_RACE(&GLOB, "test56. Use of ANNOTATE_BENIGN_RACE."); Bart. |
|
From: <sv...@va...> - 2010-02-15 12:00:39
|
Author: sewardj
Date: 2010-02-15 12:00:28 +0000 (Mon, 15 Feb 2010)
New Revision: 11047
Log:
Guard new debug print statement in r11045 correctly (at all!)
Modified:
trunk/coregrind/m_debuginfo/readelf.c
Modified: trunk/coregrind/m_debuginfo/readelf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readelf.c 2010-02-15 10:07:05 UTC (rev 11046)
+++ trunk/coregrind/m_debuginfo/readelf.c 2010-02-15 12:00:28 UTC (rev 11047)
@@ -964,8 +964,8 @@
return 0;
}
- VG_(message)(Vg_DebugMsg,
- " .. CRC is valid\n");
+ if (VG_(clo_verbosity) > 1)
+ VG_(message)(Vg_DebugMsg, " .. CRC is valid\n");
return sr_Res(sres);
}
|
|
From: Konstantin S. <kon...@gm...> - 2010-02-15 11:53:03
|
On Mon, Feb 15, 2010 at 2:45 PM, Bart Van Assche <bva...@ac...> wrote: > On Mon, Feb 15, 2010 at 12:11 PM, <dat...@go...> wrote: >> Revision: 1655 >> Author: kon...@gm... >> Date: Mon Feb 15 03:10:36 2010 >> Log: added ANNOTATE_BENIGN_RACE_SIZED; ANNOTATE_BENIGN_RACE_STATIC uses >> *_SIZED variant now >> http://code.google.com/p/data-race-test/source/detail?r=1655 > [ ... ] > > Hello Konstantin, > > Have you already considered deprecating ANNOTATE_BENIGN_RACE(), since > this annotation doesn't have precisely defined semantics ? Well, it does have precisely defined semantics now. :) It is equivalent to ANNOTATE_BENIGN_RACE_SIZED(mem, 1, descr); Deprecating it will be rather hard for us, since a lot of code depends on it. --kcc > > Bart. > > -- > You received this message because you are subscribed to the Google Groups "data-race-test" group. > To post to this group, send email to dat...@go.... > To unsubscribe from this group, send email to dat...@go.... > For more options, visit this group at http://groups.google.com/group/data-race-test?hl=en. > > |
|
From: Bart V. A. <bva...@ac...> - 2010-02-15 11:45:47
|
On Mon, Feb 15, 2010 at 12:11 PM, <dat...@go...> wrote: > Revision: 1655 > Author: kon...@gm... > Date: Mon Feb 15 03:10:36 2010 > Log: added ANNOTATE_BENIGN_RACE_SIZED; ANNOTATE_BENIGN_RACE_STATIC uses > *_SIZED variant now > http://code.google.com/p/data-race-test/source/detail?r=1655 [ ... ] Hello Konstantin, Have you already considered deprecating ANNOTATE_BENIGN_RACE(), since this annotation doesn't have precisely defined semantics ? Bart. |
|
From: <sv...@va...> - 2010-02-15 10:07:13
|
Author: sewardj
Date: 2010-02-15 10:07:05 +0000 (Mon, 15 Feb 2010)
New Revision: 11046
Log:
Get rid of kludgey and non-functional PID caching in the printing
mechanism.
Modified:
trunk/coregrind/m_libcprint.c
Modified: trunk/coregrind/m_libcprint.c
===================================================================
--- trunk/coregrind/m_libcprint.c 2010-02-15 10:05:40 UTC (rev 11045)
+++ trunk/coregrind/m_libcprint.c 2010-02-15 10:07:05 UTC (rev 11046)
@@ -374,15 +374,13 @@
leftmost column? */
/* Current message kind - changes from call to call */
VgMsgKind kind;
- /* PID; acquired just once and stays constant */
- Int my_pid;
/* destination */
OutputSink* sink;
}
vmessage_buf_t;
static vmessage_buf_t vmessage_buf
- = { "", 0, True, Vg_UserMsg, -1, &VG_(log_output_sink) };
+ = { "", 0, True, Vg_UserMsg, &VG_(log_output_sink) };
// Adds a single char to the buffer. We aim to have at least 128
@@ -430,7 +428,7 @@
b->buf[b->buf_used++] = tmp[i];
}
- VG_(sprintf)(tmp, "%d", b->my_pid);
+ VG_(sprintf)(tmp, "%d", VG_(getpid)());
tmp[sizeof(tmp)-1] = 0;
for (i = 0; tmp[i]; i++)
b->buf[b->buf_used++] = tmp[i];
@@ -468,15 +466,6 @@
of preamble is emitted at each \n. */
b->kind = kind;
- /* Cache the results of getpid just once, so we don't have to call
- getpid once for each line of text output. */
- b->my_pid = -1; /* LATER: cacheing is confusing in presence of fork(),
- disable for now. */
- if (UNLIKELY(b->my_pid == -1)) {
- b->my_pid = VG_(getpid)();
- vg_assert(b->my_pid >= 0);
- }
-
ret = VG_(debugLog_vprintf) ( add_to__vmessage_buf,
b, format, vargs );
|
|
From: <sv...@va...> - 2010-02-15 10:05:47
|
Author: sewardj
Date: 2010-02-15 10:05:40 +0000 (Mon, 15 Feb 2010)
New Revision: 11045
Log:
Make -v messages w.r.t. finding of auxiliary debuginfo files less confusing.
Modified:
trunk/coregrind/m_debuginfo/readelf.c
Modified: trunk/coregrind/m_debuginfo/readelf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readelf.c 2010-02-15 10:04:46 UTC (rev 11044)
+++ trunk/coregrind/m_debuginfo/readelf.c 2010-02-15 10:05:40 UTC (rev 11045)
@@ -942,7 +942,7 @@
}
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg, "Reading debug info from %s ..\n", name);
+ VG_(message)(Vg_DebugMsg, " Considering %s ..\n", name);
*size = stat_buf.size;
@@ -960,9 +960,12 @@
vg_assert(!sr_isError(res));
if (VG_(clo_verbosity) > 1)
VG_(message)(Vg_DebugMsg,
- ".. CRC mismatch (computed %08x wanted %08x)\n", calccrc, crc);
+ " .. CRC mismatch (computed %08x wanted %08x)\n", calccrc, crc);
return 0;
}
+
+ VG_(message)(Vg_DebugMsg,
+ " .. CRC is valid\n");
return sr_Res(sres);
}
|
|
From: <sv...@va...> - 2010-02-15 10:04:54
|
Author: sewardj Date: 2010-02-15 10:04:46 +0000 (Mon, 15 Feb 2010) New Revision: 11044 Log: Make this usable on Ubuntu by explicitly specifying bash rather than dash. Modified: trunk/auxprogs/gsl19test Modified: trunk/auxprogs/gsl19test =================================================================== --- trunk/auxprogs/gsl19test 2010-02-15 09:58:10 UTC (rev 11043) +++ trunk/auxprogs/gsl19test 2010-02-15 10:04:46 UTC (rev 11044) @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # Do an automated test which involves building and regtesting version # 1.9 of the GNU Scientific Library (gsl). This has proven to be a |
|
From: <sv...@va...> - 2010-02-15 09:58:18
|
Author: sewardj
Date: 2010-02-15 09:58:10 +0000 (Mon, 15 Feb 2010)
New Revision: 11043
Log:
Handle sys_inotify_init1.
Modified:
trunk/exp-ptrcheck/h_main.c
Modified: trunk/exp-ptrcheck/h_main.c
===================================================================
--- trunk/exp-ptrcheck/h_main.c 2010-02-15 09:57:49 UTC (rev 11042)
+++ trunk/exp-ptrcheck/h_main.c 2010-02-15 09:58:10 UTC (rev 11043)
@@ -2331,6 +2331,9 @@
ADD(0, __NR_getxattr);
ADD(0, __NR_inotify_add_watch);
ADD(0, __NR_inotify_init);
+# if defined(__NR_inotify_init1)
+ ADD(0, __NR_inotify_init1);
+# endif
ADD(0, __NR_inotify_rm_watch);
ADD(0, __NR_ioctl); // ioctl -- assuming no pointers returned
ADD(0, __NR_ioprio_get);
|
|
From: <sv...@va...> - 2010-02-15 09:57:58
|
Author: sewardj
Date: 2010-02-15 09:57:49 +0000 (Mon, 15 Feb 2010)
New Revision: 11042
Log:
Add some intercepts to make Ptrcheck usable-ish on Ubuntu 9.10 (amd64).
Modified:
trunk/exp-ptrcheck/h_intercepts.c
Modified: trunk/exp-ptrcheck/h_intercepts.c
===================================================================
--- trunk/exp-ptrcheck/h_intercepts.c 2010-02-15 09:54:37 UTC (rev 11041)
+++ trunk/exp-ptrcheck/h_intercepts.c 2010-02-15 09:57:49 UTC (rev 11042)
@@ -45,6 +45,60 @@
them in the same order as in mc_replace_strmem.c. */
+#define STRRCHR(soname, fnname) \
+ char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ); \
+ char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ) \
+ { \
+ UChar ch = (UChar)((UInt)c); \
+ UChar* p = (UChar*)s; \
+ UChar* last = NULL; \
+ while (True) { \
+ if (*p == ch) last = p; \
+ if (*p == 0) return last; \
+ p++; \
+ } \
+ }
+
+// Apparently rindex() is the same thing as strrchr()
+STRRCHR(VG_Z_LIBC_SONAME, strrchr)
+STRRCHR(VG_Z_LIBC_SONAME, rindex)
+#if defined(VGO_linux)
+STRRCHR(VG_Z_LIBC_SONAME, __GI_strrchr)
+STRRCHR(VG_Z_LD_LINUX_SO_2, rindex)
+#elif defined(VGO_darwin)
+STRRCHR(VG_Z_DYLD, strrchr)
+STRRCHR(VG_Z_DYLD, rindex)
+#endif
+
+
+#define STRCHR(soname, fnname) \
+ char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ); \
+ char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ) \
+ { \
+ UChar ch = (UChar)((UInt)c); \
+ UChar* p = (UChar*)s; \
+ while (True) { \
+ if (*p == ch) return p; \
+ if (*p == 0) return NULL; \
+ p++; \
+ } \
+ }
+
+// Apparently index() is the same thing as strchr()
+STRCHR(VG_Z_LIBC_SONAME, strchr)
+STRCHR(VG_Z_LIBC_SONAME, index)
+#if defined(VGO_linux)
+STRCHR(VG_Z_LIBC_SONAME, __GI_strchr)
+STRCHR(VG_Z_LD_LINUX_SO_2, strchr)
+STRCHR(VG_Z_LD_LINUX_SO_2, index)
+STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, strchr)
+STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, index)
+#elif defined(VGO_darwin)
+STRCHR(VG_Z_DYLD, strchr)
+STRCHR(VG_Z_DYLD, index)
+#endif
+
+
#define STRNLEN(soname, fnname) \
SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* str, SizeT n ); \
SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* str, SizeT n ) \
@@ -105,6 +159,24 @@
#endif
+#define MEMCHR(soname, fnname) \
+ void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const void *s, int c, SizeT n); \
+ void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const void *s, int c, SizeT n) \
+ { \
+ SizeT i; \
+ UChar c0 = (UChar)c; \
+ UChar* p = (UChar*)s; \
+ for (i = 0; i < n; i++) \
+ if (p[i] == c0) return (void*)(&p[i]); \
+ return NULL; \
+ }
+
+MEMCHR(VG_Z_LIBC_SONAME, memchr)
+#if defined(VGO_darwin)
+MEMCHR(VG_Z_DYLD, memchr)
+#endif
+
+
#define MEMCPY(soname, fnname) \
void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
( void *dst, const void *src, SizeT sz ); \
@@ -173,6 +245,25 @@
#endif
+/* Find the first occurrence of C in S. */
+#define GLIBC232_RAWMEMCHR(soname, fnname) \
+ char* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const char* s, int c_in); \
+ char* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const char* s, int c_in) \
+ { \
+ unsigned char c = (unsigned char) c_in; \
+ unsigned char* char_ptr = (unsigned char *)s; \
+ while (1) { \
+ if (*char_ptr == c) return char_ptr; \
+ char_ptr++; \
+ } \
+ }
+
+GLIBC232_RAWMEMCHR(VG_Z_LIBC_SONAME, rawmemchr)
+#if defined (VGO_linux)
+GLIBC232_RAWMEMCHR(VG_Z_LIBC_SONAME, __GI___rawmemchr)
+#endif
+
+
/*--------------------------------------------------------------------*/
/*--- end pc_intercepts.c ---*/
/*--------------------------------------------------------------------*/
|
|
From: <sv...@va...> - 2010-02-15 09:54:47
|
Author: sewardj
Date: 2010-02-15 09:54:37 +0000 (Mon, 15 Feb 2010)
New Revision: 11041
Log:
Add debug printing for the env-mashing machinery, to help investigate
#215914 ("Valgrind inserts bogus empty environment variable").
Modified:
trunk/coregrind/m_initimg/initimg-linux.c
Modified: trunk/coregrind/m_initimg/initimg-linux.c
===================================================================
--- trunk/coregrind/m_initimg/initimg-linux.c 2010-02-12 12:19:36 UTC (rev 11040)
+++ trunk/coregrind/m_initimg/initimg-linux.c 2010-02-15 09:54:37 UTC (rev 11041)
@@ -132,6 +132,7 @@
Int v_launcher_len = VG_(strlen)( v_launcher );
Bool ld_preload_done = False;
Int vglib_len = VG_(strlen)(VG_(libdir));
+ Bool debug = False;
HChar** cpp;
HChar** ret;
@@ -172,9 +173,12 @@
VG_(debugLog)(2, "initimg", " \"%s\"\n", preload_string);
/* Count the original size of the env */
+ if (debug) VG_(printf)("\n\n");
envc = 0;
- for (cpp = origenv; cpp && *cpp; cpp++)
+ for (cpp = origenv; cpp && *cpp; cpp++) {
envc++;
+ if (debug) VG_(printf)("XXXXXXXXX: BEFORE %s\n", *cpp);
+ }
/* Allocate a new space */
ret = VG_(malloc) ("initimg-linux.sce.3",
@@ -182,8 +186,10 @@
vg_assert(ret);
/* copy it over */
- for (cpp = ret; *origenv; )
+ for (cpp = ret; *origenv; ) {
+ if (debug) VG_(printf)("XXXXXXXXX: COPY %s\n", *origenv);
*cpp++ = *origenv++;
+ }
*cpp = NULL;
vg_assert(envc == (cpp - ret));
@@ -202,6 +208,7 @@
ld_preload_done = True;
}
+ if (debug) VG_(printf)("XXXXXXXXX: MASH %s\n", *cpp);
}
/* Add the missing bits */
@@ -213,6 +220,7 @@
VG_(snprintf)(cp, len, "%s%s", ld_preload, preload_string);
ret[envc++] = cp;
+ if (debug) VG_(printf)("XXXXXXXXX: ADD %s\n", cp);
}
/* ret[0 .. envc-1] is live now. */
@@ -230,6 +238,10 @@
VG_(free)(preload_string);
ret[envc] = NULL;
+ for (i = 0; i < envc; i++) {
+ if (debug) VG_(printf)("XXXXXXXXX: FINAL %s\n", ret[i]);
+ }
+
return ret;
}
|
|
From: Alexander P. <gl...@go...> - 2010-02-13 09:23:17
|
Nightly build on mcgrind ( Darwin 9.7.0 i386 ) Started at 2010-02-13 09:06:02 MSK Ended at 2010-02-13 09:33:42 MSK Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 433 tests, 22 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/null_socket (stdout) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) none/tests/async-sigs (stderr) none/tests/faultstatus (stderr) none/tests/pth_blockedsig (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc23_bogus_condwait (stderr) -- Alexander Potapenko Software Engineer Google Moscow |
|
From: Bart V. A. <bar...@gm...> - 2010-02-13 07:26:50
|
Nightly build on cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2010-02-13 02:25:17 EST Ended at 2010-02-13 02:26:43 EST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Last 20 lines of verbose log follow echo Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2010-02-13T02:25:17} valgrind-new Job ID = 569.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory Configuring valgrind ... cd valgrind-new && ./autogen.sh && ./configure --prefix=/home/bart/software/valgrind/nightly/valgrind-new/Inst Job ID = 570.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory Building valgrind ... cd valgrind-new && make -j 2 && make -j 2 check && make install Job ID = 571.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory Running regression tests ... cd valgrind-new && make regtest Job ID = 572.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Last 20 lines of verbose log follow echo Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2010-02-12T02:25:17} valgrind-old Job ID = 565.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory Configuring valgrind ... cd valgrind-old && ./autogen.sh && ./configure --prefix=/home/bart/software/valgrind/nightly/valgrind-old/Inst Job ID = 566.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory Building valgrind ... cd valgrind-old && make -j 2 && make -j 2 check && make install Job ID = 567.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory Running regression tests ... cd valgrind-old && make regtest Job ID = 568.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Feb 13 02:26:02 2010 --- new.short Sat Feb 13 02:26:43 2010 *************** *** 8,20 **** ! Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2010-02-12T02:25:17} valgrind-old ! Job ID = 565.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory ! Configuring valgrind ... cd valgrind-old && ./autogen.sh && ./configure --prefix=/home/bart/software/valgrind/nightly/valgrind-old/Inst ! Job ID = 566.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory ! Building valgrind ... cd valgrind-old && make -j 2 && make -j 2 check && make install ! Job ID = 567.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory ! Running regression tests ... cd valgrind-old && make regtest ! Job ID = 568.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory --- 8,20 ---- ! Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2010-02-13T02:25:17} valgrind-new ! Job ID = 569.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory ! Configuring valgrind ... cd valgrind-new && ./autogen.sh && ./configure --prefix=/home/bart/software/valgrind/nightly/valgrind-new/Inst ! Job ID = 570.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory ! Building valgrind ... cd valgrind-new && make -j 2 && make -j 2 check && make install ! Job ID = 571.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory ! Running regression tests ... cd valgrind-new && make regtest ! Job ID = 572.cell-user.cell.buzz cat: cmd-output.txt: No such file or directory |
|
From: Tom H. <th...@cy...> - 2010-02-13 03:42:36
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2010-02-13 03:10:14 GMT Ended at 2010-02-13 03:42:19 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 538 tests, 1 stderr failure, 0 stdout failures, 0 post failures == helgrind/tests/tc06_two_races_xml (stderr) |
|
From: Loïc M. <lo...@do...> - 2010-02-12 23:04:48
|
Hey there! I was poking at the valgrind Ubuntu build (valgrind was apparently broken and SVN tip worked fine and had all these nice ARM patches... :-) and noticed that the package is huge due to the 121M of unstripped binaries in /usr/lib/valgrind. debian/changelog says: valgrind (1.0pre2-2) unstable; urgency=low * removed call to dh_strip, at upstream's request * Added an override against unstripped-binary-or-object, after shaleh gave green light. -- Cyrille Chepelov <cy...@ch...> Fri, 21 Jun 2002 15:12:24 +0200 I'd like to readd stripping, but am checking here just in case it's something you really care we don't do. Thanks! -- Loïc Minier |
|
From: <sv...@va...> - 2010-02-12 13:22:48
|
Author: sewardj
Date: 2010-02-12 12:19:36 +0000 (Fri, 12 Feb 2010)
New Revision: 11040
Log:
Reduce verbosity of the PDB reader a bit. Original verbosity is still
available using "-v".
Modified:
trunk/coregrind/m_debuginfo/readpdb.c
Modified: trunk/coregrind/m_debuginfo/readpdb.c
===================================================================
--- trunk/coregrind/m_debuginfo/readpdb.c 2010-02-12 12:12:39 UTC (rev 11039)
+++ trunk/coregrind/m_debuginfo/readpdb.c 2010-02-12 12:19:36 UTC (rev 11040)
@@ -1864,7 +1864,7 @@
}
}
- if (VG_(clo_verbosity) > 0) {
+ if (VG_(clo_verbosity) > 1) {
VG_(message)(Vg_DebugMsg,
"PDB_READER:\n");
VG_(message)(Vg_DebugMsg,
@@ -2176,7 +2176,7 @@
if ( types_image ) ML_(dinfo_free)( types_image );
if ( pdb->u.jg.toc ) ML_(dinfo_free)( pdb->u.jg.toc );
- if (VG_(clo_verbosity) > 0) {
+ if (VG_(clo_verbosity) > 1) {
VG_(message)(Vg_DebugMsg,
" # symbols read = %llu\n", n_syms_read );
VG_(message)(Vg_DebugMsg,
|
|
From: <sv...@va...> - 2010-02-12 13:22:27
|
Author: sewardj
Date: 2010-02-12 12:12:39 +0000 (Fri, 12 Feb 2010)
New Revision: 11039
Log:
Try to find the PDB file for a given PE file by the totally kludgey
method of doing "strings file.dll | egrep '\.pdb|\.PDB'".
Distantly derived from a patch by le...@uc.... Fixes #222902,
although I still would prefer to do this the proper way, by parsing
the PE file properly.
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
trunk/coregrind/m_debuginfo/priv_readpdb.h
trunk/coregrind/m_debuginfo/readpdb.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2010-02-10 13:37:37 UTC (rev 11038)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2010-02-12 12:12:39 UTC (rev 11039)
@@ -38,6 +38,7 @@
#include "pub_core_libcassert.h"
#include "pub_core_libcprint.h"
#include "pub_core_libcfile.h"
+#include "pub_core_libcproc.h" // VG_(getenv)
#include "pub_core_seqmatch.h"
#include "pub_core_options.h"
#include "pub_core_redir.h" // VG_(redir_notify_{new,delete}_SegInfo)
@@ -896,7 +897,7 @@
SizeT total_size,
PtrdiffT unknown_purpose__reloc )
{
- Int r, sz_exename;
+ Int i, r, sz_exename;
ULong obj_mtime, pdb_mtime;
Char exename[VKI_PATH_MAX];
Char* pdbname = NULL;
@@ -939,28 +940,87 @@
VG_(message)(Vg_UserMsg, "LOAD_PDB_DEBUGINFO: objname: %s\n", exename);
}
- /* Try to find a matching PDB file from which to read debuginfo.
- Windows PE files have symbol tables and line number information,
- but MSVC doesn't seem to use them. */
- /* Why +5 ? Because in the worst case, we could find a dot as the
- last character of pdbname, and we'd then put "pdb" right after
- it, hence extending it a bit. */
- pdbname = ML_(dinfo_zalloc)("di.debuginfo.lpd1", sz_exename+5);
- VG_(strcpy)(pdbname, exename);
- vg_assert(pdbname[sz_exename+5-1] == 0);
- dot = VG_(strrchr)(pdbname, '.');
- if (!dot)
- goto out; /* there's no dot in the exe's name ?! */
- if (dot[1] == 0)
- goto out; /* hmm, path ends in "." */
+ /* Try to get the PDB file name from the executable. */
+ pdbname = ML_(find_name_of_pdb_file)(exename);
+ if (pdbname) {
+ vg_assert(VG_(strlen)(pdbname) >= 5); /* 5 = strlen("X.pdb") */
+ /* So we successfully extracted a name from the PE file. But it's
+ likely to be of the form
+ e:\foo\bar\xyzzy\wibble.pdb
+ and we need to change it into something we can actually open
+ in Wine-world, which basically means turning it into
+ $HOME/.wine/drive_e/foo/bar/xyzzy/wibble.pdb
+ We also take into account $WINEPREFIX, if it is set.
+ For the moment, if the name isn't fully qualified, just forget it
+ (we'd have to root around to find where the pdb actually is)
+ */
+ /* Change all the backslashes to forward slashes */
+ for (i = 0; pdbname[i]; i++) {
+ if (pdbname[i] == '\\')
+ pdbname[i] = '/';
+ }
+ Bool is_quald
+ = ('a' <= VG_(tolower)(pdbname[0]) && VG_(tolower)(pdbname[0]) <= 'z')
+ && pdbname[1] == ':'
+ && pdbname[2] == '/';
+ HChar* home = VG_(getenv)("HOME");
+ HChar* wpfx = VG_(getenv)("WINEPREFIX");
+ if (is_quald && wpfx) {
+ /* Change e:/foo/bar/xyzzy/wibble.pdb
+ to $WINEPREFIX/drive_e/foo/bar/xyzzy/wibble.pdb
+ */
+ Int mashedSzB = VG_(strlen)(pdbname) + VG_(strlen)(wpfx) + 50/*misc*/;
+ HChar* mashed = ML_(dinfo_zalloc)("di.debuginfo.dnpdi.1", mashedSzB);
+ VG_(sprintf)(mashed, "%s/drive_%c%s",
+ wpfx, pdbname[0], &pdbname[2]);
+ vg_assert(mashed[mashedSzB-1] == 0);
+ ML_(dinfo_free)(pdbname);
+ pdbname = mashed;
+ }
+ else if (is_quald && home && !wpfx) {
+ /* Change e:/foo/bar/xyzzy/wibble.pdb
+ to $HOME/.wine/drive_e/foo/bar/xyzzy/wibble.pdb
+ */
+ Int mashedSzB = VG_(strlen)(pdbname) + VG_(strlen)(home) + 50/*misc*/;
+ HChar* mashed = ML_(dinfo_zalloc)("di.debuginfo.dnpdi.2", mashedSzB);
+ VG_(sprintf)(mashed, "%s/.wine/drive_%c%s",
+ home, pdbname[0], &pdbname[2]);
+ vg_assert(mashed[mashedSzB-1] == 0);
+ ML_(dinfo_free)(pdbname);
+ pdbname = mashed;
+ } else {
+ /* It's not a fully qualified path, or neither $HOME nor $WINE
+ are set (strange). Give up. */
+ ML_(dinfo_free)(pdbname);
+ pdbname = NULL;
+ }
+ }
- if ('A' <= dot[1] && dot[1] <= 'Z')
- VG_(strcpy)(dot, ".PDB");
- else
- VG_(strcpy)(dot, ".pdb");
+ /* Try s/exe/pdb/ if we don't have a valid pdbname. */
+ if (!pdbname) {
+ /* Try to find a matching PDB file from which to read debuginfo.
+ Windows PE files have symbol tables and line number information,
+ but MSVC doesn't seem to use them. */
+ /* Why +5 ? Because in the worst case, we could find a dot as the
+ last character of pdbname, and we'd then put "pdb" right after
+ it, hence extending it a bit. */
+ pdbname = ML_(dinfo_zalloc)("di.debuginfo.lpd1", sz_exename+5);
+ VG_(strcpy)(pdbname, exename);
+ vg_assert(pdbname[sz_exename+5-1] == 0);
+ dot = VG_(strrchr)(pdbname, '.');
+ if (!dot)
+ goto out; /* there's no dot in the exe's name ?! */
+ if (dot[1] == 0)
+ goto out; /* hmm, path ends in "." */
- vg_assert(pdbname[sz_exename+5-1] == 0);
+ if ('A' <= dot[1] && dot[1] <= 'Z')
+ VG_(strcpy)(dot, ".PDB");
+ else
+ VG_(strcpy)(dot, ".pdb");
+ vg_assert(pdbname[sz_exename+5-1] == 0);
+ }
+
/* See if we can find it, and check it's in-dateness. */
sres = VG_(stat)(pdbname, &stat_buf);
if (sr_isError(sres)) {
Modified: trunk/coregrind/m_debuginfo/priv_readpdb.h
===================================================================
--- trunk/coregrind/m_debuginfo/priv_readpdb.h 2010-02-10 13:37:37 UTC (rev 11038)
+++ trunk/coregrind/m_debuginfo/priv_readpdb.h 2010-02-12 12:12:39 UTC (rev 11039)
@@ -48,6 +48,12 @@
ULong pdbmtime
);
+/* Finds the name of the PDB file that's embedded with the specified
+ PE file, or NULL on failure. Caller deallocates with
+ ML_(dinfo_free). */
+HChar* ML_(find_name_of_pdb_file)( HChar* pename );
+
+
#endif /* ndef __PRIV_READPDB_H */
#endif // defined(VGO_linux) || defined(VGO_darwin)
Modified: trunk/coregrind/m_debuginfo/readpdb.c
===================================================================
--- trunk/coregrind/m_debuginfo/readpdb.c 2010-02-10 13:37:37 UTC (rev 11038)
+++ trunk/coregrind/m_debuginfo/readpdb.c 2010-02-12 12:12:39 UTC (rev 11039)
@@ -42,7 +42,9 @@
#include "pub_core_vki.h" // VKI_PAGE_SIZE
#include "pub_core_libcbase.h"
#include "pub_core_libcassert.h"
+#include "pub_core_libcfile.h" // VG_(open), read, lseek, close
#include "pub_core_libcprint.h"
+#include "pub_core_libcproc.h" // VG_(getpid), system
#include "pub_core_options.h" // VG_(clo_verbosity)
#include "pub_core_xarray.h" // keeps priv_storage.h happy
#include "pub_core_redir.h"
@@ -2193,6 +2195,8 @@
/*--- ---*/
/*------------------------------------------------------------*/
+/* Read line, symbol and unwind information from a PDB file.
+*/
Bool ML_(read_pdb_debug_info)(
DebugInfo* di,
Addr obj_avma,
@@ -2422,6 +2426,123 @@
return True;
}
+
+/* Examine a PE file to see if it states the path of an associated PDB
+ file; if so return that. Caller must deallocate with
+ ML_(dinfo_free).
+*/
+
+HChar* ML_(find_name_of_pdb_file)( HChar* pename )
+{
+ /* This is a giant kludge, of the kind "you did WTF?!?", but it
+ works. */
+ Bool do_cleanup = False;
+ HChar tmpname[100], tmpnameroot[50];
+ Int fd, r;
+ HChar* res = NULL;
+
+ if (!pename)
+ goto out;
+
+ fd = -1;
+ VG_(memset)(tmpnameroot, 0, sizeof(tmpnameroot));
+ VG_(sprintf)(tmpnameroot, "petmp%d", VG_(getpid)());
+ VG_(memset)(tmpname, 0, sizeof(tmpname));
+ fd = VG_(mkstemp)( tmpnameroot, tmpname );
+ if (fd == -1) {
+ VG_(message)(Vg_UserMsg,
+ "Find PDB file: Can't create /tmp file %s\n", tmpname);
+ goto out;
+ }
+ do_cleanup = True;
+
+ /* Make up the command to run, essentially:
+ sh -c "strings (pename) | egrep '\.pdb|\.PDB' > (tmpname)"
+ */
+ HChar* sh = "/bin/sh";
+ HChar* strings = "/usr/bin/strings";
+ HChar* egrep = "/usr/bin/egrep";
+
+ /* (sh) -c "(strings) (pename) | (egrep) 'pdb' > (tmpname) */
+ Int cmdlen = VG_(strlen)(strings) + VG_(strlen)(pename)
+ + VG_(strlen)(egrep) + VG_(strlen)(tmpname)
+ + 100/*misc*/;
+ HChar* cmd = ML_(dinfo_zalloc)("di.readpe.fnopf.cmd", cmdlen);
+ vg_assert(cmd);
+ VG_(sprintf)(cmd, "%s -c \"%s %s | %s '\\.pdb|\\.PDB' >> %s\"",
+ sh, strings, pename, egrep, tmpname);
+ vg_assert(cmd[cmdlen-1] == 0);
+ if (0) VG_(printf)("QQQQQQQQ: %s\n", cmd);
+
+ r = VG_(system)( cmd );
+ if (r) {
+ VG_(message)(Vg_DebugMsg,
+ "Find PDB file: Command failed:\n %s\n", cmd);
+ goto out;
+ }
+
+ /* Find out how big the file is, and get it aboard. */
+ struct vg_stat stat_buf;
+ VG_(memset)(&stat_buf, 0, sizeof(stat_buf));
+
+ SysRes sr = VG_(stat)(tmpname, &stat_buf);
+ if (sr_isError(sr)) {
+ VG_(umsg)("Find PDB file: can't stat %s\n", tmpname);
+ goto out;
+ }
+
+ Int szB = (Int)stat_buf.size;
+ if (szB == 0) {
+ VG_(umsg)("Find PDB file: %s is empty\n", tmpname);
+ goto out;
+ }
+ /* 6 == strlen("X.pdb\n") */
+ if (szB < 6 || szB > 1024/*let's say*/) {
+ VG_(umsg)("Find PDB file: %s has implausible size %d\n",
+ tmpname, szB);
+ goto out;
+ }
+
+ HChar* pdbname = ML_(dinfo_zalloc)("di.readpe.fnopf.pdbname", szB + 1);
+ vg_assert(pdbname);
+ pdbname[szB] = 0;
+
+ Int nread = VG_(read)(fd, pdbname, szB);
+ if (nread != szB) {
+ VG_(umsg)("Find PDB file: read of %s failed\n", tmpname);
+ goto out;
+ }
+ vg_assert(pdbname[szB] == 0);
+
+ /* Check we've got something remotely sane -- must have one dot and
+ one \n in it, and the \n must be at the end */
+ Bool saw_dot = False;
+ Int saw_n_crs = 0;
+ Int i;
+ for (i = 0; pdbname[i]; i++) {
+ if (pdbname[i] == '.') saw_dot = True;
+ if (pdbname[i] == '\n') saw_n_crs++;
+ }
+ if (!saw_dot || saw_n_crs != 1 || pdbname[szB-1] != '\n') {
+ VG_(umsg)("Find PDB file: can't make sense of: %s\n", pdbname);
+ goto out;
+ }
+ /* Change the \n to a terminating zero, so we have a "normal" string */
+ pdbname[szB-1] = 0;
+
+ if (0) VG_(printf)("QQQQQQQQ: got %s\n", pdbname);
+
+ res = pdbname;
+ goto out;
+
+ out:
+ if (do_cleanup) {
+ VG_(close)(fd);
+ VG_(unlink)( tmpname );
+ }
+ return res;
+}
+
#endif // defined(VGO_linux) || defined(VGO_darwin)
/*--------------------------------------------------------------------*/
|
|
From: David S. <da...@si...> - 2010-02-11 18:38:10
|
On Thursday 11 February 2010 17:49:40 you wrote: > It looks like it's a derivative of the Makefile for 'none', not Massif. > 'none' doesn't use a preload file, so uh, maybe if you start over using > massif/Makefile.am ? Or at least, consistently rename in your Makefile? > atm there are three mentions of "NONE_SOURCES_COMMON", which can't be > right. Thanks for pointing that out. I must have overlooked that. Changing NONE to VISUALDBG and updating Makefile.in did the trick. Now vgpreload get's built. |
|
From: Julian S. <js...@ac...> - 2010-02-11 16:31:06
|
On Thursday 11 February 2010, David Steiner wrote: > hello all! > > i'm building a new tool, that tracks heap allocation/freeing. it will > eventually give a visual representation (3d view) of the memory and allow a > programmer to see where in the source code the memory came from (possibly > tracking read/writes to it aswell). sounds cool. > i'm trying to create a vgpreload_*.so for this tool. sofar i've simply > adjusted visualdbg/Makefile.am, based on massif/Makefile.am. when i > compile, vgpreload_*.so doesn't get created. is there anything else > required to build vgpreload, or did i make some simple mistake (typo)? i've > attached the Makefile for my tool. It looks like it's a derivative of the Makefile for 'none', not Massif. 'none' doesn't use a preload file, so uh, maybe if you start over using massif/Makefile.am ? Or at least, consistently rename in your Makefile? atm there are three mentions of "NONE_SOURCES_COMMON", which can't be right. J |
|
From: David S. <da...@si...> - 2010-02-11 15:57:36
|
hello all! i'm building a new tool, that tracks heap allocation/freeing. it will eventually give a visual representation (3d view) of the memory and allow a programmer to see where in the source code the memory came from (possibly tracking read/writes to it aswell). i'm trying to create a vgpreload_*.so for this tool. sofar i've simply adjusted visualdbg/Makefile.am, based on massif/Makefile.am. when i compile, vgpreload_*.so doesn't get created. is there anything else required to build vgpreload, or did i make some simple mistake (typo)? i've attached the Makefile for my tool. david |
|
From: Alexander P. <gl...@go...> - 2010-02-11 10:40:50
|
Nightly build on mcgrind ( Darwin 9.7.0 i386 ) Started at 2010-02-11 09:06:04 MSK Ended at 2010-02-11 09:25:21 MSK Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 433 tests, 22 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/null_socket (stdout) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) none/tests/async-sigs (stderr) none/tests/faultstatus (stderr) none/tests/pth_blockedsig (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc23_bogus_condwait (stderr) -- Alexander Potapenko Software Engineer Google Moscow |
|
From: Bart V. A. <bar...@gm...> - 2010-02-11 08:20:52
|
Nightly build on cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2010-02-11 02:00:01 EST Ended at 2010-02-11 03:20:36 EST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 449 tests, 43 stderr failures, 10 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/linux/timerfd-syscall (stdout) memcheck/tests/linux-syscalls-2007 (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/hsg (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) |
|
From: Tom H. <th...@cy...> - 2010-02-11 03:43:04
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2010-02-11 03:10:11 GMT Ended at 2010-02-11 03:42:50 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 538 tests, 1 stderr failure, 0 stdout failures, 0 post failures == helgrind/tests/tc06_two_races_xml (stderr) |
|
From: <sv...@va...> - 2010-02-10 13:55:42
|
Author: sewardj
Date: 2010-02-10 13:37:37 +0000 (Wed, 10 Feb 2010)
New Revision: 11038
Log:
Fix bogus comparisons of PDB vs PE timestamps, so as to avoid
signed vs unsigned confusion.
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2010-02-04 12:04:14 UTC (rev 11037)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2010-02-10 13:37:37 UTC (rev 11038)
@@ -972,7 +972,7 @@
}
pdb_mtime = stat_buf.mtime;
- if (obj_mtime - pdb_mtime > 60ULL) {
+ if (obj_mtime > pdb_mtime + 60ULL) {
/* PDB file is older than PE file. Really, the PDB should be
newer than the PE, but that doesn't always seem to be the
case. Allow the PDB to be up to one minute older.
@@ -981,9 +981,9 @@
(b) crash.
*/
VG_(message)(Vg_UserMsg,
- "Warning: Ignoring %s since it is older than %s\n",
- pdbname, exename);
- goto out;
+ "Warning: %s (mtime = %llu)\n"
+ " is older than %s (mtime = %llu)\n",
+ pdbname, pdb_mtime, exename, obj_mtime);
}
sres = VG_(open)(pdbname, VKI_O_RDONLY, 0);
|
|
From: Konstantin S. <kon...@gm...> - 2010-02-10 07:52:52
|
Done: https://bugs.kde.org/show_bug.cgi?id=226116 On Tue, Feb 9, 2010 at 11:43 PM, Julian Seward <js...@ac...> wrote: > > Konstantin, please can you file a bug report on this? > Else it's in danger of falling through the cracks. > > J > > On Sunday 07 February 2010, Konstantin Serebryany wrote: > > On Fri, Feb 5, 2010 at 8:00 PM, Julian Seward <js...@ac...> wrote: > > > The log is quite useful. It might be that there is a race > > > between the handling for sys_clone and for sys_exit_group. I'm not > > > sure I understand the details though. > > > > > > sys_exit_group happens when the main thread exits. It marks > > > all other threads in the same thread group as "to be forced > > > to exit". If any of these threads are blocked in syscalls > > > then they are hit on the head with sigvgkill to get them out > > > of the syscall. Or something like that. (see function > > > PRE_(sys_exit_group)). > > > > > > So, I suspect the problem is, there is a child thread > > > that has just been created by clone > > > (by a call to do_syscall_clone_amd64_linux) > > > but which is not yet marked > > > as being in the same thread group as its parent > > > (which happens a few hundred instructions after the child's > > > starup, in thread_wrapper (called by run_a_thread_NORETURN called > > > by ML_(start_thread_NORETURN), which is the start point > > > for the child on the host cpu). > > > > > > Then the parent exits, but the child is not marked as also-to-exit > > > because it is not marked as in the same thread group as > > > its parent. So it stays alive. This is I think what happened > > > to tid=281 in the logfile you sent. > > > > > > It would be best to mark the child's thread group before > > > creating it. But I don't understand the meaning of thread groups, > > > and how these relate to what VG_(gettid) and VG_(getpid) return. > > > > > > I could chase this if you can refine the test case into something > > > that reliably hangs every time -- the current 5% failure rate is going > to > > > make it impossible to investigate. > > > > > > One thing you could do is to insert a spin-wait loop in > > > > Indeed, the patch below make the bug manifeest itself every time. > > The process either hangs (top shows it as zombie) or continues to print > > stuff forever. > > > > --kcc > > > > > > --- coregrind/m_syswrap/syswrap-linux.c (revision 11037) > > +++ coregrind/m_syswrap/syswrap-linux.c (working copy) > > @@ -214,11 +214,20 @@ > > vg_assert(0); > > } > > > > +static void spin_loop(int c, int tid) { > > + static volatile int z; > > + VG_(printf)("spinning: %d\n", tid); > > + while(c--) { > > + z++; > > + } > > + VG_(printf)("done: %d\n", tid); > > +} > > + > > Word ML_(start_thread_NORETURN) ( void* arg ) > > { > > ThreadState* tst = (ThreadState*)arg; > > ThreadId tid = tst->tid; > > - > > + spin_loop(1 << 25, tid); > > run_a_thread_NORETURN ( (Word)tid ); > > /*NOTREACHED*/ > > vg_assert(0); > > > > > ML_(start_thread_noreturn) [make sure gcc doesn't just optimise it > > > away] to delay the point where the child sets up its .threadgroup > > > field. This might make the hang happen more often. Can you try that? > > > > > > J > > > > > > On Tuesday 02 February 2010, Konstantin Serebryany wrote: > > > > Hi Julian, > > > > > > > > Any luck with this hang? > > > > Anything I can help with? > > > > > > > > --kcc > > > > > > > > On Thu, Jan 28, 2010 at 10:37 AM, Konstantin Serebryany < > > > > > > > > kon...@gm...> wrote: > > > > > Sent a log off list > > > > > With logging on it does not really want to hang. > > > > > Instead (with ~5% probability) it loops forever. > > > > > I think this is the same bug -- the process misses its own death > > > > > > time... > > > > > > > > --kcc > > > > > > > > > > On Thu, Jan 28, 2010 at 10:40 AM, Julian Seward <js...@ac...> > > > > > > wrote: > > > > >> On Wednesday 27 January 2010, Julian Seward wrote: > > > > >> > On Wednesday 27 January 2010, Konstantin Serebryany wrote: > > > > >> > > I've minimized the problem to a small test (below). > > > > >> > > It spawns many threads and doesn't join them before exiting. > > > > >> > > It will hang (or loop forever) one out of 40-100 runs: > > > > >> > > % g++ -g -lpthread hang.cc > > > > >> > > % for((i=10;i<=99;i++)); do date; time > > > > >> > > > > >> ~/valgrind/trunk/inst/bin/valgrind > > > > >> > > > > >> > > --tool=none --trace-syscalls=yes --trace-signals=yes -q > ./a.out > > > > > > 2> > > > > > > > >> > > $i.log ; done > > > > >> > > > > > >> > Ok; managed to reproduce it. 2 threads were still stuck in some > > > > >> > syscall (don't know which yet). Investigating. > > > > >> > > > > >> I can reproduce it, but only in the case where there is no > logging, > > > > >> which isn't useful. If you have a logfile where it hangs for > > > > >> --trace-syscalls=yes --trace-signals=yes, can you compress it and > > > > >> send it to me? afaics the log is about 40MB long, but it should > > > > >> bzip2 nicely. > > > > >> > > > > >> J > > > |
|
From: Julian S. <js...@ac...> - 2010-02-09 20:24:07
|
Konstantin, please can you file a bug report on this?
Else it's in danger of falling through the cracks.
J
On Sunday 07 February 2010, Konstantin Serebryany wrote:
> On Fri, Feb 5, 2010 at 8:00 PM, Julian Seward <js...@ac...> wrote:
> > The log is quite useful. It might be that there is a race
> > between the handling for sys_clone and for sys_exit_group. I'm not
> > sure I understand the details though.
> >
> > sys_exit_group happens when the main thread exits. It marks
> > all other threads in the same thread group as "to be forced
> > to exit". If any of these threads are blocked in syscalls
> > then they are hit on the head with sigvgkill to get them out
> > of the syscall. Or something like that. (see function
> > PRE_(sys_exit_group)).
> >
> > So, I suspect the problem is, there is a child thread
> > that has just been created by clone
> > (by a call to do_syscall_clone_amd64_linux)
> > but which is not yet marked
> > as being in the same thread group as its parent
> > (which happens a few hundred instructions after the child's
> > starup, in thread_wrapper (called by run_a_thread_NORETURN called
> > by ML_(start_thread_NORETURN), which is the start point
> > for the child on the host cpu).
> >
> > Then the parent exits, but the child is not marked as also-to-exit
> > because it is not marked as in the same thread group as
> > its parent. So it stays alive. This is I think what happened
> > to tid=281 in the logfile you sent.
> >
> > It would be best to mark the child's thread group before
> > creating it. But I don't understand the meaning of thread groups,
> > and how these relate to what VG_(gettid) and VG_(getpid) return.
> >
> > I could chase this if you can refine the test case into something
> > that reliably hangs every time -- the current 5% failure rate is going to
> > make it impossible to investigate.
> >
> > One thing you could do is to insert a spin-wait loop in
>
> Indeed, the patch below make the bug manifeest itself every time.
> The process either hangs (top shows it as zombie) or continues to print
> stuff forever.
>
> --kcc
>
>
> --- coregrind/m_syswrap/syswrap-linux.c (revision 11037)
> +++ coregrind/m_syswrap/syswrap-linux.c (working copy)
> @@ -214,11 +214,20 @@
> vg_assert(0);
> }
>
> +static void spin_loop(int c, int tid) {
> + static volatile int z;
> + VG_(printf)("spinning: %d\n", tid);
> + while(c--) {
> + z++;
> + }
> + VG_(printf)("done: %d\n", tid);
> +}
> +
> Word ML_(start_thread_NORETURN) ( void* arg )
> {
> ThreadState* tst = (ThreadState*)arg;
> ThreadId tid = tst->tid;
> -
> + spin_loop(1 << 25, tid);
> run_a_thread_NORETURN ( (Word)tid );
> /*NOTREACHED*/
> vg_assert(0);
>
> > ML_(start_thread_noreturn) [make sure gcc doesn't just optimise it
> > away] to delay the point where the child sets up its .threadgroup
> > field. This might make the hang happen more often. Can you try that?
> >
> > J
> >
> > On Tuesday 02 February 2010, Konstantin Serebryany wrote:
> > > Hi Julian,
> > >
> > > Any luck with this hang?
> > > Anything I can help with?
> > >
> > > --kcc
> > >
> > > On Thu, Jan 28, 2010 at 10:37 AM, Konstantin Serebryany <
> > >
> > > kon...@gm...> wrote:
> > > > Sent a log off list
> > > > With logging on it does not really want to hang.
> > > > Instead (with ~5% probability) it loops forever.
> > > > I think this is the same bug -- the process misses its own death
> >
> > time...
> >
> > > > --kcc
> > > >
> > > > On Thu, Jan 28, 2010 at 10:40 AM, Julian Seward <js...@ac...>
> >
> > wrote:
> > > >> On Wednesday 27 January 2010, Julian Seward wrote:
> > > >> > On Wednesday 27 January 2010, Konstantin Serebryany wrote:
> > > >> > > I've minimized the problem to a small test (below).
> > > >> > > It spawns many threads and doesn't join them before exiting.
> > > >> > > It will hang (or loop forever) one out of 40-100 runs:
> > > >> > > % g++ -g -lpthread hang.cc
> > > >> > > % for((i=10;i<=99;i++)); do date; time
> > > >>
> > > >> ~/valgrind/trunk/inst/bin/valgrind
> > > >>
> > > >> > > --tool=none --trace-syscalls=yes --trace-signals=yes -q ./a.out
> >
> > 2>
> >
> > > >> > > $i.log ; done
> > > >> >
> > > >> > Ok; managed to reproduce it. 2 threads were still stuck in some
> > > >> > syscall (don't know which yet). Investigating.
> > > >>
> > > >> I can reproduce it, but only in the case where there is no logging,
> > > >> which isn't useful. If you have a logfile where it hangs for
> > > >> --trace-syscalls=yes --trace-signals=yes, can you compress it and
> > > >> send it to me? afaics the log is about 40MB long, but it should
> > > >> bzip2 nicely.
> > > >>
> > > >> J
|