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
(20) |
2
(19) |
3
(7) |
|
4
(13) |
5
(24) |
6
(9) |
7
(12) |
8
(8) |
9
(34) |
10
(28) |
|
11
(20) |
12
(23) |
13
(12) |
14
(10) |
15
(15) |
16
(24) |
17
(26) |
|
18
(17) |
19
(14) |
20
(14) |
21
(8) |
22
(12) |
23
(22) |
24
(10) |
|
25
(21) |
26
(21) |
27
(18) |
28
(8) |
29
(13) |
30
(15) |
|
|
From: Julian S. <js...@ac...> - 2007-11-11 23:02:37
|
> Helgrind: Fatal internal error -- cannot continue. > Helgrind: mk_SHVAL_ShR(tset=8192,lset=1): FAILED > Helgrind: max allowed tset=8191, lset=131071 > Helgrind: program has too many thread sets or lock sets to track. Yes. It's a problem I'm tracking. Really it is trying to squeeze too much information into a 32-bit word. It's probably fixable properly at some performance loss. In the meantime, at hg_main.c:902 reduce N_LSID_BITS from 17 to 16 and try again. J |
|
From: Eyal L. <ey...@ey...> - 2007-11-11 22:54:53
|
I am trying to use helgrind and so far I have a showstopper. Simplified, my software is a number of servers and clients. The clients execute a heartbeat connection to one server (1/sec). Bringing up the servers and clients all looks fine but very soon (90s after it actually starts running) one server exits. Another exits a few minutes later, then the last one survives for much longer. The vg logs always end with this report: Helgrind: Fatal internal error -- cannot continue. Helgrind: mk_SHVAL_ShR(tset=8192,lset=1): FAILED Helgrind: max allowed tset=8191, lset=131071 Helgrind: program has too many thread sets or lock sets to track. ... My servers were effectively idle at this point, the real work did not even start. There were only a dozen threads "created" by any server by the time it fails. The program uses pthreads, nothing fancy, the testing is done on Linux Debian 3.1 on x86, libc-2.3.2. Latest vg off svn. -- Eyal Lebedinsky (ey...@ey...) |
|
From: <sv...@va...> - 2007-11-11 22:15:58
|
Author: njn
Date: 2007-11-11 22:15:58 +0000 (Sun, 11 Nov 2007)
New Revision: 7150
Log:
- Make other integer CLO macros more correct, as I did for VG_NUM_CLO in the
last commit.
- Add a VG_DBL_CLO for fractional arguments.
- Make Massif's --threshold and --peak-inaccuracy arguments fractional.
Modified:
trunk/include/pub_tool_options.h
trunk/massif/ms_main.c
trunk/massif/tests/peak2.post.exp
trunk/massif/tests/peak2.vgtest
trunk/massif/tests/thresholds_10_0.post.exp
trunk/massif/tests/thresholds_10_0.vgtest
trunk/massif/tests/thresholds_10_10.post.exp
trunk/massif/tests/thresholds_10_10.vgtest
trunk/massif/tests/thresholds_5_0.post.exp
trunk/massif/tests/thresholds_5_0.vgtest
trunk/massif/tests/thresholds_5_10.post.exp
trunk/massif/tests/thresholds_5_10.vgtest
Modified: trunk/include/pub_tool_options.h
===================================================================
--- trunk/include/pub_tool_options.h 2007-11-11 21:58:21 UTC (rev 7149)
+++ trunk/include/pub_tool_options.h 2007-11-11 22:15:58 UTC (rev 7150)
@@ -63,17 +63,35 @@
on 64-bit platforms. */
#define VG_NUMW_CLO(qq_arg, qq_option, qq_var) \
if (VG_CLO_STREQN(VG_(strlen)(qq_option)+1, qq_arg, qq_option"=")) { \
- (qq_var) = (Word)VG_(atoll)( &qq_arg[ VG_(strlen)(qq_option)+1 ] ); \
+ Char* s; \
+ Long n = VG_(strtoll10)( &qq_arg[ VG_(strlen)(qq_option)+1 ], &s );\
+ (qq_var) = n; \
+ /* Check for non-numeralness */ \
+ if ('\0' != s[0]) VG_(err_bad_option)(qq_arg); \
}
/* Bounded integer arg */
#define VG_BNUM_CLO(qq_arg, qq_option, qq_var, qq_lo, qq_hi) \
if (VG_CLO_STREQN(VG_(strlen)(qq_option)+1, qq_arg, qq_option"=")) { \
- (qq_var) = (Int)VG_(atoll)( &qq_arg[ VG_(strlen)(qq_option)+1 ] ); \
+ Char* s; \
+ Long n = VG_(strtoll10)( &qq_arg[ VG_(strlen)(qq_option)+1 ], &s );\
+ (qq_var) = n; \
+ /* Check for non-numeralness, or overflow */ \
+ if ('\0' != s[0] || (qq_var) != n) VG_(err_bad_option)(qq_arg); \
if ((qq_var) < (qq_lo)) (qq_var) = (qq_lo); \
if ((qq_var) > (qq_hi)) (qq_var) = (qq_hi); \
}
+/* Double arg */
+#define VG_DBL_CLO(qq_arg, qq_option, qq_var) \
+ if (VG_CLO_STREQN(VG_(strlen)(qq_option)+1, qq_arg, qq_option"=")) { \
+ Char* s; \
+ double n = VG_(strtod)( &qq_arg[ VG_(strlen)(qq_option)+1 ], &s );\
+ (qq_var) = n; \
+ /* Check for non-numeralness */ \
+ if ('\0' != s[0]) VG_(err_bad_option)(qq_arg); \
+ }
+
/* Bool arg whose value is denoted by the exact presence of the given string. */
#define VG_XACT_CLO(qq_arg, qq_option, qq_var) \
if (VG_CLO_STREQ(qq_arg, qq_option)) { \
Modified: trunk/massif/ms_main.c
===================================================================
--- trunk/massif/ms_main.c 2007-11-11 21:58:21 UTC (rev 7149)
+++ trunk/massif/ms_main.c 2007-11-11 22:15:58 UTC (rev 7150)
@@ -31,11 +31,11 @@
// XXX:
//---------------------------------------------------------------------------
// Todo -- critical for release:
+// - write documentation
+// - address/close all the bug reports below (after writing docs)
// - do a graph-drawing test
// - write a good basic test that shows how the tool works, suitable for
// documentation
-// - write documentation
-// - make --threshold and --peak-inaccuracy fractional
// - do filename properly, clean up Valgrind-wide log file naming mess.
// Expected behaviour:
// - Main log file:
@@ -412,14 +412,14 @@
// a UInt, but this caused problems on 64-bit machines when it was
// multiplied by a small negative number and then promoted to a
// word-sized type -- it ended up with a value of 4.2 billion. Sigh.
-static SizeT clo_heap_admin = 8;
-static Bool clo_stacks = False;
-static UInt clo_depth = 30;
-static UInt clo_threshold = 100; // 100 == 1%
-static UInt clo_peak_inaccuracy = 100; // 100 == 1%
-static UInt clo_time_unit = TimeMS;
-static UInt clo_detailed_freq = 10;
-static UInt clo_max_snapshots = 100;
+static SizeT clo_heap_admin = 8;
+static Bool clo_stacks = False;
+static UInt clo_depth = 30;
+static double clo_threshold = 1.0; // percentage
+static double clo_peak_inaccuracy = 1.0; // percentage
+static UInt clo_time_unit = TimeMS;
+static UInt clo_detailed_freq = 10;
+static UInt clo_max_snapshots = 100;
static XArray* args_for_massif;
@@ -435,11 +435,9 @@
else VG_NUM_CLO(arg, "--heap-admin", clo_heap_admin)
else VG_NUM_CLO(arg, "--depth", clo_depth)
- // XXX: use a fractional number, so no division by 100
- else VG_NUM_CLO(arg, "--threshold", clo_threshold)
+ else VG_DBL_CLO(arg, "--threshold", clo_threshold)
- // XXX: use a fractional number, so no division by 100
- else VG_NUM_CLO(arg, "--peak-inaccuracy", clo_peak_inaccuracy)
+ else VG_DBL_CLO(arg, "--peak-inaccuracy", clo_peak_inaccuracy)
else VG_NUM_CLO(arg, "--detailed-freq", clo_detailed_freq)
else VG_NUM_CLO(arg, "--max-snapshots", clo_max_snapshots)
@@ -467,11 +465,8 @@
" --stacks=no|yes profile stack(s) [no]\n"
" --depth=<number> depth of contexts [30]\n"
" --alloc-fn=<name> specify <fn> as an alloc function [empty]\n"
-" --threshold=<n> significance threshold, in 100ths of a percent\n"
-" (eg. <n>=100 shows nodes covering >= 1%% of\n"
-" total size, <n>=0 shows all nodes) [100]\n"
-" --peak-inaccuracy=<n> closeness of recorded peak to true peak,\n"
-" in 100ths of a percent\n"
+" --threshold=<m.n> significance threshold, as a percentage [1.0]\n"
+" --peak-inaccuracy=<m.n> maximum peak inaccuracy, as a percentage [1.0]\n"
" --time-unit=ms|B time unit, milliseconds or bytes\n"
" alloc'd/dealloc'd on the heap [ms]\n"
" --detailed-freq=<N> every Nth snapshot should be detailed [10]\n"
@@ -687,7 +682,7 @@
if (total_szB == 0 && clo_threshold != 0) {
sig_child_threshold_szB = 1;
} else {
- sig_child_threshold_szB = (((ULong)total_szB) * clo_threshold) / 10000ULL;
+ sig_child_threshold_szB = (SizeT)((total_szB * clo_threshold) / 100);
}
// How many children are significant? And do we need an aggregate SXPt?
@@ -1347,7 +1342,7 @@
// because many peaks remain peak only for a short time.
SizeT total_szB = heap_szB + heap_extra_szB + stacks_szB;
SizeT excess_szB_for_new_peak =
- (((ULong)peak_snapshot_total_szB) * clo_peak_inaccuracy) / 10000ULL;
+ (SizeT)((peak_snapshot_total_szB * clo_peak_inaccuracy) / 100);
if (total_szB <= peak_snapshot_total_szB + excess_szB_for_new_peak) {
return;
}
@@ -1922,7 +1917,7 @@
perc = make_perc(sxpt->szB, snapshot_total_szB);
FP("%sn0: %lu in %d place%s below massif's threshold (%s)\n",
depth_str, sxpt->szB, sxpt->Insig.n_xpts, s,
- make_perc(clo_threshold, 10000));
+ make_perc((ULong)clo_threshold, 100));
break;
}
@@ -2067,8 +2062,8 @@
VG_(message)(Vg_UserMsg, "--depth must be between 1 and %d", MAX_DEPTH);
VG_(err_bad_option)("--depth");
}
- if (clo_threshold < 0 || clo_threshold > 10000) {
- VG_(message)(Vg_UserMsg, "--threshold must be between 0 and 10000");
+ if (clo_threshold < 0 || clo_threshold > 100) {
+ VG_(message)(Vg_UserMsg, "--threshold must be between 0.0 and 100.0");
VG_(err_bad_option)("--threshold");
}
if (clo_detailed_freq < 1 || clo_detailed_freq > 10000) {
Modified: trunk/massif/tests/peak2.post.exp
===================================================================
--- trunk/massif/tests/peak2.post.exp 2007-11-11 21:58:21 UTC (rev 7149)
+++ trunk/massif/tests/peak2.post.exp 2007-11-11 22:15:58 UTC (rev 7150)
@@ -1,6 +1,6 @@
--------------------------------------------------------------------------------
Command: ./peak
-Massif arguments: --stacks=no --time-unit=B --peak-inaccuracy=1000 --heap-admin=64
+Massif arguments: --stacks=no --time-unit=B --peak-inaccuracy=10.0 --heap-admin=64
ms_print arguments: massif.out
--------------------------------------------------------------------------------
Modified: trunk/massif/tests/peak2.vgtest
===================================================================
--- trunk/massif/tests/peak2.vgtest 2007-11-11 21:58:21 UTC (rev 7149)
+++ trunk/massif/tests/peak2.vgtest 2007-11-11 22:15:58 UTC (rev 7150)
@@ -1,5 +1,5 @@
prog: peak
-vgopts: --stacks=no --time-unit=B -v -v --peak-inaccuracy=1000 --heap-admin=64
+vgopts: --stacks=no --time-unit=B -v -v --peak-inaccuracy=10.0 --heap-admin=64
stderr_filter: filter_verbose
post: perl ../../massif/ms_print massif.out | ../../tests/filter_addresses
cleanup: rm massif.out
Modified: trunk/massif/tests/thresholds_10_0.post.exp
===================================================================
--- trunk/massif/tests/thresholds_10_0.post.exp 2007-11-11 21:58:21 UTC (rev 7149)
+++ trunk/massif/tests/thresholds_10_0.post.exp 2007-11-11 22:15:58 UTC (rev 7150)
@@ -1,6 +1,6 @@
--------------------------------------------------------------------------------
Command: ./thresholds
-Massif arguments: --stacks=no --time-unit=B --heap-admin=0 --threshold=1000
+Massif arguments: --stacks=no --time-unit=B --heap-admin=0 --threshold=10
ms_print arguments: massif.out --threshold=0
--------------------------------------------------------------------------------
Modified: trunk/massif/tests/thresholds_10_0.vgtest
===================================================================
--- trunk/massif/tests/thresholds_10_0.vgtest 2007-11-11 21:58:21 UTC (rev 7149)
+++ trunk/massif/tests/thresholds_10_0.vgtest 2007-11-11 22:15:58 UTC (rev 7150)
@@ -1,4 +1,4 @@
prog: thresholds
-vgopts: --stacks=no --time-unit=B --heap-admin=0 --threshold=1000
+vgopts: --stacks=no --time-unit=B --heap-admin=0 --threshold=10
post: perl ../../massif/ms_print massif.out --threshold=0 | ../../tests/filter_addresses
cleanup: rm massif.out
Modified: trunk/massif/tests/thresholds_10_10.post.exp
===================================================================
--- trunk/massif/tests/thresholds_10_10.post.exp 2007-11-11 21:58:21 UTC (rev 7149)
+++ trunk/massif/tests/thresholds_10_10.post.exp 2007-11-11 22:15:58 UTC (rev 7150)
@@ -1,6 +1,6 @@
--------------------------------------------------------------------------------
Command: ./thresholds
-Massif arguments: --stacks=no --time-unit=B --heap-admin=0 --threshold=1000
+Massif arguments: --stacks=no --time-unit=B --heap-admin=0 --threshold=10
ms_print arguments: massif.out --threshold=10
--------------------------------------------------------------------------------
Modified: trunk/massif/tests/thresholds_10_10.vgtest
===================================================================
--- trunk/massif/tests/thresholds_10_10.vgtest 2007-11-11 21:58:21 UTC (rev 7149)
+++ trunk/massif/tests/thresholds_10_10.vgtest 2007-11-11 22:15:58 UTC (rev 7150)
@@ -1,4 +1,4 @@
prog: thresholds
-vgopts: --stacks=no --time-unit=B --heap-admin=0 --threshold=1000
+vgopts: --stacks=no --time-unit=B --heap-admin=0 --threshold=10
post: perl ../../massif/ms_print massif.out --threshold=10 | ../../tests/filter_addresses
cleanup: rm massif.out
Modified: trunk/massif/tests/thresholds_5_0.post.exp
===================================================================
--- trunk/massif/tests/thresholds_5_0.post.exp 2007-11-11 21:58:21 UTC (rev 7149)
+++ trunk/massif/tests/thresholds_5_0.post.exp 2007-11-11 22:15:58 UTC (rev 7150)
@@ -1,6 +1,6 @@
--------------------------------------------------------------------------------
Command: ./thresholds
-Massif arguments: --stacks=no --time-unit=B --heap-admin=0 --threshold=500
+Massif arguments: --stacks=no --time-unit=B --heap-admin=0 --threshold=5
ms_print arguments: massif.out --threshold=0
--------------------------------------------------------------------------------
Modified: trunk/massif/tests/thresholds_5_0.vgtest
===================================================================
--- trunk/massif/tests/thresholds_5_0.vgtest 2007-11-11 21:58:21 UTC (rev 7149)
+++ trunk/massif/tests/thresholds_5_0.vgtest 2007-11-11 22:15:58 UTC (rev 7150)
@@ -1,4 +1,4 @@
prog: thresholds
-vgopts: --stacks=no --time-unit=B --heap-admin=0 --threshold=500
+vgopts: --stacks=no --time-unit=B --heap-admin=0 --threshold=5
post: perl ../../massif/ms_print massif.out --threshold=0 | ../../tests/filter_addresses
cleanup: rm massif.out
Modified: trunk/massif/tests/thresholds_5_10.post.exp
===================================================================
--- trunk/massif/tests/thresholds_5_10.post.exp 2007-11-11 21:58:21 UTC (rev 7149)
+++ trunk/massif/tests/thresholds_5_10.post.exp 2007-11-11 22:15:58 UTC (rev 7150)
@@ -1,6 +1,6 @@
--------------------------------------------------------------------------------
Command: ./thresholds
-Massif arguments: --stacks=no --time-unit=B --heap-admin=0 --threshold=500
+Massif arguments: --stacks=no --time-unit=B --heap-admin=0 --threshold=5
ms_print arguments: massif.out --threshold=10
--------------------------------------------------------------------------------
Modified: trunk/massif/tests/thresholds_5_10.vgtest
===================================================================
--- trunk/massif/tests/thresholds_5_10.vgtest 2007-11-11 21:58:21 UTC (rev 7149)
+++ trunk/massif/tests/thresholds_5_10.vgtest 2007-11-11 22:15:58 UTC (rev 7150)
@@ -1,4 +1,4 @@
prog: thresholds
-vgopts: --stacks=no --time-unit=B --heap-admin=0 --threshold=500
+vgopts: --stacks=no --time-unit=B --heap-admin=0 --threshold=5
post: perl ../../massif/ms_print massif.out --threshold=10 | ../../tests/filter_addresses
cleanup: rm massif.out
|
|
From: <sv...@va...> - 2007-11-11 21:58:19
|
Author: njn
Date: 2007-11-11 21:58:21 +0000 (Sun, 11 Nov 2007)
New Revision: 7149
Log:
Add four 'strtoll' variants, which are like 'atoll' but let you detect if
the string converted wasn't entirely numeric. Using them for numeric
command-line options -- previously if you had a option "--foo=<n>", where
<n> is supposed to be an integer, then "--foo=blah" would be interpreted as
"--foo=0", because the "blah" would be converted to zero and the remaining
chars wouldn't be noticed.
Fixed an incorrect command-line option in two massif tests that this change
exposed.
Modified:
trunk/coregrind/m_libcbase.c
trunk/include/pub_tool_libcbase.h
trunk/include/pub_tool_options.h
trunk/massif/tests/zero1.post.exp
trunk/massif/tests/zero1.vgtest
trunk/massif/tests/zero2.post.exp
trunk/massif/tests/zero2.vgtest
Modified: trunk/coregrind/m_libcbase.c
===================================================================
--- trunk/coregrind/m_libcbase.c 2007-11-11 21:12:28 UTC (rev 7148)
+++ trunk/coregrind/m_libcbase.c 2007-11-11 21:58:21 UTC (rev 7149)
@@ -50,76 +50,178 @@
Converting strings to numbers
------------------------------------------------------------------ */
-Long VG_(atoll) ( Char* str )
+static Bool is_oct_digit(Char c, Long* digit)
{
+ if (c >= '0' && c <= '7') { *digit = (Long)(c - '0'); return True; }
+ return False;
+}
+
+static Bool is_dec_digit(Char c, Long* digit)
+{
+ if (c >= '0' && c <= '9') { *digit = (Long)(c - '0'); return True; }
+ return False;
+}
+
+static Bool is_hex_digit(Char c, Long* digit)
+{
+ if (c >= '0' && c <= '9') { *digit = (Long)(c - '0'); return True; }
+ if (c >= 'A' && c <= 'F') { *digit = (Long)((c - 'A') + 10); return True; }
+ if (c >= 'a' && c <= 'f') { *digit = (Long)((c - 'a') + 10); return True; }
+ return False;
+}
+
+static Bool is_base36_digit(Char c, Long* digit)
+{
+ if (c >= '0' && c <= '9') { *digit = (Long)(c - '0'); return True; }
+ if (c >= 'A' && c <= 'Z') { *digit = (Long)((c - 'A') + 10); return True; }
+ if (c >= 'a' && c <= 'z') { *digit = (Long)((c - 'a') + 10); return True; }
+ return False;
+}
+
+Long VG_(strtoll8) ( Char* str, Char** endptr )
+{
Bool neg = False;
- Long n = 0;
- if (*str == '-') { str++; neg = True; };
- while (*str >= '0' && *str <= '9') {
- n = 10*n + (Long)(*str - '0');
+ Long n = 0, digit;
+
+ // Skip leading whitespace.
+ while (VG_(isspace)(*str)) str++;
+
+ // Allow a leading '-' or '+'.
+ if (*str == '-') { str++; neg = True; }
+ else if (*str == '+') { str++; }
+
+ while (is_oct_digit(*str, &digit)) {
+ n = 8*n + digit;
str++;
}
+
if (neg) n = -n;
+ if (endptr) *endptr = str; // Record first failing character.
return n;
}
-Long VG_(atoll16) ( Char* str )
+Long VG_(strtoll10) ( Char* str, Char** endptr )
{
Bool neg = False;
- Long n = 0;
- if (*str == '-') { str++; neg = True; };
- if (*str == '0' && (*(str+1) == 'x' || *(str+1) == 'X')) {
+ Long n = 0, digit;
+
+ // Skip leading whitespace.
+ while (VG_(isspace)(*str)) str++;
+
+ // Allow a leading '-' or '+'.
+ if (*str == '-') { str++; neg = True; }
+ else if (*str == '+') { str++; }
+
+ while (is_dec_digit(*str, &digit)) {
+ n = 10*n + digit;
+ str++;
+ }
+
+ if (neg) n = -n;
+ if (endptr) *endptr = str; // Record first failing character.
+ return n;
+}
+
+Long VG_(strtoll16) ( Char* str, Char** endptr )
+{
+ Bool neg = False;
+ Long n = 0, digit;
+
+ // Skip leading whitespace.
+ while (VG_(isspace)(*str)) str++;
+
+ // Allow a leading '-' or '+'.
+ if (*str == '-') { str++; neg = True; }
+ else if (*str == '+') { str++; }
+
+ // Allow leading "0x", but only if there's a hex digit
+ // following it.
+ if (*str == '0'
+ && (*(str+1) == 'x' || *(str+1) == 'X')
+ && is_hex_digit( *(str+2), &digit )) {
str += 2;
}
- while (True) {
- Char c = *str;
- if (c >= '0' && c <= (Char)'9') {
- n = 16*n + (Long)(c - '0');
- }
- else
- if (c >= 'A' && c <= (Char)'F') {
- n = 16*n + (Long)((c - 'A') + 10);
- }
- else
- if (c >= 'a' && c <= (Char)'f') {
- n = 16*n + (Long)((c - 'a') + 10);
- }
- else {
- break;
- }
+
+ while (is_hex_digit(*str, &digit)) {
+ n = 16*n + digit;
str++;
}
+
if (neg) n = -n;
+ if (endptr) *endptr = str; // Record first failing character.
return n;
}
-Long VG_(atoll36) ( Char* str )
+Long VG_(strtoll36) ( Char* str, Char** endptr )
{
Bool neg = False;
- Long n = 0;
- if (*str == '-') { str++; neg = True; };
- while (True) {
- Char c = *str;
- if (c >= '0' && c <= (Char)'9') {
- n = 36*n + (Long)(c - '0');
- }
- else
- if (c >= 'A' && c <= (Char)'Z') {
- n = 36*n + (Long)((c - 'A') + 10);
- }
- else
- if (c >= 'a' && c <= (Char)'z') {
- n = 36*n + (Long)((c - 'a') + 10);
- }
- else {
- break;
- }
+ Long n = 0, digit;
+
+ // Skip leading whitespace.
+ while (VG_(isspace)(*str)) str++;
+
+ // Allow a leading '-' or '+'.
+ if (*str == '-') { str++; neg = True; }
+ else if (*str == '+') { str++; }
+
+ while (is_base36_digit(*str, &digit)) {
+ n = 36*n + digit;
str++;
}
+
if (neg) n = -n;
+ if (endptr) *endptr = str; // Record first failing character.
return n;
}
+double VG_(strtod) ( Char* str, Char** endptr )
+{
+ Bool neg = False;
+ Long digit;
+ double n = 0, frac = 0, x = 0.1;
+
+ // Skip leading whitespace.
+ while (VG_(isspace)(*str)) str++;
+
+ // Allow a leading '-' or '+'.
+ if (*str == '-') { str++; neg = True; }
+ else if (*str == '+') { str++; }
+
+ while (is_dec_digit(*str, &digit)) {
+ n = 10*n + digit;
+ str++;
+ }
+
+ if (*str == '.') {
+ str++;
+ while (is_dec_digit(*str, &digit)) {
+ frac += x*digit;
+ x /= 10;
+ str++;
+ }
+ }
+
+ n += frac;
+ if (neg) n = -n;
+ if (endptr) *endptr = str; // Record first failing character.
+ return n;
+}
+
+Long VG_(atoll) ( Char* str )
+{
+ return VG_(strtoll10)(str, NULL);
+}
+
+Long VG_(atoll16) ( Char* str )
+{
+ return VG_(strtoll16)(str, NULL);
+}
+
+Long VG_(atoll36) ( Char* str )
+{
+ return VG_(strtoll36)(str, NULL);
+}
+
/* ---------------------------------------------------------------------
String functions
------------------------------------------------------------------ */
Modified: trunk/include/pub_tool_libcbase.h
===================================================================
--- trunk/include/pub_tool_libcbase.h 2007-11-11 21:12:28 UTC (rev 7148)
+++ trunk/include/pub_tool_libcbase.h 2007-11-11 21:58:21 UTC (rev 7149)
@@ -42,6 +42,27 @@
Converting strings to numbers
------------------------------------------------------------------ */
+// Convert strings to numbers according to various bases. Leading
+// whitespace is ignored. A subsequent '-' or '+' is accepted. For strtoll16,
+// accepts an initial "0x" or "0X" prefix, but only if it's followed by a
+// hex digit (if not, the '0' will be read and then it will stop on the
+// "x"/"X".) If 'endptr' isn't NULL, it gets filled in with the first
+// non-digit char. None of them test that the number fits into 64 bits.
+//
+// Nb: if you're wondering why we don't just have a single VG_(strtol) which
+// takes a base, it's because I wanted it to assert if it was given a bogus
+// base (the standard glibc one sets 'errno' in this case). But
+// m_libcbase.c doesn't import any code, not even vg_assert. --njn
+extern Long VG_(strtoll8) ( Char* str, Char** endptr );
+extern Long VG_(strtoll10) ( Char* str, Char** endptr );
+extern Long VG_(strtoll16) ( Char* str, Char** endptr );
+extern Long VG_(strtoll36) ( Char* str, Char** endptr );
+
+ // Convert a string to a double. After leading whitespace is ignored,
+ // it accepts a non-empty sequence of decimal digits possibly containing
+ // a '.'.
+extern double VG_(strtod) ( Char* str, Char** endptr );
+
extern Long VG_(atoll) ( Char* str ); // base 10
extern Long VG_(atoll16) ( Char* str ); // base 16; leading 0x accepted
extern Long VG_(atoll36) ( Char* str ); // base 36
Modified: trunk/include/pub_tool_options.h
===================================================================
--- trunk/include/pub_tool_options.h 2007-11-11 21:12:28 UTC (rev 7148)
+++ trunk/include/pub_tool_options.h 2007-11-11 21:58:21 UTC (rev 7149)
@@ -52,7 +52,11 @@
#define VG_NUM_CLO(qq_arg, qq_option, qq_var) \
if (VG_CLO_STREQN(VG_(strlen)(qq_option)+1, qq_arg, qq_option"=")) { \
- (qq_var) = (Int)VG_(atoll)( &qq_arg[ VG_(strlen)(qq_option)+1 ] ); \
+ Char* s; \
+ Long n = VG_(strtoll10)( &qq_arg[ VG_(strlen)(qq_option)+1 ], &s );\
+ (qq_var) = n; \
+ /* Check for non-numeralness, or overflow */ \
+ if ('\0' != s[0] || (qq_var) != n) VG_(err_bad_option)(qq_arg); \
}
/* Same as VG_NUM_CLO but does not coerce the result value to 32 bits
Modified: trunk/massif/tests/zero1.post.exp
===================================================================
--- trunk/massif/tests/zero1.post.exp 2007-11-11 21:12:28 UTC (rev 7148)
+++ trunk/massif/tests/zero1.post.exp 2007-11-11 21:58:21 UTC (rev 7149)
@@ -1,6 +1,6 @@
--------------------------------------------------------------------------------
Command: ./zero
-Massif arguments: --stacks=no --heap-admin=no --time-unit=B
+Massif arguments: --stacks=no --heap-admin=0 --time-unit=B
ms_print arguments: --threshold=0 massif.out
--------------------------------------------------------------------------------
Modified: trunk/massif/tests/zero1.vgtest
===================================================================
--- trunk/massif/tests/zero1.vgtest 2007-11-11 21:12:28 UTC (rev 7148)
+++ trunk/massif/tests/zero1.vgtest 2007-11-11 21:58:21 UTC (rev 7149)
@@ -1,4 +1,4 @@
prog: zero
-vgopts: --stacks=no --heap-admin=no --time-unit=B
+vgopts: --stacks=no --heap-admin=0 --time-unit=B
post: perl ../../massif/ms_print --threshold=0 massif.out | ../../tests/filter_addresses
cleanup: rm massif.out
Modified: trunk/massif/tests/zero2.post.exp
===================================================================
--- trunk/massif/tests/zero2.post.exp 2007-11-11 21:12:28 UTC (rev 7148)
+++ trunk/massif/tests/zero2.post.exp 2007-11-11 21:58:21 UTC (rev 7149)
@@ -1,6 +1,6 @@
--------------------------------------------------------------------------------
Command: ./zero
-Massif arguments: --stacks=no --heap-admin=no --time-unit=B
+Massif arguments: --stacks=no --heap-admin=0 --time-unit=B
ms_print arguments: massif.out
--------------------------------------------------------------------------------
Modified: trunk/massif/tests/zero2.vgtest
===================================================================
--- trunk/massif/tests/zero2.vgtest 2007-11-11 21:12:28 UTC (rev 7148)
+++ trunk/massif/tests/zero2.vgtest 2007-11-11 21:58:21 UTC (rev 7149)
@@ -1,4 +1,4 @@
prog: zero
-vgopts: --stacks=no --heap-admin=no --time-unit=B
+vgopts: --stacks=no --heap-admin=0 --time-unit=B
post: perl ../../massif/ms_print massif.out | ../../tests/filter_addresses
cleanup: rm massif.out
|
|
From: Nicholas N. <nj...@cs...> - 2007-11-11 21:22:24
|
On Sun, 11 Nov 2007, Bart Van Assche wrote: > Is any other Valgrind developer using openSUSE 10.3 ? Many regression > tests that run fine during the nightly build fail on openSUSE 10.3. I > don't know whether this is due to changes in Valgrind or due to > changes in gcc, binutils or glibc. > > > $ svn update > > Fetching external item into 'VEX' > External at revision 1793. > > At revision 7146. > > $ ./autogen.sh && ./configure && make -s && make -s check && make -s regtest > ... > == 350 tests, 66 stderr failures, 50 stdout failures, 0 post failures == > ... > > $ cat memcheck/tests/writev.stderr.diff > 3c3 > < at 0x........: writev (in /...libc...) > --- >> at 0x........: (within /...libc...) > 9c9 > < at 0x........: writev (in /...libc...) > --- >> at 0x........: (within /...libc...) > 15c15 > < at 0x........: readv (in /...libc...) > --- >> at 0x........: (within /...libc...) For that test, at least, there are three .exp* files, and the .exp2 one looks like it should match. What does writev.stderr.diff2 look like? Nick |
|
From: <sv...@va...> - 2007-11-11 21:12:28
|
Author: njn
Date: 2007-11-11 21:12:28 +0000 (Sun, 11 Nov 2007)
New Revision: 7148
Log:
Add some seemingly unnecessary initialisations to shut GCC 4.0.2 up.
Modified:
trunk/helgrind/hg_main.c
Modified: trunk/helgrind/hg_main.c
===================================================================
--- trunk/helgrind/hg_main.c 2007-11-11 18:56:39 UTC (rev 7147)
+++ trunk/helgrind/hg_main.c 2007-11-11 21:12:28 UTC (rev 7148)
@@ -2686,7 +2686,7 @@
while (HG_(nextIterFM)( map_shmem,
(Word*)(HChar*)&smga, (Word*)(HChar*)&sm )) {
SecMapIter itr;
- UInt* w32p;
+ UInt* w32p = NULL;
Bool mbHasShared = False;
Bool allNoAccess = True;
if (!is_sane_SecMap(sm)) BAD("1");
@@ -4998,7 +4998,7 @@
Addr ga;
SecMap* sm;
SecMapIter itr;
- UInt* w32p;
+ UInt* w32p = NULL;
HG_(initIterFM)( map_shmem );
while (HG_(nextIterFM)( map_shmem,
@@ -5668,7 +5668,7 @@
while (HG_(nextIterFM)( map_shmem,
(Word*)(HChar*)&ga, (Word*)(HChar*)&sm )) {
SecMapIter itr;
- UInt* w32p;
+ UInt* w32p = NULL;
tl_assert(sm);
stats_SMs++;
/* Skip this SecMap if the summary bit indicates it is safe to
|
|
From: Julian S. <js...@ac...> - 2007-11-11 20:16:17
|
> Is any other Valgrind developer using openSUSE 10.3 ? Many regression > tests that run fine during the nightly build fail on openSUSE 10.3. > == 350 tests, 66 stderr failures, 50 stdout failures, 0 post failures == On openSUSE 10.3 running on x86_64 I get this: == 350 tests, 12 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/writev (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_exit_group (stderr) memcheck/tests/x86/scalar_supp (stderr) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/deep-C (stderr) massif/tests/peak2 (stderr) massif/tests/realloc (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc22_exit_w_lock (stderr) J |
|
From: <sv...@va...> - 2007-11-11 18:56:40
|
Author: sewardj
Date: 2007-11-11 18:56:39 +0000 (Sun, 11 Nov 2007)
New Revision: 7147
Log:
In vg_SP_update_pass (stack-pointer-change analysis code), correctly
handle partial updates of SP. Tricky. This fixes #152022.
Modified:
trunk/coregrind/m_translate.c
Modified: trunk/coregrind/m_translate.c
===================================================================
--- trunk/coregrind/m_translate.c 2007-11-11 06:13:01 UTC (rev 7146)
+++ trunk/coregrind/m_translate.c 2007-11-11 18:56:39 UTC (rev 7147)
@@ -206,6 +206,9 @@
If all the changes to SP leading up to a PUT(SP) are by known, small
constants, we can do a specific call to eg. new_mem_stack_4, otherwise
we fall back to the case that handles an unknown SP change.
+
+ There is some extra complexity to deal correctly with updates to
+ only parts of SP. Bizarre, but it has been known to happen.
*/
static
IRSB* vg_SP_update_pass ( void* closureV,
@@ -216,6 +219,7 @@
IRType hWordTy )
{
Int i, j, minoff_ST, maxoff_ST, sizeof_SP, offset_SP;
+ Int first_SP, last_SP, first_Put, last_Put;
IRDirty *dcall, *d;
IRStmt* st;
IRExpr* e;
@@ -285,6 +289,7 @@
if (e->tag != Iex_Get) goto case2;
if (e->Iex.Get.offset != offset_SP) goto case2;
if (e->Iex.Get.ty != typeof_SP) goto case2;
+ vg_assert( typeOfIRTemp(bb->tyenv, st->Ist.WrTmp.tmp) == typeof_SP );
add_SP_alias(st->Ist.WrTmp.tmp, 0);
addStmtToIRSB( bb, st );
continue;
@@ -299,6 +304,7 @@
if (e->Iex.Binop.arg2->tag != Iex_Const) goto case3;
if (!IS_ADD_OR_SUB(e->Iex.Binop.op)) goto case3;
con = GET_CONST(e->Iex.Binop.arg2->Iex.Const.con);
+ vg_assert( typeOfIRTemp(bb->tyenv, st->Ist.WrTmp.tmp) == typeof_SP );
if (IS_ADD(e->Iex.Binop.op)) {
add_SP_alias(st->Ist.WrTmp.tmp, delta + con);
} else {
@@ -313,17 +319,44 @@
e = st->Ist.WrTmp.data;
if (e->tag != Iex_RdTmp) goto case4;
if (!get_SP_delta(e->Iex.RdTmp.tmp, &delta)) goto case4;
+ vg_assert( typeOfIRTemp(bb->tyenv, st->Ist.WrTmp.tmp) == typeof_SP );
add_SP_alias(st->Ist.WrTmp.tmp, delta);
addStmtToIRSB( bb, st );
continue;
case4:
/* Put(sp) = curr */
+ /* More generally, we must correctly handle a Put which writes
+ any part of SP, not just the case where all of SP is
+ written. */
if (st->tag != Ist_Put) goto case5;
- if (st->Ist.Put.offset != offset_SP) goto case5;
- if (st->Ist.Put.data->tag != Iex_RdTmp) goto case5;
- if (get_SP_delta(st->Ist.Put.data->Iex.RdTmp.tmp, &delta)) {
+ first_SP = offset_SP;
+ last_SP = first_SP + sizeof_SP - 1;
+ first_Put = st->Ist.Put.offset;
+ last_Put = first_Put
+ + sizeofIRType( typeOfIRExpr( bb->tyenv, st->Ist.Put.data ))
+ - 1;
+ vg_assert(first_SP <= last_SP);
+ vg_assert(first_Put <= last_Put);
+
+ if (last_Put < first_SP || last_SP < first_Put)
+ goto case5; /* no overlap */
+
+ if (st->Ist.Put.data->tag == Iex_RdTmp
+ && get_SP_delta(st->Ist.Put.data->Iex.RdTmp.tmp, &delta)) {
IRTemp tttmp = st->Ist.Put.data->Iex.RdTmp.tmp;
+ /* Why should the following assertion hold? Because any
+ alias added by put_SP_alias must be of a temporary which
+ has the same type as typeof_SP, and whose value is a Get
+ at exactly offset_SP of size typeof_SP. Each call to
+ put_SP_alias is immediately preceded by an assertion that
+ we are putting in a binding for a correctly-typed
+ temporary. */
+ vg_assert( typeOfIRTemp(bb->tyenv, tttmp) == typeof_SP );
+ /* From the same type-and-offset-correctness argument, if
+ we found a useable alias, it must for an "exact" write of SP. */
+ vg_assert(first_SP == first_Put);
+ vg_assert(last_SP == last_Put);
switch (delta) {
case 0: addStmtToIRSB(bb,st); continue;
case 4: DO(die, 4, tttmp); addStmtToIRSB(bb,st); continue;
@@ -350,6 +383,18 @@
goto generic;
}
} else {
+ /* Deal with an unknown update to SP. We're here because
+ either:
+ (1) the Put does not exactly cover SP; it is a partial update.
+ Highly unlikely, but has been known to happen for 16-bit
+ Windows apps running on Wine, doing 16-bit adjustments to
+ %sp.
+ (2) the Put does exactly cover SP, but we are unable to
+ determine how the value relates to the old SP. In any
+ case, we cannot assume that the Put.data value is a tmp;
+ we must assume it can be anything allowed in flat IR (tmp
+ or const).
+ */
IRTemp old_SP;
n_SP_updates_generic_unknown++;
@@ -364,18 +409,68 @@
IRStmt_WrTmp( old_SP, IRExpr_Get(offset_SP, typeof_SP) )
);
- dcall = unsafeIRDirty_0_N(
- 2/*regparms*/,
- "VG_(unknown_SP_update)",
- VG_(fnptr_to_fnentry)( &VG_(unknown_SP_update) ),
- mkIRExprVec_2( IRExpr_RdTmp(old_SP), st->Ist.Put.data )
- );
- addStmtToIRSB( bb, IRStmt_Dirty(dcall) );
+ /* Now we know what the old value of SP is. But knowing the new
+ value is a bit tricky if there is a partial write. */
+ if (first_Put == first_SP && last_Put == last_SP) {
+ /* The common case, an exact write to SP. So st->Ist.Put.data
+ does hold the new value; simple. */
+ dcall = unsafeIRDirty_0_N(
+ 2/*regparms*/,
+ "VG_(unknown_SP_update)",
+ VG_(fnptr_to_fnentry)( &VG_(unknown_SP_update) ),
+ mkIRExprVec_2( IRExpr_RdTmp(old_SP), st->Ist.Put.data )
+ );
+ addStmtToIRSB( bb, IRStmt_Dirty(dcall) );
+ /* don't forget the original assignment */
+ addStmtToIRSB( bb, st );
+ } else {
+ /* We have a partial update to SP. We need to know what
+ the new SP will be, and hand that to the helper call,
+ but when the helper call happens, SP must hold the
+ value it had before the update. Tricky.
+ Therefore use the following kludge:
+ 1. do the partial SP update (Put)
+ 2. Get the new SP value into a tmp, new_SP
+ 3. Put old_SP
+ 4. Call the helper
+ 5. Put new_SP
+ */
+ IRTemp new_SP;
+ /* 1 */
+ addStmtToIRSB( bb, st );
+ /* 2 */
+ new_SP = newIRTemp(bb->tyenv, typeof_SP);
+ addStmtToIRSB(
+ bb,
+ IRStmt_WrTmp( new_SP, IRExpr_Get(offset_SP, typeof_SP) )
+ );
+ /* 3 */
+ addStmtToIRSB( bb, IRStmt_Put(offset_SP, IRExpr_RdTmp(old_SP) ));
+ /* 4 */
+ dcall = unsafeIRDirty_0_N(
+ 2/*regparms*/,
+ "VG_(unknown_SP_update)",
+ VG_(fnptr_to_fnentry)( &VG_(unknown_SP_update) ),
+ mkIRExprVec_2( IRExpr_RdTmp(old_SP),
+ IRExpr_RdTmp(new_SP))
+ );
+ addStmtToIRSB( bb, IRStmt_Dirty(dcall) );
+ /* 5 */
+ addStmtToIRSB( bb, IRStmt_Put(offset_SP, IRExpr_RdTmp(new_SP) ));
+ }
- addStmtToIRSB( bb, st );
+ /* Forget what we already know. */
+ clear_SP_aliases();
- clear_SP_aliases();
- add_SP_alias(st->Ist.Put.data->Iex.RdTmp.tmp, 0);
+ /* If this is a Put of a tmp that exactly updates SP,
+ start tracking aliases against this tmp. */
+
+ if (first_Put == first_SP && last_Put == last_SP
+ && st->Ist.Put.data->tag == Iex_RdTmp) {
+ vg_assert( typeOfIRTemp(bb->tyenv, st->Ist.Put.data->Iex.RdTmp.tmp)
+ == typeof_SP );
+ add_SP_alias(st->Ist.Put.data->Iex.RdTmp.tmp, 0);
+ }
continue;
}
@@ -386,8 +481,10 @@
if (st->tag == Ist_PutI) {
descr = st->Ist.PutI.descr;
minoff_ST = descr->base;
- maxoff_ST = descr->base + descr->nElems * sizeofIRType(descr->elemTy) - 1;
- if (!(offset_SP > maxoff_ST || (offset_SP + sizeof_SP - 1) < minoff_ST))
+ maxoff_ST = descr->base
+ + descr->nElems * sizeofIRType(descr->elemTy) - 1;
+ if (!(offset_SP > maxoff_ST
+ || (offset_SP + sizeof_SP - 1) < minoff_ST))
goto complain;
}
if (st->tag == Ist_Dirty) {
@@ -397,7 +494,8 @@
maxoff_ST = d->fxState[j].offset + d->fxState[j].size - 1;
if (d->fxState[j].fx == Ifx_Read || d->fxState[j].fx == Ifx_None)
continue;
- if (!(offset_SP > maxoff_ST || (offset_SP + sizeof_SP - 1) < minoff_ST))
+ if (!(offset_SP > maxoff_ST
+ || (offset_SP + sizeof_SP - 1) < minoff_ST))
goto complain;
}
}
|
|
From: Bart V. A. <bar...@gm...> - 2007-11-11 14:00:41
|
A new drd version is available at the following location: http://home.euphonynet.be/bvassche/valgrind/valgrind-7146-drd-2007-11-11.patch.gz Changes compared to version 2007-02-27: - The patch now works with the latest Valgrind source code (SVN trunk), that is, after thrchk was merged to the trunk. - Updated the drd source code for changes in the Valgrind core API. - Added a regression test for pthread_cond_broadcast(). - Updated drd suppression patterns for openSUSE 10.3. - Minor performance optimizations. Most important known bugs: - drd is soon killed by the OOM handler when started with bigger clients. - drd/default.supp has to be installed manually in the installation dir. - fp_race regression test now fails on openSUSE 10.3 because of changed behavior of VG_(find_seginfo)() for static variables. It is not yet clear to me whether this is a bug in drd, the Valgrind core or gcc. You can apply this patch with the following command: cd valgrind zcat ../valgrind-7146-drd-2007-11-11.patch.gz | patch -p0 Bart Van Assche. |
|
From: Bart V. A. <bar...@gm...> - 2007-11-11 13:25:50
|
Hello, Is any other Valgrind developer using openSUSE 10.3 ? Many regression tests that run fine during the nightly build fail on openSUSE 10.3. I don't know whether this is due to changes in Valgrind or due to changes in gcc, binutils or glibc. $ svn update Fetching external item into 'VEX' External at revision 1793. At revision 7146. $ ./autogen.sh && ./configure && make -s && make -s check && make -s regtest ... == 350 tests, 66 stderr failures, 50 stdout failures, 0 post failures == ... $ cat memcheck/tests/writev.stderr.diff 3c3 < at 0x........: writev (in /...libc...) --- > at 0x........: (within /...libc...) 9c9 < at 0x........: writev (in /...libc...) --- > at 0x........: (within /...libc...) 15c15 < at 0x........: readv (in /...libc...) --- > at 0x........: (within /...libc...) |
|
From: <sv...@va...> - 2007-11-11 06:13:01
|
Author: sewardj
Date: 2007-11-11 06:13:01 +0000 (Sun, 11 Nov 2007)
New Revision: 7146
Log:
Add some Helgrind suppressions for LinuxThreads.
Added:
trunk/glibc-2.2-LinuxThreads-helgrind.supp
trunk/glibc-2.3456-NPTL-helgrind.supp
Removed:
trunk/glibc-2.X-helgrind.supp
Modified:
trunk/Makefile.am
trunk/configure.in
Modified: trunk/Makefile.am
===================================================================
--- trunk/Makefile.am 2007-11-11 05:59:22 UTC (rev 7145)
+++ trunk/Makefile.am 2007-11-11 06:13:01 UTC (rev 7146)
@@ -20,7 +20,8 @@
SUPP_FILES = \
glibc-2.2.supp glibc-2.3.supp glibc-2.4.supp glibc-2.5.supp \
glibc-2.6.supp aix5libc.supp xfree-3.supp xfree-4.supp \
- glibc-2.X-helgrind.supp
+ glibc-2.3456-NPTL-helgrind.supp \
+ glibc-2.2-LinuxThreads-helgrind.supp
dist_val_DATA = $(SUPP_FILES) default.supp
Modified: trunk/configure.in
===================================================================
--- trunk/configure.in 2007-11-11 05:59:22 UTC (rev 7145)
+++ trunk/configure.in 2007-11-11 06:13:01 UTC (rev 7146)
@@ -473,30 +473,35 @@
2.2)
AC_MSG_RESULT(2.2 family)
AC_DEFINE([GLIBC_2_2], 1, [Define to 1 if you're using glibc 2.2.x])
- DEFAULT_SUPP="glibc-2.2.supp glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.2.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.2-LinuxThreads-helgrind.supp ${DEFAULT_SUPP}"
;;
2.3)
AC_MSG_RESULT(2.3 family)
AC_DEFINE([GLIBC_2_3], 1, [Define to 1 if you're using glibc 2.3.x])
- DEFAULT_SUPP="glibc-2.3.supp glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.3.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.3456-NPTL-helgrind.supp ${DEFAULT_SUPP}"
;;
2.4)
AC_MSG_RESULT(2.4 family)
AC_DEFINE([GLIBC_2_4], 1, [Define to 1 if you're using glibc 2.4.x])
- DEFAULT_SUPP="glibc-2.4.supp glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.4.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.3456-NPTL-helgrind.supp ${DEFAULT_SUPP}"
;;
2.5)
AC_MSG_RESULT(2.5 family)
AC_DEFINE([GLIBC_2_5], 1, [Define to 1 if you're using glibc 2.5.x])
- DEFAULT_SUPP="glibc-2.5.supp glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.5.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.3456-NPTL-helgrind.supp ${DEFAULT_SUPP}"
;;
2.6)
AC_MSG_RESULT(2.6 family)
AC_DEFINE([GLIBC_2_6], 1, [Define to 1 if you're using glibc 2.6.x])
- DEFAULT_SUPP="glibc-2.6.supp glibc-2.X-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.6.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.3456-NPTL-helgrind.supp ${DEFAULT_SUPP}"
;;
aix5)
AC_MSG_RESULT(AIX 5.1 or 5.2 or 5.3)
Added: trunk/glibc-2.2-LinuxThreads-helgrind.supp
===================================================================
--- trunk/glibc-2.2-LinuxThreads-helgrind.supp (rev 0)
+++ trunk/glibc-2.2-LinuxThreads-helgrind.supp 2007-11-11 06:13:01 UTC (rev 7146)
@@ -0,0 +1,64 @@
+
+## Helgrind really doesn't support LinuxThreads-based threading
+## (which is absolutely ancient by now). But just in case anyone
+## is nuts enough to try it, here are some suppressions.
+
+{
+ helgrind-glibc22-LinuxThreads-1
+ Helgrind:Race
+ obj:/lib*/libpthread-0.10.so*
+}
+{
+ helgrind-glibc22-LinuxThreads-2
+ Helgrind:Race
+ obj:/lib*/ld-2.2.*so*
+ obj:/lib*/ld-2.2.*so*
+}
+{
+ helgrind-glibc22-LinuxThreads-3
+ Helgrind:Race
+ obj:/lib*/libc-2.2.*so*
+ obj:/lib*/libc-2.2.*so*
+}
+{
+ helgrind-glibc22-LinuxThreads-4
+ Helgrind:Race
+ obj:/lib*/ld-2.2.*so*
+ obj:/lib*/libc-2.2.*so*
+}
+{
+ helgrind-glibc22-LinuxThreads-5
+ Helgrind:Race
+ obj:/lib*/libc-2.2.*so*
+ fun:pthread_*
+}
+{
+ helgrind-glibc22-LinuxThreads-6
+ Helgrind:Race
+ fun:pthread_*
+ obj:/lib*/libc-2.2.*so*
+}
+{
+ helgrind-glibc22-LinuxThreads-7
+ Helgrind:Race
+ fun:mythread_wrapper
+ fun:pthread_*
+}
+{
+ helgrind-glibc22-LinuxThreads-8
+ Helgrind:Misc
+ fun:pthread_mutex_lock
+ fun:_IO_*
+}
+{
+ helgrind-glibc22-LinuxThreads-9
+ Helgrind:UnlockForeign
+ fun:pthread_mutex_unlock
+ fun:_IO_*
+}
+{
+ helgrind-glibc22-LinuxThreads-10
+ Helgrind:Misc
+ fun:_Exit
+ obj:/lib*/libpthread-0.10.so*
+}
Copied: trunk/glibc-2.3456-NPTL-helgrind.supp (from rev 7141, trunk/glibc-2.X-helgrind.supp)
===================================================================
--- trunk/glibc-2.3456-NPTL-helgrind.supp (rev 0)
+++ trunk/glibc-2.3456-NPTL-helgrind.supp 2007-11-11 06:13:01 UTC (rev 7146)
@@ -0,0 +1,336 @@
+
+##----------------------------------------------------------------------##
+# Suppressions for the Helgrind tool when using
+# a glibc-2.{2,3,4,5,6} system
+
+######------------ glibc-2.5 specific ------------######
+#
+## NB. This is the "reference set". Derived sets for
+## glibc 2.4, 2.3 and 2.6 follow below.
+{
+ helgrind-glibc25-001
+ Helgrind:Race
+ obj:/lib*/ld-2.5.so
+ obj:/lib*/ld-2.5.so
+ obj:/lib*/ld-2.5.so
+}
+{
+ helgrind-glibc25-002
+ Helgrind:Race
+ obj:/lib*/ld-2.5.so
+ obj:/lib*/libc-2.5.so
+ obj:/lib*/ld-2.5.so
+}
+{
+ helgrind-glibc25-003
+ Helgrind:Race
+ obj:/lib*/ld-2.5.so
+ obj:/lib*/libc-2.5.so
+ obj:/lib*/libc-2.5.so
+}
+{
+ helgrind-glibc25-004
+ Helgrind:Race
+ obj:/lib*/libc-2.5.so
+ obj:/lib*/libc-2.5.so
+}
+{
+ helgrind-glibc25-005
+ Helgrind:Race
+ obj:/lib*/libpthread-2.5.so
+ obj:/lib*/libpthread-2.5.so
+ obj:/lib*/libpthread-2.5.so
+}
+{
+ helgrind-glibc25-006
+ Helgrind:Race
+ obj:/lib*/libpthread-2.5.so
+ obj:/lib*/libpthread-2.5.so
+ obj:/lib*/libc-2.5.so
+}
+{
+ helgrind-glibc25-007
+ Helgrind:Race
+ obj:/lib*/ld-2.5.so
+ obj:/lib*/libc-2.5.so
+ obj:/lib*/libdl-2.5.so
+}
+{
+ helgrind-glibc25-008
+ Helgrind:Race
+ obj:/lib*/libpthread-2.5.so
+ obj:/lib*/libc-2.5.so
+}
+{
+ helgrind-glibc25-009
+ Helgrind:Race
+ obj:/lib*/libc-2.5.so
+ fun:*
+ obj:/lib*/libc-2.5.so
+}
+{
+ helgrind-glibc25-010
+ Helgrind:Race
+ obj:/lib*/ld-2.5.so
+ obj:/lib*/libpthread-2.5.so
+}
+{
+ helgrind-glibc25-011
+ Helgrind:Race
+ obj:/lib*/libc-2.5.so
+ obj:/lib*/libpthread-2.5.so
+}
+{
+ helgrind-glibc25-013
+ Helgrind:Race
+ obj:/lib*/ld-2.5.so
+ fun:*
+ obj:/lib*/ld-2.5.so
+}
+{
+ helgrind-glibc25-014
+ Helgrind:Race
+ obj:/lib*/ld-2.5.so
+ obj:/lib*/ld-2.5.so
+ obj:/lib*/libpthread-2.5.so
+}
+
+# These are very ugly. They are needed to suppress errors inside (eg)
+# NPTL's pthread_cond_signal. Why only one stack frame -- at least we
+# should see the wrapper calling the real functions, right?
+# Unfortunately, no: the real functions are handwritten assembly (in
+# the glibc-2.5 sources) and does not create a proper stack frame.
+# Therefore it's only one level of unwinding before we're back out in
+# user code rather than the 2 levels you'd expect.
+{
+ helgrind-glibc25-101
+ Helgrind:Race
+ obj:/lib*/libpthread-2.5.so
+ fun:pthread_*
+}
+{
+ helgrind-glibc25-102
+ Helgrind:Race
+ fun:mythread_wrapper
+ obj:/lib*/libpthread-2.5.so
+}
+{
+ helgrind-glibc25-103
+ Helgrind:Race
+ fun:pthread_cond_*@@GLIBC_2.3.2
+}
+{
+ helgrind-glibc25-104
+ Helgrind:Race
+ fun:__lll_mutex_*
+}
+{
+ helgrind-glibc25-105
+ Helgrind:Race
+ fun:pthread_rwlock_*lock*
+}
+
+######------------ glibc-2.4 specific ------------######
+#
+{
+ helgrind-glibc24-001
+ Helgrind:Race
+ obj:/lib*/ld-2.4.so
+ obj:/lib*/ld-2.4.so
+ obj:/lib*/ld-2.4.so
+}
+{
+ helgrind-glibc24-003
+ Helgrind:Race
+ obj:/lib*/ld-2.4.so
+ obj:/lib*/libc-2.4.so
+ obj:/lib*/libc-2.4.so
+}
+{
+ helgrind-glibc24-004
+ Helgrind:Race
+ obj:/lib*/libc-2.4.so
+ obj:/lib*/libc-2.4.so
+}
+{
+ helgrind-glibc24-005
+ Helgrind:Race
+ obj:/lib*/libpthread-2.4.so
+ obj:/lib*/libpthread-2.4.so
+ obj:/lib*/libpthread-2.4.so
+}
+{
+ helgrind-glibc24-006
+ Helgrind:Race
+ obj:/lib*/libpthread-2.4.so
+ obj:/lib*/libpthread-2.4.so
+ obj:/lib*/libc-2.4.so
+}
+{
+ helgrind-glibc24-008
+ Helgrind:Race
+ obj:/lib*/libpthread-2.4.so
+ obj:/lib*/libc-2.4.so
+}
+{
+ helgrind-glibc24-010
+ Helgrind:Race
+ obj:/lib*/ld-2.4.so
+ obj:/lib*/libpthread-2.4.so
+}
+{
+ helgrind-glibc24-011
+ Helgrind:Race
+ obj:/lib*/libc-2.4.so
+ obj:/lib*/libpthread-2.4.so
+}
+
+{
+ helgrind-glibc24-101
+ Helgrind:Race
+ obj:/lib*/libpthread-2.4.so
+ fun:pthread_*
+}
+{
+ helgrind-glibc24-102
+ Helgrind:Race
+ fun:mythread_wrapper
+ obj:/lib*/libpthread-2.4.so
+}
+
+######------------ glibc-2.6 specific ---------######
+#
+{
+ helgrind-glibc26-001
+ Helgrind:Race
+ obj:/lib*/ld-2.6.*so
+ obj:/lib*/ld-2.6.*so
+ obj:/lib*/ld-2.6.*so
+}
+{
+ helgrind-glibc26-003
+ Helgrind:Race
+ obj:/lib*/ld-2.6.*so
+ obj:/lib*/libc-2.6.*so
+ obj:/lib*/libc-2.6.*so
+}
+{
+ helgrind-glibc26-004
+ Helgrind:Race
+ obj:/lib*/libc-2.6.*so
+ obj:/lib*/libc-2.6.*so
+}
+{
+ helgrind-glibc26-006
+ Helgrind:Race
+ obj:/lib*/libpthread-2.6.*so
+ obj:/lib*/libpthread-2.6.*so
+ obj:/lib*/libc-2.6.*so
+}
+{
+ helgrind-glibc26-008
+ Helgrind:Race
+ obj:/lib*/libpthread-2.6.*so
+ obj:/lib*/libc-2.6.*so
+}
+
+{
+ helgrind-glibc26-101
+ Helgrind:Race
+ obj:/lib*/libpthread-2.6.*so
+ fun:pthread_*
+}
+{
+ helgrind-glibc26-102
+ Helgrind:Race
+ fun:mythread_wrapper
+ obj:/lib*/libpthread-2.6.*so
+}
+{
+ helgrind-glibc26-106
+ Helgrind:Race
+ fun:__lll_lock_wait
+}
+
+######--------- glibc-2.3 specific ---------######
+{
+ helgrind-glibc23-001
+ Helgrind:Race
+ obj:/lib*/ld-2.3.*so
+ obj:/lib*/ld-2.3.*so
+ obj:/lib*/ld-2.3.*so
+}
+{
+ helgrind-glibc23-002
+ Helgrind:Race
+ obj:/lib*/ld-2.3.*so
+ obj:/lib*/libc-2.3.*so
+ obj:/lib*/ld-2.3.*so
+}
+{
+ helgrind-glibc23-004
+ Helgrind:Race
+ obj:/lib*/libc-2.3.*so
+ obj:/lib*/libc-2.3.*so
+}
+{
+ helgrind-glibc23-006
+ Helgrind:Race
+ obj:/lib*/libpthread-2.3.*so
+ obj:/lib*/libpthread-2.3.*so
+ obj:/lib*/libc-2.3.*so
+}
+{
+ helgrind-glibc23-008
+ Helgrind:Race
+ obj:/lib*/libpthread-2.3.*so
+ obj:/lib*/libc-2.3.*so
+}
+{
+ helgrind-glibc23-009
+ Helgrind:Race
+ obj:/lib*/libc-2.3.*so
+ obj:/lib*/ld-2.3.*so
+ obj:/lib*/libc-2.3.*so
+}
+{
+ helgrind-glibc23-011
+ Helgrind:Race
+ obj:/lib*/libc-2.3.*so
+ obj:/lib*/libpthread-2.3.*so
+}
+{
+ helgrind-glibc23-012
+ Helgrind:Race
+ obj:/lib*/ld-2.3.*so
+ obj:/lib*/ld-2.3.*so
+ obj:/lib*/libc-2.3.*so
+}
+{
+ helgrind-glibc23-014
+ Helgrind:Race
+ obj:/lib*/ld-2.3.*so
+ obj:/lib*/ld-2.3.*so
+ obj:/lib*/libpthread-2.3.*so
+}
+
+{
+ helgrind-glibc23-100
+ Helgrind:Race
+ obj:/lib*/libpthread-2.3.*so
+ fun:pthread_*
+}
+{
+ helgrind-glibc23-101
+ Helgrind:Race
+ fun:mythread_wrapper
+ obj:/lib*/libpthread-2.3.*so
+}
+
+######------ qt4 specific (GNU mangling) ------######
+{
+ helgrind-qt4-QMutex::lock()-twice
+ Helgrind:Race
+ fun:_ZN6QMutex4lockEv
+ fun:_ZN6QMutex4lockEv
+}
Deleted: trunk/glibc-2.X-helgrind.supp
===================================================================
--- trunk/glibc-2.X-helgrind.supp 2007-11-11 05:59:22 UTC (rev 7145)
+++ trunk/glibc-2.X-helgrind.supp 2007-11-11 06:13:01 UTC (rev 7146)
@@ -1,336 +0,0 @@
-
-##----------------------------------------------------------------------##
-# Suppressions for the Helgrind tool when using
-# a glibc-2.{2,3,4,5,6} system
-
-######------------ glibc-2.5 specific ------------######
-#
-## NB. This is the "reference set". Derived sets for
-## glibc 2.4, 2.3 and 2.6 follow below.
-{
- helgrind-glibc25-001
- Helgrind:Race
- obj:/lib*/ld-2.5.so
- obj:/lib*/ld-2.5.so
- obj:/lib*/ld-2.5.so
-}
-{
- helgrind-glibc25-002
- Helgrind:Race
- obj:/lib*/ld-2.5.so
- obj:/lib*/libc-2.5.so
- obj:/lib*/ld-2.5.so
-}
-{
- helgrind-glibc25-003
- Helgrind:Race
- obj:/lib*/ld-2.5.so
- obj:/lib*/libc-2.5.so
- obj:/lib*/libc-2.5.so
-}
-{
- helgrind-glibc25-004
- Helgrind:Race
- obj:/lib*/libc-2.5.so
- obj:/lib*/libc-2.5.so
-}
-{
- helgrind-glibc25-005
- Helgrind:Race
- obj:/lib*/libpthread-2.5.so
- obj:/lib*/libpthread-2.5.so
- obj:/lib*/libpthread-2.5.so
-}
-{
- helgrind-glibc25-006
- Helgrind:Race
- obj:/lib*/libpthread-2.5.so
- obj:/lib*/libpthread-2.5.so
- obj:/lib*/libc-2.5.so
-}
-{
- helgrind-glibc25-007
- Helgrind:Race
- obj:/lib*/ld-2.5.so
- obj:/lib*/libc-2.5.so
- obj:/lib*/libdl-2.5.so
-}
-{
- helgrind-glibc25-008
- Helgrind:Race
- obj:/lib*/libpthread-2.5.so
- obj:/lib*/libc-2.5.so
-}
-{
- helgrind-glibc25-009
- Helgrind:Race
- obj:/lib*/libc-2.5.so
- fun:*
- obj:/lib*/libc-2.5.so
-}
-{
- helgrind-glibc25-010
- Helgrind:Race
- obj:/lib*/ld-2.5.so
- obj:/lib*/libpthread-2.5.so
-}
-{
- helgrind-glibc25-011
- Helgrind:Race
- obj:/lib*/libc-2.5.so
- obj:/lib*/libpthread-2.5.so
-}
-{
- helgrind-glibc25-013
- Helgrind:Race
- obj:/lib*/ld-2.5.so
- fun:*
- obj:/lib*/ld-2.5.so
-}
-{
- helgrind-glibc25-014
- Helgrind:Race
- obj:/lib*/ld-2.5.so
- obj:/lib*/ld-2.5.so
- obj:/lib*/libpthread-2.5.so
-}
-
-# These are very ugly. They are needed to suppress errors inside (eg)
-# NPTL's pthread_cond_signal. Why only one stack frame -- at least we
-# should see the wrapper calling the real functions, right?
-# Unfortunately, no: the real functions are handwritten assembly (in
-# the glibc-2.5 sources) and does not create a proper stack frame.
-# Therefore it's only one level of unwinding before we're back out in
-# user code rather than the 2 levels you'd expect.
-{
- helgrind-glibc25-101
- Helgrind:Race
- obj:/lib*/libpthread-2.5.so
- fun:pthread_*
-}
-{
- helgrind-glibc25-102
- Helgrind:Race
- fun:mythread_wrapper
- obj:/lib*/libpthread-2.5.so
-}
-{
- helgrind-glibc25-103
- Helgrind:Race
- fun:pthread_cond_*@@GLIBC_2.3.2
-}
-{
- helgrind-glibc25-104
- Helgrind:Race
- fun:__lll_mutex_*
-}
-{
- helgrind-glibc25-105
- Helgrind:Race
- fun:pthread_rwlock_*lock*
-}
-
-######------------ glibc-2.4 specific ------------######
-#
-{
- helgrind-glibc24-001
- Helgrind:Race
- obj:/lib*/ld-2.4.so
- obj:/lib*/ld-2.4.so
- obj:/lib*/ld-2.4.so
-}
-{
- helgrind-glibc24-003
- Helgrind:Race
- obj:/lib*/ld-2.4.so
- obj:/lib*/libc-2.4.so
- obj:/lib*/libc-2.4.so
-}
-{
- helgrind-glibc24-004
- Helgrind:Race
- obj:/lib*/libc-2.4.so
- obj:/lib*/libc-2.4.so
-}
-{
- helgrind-glibc24-005
- Helgrind:Race
- obj:/lib*/libpthread-2.4.so
- obj:/lib*/libpthread-2.4.so
- obj:/lib*/libpthread-2.4.so
-}
-{
- helgrind-glibc24-006
- Helgrind:Race
- obj:/lib*/libpthread-2.4.so
- obj:/lib*/libpthread-2.4.so
- obj:/lib*/libc-2.4.so
-}
-{
- helgrind-glibc24-008
- Helgrind:Race
- obj:/lib*/libpthread-2.4.so
- obj:/lib*/libc-2.4.so
-}
-{
- helgrind-glibc24-010
- Helgrind:Race
- obj:/lib*/ld-2.4.so
- obj:/lib*/libpthread-2.4.so
-}
-{
- helgrind-glibc24-011
- Helgrind:Race
- obj:/lib*/libc-2.4.so
- obj:/lib*/libpthread-2.4.so
-}
-
-{
- helgrind-glibc24-101
- Helgrind:Race
- obj:/lib*/libpthread-2.4.so
- fun:pthread_*
-}
-{
- helgrind-glibc24-102
- Helgrind:Race
- fun:mythread_wrapper
- obj:/lib*/libpthread-2.4.so
-}
-
-######------------ glibc-2.6 specific ---------######
-#
-{
- helgrind-glibc26-001
- Helgrind:Race
- obj:/lib*/ld-2.6.*so
- obj:/lib*/ld-2.6.*so
- obj:/lib*/ld-2.6.*so
-}
-{
- helgrind-glibc26-003
- Helgrind:Race
- obj:/lib*/ld-2.6.*so
- obj:/lib*/libc-2.6.*so
- obj:/lib*/libc-2.6.*so
-}
-{
- helgrind-glibc26-004
- Helgrind:Race
- obj:/lib*/libc-2.6.*so
- obj:/lib*/libc-2.6.*so
-}
-{
- helgrind-glibc26-006
- Helgrind:Race
- obj:/lib*/libpthread-2.6.*so
- obj:/lib*/libpthread-2.6.*so
- obj:/lib*/libc-2.6.*so
-}
-{
- helgrind-glibc26-008
- Helgrind:Race
- obj:/lib*/libpthread-2.6.*so
- obj:/lib*/libc-2.6.*so
-}
-
-{
- helgrind-glibc26-101
- Helgrind:Race
- obj:/lib*/libpthread-2.6.*so
- fun:pthread_*
-}
-{
- helgrind-glibc26-102
- Helgrind:Race
- fun:mythread_wrapper
- obj:/lib*/libpthread-2.6.*so
-}
-{
- helgrind-glibc26-106
- Helgrind:Race
- fun:__lll_lock_wait
-}
-
-######--------- glibc-2.3 specific ---------######
-{
- helgrind-glibc23-001
- Helgrind:Race
- obj:/lib*/ld-2.3.*so
- obj:/lib*/ld-2.3.*so
- obj:/lib*/ld-2.3.*so
-}
-{
- helgrind-glibc23-002
- Helgrind:Race
- obj:/lib*/ld-2.3.*so
- obj:/lib*/libc-2.3.*so
- obj:/lib*/ld-2.3.*so
-}
-{
- helgrind-glibc23-004
- Helgrind:Race
- obj:/lib*/libc-2.3.*so
- obj:/lib*/libc-2.3.*so
-}
-{
- helgrind-glibc23-006
- Helgrind:Race
- obj:/lib*/libpthread-2.3.*so
- obj:/lib*/libpthread-2.3.*so
- obj:/lib*/libc-2.3.*so
-}
-{
- helgrind-glibc23-008
- Helgrind:Race
- obj:/lib*/libpthread-2.3.*so
- obj:/lib*/libc-2.3.*so
-}
-{
- helgrind-glibc23-009
- Helgrind:Race
- obj:/lib*/libc-2.3.*so
- obj:/lib*/ld-2.3.*so
- obj:/lib*/libc-2.3.*so
-}
-{
- helgrind-glibc23-011
- Helgrind:Race
- obj:/lib*/libc-2.3.*so
- obj:/lib*/libpthread-2.3.*so
-}
-{
- helgrind-glibc23-012
- Helgrind:Race
- obj:/lib*/ld-2.3.*so
- obj:/lib*/ld-2.3.*so
- obj:/lib*/libc-2.3.*so
-}
-{
- helgrind-glibc23-014
- Helgrind:Race
- obj:/lib*/ld-2.3.*so
- obj:/lib*/ld-2.3.*so
- obj:/lib*/libpthread-2.3.*so
-}
-
-{
- helgrind-glibc23-100
- Helgrind:Race
- obj:/lib*/libpthread-2.3.*so
- fun:pthread_*
-}
-{
- helgrind-glibc23-101
- Helgrind:Race
- fun:mythread_wrapper
- obj:/lib*/libpthread-2.3.*so
-}
-
-######------ qt4 specific (GNU mangling) ------######
-{
- helgrind-qt4-QMutex::lock()-twice
- Helgrind:Race
- fun:_ZN6QMutex4lockEv
- fun:_ZN6QMutex4lockEv
-}
|
|
From: <sv...@va...> - 2007-11-11 05:59:19
|
Author: sewardj
Date: 2007-11-11 05:59:22 +0000 (Sun, 11 Nov 2007)
New Revision: 7145
Log:
Avoid compilation warnings from gcc-3.2 (about 'index' shadowing a built-in global)
Modified:
trunk/exp-omega/o_main.c
Modified: trunk/exp-omega/o_main.c
===================================================================
--- trunk/exp-omega/o_main.c 2007-11-11 05:58:41 UTC (rev 7144)
+++ trunk/exp-omega/o_main.c 2007-11-11 05:59:22 UTC (rev 7145)
@@ -3130,16 +3130,16 @@
** We dont do anything to balance things so this could decompose to a
** linear structure. Thankfully, we are not in a time critical section.
*/
- UInt index;
+ UInt indx;
o_memblockList = (MemBlock **)VG_(HT_to_array)(o_MemBlocks,
&o_memblockListCount);
- for(index = 0; index < o_memblockListCount; index++)
+ for(indx = 0; indx < o_memblockListCount; indx++)
{
TreeNode **parent = NULL;
TreeNode *tn = NULL;
- MemBlock *mb = o_memblockList[index];
+ MemBlock *mb = o_memblockList[indx];
/*
** Only process main blocks that havent leaked.
@@ -3178,11 +3178,11 @@
static void o_checkExternalPointers(void)
{
- UInt index;
+ UInt indx;
- for(index = 0; index < o_memblockListCount; index++)
+ for(indx = 0; indx < o_memblockListCount; indx++)
{
- MemBlock *mb = o_memblockList[index];
+ MemBlock *mb = o_memblockList[indx];
/*
** Only check blocks that haven't leaked.
@@ -3211,7 +3211,7 @@
static void o_rippleExternelPointers(MemBlock *mb)
{
- UInt index;
+ UInt indx;
if(!mb)
{
@@ -3219,12 +3219,12 @@
** Iterate through the memory block list marking external blocks
** so that we dont process the same blocks twice.
*/
- for(index = 0; index < o_memblockListCount; index++)
+ for(indx = 0; indx < o_memblockListCount; indx++)
{
- if(o_memblockList[index]->external > 0)
+ if(o_memblockList[indx]->external > 0)
{
- o_memblockList[index]->external = -1;
- o_rippleExternelPointers(o_memblockList[index]);
+ o_memblockList[indx]->external = -1;
+ o_rippleExternelPointers(o_memblockList[indx]);
}
}
}
@@ -3271,16 +3271,16 @@
{
int count = 0;
BlockRecord *block = NULL;
- int index;
+ int indx;
/*
** Iterate through the memory block list reporting any blocks not marked
** as external.
** We aggregate the list of blocks as many could come from the same context.
*/
- for(index = 0; index < o_memblockListCount; index++)
+ for(indx = 0; indx < o_memblockListCount; indx++)
{
- MemBlock * mb = o_memblockList[index];
+ MemBlock * mb = o_memblockList[indx];
if(!mb->shadowing && !mb->leaked && mb->external == 0)
{
block = o_findBlockRecord(&o_circularRecords, mb->where, NULL);
|
|
From: <sv...@va...> - 2007-11-11 05:58:40
|
Author: sewardj
Date: 2007-11-11 05:58:41 +0000 (Sun, 11 Nov 2007)
New Revision: 7144
Log:
Comment-only change.
Modified:
trunk/helgrind/hg_intercepts.c
Modified: trunk/helgrind/hg_intercepts.c
===================================================================
--- trunk/helgrind/hg_intercepts.c 2007-11-11 05:52:36 UTC (rev 7143)
+++ trunk/helgrind/hg_intercepts.c 2007-11-11 05:58:41 UTC (rev 7144)
@@ -173,6 +173,8 @@
/*--- pthread_create, pthread_join, pthread_exit ---*/
/*----------------------------------------------------------------*/
+/* Do not rename this function. It contains an unavoidable race and
+ so is mentioned by name in glibc-*helgrind*.supp. */
static void* mythread_wrapper ( void* xargsV )
{
volatile Word volatile* xargs = (volatile Word volatile*) xargsV;
|
|
From: <sv...@va...> - 2007-11-11 05:52:35
|
Author: sewardj
Date: 2007-11-11 05:52:36 +0000 (Sun, 11 Nov 2007)
New Revision: 7143
Log:
Don't hang on some old systems, since that makes the entire regtest
system hang.
Modified:
trunk/helgrind/tests/tc18_semabuse.c
Modified: trunk/helgrind/tests/tc18_semabuse.c
===================================================================
--- trunk/helgrind/tests/tc18_semabuse.c 2007-11-11 01:20:14 UTC (rev 7142)
+++ trunk/helgrind/tests/tc18_semabuse.c 2007-11-11 05:52:36 UTC (rev 7143)
@@ -6,19 +6,19 @@
/* This is pretty lame, because making the sem_ functions fail is
difficult. Not sure it's really worth having. */
-
+#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <pthread.h>
#include <semaphore.h>
#include <string.h>
-
+void start_watchdog ( void );
int main ( void )
{
int r;
sem_t s1;
-
+ start_watchdog();
/* Do sem_init with huge initial count */
r= sem_init(&s1, 0, ~0);
@@ -40,3 +40,18 @@
return 0;
}
+
+void* watchdog ( void* v )
+{
+ sleep(10);
+ fprintf(stderr, "watchdog timer expired - not a good sign\n");
+ exit(0);
+}
+
+void start_watchdog ( void )
+{
+ pthread_t t;
+ int r;
+ r= pthread_create(&t, NULL, watchdog, NULL);
+ assert(!r);
+}
|
|
From: Tom H. <th...@cy...> - 2007-11-11 03:29:23
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2007-11-11 03:05:13 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 == 350 tests, 11 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/deep-C (stderr) massif/tests/peak2 (stderr) massif/tests/realloc (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2007-11-11 03:27:26
|
Nightly build on dellow ( x86_64, Fedora 7 ) started at 2007-11-11 03:10:11 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 350 tests, 12 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/deep-C (stderr) massif/tests/peak2 (stderr) massif/tests/realloc (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 350 tests, 12 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/deep-C (stderr) massif/tests/peak2 (stderr) massif/tests/realloc (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Nov 11 03:18:49 2007 --- new.short Sun Nov 11 03:27:22 2007 *************** *** 8,10 **** ! == 350 tests, 12 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 350 tests, 12 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 20,21 **** --- 20,22 ---- none/tests/mremap2 (stdout) + none/tests/pth_detached (stdout) helgrind/tests/tc17_sembar (stderr) |
|
From: Tom H. <th...@cy...> - 2007-11-11 03:13:55
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-11-11 03:00:08 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 352 tests, 28 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/deep-C (stderr) massif/tests/peak2 (stderr) massif/tests/realloc (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 352 tests, 40 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/deep-C (stderr) massif/tests/peak2 (stderr) massif/tests/realloc (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc04_free_lock (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stdout) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stdout) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc10_rec_lock (stderr) helgrind/tests/tc11_XCHG (stdout) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc13_laog1 (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc15_laog_lockdel (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stdout) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Nov 11 03:06:32 2007 --- new.short Sun Nov 11 03:13:43 2007 *************** *** 8,10 **** ! == 352 tests, 40 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 352 tests, 28 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 26,52 **** helgrind/tests/hg05_race2 (stderr) - helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) - helgrind/tests/tc02_simple_tls (stderr) - helgrind/tests/tc03_re_excl (stderr) - helgrind/tests/tc04_free_lock (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) - helgrind/tests/tc07_hbl1 (stdout) - helgrind/tests/tc07_hbl1 (stderr) - helgrind/tests/tc08_hbl2 (stdout) - helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) - helgrind/tests/tc10_rec_lock (stderr) - helgrind/tests/tc11_XCHG (stdout) - helgrind/tests/tc11_XCHG (stderr) - helgrind/tests/tc12_rwl_trivial (stderr) - helgrind/tests/tc13_laog1 (stderr) helgrind/tests/tc14_laog_dinphils (stderr) - helgrind/tests/tc15_laog_lockdel (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) - helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) - helgrind/tests/tc21_pthonce (stdout) helgrind/tests/tc21_pthonce (stderr) --- 26,36 ---- |
|
From: <sv...@va...> - 2007-11-11 01:20:13
|
Author: sewardj Date: 2007-11-11 01:20:14 +0000 (Sun, 11 Nov 2007) New Revision: 7142 Log: Ensure omega.h is copied into the installation tree at 'make install' time. Modified: trunk/exp-omega/Makefile.am Modified: trunk/exp-omega/Makefile.am =================================================================== --- trunk/exp-omega/Makefile.am 2007-11-10 22:50:13 UTC (rev 7141) +++ trunk/exp-omega/Makefile.am 2007-11-11 01:20:14 UTC (rev 7142) @@ -90,9 +90,9 @@ oincludedir = $(includedir)/valgrind -oinclude_HEADERS = +oinclude_HEADERS = omega.h -noinst_HEADERS = omega.h +noinst_HEADERS = o_replace_memops.o: CFLAGS += -fno-omit-frame-pointer |
|
From: <js...@ac...> - 2007-11-11 01:15:26
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-11-11 02:00:01 CET
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 284 tests, 30 stderr failures, 2 stdout failures, 0 post failures ==
memcheck/tests/deep_templates (stdout)
memcheck/tests/leak-cycle (stderr)
memcheck/tests/leak-tree (stderr)
memcheck/tests/pointer-trace (stderr)
massif/tests/culling1 (stderr)
massif/tests/culling2 (stderr)
massif/tests/deep-C (stderr)
massif/tests/peak2 (stderr)
massif/tests/realloc (stderr)
none/tests/faultstatus (stderr)
none/tests/fdleak_cmsg (stderr)
none/tests/mremap (stderr)
none/tests/mremap2 (stdout)
helgrind/tests/hg02_deadlock (stderr)
helgrind/tests/hg03_inherit (stderr)
helgrind/tests/hg04_race (stderr)
helgrind/tests/hg05_race2 (stderr)
helgrind/tests/tc01_simple_race (stderr)
helgrind/tests/tc05_simple_race (stderr)
helgrind/tests/tc06_two_races (stderr)
helgrind/tests/tc07_hbl1 (stderr)
helgrind/tests/tc08_hbl2 (stderr)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc11_XCHG (stderr)
helgrind/tests/tc14_laog_dinphils (stderr)
helgrind/tests/tc16_byterace (stderr)
helgrind/tests/tc17_sembar (stderr)
helgrind/tests/tc19_shadowmem (stderr)
helgrind/tests/tc20_verifywrap (stderr)
helgrind/tests/tc21_pthonce (stderr)
helgrind/tests/tc22_exit_w_lock (stderr)
helgrind/tests/tc23_bogus_condwait (stderr)
=================================================
== Results from 24 hours ago ==
=================================================
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... failed
Last 20 lines of verbose log follow echo
Making all in docs
make[3]: Entering directory `/home/sewardj/Nightly/valgrind/helgrind/docs'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/home/sewardj/Nightly/valgrind/helgrind/docs'
make[2]: Leaving directory `/home/sewardj/Nightly/valgrind/helgrind'
Making all in exp-omega
make[2]: Entering directory `/home/sewardj/Nightly/valgrind/exp-omega'
Making all in .
make[3]: Entering directory `/home/sewardj/Nightly/valgrind/exp-omega'
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_ppc32=1 -DVGO_linux=1 -DVGP_ppc32_linux=1 -m32 -O -g -Wmissing-prototypes -Winline -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -O2 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT exp_omega_ppc32_linux-o_main.o -MD -MP -MF ".deps/exp_omega_ppc32_linux-o_main.Tpo" -c -o exp_omega_ppc32_linux-o_main.o `test -f 'o_main.c' || echo './'`o_main.c; \
then mv -f ".deps/exp_omega_ppc32_linux-o_main.Tpo" ".deps/exp_omega_ppc32_linux-o_main.Po"; else rm -f ".deps/exp_omega_ppc32_linux-o_main.Tpo"; exit 1; fi
o_main.c:181:2: error: #error I know even less about PPC than x86 - please add appropriate registers
o_main.c:2810:2: error: #error I know even less about PPC than x86 - please add appropriate registers
make[3]: *** [exp_omega_ppc32_linux-o_main.o] Error 1
make[3]: Leaving directory `/home/sewardj/Nightly/valgrind/exp-omega'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/sewardj/Nightly/valgrind/exp-omega'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/sewardj/Nightly/valgrind'
make: *** [all] Error 2
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Sun Nov 11 02:04:38 2007
--- new.short Sun Nov 11 02:14:49 2007
***************
*** 3,26 ****
Configuring valgrind ... done
! Building valgrind ... failed
- Last 20 lines of verbose log follow echo
- Making all in docs
- make[3]: Entering directory `/home/sewardj/Nightly/valgrind/helgrind/docs'
- make[3]: Nothing to be done for `all'.
- make[3]: Leaving directory `/home/sewardj/Nightly/valgrind/helgrind/docs'
- make[2]: Leaving directory `/home/sewardj/Nightly/valgrind/helgrind'
- Making all in exp-omega
- make[2]: Entering directory `/home/sewardj/Nightly/valgrind/exp-omega'
- Making all in .
- make[3]: Entering directory `/home/sewardj/Nightly/valgrind/exp-omega'
- if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_ppc32=1 -DVGO_linux=1 -DVGP_ppc32_linux=1 -m32 -O -g -Wmissing-prototypes -Winline -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -O2 -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-stack-protector -MT exp_omega_ppc32_linux-o_main.o -MD -MP -MF ".deps/exp_omega_ppc32_linux-o_main.Tpo" -c -o exp_omega_ppc32_linux-o_main.o `test -f 'o_main.c' || echo './'`o_main.c; \
- then mv -f ".deps/exp_omega_ppc32_linux-o_main.Tpo" ".deps/exp_omega_ppc32_linux-o_main.Po"; else rm -f ".deps/exp_omega_ppc32_linux-o_main.Tpo"; exit 1; fi
- o_main.c:181:2: error: #error I know even less about PPC than x86 - please add appropriate registers
- o_main.c:2810:2: error: #error I know even less about PPC than x86 - please add appropriate registers
- make[3]: *** [exp_omega_ppc32_linux-o_main.o] Error 1
- make[3]: Leaving directory `/home/sewardj/Nightly/valgrind/exp-omega'
- make[2]: *** [all-recursive] Error 1
- make[2]: Leaving directory `/home/sewardj/Nightly/valgrind/exp-omega'
- make[1]: *** [all-recursive] Error 1
- make[1]: Leaving directory `/home/sewardj/Nightly/valgrind'
- make: *** [all] Error 2
--- 3,42 ----
Configuring valgrind ... done
! Building valgrind ... done
! Running regression tests ... failed
!
! Regression test results follow
!
! == 284 tests, 30 stderr failures, 2 stdout failures, 0 post failures ==
! memcheck/tests/deep_templates (stdout)
! memcheck/tests/leak-cycle (stderr)
! memcheck/tests/leak-tree (stderr)
! memcheck/tests/pointer-trace (stderr)
! massif/tests/culling1 (stderr)
! massif/tests/culling2 (stderr)
! massif/tests/deep-C (stderr)
! massif/tests/peak2 (stderr)
! massif/tests/realloc (stderr)
! none/tests/faultstatus (stderr)
! none/tests/fdleak_cmsg (stderr)
! none/tests/mremap (stderr)
! none/tests/mremap2 (stdout)
! helgrind/tests/hg02_deadlock (stderr)
! helgrind/tests/hg03_inherit (stderr)
! helgrind/tests/hg04_race (stderr)
! helgrind/tests/hg05_race2 (stderr)
! helgrind/tests/tc01_simple_race (stderr)
! helgrind/tests/tc05_simple_race (stderr)
! helgrind/tests/tc06_two_races (stderr)
! helgrind/tests/tc07_hbl1 (stderr)
! helgrind/tests/tc08_hbl2 (stderr)
! helgrind/tests/tc09_bad_unlock (stderr)
! helgrind/tests/tc11_XCHG (stderr)
! helgrind/tests/tc14_laog_dinphils (stderr)
! helgrind/tests/tc16_byterace (stderr)
! helgrind/tests/tc17_sembar (stderr)
! helgrind/tests/tc19_shadowmem (stderr)
! helgrind/tests/tc20_verifywrap (stderr)
! helgrind/tests/tc21_pthonce (stderr)
! helgrind/tests/tc22_exit_w_lock (stderr)
! helgrind/tests/tc23_bogus_condwait (stderr)
|
|
From: Eyal L. <ey...@ey...> - 2007-11-11 01:14:05
|
I doubt the leftover idea. My build procedure is
make distclean
./autogen.sh
./configure
make
sudo make install
Actually, I re-checked out svn at the time just to be sure that it
really fails.
[later] As suggested, I checked out r7141 and it works OK now.
Thanks
Julian Seward wrote:
> On Saturday 10 November 2007 04:28, Nicholas Nethercote wrote:
>> On Sat, 10 Nov 2007, Eyal Lebedinsky wrote:
>>> Having built the latest version where thrcheck is merged into helgrind,
>>> I now get this error when trying to run a program using tool=helgrind
>>>
>>> ==00:00:00:00.044 5314== FATAL: in suppressions file
>>> '/usr/local/lib/valgrind/default.supp': unknown tool suppression type
>>> ==00:00:00:00.045 5314== exiting now.
>>>
>>> If I replace 'Helgrind:' with 'helgrind:' in the suppression file then
>>> it works.
>
> The string in the suppressions file is supposed to match this one, yes?
>
> VG_(details_name) ("Helgrind");
>
> I suspect what Eyal saw is more likely to be result of needing to
> rebuild completely from scratch, starting with ./autogen.sh and then
> ./configure. Recent changes have affected many parts of the system,
> including the build system. r7132 causes most of the Helgrind regtests
> fail on my machine.
>
> J
--
Eyal Lebedinsky (ey...@ey...)
|