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
(10) |
3
(10) |
4
(14) |
5
(10) |
|
6
|
7
(1) |
8
(14) |
9
(10) |
10
(4) |
11
(2) |
12
(4) |
|
13
|
14
(2) |
15
(11) |
16
(10) |
17
|
18
|
19
(18) |
|
20
(14) |
21
(10) |
22
(1) |
23
(11) |
24
(14) |
25
(10) |
26
(6) |
|
27
(13) |
28
(13) |
29
(12) |
30
(13) |
|
|
|
|
From: Gilles C. <gil...@xe...> - 2014-04-19 17:05:26
|
Le 19/04/2014 18:10, Philippe Waroquiers a écrit : > On Sat, 2014-04-19 at 17:53 +0200, Gilles Chanteperdrix wrote: >> L >>> Can you give more information about: >>> what do you mean exactly by "building valgrind out of its source tree" ? >>> why do you want to build it out of its source tree, if building it is >>> working ? >>> which OS ? >>> which distribution ? >>> what build error/error msg/... you have without the above change ? >> >> Building a project "out-of-tree" is a common feature for projects using >> the autotools, see for instance: >> >> http://www.gnu.org/software/automake/manual/html_node/VPATH-Builds.html >> >> In a nut shell, by running the configure script from a build directory >> different from the sources directory, the program gets built in this >> build directory instead of inside the source tree. >> >> The reason I use this is that it allows me to build valgrind for >> different platforms from the same source tree, without duplicating or >> symlinking the source tree. >> >> The out-of-tree builds relies on make's VPATH variable. Makefiles are >> run from a build tree, which does not contain the sources, but make >> looks for the dependencies in the directory mentioned in the VPATH >> variable, and passes the complete path to make rules when the dependency >> is found in the VPATH tree. >> >> So, for instance, if a foo.supp exists in /tmp/bar and /tmp/qux/Makefile >> contains: >> >> DEFAULT_SUPP_FILES=foo.supp >> >> VPATH = /tmp/bar >> >> default.supp: $(DEFAULT_SUPP_FILES) >> echo $< >> >> Running "make default.supp" in /tmp/qux will print /tmp/bar/foo.supp >> instead of just foo.supp, IOW, the rule gets passed the full path of the >> dependency. >> >> Without this change, cat $(DEFAULT_SUPP_FILES) fails because the files >> are not found in the build tree. >> >> I understand if you do not want to support that feature, but since the >> modification to get it working is a one-liner, I assumed that it was an >> already supported feature, and that the fact that it did not work in >> 3.9.0 was an oversight. > Thanks for the detailed explanation above. > It looks effectively interesting to me to be able to use one source > tree but build it in various other directories with different configure > setup. > > My knowledge of autotools and the valgrind build system is quite > elementary, so I cannot judge what are the implications of supporting > this. I suppose it does not imply to use particularly recent > versions of some tools ? > > I suggest you file a wishbug in bugzilla with the above explanation > and your patch. > You might as well complete your patch by updating the documentations > giving the build instructions (i.e. adding a section or a paragraph > in README explaining how to do a out of source tree build). > > Thanks for looking at this It is done with bug 333628. Note that the attached patch is for trunk, which required quite a few more changes. Note that a fix similar to mine had already been proposed since 3.6.0: https://bugs.kde.org/show_bug.cgi?id=256174 -- Gilles. |
|
From: Gilles C. <gil...@xe...> - 2014-04-19 16:18:06
|
Le 19/04/2014 18:10, Philippe Waroquiers a écrit : > On Sat, 2014-04-19 at 17:53 +0200, Gilles Chanteperdrix wrote: >> L >>> Can you give more information about: >>> what do you mean exactly by "building valgrind out of its source tree" ? >>> why do you want to build it out of its source tree, if building it is >>> working ? >>> which OS ? >>> which distribution ? >>> what build error/error msg/... you have without the above change ? >> >> Building a project "out-of-tree" is a common feature for projects using >> the autotools, see for instance: >> >> http://www.gnu.org/software/automake/manual/html_node/VPATH-Builds.html >> >> In a nut shell, by running the configure script from a build directory >> different from the sources directory, the program gets built in this >> build directory instead of inside the source tree. >> >> The reason I use this is that it allows me to build valgrind for >> different platforms from the same source tree, without duplicating or >> symlinking the source tree. >> >> The out-of-tree builds relies on make's VPATH variable. Makefiles are >> run from a build tree, which does not contain the sources, but make >> looks for the dependencies in the directory mentioned in the VPATH >> variable, and passes the complete path to make rules when the dependency >> is found in the VPATH tree. >> >> So, for instance, if a foo.supp exists in /tmp/bar and /tmp/qux/Makefile >> contains: >> >> DEFAULT_SUPP_FILES=foo.supp >> >> VPATH = /tmp/bar >> >> default.supp: $(DEFAULT_SUPP_FILES) >> echo $< >> >> Running "make default.supp" in /tmp/qux will print /tmp/bar/foo.supp >> instead of just foo.supp, IOW, the rule gets passed the full path of the >> dependency. >> >> Without this change, cat $(DEFAULT_SUPP_FILES) fails because the files >> are not found in the build tree. >> >> I understand if you do not want to support that feature, but since the >> modification to get it working is a one-liner, I assumed that it was an >> already supported feature, and that the fact that it did not work in >> 3.9.0 was an oversight. > Thanks for the detailed explanation above. > It looks effectively interesting to me to be able to use one source > tree but build it in various other directories with different configure > setup. > > My knowledge of autotools and the valgrind build system is quite > elementary, so I cannot judge what are the implications of supporting > this. I suppose it does not imply to use particularly recent > versions of some tools ? It implies to use a make tool which supports the VPATH variable, if you want to build the project out of its source tree. GNU make VPATH has been supporting VPATH for a long time, I do not know about other makes. > > I suggest you file a wishbug in bugzilla with the above explanation > and your patch. > You might as well complete your patch by updating the documentations > giving the build instructions (i.e. adding a section or a paragraph > in README explaining how to do a out of source tree build). Ok, will do. Regards. -- Gilles. |
|
From: Philippe W. <phi...@sk...> - 2014-04-19 16:09:52
|
On Sat, 2014-04-19 at 17:53 +0200, Gilles Chanteperdrix wrote: > L > > Can you give more information about: > > what do you mean exactly by "building valgrind out of its source tree" ? > > why do you want to build it out of its source tree, if building it is > > working ? > > which OS ? > > which distribution ? > > what build error/error msg/... you have without the above change ? > > Building a project "out-of-tree" is a common feature for projects using > the autotools, see for instance: > > http://www.gnu.org/software/automake/manual/html_node/VPATH-Builds.html > > In a nut shell, by running the configure script from a build directory > different from the sources directory, the program gets built in this > build directory instead of inside the source tree. > > The reason I use this is that it allows me to build valgrind for > different platforms from the same source tree, without duplicating or > symlinking the source tree. > > The out-of-tree builds relies on make's VPATH variable. Makefiles are > run from a build tree, which does not contain the sources, but make > looks for the dependencies in the directory mentioned in the VPATH > variable, and passes the complete path to make rules when the dependency > is found in the VPATH tree. > > So, for instance, if a foo.supp exists in /tmp/bar and /tmp/qux/Makefile > contains: > > DEFAULT_SUPP_FILES=foo.supp > > VPATH = /tmp/bar > > default.supp: $(DEFAULT_SUPP_FILES) > echo $< > > Running "make default.supp" in /tmp/qux will print /tmp/bar/foo.supp > instead of just foo.supp, IOW, the rule gets passed the full path of the > dependency. > > Without this change, cat $(DEFAULT_SUPP_FILES) fails because the files > are not found in the build tree. > > I understand if you do not want to support that feature, but since the > modification to get it working is a one-liner, I assumed that it was an > already supported feature, and that the fact that it did not work in > 3.9.0 was an oversight. Thanks for the detailed explanation above. It looks effectively interesting to me to be able to use one source tree but build it in various other directories with different configure setup. My knowledge of autotools and the valgrind build system is quite elementary, so I cannot judge what are the implications of supporting this. I suppose it does not imply to use particularly recent versions of some tools ? I suggest you file a wishbug in bugzilla with the above explanation and your patch. You might as well complete your patch by updating the documentations giving the build instructions (i.e. adding a section or a paragraph in README explaining how to do a out of source tree build). Thanks for looking at this Philippe |
|
From: Gilles C. <gil...@xe...> - 2014-04-19 15:54:07
|
Le 19/04/2014 17:40, Philippe Waroquiers a écrit : > On Sat, 2014-04-19 at 17:27 +0200, Gilles Chanteperdrix wrote: >> Hi, >> >> a minor modification is needed to allow building valgrind out of its >> source tree: >> >> --- orig.valgrind-3.9.0/Makefile.am 2013-10-23 12:50:02.000000000 +0200 >> +++ valgrind-3.9.0/Makefile.am 2014-03-15 00:35:27.044018414 +0100 >> @@ -64,7 +64,7 @@ CLEANFILES = default.supp >> default.supp: $(DEFAULT_SUPP_FILES) >> echo "# This is a generated file, composed of the following suppression rules:" > default.supp >> echo "# " $(DEFAULT_SUPP_FILES) >> default.supp >> - cat $(DEFAULT_SUPP_FILES) >> default.supp >> + cat $^ >> default.supp >> >> ## Preprend @PERL@ because tests/vg_regtest isn't executable >> ## Ensure make exits with error if PERL fails or post_regtest_checks fails. >> >> Regards. > 3.9.0 is available since 31 October 2013, and up to now, it seems > it could be build by most (or all?) people. > > Can you give more information about: > what do you mean exactly by "building valgrind out of its source tree" ? > why do you want to build it out of its source tree, if building it is > working ? > which OS ? > which distribution ? > what build error/error msg/... you have without the above change ? Building a project "out-of-tree" is a common feature for projects using the autotools, see for instance: http://www.gnu.org/software/automake/manual/html_node/VPATH-Builds.html In a nut shell, by running the configure script from a build directory different from the sources directory, the program gets built in this build directory instead of inside the source tree. The reason I use this is that it allows me to build valgrind for different platforms from the same source tree, without duplicating or symlinking the source tree. The out-of-tree builds relies on make's VPATH variable. Makefiles are run from a build tree, which does not contain the sources, but make looks for the dependencies in the directory mentioned in the VPATH variable, and passes the complete path to make rules when the dependency is found in the VPATH tree. So, for instance, if a foo.supp exists in /tmp/bar and /tmp/qux/Makefile contains: DEFAULT_SUPP_FILES=foo.supp VPATH = /tmp/bar default.supp: $(DEFAULT_SUPP_FILES) echo $< Running "make default.supp" in /tmp/qux will print /tmp/bar/foo.supp instead of just foo.supp, IOW, the rule gets passed the full path of the dependency. Without this change, cat $(DEFAULT_SUPP_FILES) fails because the files are not found in the build tree. I understand if you do not want to support that feature, but since the modification to get it working is a one-liner, I assumed that it was an already supported feature, and that the fact that it did not work in 3.9.0 was an oversight. Regards. -- Gilles. |
|
From: Philippe W. <phi...@sk...> - 2014-04-19 15:39:50
|
On Sat, 2014-04-19 at 17:27 +0200, Gilles Chanteperdrix wrote:
> Hi,
>
> a minor modification is needed to allow building valgrind out of its
> source tree:
>
> --- orig.valgrind-3.9.0/Makefile.am 2013-10-23 12:50:02.000000000 +0200
> +++ valgrind-3.9.0/Makefile.am 2014-03-15 00:35:27.044018414 +0100
> @@ -64,7 +64,7 @@ CLEANFILES = default.supp
> default.supp: $(DEFAULT_SUPP_FILES)
> echo "# This is a generated file, composed of the following suppression rules:" > default.supp
> echo "# " $(DEFAULT_SUPP_FILES) >> default.supp
> - cat $(DEFAULT_SUPP_FILES) >> default.supp
> + cat $^ >> default.supp
>
> ## Preprend @PERL@ because tests/vg_regtest isn't executable
> ## Ensure make exits with error if PERL fails or post_regtest_checks fails.
>
> Regards.
3.9.0 is available since 31 October 2013, and up to now, it seems
it could be build by most (or all?) people.
Can you give more information about:
what do you mean exactly by "building valgrind out of its source tree" ?
why do you want to build it out of its source tree, if building it is
working ?
which OS ?
which distribution ?
what build error/error msg/... you have without the above change ?
Thanks
Philippe
|
|
From: Gilles C. <gil...@xe...> - 2014-04-19 15:27:21
|
Hi, a minor modification is needed to allow building valgrind out of its source tree: --- orig.valgrind-3.9.0/Makefile.am 2013-10-23 12:50:02.000000000 +0200 +++ valgrind-3.9.0/Makefile.am 2014-03-15 00:35:27.044018414 +0100 @@ -64,7 +64,7 @@ CLEANFILES = default.supp default.supp: $(DEFAULT_SUPP_FILES) echo "# This is a generated file, composed of the following suppression rules:" > default.supp echo "# " $(DEFAULT_SUPP_FILES) >> default.supp - cat $(DEFAULT_SUPP_FILES) >> default.supp + cat $^ >> default.supp ## Preprend @PERL@ because tests/vg_regtest isn't executable ## Ensure make exits with error if PERL fails or post_regtest_checks fails. Regards. -- Gilles. |
|
From: <sv...@va...> - 2014-04-19 10:27:53
|
Author: philippe
Date: Sat Apr 19 10:27:28 2014
New Revision: 13899
Log:
Reword/clarify the VG_(parse_enum_set) comment.
Modified:
trunk/include/pub_tool_libcbase.h
Modified: trunk/include/pub_tool_libcbase.h
==============================================================================
--- trunk/include/pub_tool_libcbase.h (original)
+++ trunk/include/pub_tool_libcbase.h Sat Apr 19 10:27:28 2014
@@ -112,17 +112,17 @@
extern Bool VG_(parse_Addr) ( const HChar** ppc, Addr* result );
/* Parse an "enum set" made of one or more words comma separated.
- The allowed word values are given in tokens, separated
- by comma.
- If a word in tokens is found in input,
- the corresponding bit will be set in *enum_set
- (words in tokens are numbered starting from 0).
- The special token - in tokens can be used to indicate
- that the corresponding bit position cannot be set.
- The words none and all can be used to indicate an empty
- enum_set (0) or an enum_set with all bits corresponding
- to tokens set. If none or all is given, no other word
- can be given in input.
+ The allowed word values are given in 'tokens', separated by comma.
+ If a word in 'tokens' is found in 'input', the corresponding bit
+ will be set in *enum_set (words in 'tokens' are numbered starting from 0).
+ Using in 'tokens' the special token "-" (a minus character) indicates that
+ the corresponding bit position cannot be set.
+ In addition to the words specified in 'tokens', VG_(parse_enum_set)
+ automatically accept the words "none" and "all" to indicate respectively
+ an empty enum_set (0) or an enum_set with all bits corresponding
+ to the words in tokens set.
+ If "none" or "all" is present in 'input', no other word can be given
+ in 'input'.
If parsing is successful, returns True and sets *enum_set.
If parsing fails, returns False. */
extern Bool VG_(parse_enum_set) ( const HChar *tokens,
|
|
From: <sv...@va...> - 2014-04-19 09:53:21
|
Author: philippe
Date: Sat Apr 19 09:52:32 2014
New Revision: 13898
Log:
Factorise enum set parsing code
* add a function Bool VG_(parse_enum_set) in pub_tool_libcbase.h/m_libcbase.c
(close to Bool VG_(parse_Addr)
* Implement Bool MC_(parse_leak_heuristics) and MC_(parse_leak_kinds)
as a call to VG_(parse_enum_set)
Modified:
trunk/coregrind/m_libcbase.c
trunk/include/pub_tool_libcbase.h
trunk/memcheck/mc_errors.c
trunk/memcheck/mc_main.c
Modified: trunk/coregrind/m_libcbase.c
==============================================================================
--- trunk/coregrind/m_libcbase.c (original)
+++ trunk/coregrind/m_libcbase.c Sat Apr 19 09:52:32 2014
@@ -492,6 +492,82 @@
return True;
}
+Bool VG_(parse_enum_set) ( const HChar *tokens,
+ const HChar *input,
+ UInt *enum_set)
+{
+ const SizeT tokens_len = VG_(strlen)(tokens);
+ if (tokens_len > 1000) return False; /* "obviously invalid" */
+ HChar tok_tokens[tokens_len+1];
+ HChar *tokens_saveptr;
+ HChar *token;
+ UInt token_nr = 0;
+ UInt all_set = 0;
+
+ const SizeT input_len = VG_(strlen)(input);
+ if (input_len > 1000) return False; /* "obviously invalid" */
+ HChar tok_input[input_len+1];
+ HChar *input_saveptr;
+ HChar *input_word;
+ UInt word_nr = 0;
+ UInt known_words = 0;
+ Bool seen_all_kw = False;
+ Bool seen_none_kw = False;
+
+ *enum_set = 0;
+
+ VG_(strcpy) (tok_input, input);
+ for (input_word = VG_(strtok_r)(tok_input, ",", &input_saveptr);
+ input_word;
+ input_word = VG_(strtok_r)(NULL, ",", &input_saveptr)) {
+ word_nr++;
+ if (0 == VG_(strcmp)(input_word, "all")) {
+ seen_all_kw = True;
+ known_words++;
+ } else if (0 == VG_(strcmp)(input_word, "none")) {
+ seen_none_kw = True;
+ known_words++;
+ }
+
+ // Scan tokens + compute all_set. Do that even if all or none was
+ // recognised to have a correct value for all_set when exiting
+ // of the 'input' loop.
+ all_set = 0;
+ token_nr = 0;
+ VG_(strcpy) (tok_tokens, tokens);
+ for (token = VG_(strtok_r)(tok_tokens, ",", &tokens_saveptr);
+ token;
+ token = VG_(strtok_r)(NULL, ",", &tokens_saveptr)) {
+ if (0 != VG_(strcmp)(token, "-")) {
+ if (0 == VG_(strcmp)(input_word, token)) {
+ *enum_set |= 1 << token_nr;
+ known_words++;
+ }
+ all_set |= 1 << token_nr;
+ }
+ token_nr++;
+ }
+ }
+
+ if (known_words != word_nr)
+ return False; // One or more input_words not recognised.
+ if (seen_all_kw) {
+ if (seen_none_kw || *enum_set)
+ return False; // mixing all with either none or a specific value.
+ *enum_set = all_set;
+ } else if (seen_none_kw) {
+ if (seen_all_kw || *enum_set)
+ return False; // mixing none with either all or a specific value.
+ *enum_set = 0;
+ } else {
+ // seen neither all or none, we must see at least one value
+ if (*enum_set == 0)
+ return False;
+ }
+
+ return True;
+}
+
SizeT VG_(strspn) ( const HChar* s, const HChar* accpt )
{
const HChar *p, *a;
Modified: trunk/include/pub_tool_libcbase.h
==============================================================================
--- trunk/include/pub_tool_libcbase.h (original)
+++ trunk/include/pub_tool_libcbase.h Sat Apr 19 09:52:32 2014
@@ -111,6 +111,24 @@
False. */
extern Bool VG_(parse_Addr) ( const HChar** ppc, Addr* result );
+/* Parse an "enum set" made of one or more words comma separated.
+ The allowed word values are given in tokens, separated
+ by comma.
+ If a word in tokens is found in input,
+ the corresponding bit will be set in *enum_set
+ (words in tokens are numbered starting from 0).
+ The special token - in tokens can be used to indicate
+ that the corresponding bit position cannot be set.
+ The words none and all can be used to indicate an empty
+ enum_set (0) or an enum_set with all bits corresponding
+ to tokens set. If none or all is given, no other word
+ can be given in input.
+ If parsing is successful, returns True and sets *enum_set.
+ If parsing fails, returns False. */
+extern Bool VG_(parse_enum_set) ( const HChar *tokens,
+ const HChar *input,
+ UInt *enum_set);
+
/* Like strncpy(), but if 'src' is longer than 'ndest' inserts a '\0' as the
last character. */
extern void VG_(strncpy_safely) ( HChar* dest, const HChar* src, SizeT ndest );
Modified: trunk/memcheck/mc_errors.c
==============================================================================
--- trunk/memcheck/mc_errors.c (original)
+++ trunk/memcheck/mc_errors.c Sat Apr 19 09:52:32 2014
@@ -434,50 +434,8 @@
Bool MC_(parse_leak_kinds) ( const HChar* str0, UInt* lks )
{
- HChar tok_str0[VG_(strlen)(str0)+1];
- HChar* saveptr;
- HChar* token;
-
- Bool seen_all_kw = False;
- Bool seen_none_kw = False;
-
- VG_(strcpy) (tok_str0, str0);
- *lks = 0;
-
- for (token = VG_(strtok_r)(tok_str0, ",", &saveptr);
- token;
- token = VG_(strtok_r)(NULL, ",", &saveptr)) {
- if (0 == VG_(strcmp)(token, "reachable"))
- *lks |= R2S(Reachable);
- else if (0 == VG_(strcmp)(token, "possible"))
- *lks |= R2S(Possible);
- else if (0 == VG_(strcmp)(token, "indirect"))
- *lks |= R2S(IndirectLeak);
- else if (0 == VG_(strcmp)(token, "definite"))
- *lks |= R2S(Unreached);
- else if (0 == VG_(strcmp)(token, "all"))
- seen_all_kw = True;
- else if (0 == VG_(strcmp)(token, "none"))
- seen_none_kw = True;
- else
- return False;
- }
-
- if (seen_all_kw) {
- if (seen_none_kw || *lks)
- return False; // mixing all with either none or a specific value.
- *lks = RallS;
- } else if (seen_none_kw) {
- if (seen_all_kw || *lks)
- return False; // mixing none with either all or a specific value.
- *lks = 0;
- } else {
- // seen neither all or none, we must see at least one value
- if (*lks == 0)
- return False;
- }
-
- return True;
+ return VG_(parse_enum_set)("reachable,possible,indirect,definite",
+ str0, lks);
}
static const HChar* pp_Reachedness_for_leak_kinds(Reachedness r)
Modified: trunk/memcheck/mc_main.c
==============================================================================
--- trunk/memcheck/mc_main.c (original)
+++ trunk/memcheck/mc_main.c Sat Apr 19 09:52:32 2014
@@ -5114,50 +5114,8 @@
static Bool MC_(parse_leak_heuristics) ( const HChar *str0, UInt *lhs )
{
- SizeT str0len = VG_(strlen)(str0);
- if (str0len > 1000) return False; /* "obviously invalid" */
- HChar tok_str0[str0len+1];
- HChar *saveptr;
- HChar *token;
-
- Bool seen_all_kw = False;
- Bool seen_none_kw = False;
-
- VG_(strcpy) (tok_str0, str0);
- *lhs = 0;
-
- for (token = VG_(strtok_r)(tok_str0, ",", &saveptr);
- token;
- token = VG_(strtok_r)(NULL, ",", &saveptr)) {
- if (0 == VG_(strcmp)(token, "stdstring"))
- *lhs |= H2S(LchStdString);
- else if (0 == VG_(strcmp)(token, "newarray"))
- *lhs |= H2S(LchNewArray);
- else if (0 == VG_(strcmp)(token, "multipleinheritance"))
- *lhs |= H2S(LchMultipleInheritance);
- else if (0 == VG_(strcmp)(token, "all"))
- seen_all_kw = True;
- else if (0 == VG_(strcmp)(token, "none"))
- seen_none_kw = True;
- else
- return False;
- }
-
- if (seen_all_kw) {
- if (seen_none_kw || *lhs)
- return False; // mixing all with either none or a specific value.
- *lhs = HallS;
- } else if (seen_none_kw) {
- if (seen_all_kw || *lhs)
- return False; // mixing none with either all or a specific value.
- *lhs = 0;
- } else {
- // seen neither all or none, we must see at least one value
- if (*lhs == 0)
- return False;
- }
-
- return True;
+ return VG_(parse_enum_set) ("-,stdstring,newarray,multipleinheritance",
+ str0, lhs);
}
@@ -6624,6 +6582,8 @@
{
SizeT max_secVBit_szB, max_SMs_szB, max_shmem_szB;
+ VG_(message)(Vg_DebugMsg, " memcheck: freelist: vol %lld length %lld\n",
+ VG_(free_queue_volume), VG_(free_queue_length));
VG_(message)(Vg_DebugMsg,
" memcheck: sanity checks: %d cheap, %d expensive\n",
n_sanity_cheap, n_sanity_expensive );
|
|
From: Philippe W. <phi...@sk...> - 2014-04-19 04:47:50
|
valgrind revision: 13897 VEX revision: 2848 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) GDB: GNU gdb (GDB) Fedora (7.5.1-37.fc18) Assembler: GNU assembler version 2.23.51.0.1-7.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.8.8-202.fc18.ppc64p7 ppc64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on gcc110 ( Fedora release 18 (Spherical Cow), ppc64 ) Started at 2014-04-18 20:00:13 PDT Ended at 2014-04-18 21:44:36 PDT 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 == 577 tests, 36 stderr failures, 7 stdout failures, 0 stderrB failures, 0 stdoutB failures, 2 post failures == memcheck/tests/linux/getregset (stdout) memcheck/tests/linux/getregset (stderr) memcheck/tests/ppc64/power_ISA2_05 (stdout) memcheck/tests/supp_unknown (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) massif/tests/big-alloc (post) massif/tests/deep-D (post) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/jm-vmx (stderr) none/tests/ppc32/test_isa_2_06_part2 (stdout) none/tests/ppc32/test_isa_2_06_part2 (stderr) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/jm-vmx (stderr) none/tests/ppc64/test_isa_2_06_part2 (stdout) none/tests/ppc64/test_isa_2_06_part2 (stderr) helgrind/tests/annotate_rwlock (stderr) helgrind/tests/free_is_write (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/pth_cond_destroy_busy (stderr) helgrind/tests/pth_destroy_cond (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/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) --tools=none,memcheck,callgrind,helgrind,cachegrind,drd,massif --reps=3 --vg=../valgrind-new --vg=../valgrind-old -- Running tests in perf ---------------------------------------------- -- bigcode1 -- bigcode1 valgrind-new:0.22s no: 1.5s ( 6.9x, -----) me: 2.8s (12.9x, -----) ca:18.3s (83.3x, -----) he: 1.7s ( 7.9x, -----) ca: 5.3s (24.2x, -----) dr: 1.7s ( 7.8x, -----) ma: 2.1s ( 9.7x, -----) bigcode1 valgrind-old:0.22s no: 1.6s ( 7.1x, -3.3%) me: 2.9s (13.2x, -2.5%) ca:18.4s (83.5x, -0.2%) he: 1.7s ( 7.9x, 0.0%) ca: 5.4s (24.4x, -0.8%) dr: 1.7s ( 7.7x, 0.6%) ma: 2.1s ( 9.6x, 1.4%) -- bigcode2 -- bigcode2 valgrind-new:0.23s no: 1.5s ( 6.6x, -----) me: 2.9s (12.7x, -----) ca:18.7s (81.1x, -----) he: 2.1s ( 9.0x, -----) ca: 5.5s (23.8x, -----) dr: 1.8s ( 8.0x, -----) ma: 2.1s ( 9.3x, -----) bigcode2 valgrind-old:0.23s no: 1.5s ( 6.6x, 0.0%) me: 2.9s (12.7x, 0.0%) ca:18.7s (81.2x, -0.1%) he: 2.1s ( 9.1x, -0.5%) ca: 5.5s (23.9x, -0.4%) dr: 1.8s ( 8.0x, 0.5%) ma: 2.1s ( 9.2x, 0.9%) -- bz2 -- bz2 valgrind-new:0.72s no: 4.5s ( 6.3x, -----) me:11.7s (16.2x, -----) ca:26.5s (36.8x, -----) he:14.5s (20.1x, -----) ca:24.6s (34.1x, -----) dr:20.2s (28.1x, -----) ma: 4.7s ( 6.5x, -----) bz2 valgrind-old:0.72s no: 4.6s ( 6.4x, -1.8%) me:11.8s (16.4x, -1.1%) ca:26.3s (36.6x, 0.6%) he:14.8s (20.5x, -2.0%) ca:24.6s (34.2x, -0.4%) dr:20.3s (28.2x, -0.6%) ma: 4.7s ( 6.5x, 0.2%) -- fbench -- fbench valgrind-new:0.34s no: 2.1s ( 6.2x, -----) me: 5.2s (15.4x, -----) ca: 8.6s (25.1x, -----) he: 5.2s (15.4x, -----) ca: 7.5s (22.1x, -----) dr: 5.0s (14.6x, -----) ma: 2.1s ( 6.3x, -----) fbench valgrind-old:0.34s no: 2.1s ( 6.3x, -0.5%) me: 5.2s (15.4x, -0.6%) ca: 8.6s (25.3x, -0.6%) he: 5.2s (15.4x, -0.2%) ca: 7.5s (22.1x, 0.4%) dr: 4.9s (14.5x, 0.2%) ma: 2.1s ( 6.3x, 0.0%) -- ffbench -- ffbench valgrind-new:0.44s no: 1.3s ( 3.0x, -----) me: 2.5s ( 5.8x, -----) ca: 2.5s ( 5.8x, -----) he: 7.0s (15.9x, -----) ca: 6.9s (15.7x, -----) dr: 5.1s (11.6x, -----) ma: 1.1s ( 2.5x, -----) ffbench valgrind-old:0.44s no: 1.3s ( 3.0x, 0.0%) me: 2.5s ( 5.8x, 0.0%) ca: 2.5s ( 5.8x, 0.4%) he: 7.0s (16.0x, -0.6%) ca: 6.9s (15.6x, 0.3%) dr: 5.1s (11.5x, 0.6%) ma: 1.0s ( 2.3x, 6.5%) -- heap -- heap valgrind-new:0.41s no: 2.5s ( 6.0x, -----) me: 9.7s (23.7x, -----) ca:13.4s (32.8x, -----) he:11.8s (28.7x, -----) ca:12.1s (29.6x, -----) dr: 8.2s (20.0x, -----) ma: 8.7s (21.2x, -----) heap valgrind-old:0.41s no: 2.4s ( 6.0x, 1.2%) me: 9.5s (23.1x, 2.4%) ca:13.5s (33.0x, -0.7%) he:11.7s (28.6x, 0.3%) ca:12.1s (29.5x, 0.2%) dr: 8.6s (21.1x, -5.5%) ma: 8.7s (21.3x, -0.2%) -- heap_pdb4 -- heap_pdb4 valgrind-new:0.43s no: 2.6s ( 6.0x, -----) me:13.6s (31.7x, -----) ca:14.3s (33.4x, -----) he:13.3s (31.0x, -----) ca:13.2s (30.7x, -----) dr: 9.2s (21.3x, -----) ma: 9.0s (20.9x, -----) heap_pdb4 valgrind-old:0.43s no: 2.6s ( 6.1x, -2.0%) me:13.8s (32.0x, -1.2%) ca:14.5s (33.7x, -1.1%) he:13.1s (30.4x, 1.9%) ca:13.1s (30.5x, 0.5%) dr: 9.3s (21.7x, -1.6%) ma: 8.9s (20.7x, 0.6%) -- many-loss-records -- many-loss-records valgrind-new:0.03s no: 0.5s (17.3x, -----) me: 2.1s (71.7x, -----) ca: 1.9s (64.0x, -----) he: 1.8s (60.0x, -----) ca: 1.9s (62.0x, -----) dr: 1.5s (51.3x, -----) ma: 1.6s (54.3x, -----) many-loss-records valgrind-old:0.03s no: 0.5s (18.0x, -3.8%) me: 2.1s (71.3x, 0.5%) ca: 1.9s (63.7x, 0.5%) he: 1.8s (60.0x, 0.0%) ca: 1.9s (61.7x, 0.5%) dr: 1.6s (53.0x, -3.2%) ma: 1.6s (53.0x, 2.5%) -- many-xpts -- many-xpts valgrind-new:0.06s no: 0.7s (12.3x, -----) me: 3.4s (56.0x, -----) ca: 4.7s (79.0x, -----) he: 4.8s (80.3x, -----) ca: 2.9s (47.8x, -----) dr: 2.3s (37.8x, -----) ma: 2.4s (39.7x, -----) many-xpts valgrind-old:0.06s no: 0.7s (12.3x, 0.0%) me: 3.3s (55.7x, 0.6%) ca: 4.8s (79.3x, -0.4%) he: 4.8s (80.0x, 0.4%) ca: 2.9s (48.3x, -1.0%) dr: 2.3s (38.8x, -2.6%) ma: 2.3s (37.8x, 4.6%) -- sarp -- sarp valgrind-new:0.02s no: 0.4s (19.5x, -----) me: 3.2s (159.0x, -----) ca: 2.9s (146.5x, -----) he:11.0s (548.5x, -----) ca: 1.9s (94.5x, -----) dr: 1.1s (53.5x, -----) ma: 0.4s (21.0x, -----) sarp valgrind-old:0.02s no: 0.4s (19.5x, 0.0%) me: 3.2s (162.5x, -2.2%) ca: 3.0s (148.5x, -1.4%) he:11.0s (548.5x, 0.0%) ca: 1.8s (87.5x, 7.4%) dr: 1.1s (55.0x, -2.8%) ma: 0.4s (21.0x, 0.0%) -- tinycc -- tinycc valgrind-new:0.27s no: 3.0s (11.0x, -----) me:14.1s (52.1x, -----) ca:17.6s (65.1x, -----) he:19.0s (70.3x, -----) ca:15.8s (58.5x, -----) dr:12.4s (45.9x, -----) ma: 3.8s (14.1x, -----) tinycc valgrind-old:0.27s no: 3.0s (11.0x, 0.0%) me:14.0s (51.8x, 0.6%) ca:17.6s (65.1x, 0.1%) he:18.9s (70.1x, 0.2%) ca:15.7s (58.3x, 0.4%) dr:12.5s (46.4x, -1.0%) ma: 3.8s (14.1x, 0.0%) -- Finished tests in perf ---------------------------------------------- == 11 programs, 154 timings ================= real 54m4.786s user 52m31.376s sys 0m21.012s |
|
From: Christian B. <bor...@de...> - 2014-04-19 04:12:42
|
valgrind revision: 13897 VEX revision: 2848 C compiler: gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973] GDB: GNU gdb (GDB) SUSE (7.5.1-0.7.29) Assembler: GNU assembler (GNU Binutils; SUSE Linux Enterprise 11) 2.23.1 C library: GNU C Library stable release version 2.11.3 (20110527) uname -mrs: Linux 3.0.101-0.15-default s390x Vendor version: Welcome to SUSE Linux Enterprise Server 11 SP3 (s390x) - Kernel %r (%t). Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP3 gcc 4.3.4 on z196 (s390x) ) Started at 2014-04-19 03:45:01 CEST Ended at 2014-04-19 06:12:31 CEST 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 == 644 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/pth_cond_destroy_busy (stderr) --tools=none,memcheck,callgrind,helgrind,cachegrind,drd,massif --reps=3 --vg=../valgrind-new --vg=../valgrind-old -- Running tests in perf ---------------------------------------------- -- bigcode1 -- bigcode1 valgrind-new:0.23s no: 4.3s (18.7x, -----) me: 6.8s (29.3x, -----) ca:26.5s (115.3x, -----) he: 5.1s (22.1x, -----) ca: 9.1s (39.6x, -----) dr: 5.5s (23.9x, -----) ma: 4.7s (20.4x, -----) bigcode1 valgrind-old:0.23s no: 4.3s (18.7x, 0.0%) me: 6.8s (29.3x, 0.0%) ca:26.4s (114.8x, 0.5%) he: 5.1s (22.0x, 0.2%) ca: 9.1s (39.7x, -0.2%) dr: 5.5s (23.8x, 0.2%) ma: 4.7s (20.5x, -0.2%) -- bigcode2 -- bigcode2 valgrind-new:0.24s no: 7.3s (30.3x, -----) me:13.7s (57.1x, -----) ca:39.8s (165.7x, -----) he:10.1s (42.1x, -----) ca:14.2s (59.0x, -----) dr: 9.6s (40.1x, -----) ma: 8.1s (33.8x, -----) bigcode2 valgrind-old:0.24s no: 7.2s (30.2x, 0.4%) me:13.7s (57.0x, 0.2%) ca:39.5s (164.6x, 0.7%) he:10.1s (42.0x, 0.1%) ca:14.2s (59.3x, -0.4%) dr: 9.6s (40.0x, 0.2%) ma: 8.1s (33.9x, -0.4%) -- bz2 -- bz2 valgrind-new:0.70s no: 5.0s ( 7.1x, -----) me:13.2s (18.8x, -----) ca:30.8s (44.0x, -----) he:19.5s (27.9x, -----) ca:34.2s (48.9x, -----) dr:32.1s (45.9x, -----) ma: 3.6s ( 5.2x, -----) bz2 valgrind-old:0.70s no: 5.0s ( 7.1x, 0.2%) me:13.2s (18.9x, -0.2%) ca:30.7s (43.9x, 0.3%) he:19.6s (28.0x, -0.6%) ca:34.3s (49.0x, -0.1%) dr:29.4s (42.0x, 8.4%) ma: 3.6s ( 5.2x, 0.0%) -- fbench -- fbench valgrind-new:0.41s no: 1.6s ( 3.9x, -----) me: 4.2s (10.3x, -----) ca: 9.3s (22.8x, -----) he: 6.1s (15.0x, -----) ca: 7.2s (17.6x, -----) dr: 5.7s (13.9x, -----) ma: 1.7s ( 4.1x, -----) fbench valgrind-old:0.41s no: 1.6s ( 3.9x, -0.6%) me: 4.2s (10.4x, -0.2%) ca: 9.2s (22.6x, 1.0%) he: 6.1s (15.0x, 0.0%) ca: 7.2s (17.6x, 0.0%) dr: 5.4s (13.2x, 4.7%) ma: 1.7s ( 4.1x, -0.0%) -- ffbench -- ffbench valgrind-new:0.21s no: 1.1s ( 5.0x, -----) me: 3.1s (14.9x, -----) ca: 3.1s (14.6x, -----) he:44.7s (212.8x, -----) ca: 9.6s (45.9x, -----) dr: 7.0s (33.1x, -----) ma: 1.0s ( 4.6x, -----) ffbench valgrind-old:0.21s no: 1.0s ( 5.0x, 1.9%) me: 3.1s (14.8x, 0.6%) ca: 3.0s (14.5x, 0.7%) he:43.7s (207.9x, 2.3%) ca: 9.6s (45.9x, 0.1%) dr: 6.8s (32.5x, 2.0%) ma: 1.0s ( 4.6x, 0.0%) -- heap -- heap valgrind-new:0.23s no: 1.8s ( 7.7x, -----) me: 8.7s (38.0x, -----) ca:13.3s (57.7x, -----) he:12.7s (55.2x, -----) ca:11.2s (48.9x, -----) dr: 8.3s (36.0x, -----) ma: 8.2s (35.7x, -----) heap valgrind-old:0.23s no: 1.8s ( 7.7x, 0.0%) me: 9.0s (39.0x, -2.7%) ca:13.2s (57.3x, 0.6%) he:12.8s (55.5x, -0.6%) ca:11.2s (48.8x, 0.2%) dr: 8.3s (35.9x, 0.2%) ma: 7.8s (34.0x, 4.7%) -- heap_pdb4 -- heap_pdb4 valgrind-new:0.22s no: 2.0s ( 8.9x, -----) me:13.0s (58.9x, -----) ca:14.3s (65.0x, -----) he:14.1s (64.3x, -----) ca:12.4s (56.4x, -----) dr: 9.0s (41.0x, -----) ma: 8.6s (39.0x, -----) heap_pdb4 valgrind-old:0.22s no: 2.0s ( 8.9x, 0.0%) me:13.2s (60.1x, -2.0%) ca:14.2s (64.7x, 0.4%) he:14.2s (64.5x, -0.3%) ca:12.4s (56.3x, 0.1%) dr: 9.6s (43.7x, -6.5%) ma: 7.9s (35.9x, 7.9%) -- many-loss-records -- many-loss-records valgrind-new:0.02s no: 0.5s (23.5x, -----) me: 2.1s (103.5x, -----) ca: 1.9s (97.0x, -----) he: 2.1s (107.0x, -----) ca: 1.9s (95.5x, -----) dr: 1.8s (89.5x, -----) ma: 1.7s (85.0x, -----) many-loss-records valgrind-old:0.02s no: 0.5s (23.5x, 0.0%) me: 2.1s (105.0x, -1.4%) ca: 1.9s (96.5x, 0.5%) he: 2.2s (108.0x, -0.9%) ca: 1.9s (95.5x, 0.0%) dr: 1.9s (93.0x, -3.9%) ma: 1.7s (84.0x, 1.2%) -- many-xpts -- many-xpts valgrind-new:0.07s no: 0.6s ( 8.6x, -----) me: 3.2s (45.3x, -----) ca:373.8s (5339.7x, -----) he: 6.5s (92.7x, -----) ca: 2.8s (40.0x, -----) dr: 2.6s (37.7x, -----) ma: 2.7s (38.3x, -----) many-xpts valgrind-old:0.07s no: 0.6s ( 8.6x, 0.0%) me: 3.2s (45.7x, -0.9%) ca:375.6s (5365.0x, -0.5%) he: 6.6s (93.7x, -1.1%) ca: 2.8s (39.9x, 0.4%) dr: 2.7s (38.7x, -2.7%) ma: 2.6s (37.1x, 3.0%) -- sarp -- sarp valgrind-new:0.03s no: 0.6s (18.7x, -----) me: 3.9s (130.0x, -----) ca: 3.2s (106.7x, -----) he:16.6s (552.3x, -----) ca: 2.0s (68.3x, -----) dr: 1.6s (52.7x, -----) ma: 0.5s (16.3x, -----) sarp valgrind-old:0.03s no: 0.6s (19.0x, -1.8%) me: 3.9s (130.3x, -0.3%) ca: 3.2s (108.0x, -1.2%) he:17.1s (570.0x, -3.2%) ca: 2.0s (68.3x, 0.0%) dr: 1.6s (52.7x, 0.0%) ma: 0.5s (16.3x, 0.0%) -- tinycc -- tinycc valgrind-new:0.22s no: 2.7s (12.1x, -----) me:14.9s (67.8x, -----) ca:30.0s (136.4x, -----) he:27.7s (126.0x, -----) ca:21.3s (96.9x, -----) dr:22.3s (101.5x, -----) ma: 4.0s (18.1x, -----) tinycc valgrind-old:0.22s no: 2.7s (12.1x, 0.0%) me:14.9s (67.8x, 0.0%) ca:29.9s (135.9x, 0.4%) he:27.6s (125.6x, 0.3%) ca:21.4s (97.1x, -0.2%) dr:20.1s (91.6x, 9.7%) ma: 4.0s (18.1x, 0.3%) -- Finished tests in perf ---------------------------------------------- == 11 programs, 154 timings ================= real 111m5.115s user 110m31.045s sys 0m29.485s |
|
From: Tom H. <to...@co...> - 2014-04-19 03:25:18
|
valgrind revision: 13897 VEX revision: 2848 C compiler: gcc (GCC) 4.3.0 20080428 (Red Hat 4.3.0-8) GDB: Assembler: GNU assembler version 2.18.50.0.6-2 20080403 C library: GNU C Library stable release version 2.8 uname -mrs: Linux 3.13.8-200.fc20.x86_64 x86_64 Vendor version: Fedora release 9 (Sulphur) Nightly build on bristol ( x86_64, Fedora 9 ) Started at 2014-04-19 03:51:15 BST Ended at 2014-04-19 04:24:58 BST 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 == 646 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/amd64/insn-pcmpistri (stderr) none/tests/amd64/sse4-64 (stdout) |
|
From: Rich C. <rc...@wi...> - 2014-04-19 03:00:42
|
valgrind revision: 13897 VEX revision: 2848 C compiler: gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012] GDB: GNU gdb (GDB) SUSE (7.5.1-2.1.1) Assembler: GNU assembler (GNU Binutils; openSUSE 12.3) 2.23.1 C library: GNU C Library (GNU libc) stable release version 2.17 (git c758a6861537) uname -mrs: Linux 3.7.9-1.1-desktop x86_64 Vendor version: Welcome to openSUSE 12.3 "Dartmouth" Beta 1 - Kernel %r (%t). Nightly build on ultra ( gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012] Linux 3.7.9-1.1-desktop x86_64 ) Started at 2014-04-18 21:30:01 CDT Ended at 2014-04-18 22:00:32 CDT 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 == 668 tests, 0 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures == gdbserver_tests/mssnapshot (stderrB) ================================================= ./valgrind-new/gdbserver_tests/mssnapshot.stderrB.diff ================================================= --- mssnapshot.stderrB.exp 2014-04-18 21:45:47.467637786 -0500 +++ mssnapshot.stderrB.out 2014-04-18 21:49:32.258230270 -0500 @@ -1,5 +1,11 @@ relaying data between gdb and process .... +Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2 +Try: zypper install -C "debuginfo(build-id)=ecb8ef1a6904a2a3ec60a527f415f520c8636158" vgdb-error value changed from 0 to 999999 +Missing separate debuginfo for /lib64/libpthread.so.0 +Try: zypper install -C "debuginfo(build-id)=ef5f5dbcb2398c608fef7884e1bfb65be3b5f0ef" +Missing separate debuginfo for /lib64/libc.so.6 +Try: zypper install -C "debuginfo(build-id)=bd1473e8e6a4c10a14731b5be4b35b4e87db2af7" general valgrind monitor commands: help [debug] : monitor command help. With debug: + debugging commands v.wait [<ms>] : sleep <ms> (default 0) then continue ================================================= ./valgrind-old/gdbserver_tests/mssnapshot.stderrB.diff ================================================= --- mssnapshot.stderrB.exp 2014-04-18 21:30:35.699634564 -0500 +++ mssnapshot.stderrB.out 2014-04-18 21:34:27.268022741 -0500 @@ -1,5 +1,11 @@ relaying data between gdb and process .... +Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2 +Try: zypper install -C "debuginfo(build-id)=ecb8ef1a6904a2a3ec60a527f415f520c8636158" vgdb-error value changed from 0 to 999999 +Missing separate debuginfo for /lib64/libpthread.so.0 +Try: zypper install -C "debuginfo(build-id)=ef5f5dbcb2398c608fef7884e1bfb65be3b5f0ef" +Missing separate debuginfo for /lib64/libc.so.6 +Try: zypper install -C "debuginfo(build-id)=bd1473e8e6a4c10a14731b5be4b35b4e87db2af7" general valgrind monitor commands: help [debug] : monitor command help. With debug: + debugging commands v.wait [<ms>] : sleep <ms> (default 0) then continue |
|
From: Tom H. <to...@co...> - 2014-04-19 02:49:49
|
valgrind revision: 13897 VEX revision: 2848 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) GDB: GNU gdb (GDB) Fedora (7.3.1-48.fc15) Assembler: GNU assembler version 2.21.51.0.6-6.fc15 20110118 C library: GNU C Library stable release version 2.14.1 uname -mrs: Linux 3.13.8-200.fc20.x86_64 x86_64 Vendor version: Fedora release 15 (Lovelock) Nightly build on bristol ( x86_64, Fedora 15 ) Started at 2014-04-19 03:13:59 BST Ended at 2014-04-19 03:49:38 BST 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 == 675 tests, 0 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == |
|
From: Tom H. <to...@co...> - 2014-04-19 02:41:28
|
valgrind revision: 13897 VEX revision: 2848 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) GDB: GNU gdb (GDB) Fedora (7.3.50.20110722-16.fc16) Assembler: GNU assembler version 2.21.53.0.1-6.fc16 20110716 C library: GNU C Library development release version 2.14.90 uname -mrs: Linux 3.13.8-200.fc20.x86_64 x86_64 Vendor version: Fedora release 16 (Verne) Nightly build on bristol ( x86_64, Fedora 16 ) Started at 2014-04-19 03:02:54 BST Ended at 2014-04-19 03:41:16 BST 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 == 675 tests, 0 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == |
|
From: Tom H. <to...@co...> - 2014-04-19 02:33:50
|
valgrind revision: 13897 VEX revision: 2848 C compiler: gcc (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2) GDB: GNU gdb (GDB) Fedora (7.4.50.20120120-54.fc17) Assembler: GNU assembler version 2.22.52.0.1-10.fc17 20120131 C library: GNU C Library stable release version 2.15 uname -mrs: Linux 3.13.8-200.fc20.x86_64 x86_64 Vendor version: Fedora release 17 (Beefy Miracle) Nightly build on bristol ( x86_64, Fedora 17 (Beefy Miracle) ) Started at 2014-04-19 02:51:03 BST Ended at 2014-04-19 03:33:38 BST 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 == 675 tests, 4 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) gdbserver_tests/mcmain_pic (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) |
|
From: Tom H. <to...@co...> - 2014-04-19 02:22:03
|
valgrind revision: 13897 VEX revision: 2848 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) GDB: GNU gdb (GDB) Fedora 7.5.1-42.fc18 Assembler: GNU assembler version 2.23.51.0.1-10.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.13.8-200.fc20.x86_64 x86_64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on bristol ( x86_64, Fedora 18 (Spherical Cow) ) Started at 2014-04-19 02:41:12 BST Ended at 2014-04-19 03:21:48 BST 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 == 675 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) |
|
From: Tom H. <to...@co...> - 2014-04-19 02:16:59
|
valgrind revision: 13897 VEX revision: 2848 C compiler: gcc (GCC) 4.8.2 20131212 (Red Hat 4.8.2-7) GDB: GNU gdb (GDB) Fedora 7.6.1-46.fc19 Assembler: GNU assembler version 2.23.52.0.1-9.fc19 20130226 C library: GNU C Library (GNU libc) stable release version 2.17 uname -mrs: Linux 3.13.8-200.fc20.x86_64 x86_64 Vendor version: Fedora release 19 (Schrödingerâs Cat) Nightly build on bristol ( x86_64, Fedora 19 (Schrödingerâs Cat) ) Started at 2014-04-19 02:31:29 BST Ended at 2014-04-19 03:16:45 BST 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 == 675 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == exp-sgcheck/tests/hackedbz2 (stderr) |
|
From: <sv...@va...> - 2014-04-19 00:26:09
|
Author: philippe
Date: Sat Apr 19 00:25:54 2014
New Revision: 13897
Log:
Several improvements to (internal) statistics reporting about memory usage,
making it easier to understand the memory and/or oom situation.
No functional (user level) change.
* For --profile-heap=yes, sort the cost centers by decreasing size,
so that the most relevant cost centers are closed to the arena
total.
* factorise duplicated code calling a series of print stat functions
* VG_(show_sched_status)
optionally show the host stacktrace
the amount of valgrind stack used by each thread
the exited threads
* various functions: update to add VG_(show_sched_status) new
args, keeping the same info production as before.
* In case of out of memory situation detected by m_mallocfree.c,
reports more information:
valgrind and tool stats
scheduler status (full information)
* gdbserver v.info scheduler :
show full information.
The oom behaviour/reporting was tested using a small
program causing an OOM, and having several threads
(some terminated, some still active).
Modified:
trunk/coregrind/m_gdbserver/server.c
trunk/coregrind/m_libcassert.c
trunk/coregrind/m_main.c
trunk/coregrind/m_mallocfree.c
trunk/coregrind/m_scheduler/scheduler.c
trunk/coregrind/pub_core_libcassert.h
trunk/docs/xml/manual-core-adv.xml
trunk/include/pub_tool_gdbserver.h
Modified: trunk/coregrind/m_gdbserver/server.c
==============================================================================
--- trunk/coregrind/m_gdbserver/server.c (original)
+++ trunk/coregrind/m_gdbserver/server.c Sat Apr 19 00:25:54 2014
@@ -148,6 +148,30 @@
return s;
}
+void VG_(print_all_stats) (Bool memory_stats, Bool tool_stats)
+{
+ if (memory_stats) {
+ VG_(message)(Vg_DebugMsg, "\n");
+ VG_(message)(Vg_DebugMsg,
+ "------ Valgrind's internal memory use stats follow ------\n" );
+ VG_(sanity_check_malloc_all)();
+ VG_(message)(Vg_DebugMsg, "------\n" );
+ VG_(print_all_arena_stats)();
+ if (VG_(clo_profile_heap))
+ VG_(print_arena_cc_analysis) ();
+ VG_(message)(Vg_DebugMsg, "\n");
+ }
+
+ VG_(print_translation_stats)();
+ VG_(print_tt_tc_stats)();
+ VG_(print_scheduler_stats)();
+ VG_(print_ExeContext_stats)( False /* with_stacktraces */ );
+ VG_(print_errormgr_stats)();
+ if (tool_stats && VG_(needs).print_stats) {
+ VG_TDICT_CALL(tool_print_stats);
+ }
+}
+
/* handle_gdb_valgrind_command handles the provided mon string command.
If command is recognised, return 1 else return 0.
Note that in case of ambiguous command, 1 is returned.
@@ -333,18 +357,14 @@
ret = 1;
break;
case 5: /* scheduler */
- VG_(show_sched_status) ();
+ VG_(show_sched_status) (True, // host_stacktrace
+ True, // valgrind_stack_usage
+ True); // exited_threads
ret = 1;
break;
case 6: /* stats */
- VG_(print_translation_stats)();
- VG_(print_tt_tc_stats)();
- VG_(print_scheduler_stats)();
- VG_(print_ExeContext_stats)( False /* with_stacktraces */ );
- VG_(print_errormgr_stats)();
- if (VG_(needs).print_stats) {
- VG_TDICT_CALL(tool_print_stats);
- }
+ VG_(print_all_stats)(False, /* Memory stats */
+ True /* Tool stats */);
ret = 1;
break;
case 7: /* open_fds */
Modified: trunk/coregrind/m_libcassert.c
==============================================================================
--- trunk/coregrind/m_libcassert.c (original)
+++ trunk/coregrind/m_libcassert.c Sat Apr 19 00:25:54 2014
@@ -33,6 +33,7 @@
#include "pub_core_vkiscnums.h"
#include "pub_core_libcsetjmp.h" // to keep threadstate.h happy
#include "pub_core_threadstate.h"
+#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
#include "pub_core_libcassert.h"
#include "pub_core_libcprint.h"
@@ -245,56 +246,89 @@
}
// Print the scheduler status.
-void VG_(show_sched_status) ( void )
+static void show_sched_status_wrk ( Bool host_stacktrace,
+ Bool valgrind_stack_usage,
+ Bool exited_threads,
+ UnwindStartRegs* startRegsIN)
{
Int i;
+ if (host_stacktrace) {
+ const Bool save_clo_xml = VG_(clo_xml);
+ Addr stacktop;
+ Addr ips[BACKTRACE_DEPTH];
+ Int n_ips;
+ ThreadState *tst
+ = VG_(get_ThreadState)( VG_(lwpid_to_vgtid)( VG_(gettid)() ) );
+
+ // If necessary, fake up an ExeContext which is of our actual real CPU
+ // state. Could cause problems if we got the panic/exception within the
+ // execontext/stack dump/symtab code. But it's better than nothing.
+ UnwindStartRegs startRegs;
+ VG_(memset)(&startRegs, 0, sizeof(startRegs));
+
+ if (startRegsIN == NULL) {
+ GET_STARTREGS(&startRegs);
+ } else {
+ startRegs = *startRegsIN;
+ }
+
+ stacktop = tst->os_state.valgrind_stack_init_SP;
+
+ n_ips =
+ VG_(get_StackTrace_wrk)(
+ 0/*tid is unknown*/,
+ ips, BACKTRACE_DEPTH,
+ NULL/*array to dump SP values in*/,
+ NULL/*array to dump FP values in*/,
+ &startRegs, stacktop
+ );
+ VG_(printf)("\nhost stacktrace:\n");
+ VG_(clo_xml) = False;
+ VG_(pp_StackTrace) (ips, n_ips);
+ VG_(clo_xml) = save_clo_xml;
+ }
+
VG_(printf)("\nsched status:\n");
VG_(printf)(" running_tid=%d\n", VG_(get_running_tid)());
for (i = 1; i < VG_N_THREADS; i++) {
- if (VG_(threads)[i].status == VgTs_Empty) continue;
- VG_(printf)( "\nThread %d: status = %s\n", i,
- VG_(name_of_ThreadStatus)(VG_(threads)[i].status) );
- VG_(get_and_pp_StackTrace)( i, BACKTRACE_DEPTH );
+ VgStack* stack
+ = (VgStack*)VG_(threads)[i].os_state.valgrind_stack_base;
+ /* If a thread slot was never used (yet), valgrind_stack_base is 0.
+ If a thread slot is used by a thread or was used by a thread which
+ has exited, then valgrind_stack_base points to the stack base. */
+ if (VG_(threads)[i].status == VgTs_Empty
+ && (!exited_threads || stack == 0)) continue;
+ VG_(printf)("\nThread %d: status = %s\n", i,
+ VG_(name_of_ThreadStatus)(VG_(threads)[i].status) );
+ if (VG_(threads)[i].status != VgTs_Empty)
+ VG_(get_and_pp_StackTrace)( i, BACKTRACE_DEPTH );
+ if (valgrind_stack_usage && stack != 0)
+ VG_(printf)("valgrind stack top usage: %ld of %ld\n",
+ VG_STACK_ACTIVE_SZB
+ - VG_(am_get_VgStack_unused_szB)(stack, VG_STACK_ACTIVE_SZB),
+ (SizeT) VG_STACK_ACTIVE_SZB);
}
VG_(printf)("\n");
}
+void VG_(show_sched_status) ( Bool host_stacktrace,
+ Bool valgrind_stack_usage,
+ Bool exited_threads)
+{
+ show_sched_status_wrk (host_stacktrace,
+ valgrind_stack_usage,
+ exited_threads,
+ NULL);
+}
+
__attribute__ ((noreturn))
static void report_and_quit ( const HChar* report,
UnwindStartRegs* startRegsIN )
{
- Addr stacktop;
- Addr ips[BACKTRACE_DEPTH];
- Int n_ips;
- ThreadState *tst
- = VG_(get_ThreadState)( VG_(lwpid_to_vgtid)( VG_(gettid)() ) );
-
- // If necessary, fake up an ExeContext which is of our actual real CPU
- // state. Could cause problems if we got the panic/exception within the
- // execontext/stack dump/symtab code. But it's better than nothing.
- UnwindStartRegs startRegs;
- VG_(memset)(&startRegs, 0, sizeof(startRegs));
-
- if (startRegsIN == NULL) {
- GET_STARTREGS(&startRegs);
- } else {
- startRegs = *startRegsIN;
- }
-
- stacktop = tst->os_state.valgrind_stack_init_SP;
-
- n_ips =
- VG_(get_StackTrace_wrk)(
- 0/*tid is unknown*/,
- ips, BACKTRACE_DEPTH,
- NULL/*array to dump SP values in*/,
- NULL/*array to dump FP values in*/,
- &startRegs, stacktop
- );
- VG_(clo_xml) = False;
- VG_(pp_StackTrace) (ips, n_ips);
-
- VG_(show_sched_status)();
+ show_sched_status_wrk (True, // host_stacktrace
+ False, // valgrind_stack_usage
+ False, // exited_threads
+ startRegsIN);
VG_(printf)(
"\n"
"Note: see also the FAQ in the source distribution.\n"
@@ -402,7 +436,9 @@
VG_(umsg)("\n");
VG_(umsg)("Valgrind has to exit now. Sorry. Bye!\n");
VG_(umsg)("\n");
- VG_(show_sched_status)();
+ VG_(show_sched_status)(False, // host_stacktrace
+ False, // valgrind_stack_usage
+ False); // exited_threads
VG_(exit)(1);
}
Modified: trunk/coregrind/m_main.c
==============================================================================
--- trunk/coregrind/m_main.c (original)
+++ trunk/coregrind/m_main.c Sat Apr 19 00:25:54 2014
@@ -73,31 +73,6 @@
/*====================================================================*/
-/*=== Counters, for profiling purposes only ===*/
-/*====================================================================*/
-
-static void print_all_stats ( void )
-{
- VG_(print_translation_stats)();
- VG_(print_tt_tc_stats)();
- VG_(print_scheduler_stats)();
- VG_(print_ExeContext_stats)( False /* with_stacktraces */ );
- VG_(print_errormgr_stats)();
-
- // Memory stats
- if (VG_(clo_verbosity) > 2) {
- VG_(message)(Vg_DebugMsg, "\n");
- VG_(message)(Vg_DebugMsg,
- "------ Valgrind's internal memory use stats follow ------\n" );
- VG_(sanity_check_malloc_all)();
- VG_(message)(Vg_DebugMsg, "------\n" );
- VG_(print_all_arena_stats)();
- VG_(message)(Vg_DebugMsg, "\n");
- }
-}
-
-
-/*====================================================================*/
/*=== Command-line: variables, processing, etc ===*/
/*====================================================================*/
@@ -2489,7 +2464,8 @@
VG_(sanity_check_general)( True /*include expensive checks*/ );
if (VG_(clo_stats))
- print_all_stats();
+ VG_(print_all_stats)(VG_(clo_verbosity) > 2, /* Memory stats */
+ False /* tool prints stats in the tool fini */);
/* Show a profile of the heap(s) at shutdown. Optionally, first
throw away all the debug info, as that makes it easy to spot
Modified: trunk/coregrind/m_mallocfree.c
==============================================================================
--- trunk/coregrind/m_mallocfree.c (original)
+++ trunk/coregrind/m_mallocfree.c Sat Apr 19 00:25:54 2014
@@ -40,6 +40,7 @@
#include "pub_core_options.h"
#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h" // For VG_INVALID_THREADID
+#include "pub_core_gdbserver.h"
#include "pub_core_transtab.h"
#include "pub_core_tooliface.h"
@@ -742,11 +743,18 @@
if (outputTrial <= 1) {
if (outputTrial == 0) {
outputTrial++;
+ // First print the memory stats with the aspacemgr data.
VG_(am_show_nsegments) (0, "out_of_memory");
VG_(print_all_arena_stats) ();
if (VG_(clo_profile_heap))
VG_(print_arena_cc_analysis) ();
- /* In case we are an inner valgrind, asks the outer to report
+ // And then print some other information that might help.
+ VG_(print_all_stats) (False, /* Memory stats */
+ True /* Tool stats */);
+ VG_(show_sched_status) (True, // host_stacktrace
+ True, // valgrind_stack_usage
+ True); // exited_threads
+ /* In case we are an inner valgrind, asks the outer to report
its memory state in its log output. */
INNER_REQUEST(VALGRIND_MONITOR_COMMAND("v.set log_output"));
INNER_REQUEST(VALGRIND_MONITOR_COMMAND("v.info memory aspacemgr"));
@@ -1289,11 +1297,13 @@
static AnCC anCCs[N_AN_CCS];
+/* Sorting by decreasing cost center nBytes, to have the biggest
+ cost centres at the top. */
static Int cmp_AnCC_by_vol ( const void* v1, const void* v2 ) {
const AnCC* ancc1 = v1;
const AnCC* ancc2 = v2;
- if (ancc1->nBytes < ancc2->nBytes) return -1;
- if (ancc1->nBytes > ancc2->nBytes) return 1;
+ if (ancc1->nBytes < ancc2->nBytes) return 1;
+ if (ancc1->nBytes > ancc2->nBytes) return -1;
return 0;
}
Modified: trunk/coregrind/m_scheduler/scheduler.c
==============================================================================
--- trunk/coregrind/m_scheduler/scheduler.c (original)
+++ trunk/coregrind/m_scheduler/scheduler.c Sat Apr 19 00:25:54 2014
@@ -2101,7 +2101,9 @@
lasttime = now;
VG_(printf)("\n------------ Sched State at %d ms ------------\n",
(Int)now);
- VG_(show_sched_status)();
+ VG_(show_sched_status)(True, // host_stacktrace
+ True, // valgrind_stack_usage
+ True); // exited_threads);
}
}
Modified: trunk/coregrind/pub_core_libcassert.h
==============================================================================
--- trunk/coregrind/pub_core_libcassert.h (original)
+++ trunk/coregrind/pub_core_libcassert.h Sat Apr 19 00:25:54 2014
@@ -71,8 +71,17 @@
extern void VG_(unimplemented) ( const HChar* msg )
__attribute__((__noreturn__));
-/* Show the state of all threads. Mostly for debugging V. */
-extern void VG_(show_sched_status) ( void );
+/* Show the state of various threads related information, such
+ as the guest stacktrace for each thread.
+ Mostly for debugging V.
+ The following activates optional output:
+ host_stacktrace : shows the host stacktrace.
+ valgrind_stack_usage : shows how much of the valgrind stack was used.
+ exited_thread_slots : show information for thread slots that were used
+ but the thread has now exited. */
+extern void VG_(show_sched_status) ( Bool host_stacktrace,
+ Bool valgrind_stack_usage,
+ Bool exited_threads);
#endif // __PUB_CORE_LIBCASSERT_H
Modified: trunk/docs/xml/manual-core-adv.xml
==============================================================================
--- trunk/docs/xml/manual-core-adv.xml (original)
+++ trunk/docs/xml/manual-core-adv.xml Sat Apr 19 00:25:54 2014
@@ -1418,18 +1418,24 @@
</listitem>
<listitem>
- <para><varname>v.info scheduler</varname> shows the state and
- stack trace for all threads, as known by Valgrind. This allows to
- compare the stack traces produced by the Valgrind unwinder with
- the stack traces produced by GDB+Valgrind gdbserver. Pay attention
- that GDB and Valgrind scheduler status have their own thread
- numbering scheme. To make the link between the GDB thread
- number and the corresponding Valgrind scheduler thread number,
- use the GDB command <computeroutput>info
- threads</computeroutput>. The output of this command shows the
- GDB thread number and the valgrind 'tid'. The 'tid' is the thread number
- output by <computeroutput>v.info scheduler</computeroutput>.
- When using the callgrind tool, the callgrind monitor command
+ <para><varname>v.info scheduler</varname> shows various
+ information about threads. First, it outputs the host stack trace,
+ i.e. the Valgrind code being executed. Then, for each thread, it
+ outputs the thread state. For non terminated threads, the state is
+ followed by the guest (client) stack trace. Finally, for each
+ active thread or for each terminated thread slot not yet re-used,
+ it shows the max usage of the valgrind stack.</para>
+ <para>Showing the client stack traces allows to compare the stack
+ traces produced by the Valgrind unwinder with the stack traces
+ produced by GDB+Valgrind gdbserver. Pay attention that GDB and
+ Valgrind scheduler status have their own thread numbering
+ scheme. To make the link between the GDB thread number and the
+ corresponding Valgrind scheduler thread number, use the GDB
+ command <computeroutput>info threads</computeroutput>. The output
+ of this command shows the GDB thread number and the valgrind
+ 'tid'. The 'tid' is the thread number output
+ by <computeroutput>v.info scheduler</computeroutput>. When using
+ the callgrind tool, the callgrind monitor command
<computeroutput>status</computeroutput> outputs internal callgrind
information about the stack/call graph it maintains.
</para>
Modified: trunk/include/pub_tool_gdbserver.h
==============================================================================
--- trunk/include/pub_tool_gdbserver.h (original)
+++ trunk/include/pub_tool_gdbserver.h Sat Apr 19 00:25:54 2014
@@ -186,6 +186,10 @@
SizeT* szB,
HChar **ssaveptr);
+/* Print various statistics about Valgrind core,
+ and optionally tool and memory statistics. */
+extern void VG_(print_all_stats) (Bool memory_stats, Bool tool_stats);
+
#endif // __PUB_TOOL_GDBSERVER_H
/*--------------------------------------------------------------------*/
|