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
|
2
|
3
|
4
|
|
5
(2) |
6
|
7
(1) |
8
(1) |
9
|
10
(1) |
11
|
|
12
(3) |
13
(3) |
14
(3) |
15
(4) |
16
(3) |
17
|
18
(3) |
|
19
(1) |
20
(1) |
21
(3) |
22
|
23
|
24
(1) |
25
(3) |
|
26
|
27
(2) |
28
(10) |
29
|
30
(2) |
31
(2) |
|
|
From: Philippe W. <phi...@sk...> - 2019-05-18 15:10:32
|
On Thu, 2019-05-16 at 07:34 -0700, John Reiser wrote:
> The original poster has a point: --leak-check=full has a run-time cost,
> and the intent of --leak-check=no is to avoid that cost as much as
> possible. On a medium-to-large size program, just the presentation
> of the leak report can take several seconds, not even counting the cost
> of the [logical] garbage collection to compute the leak status,
> or possibly any per-allocation cost to preserve enough data to compute leaks.
> If the garbage collection involves demand paging using backing storage,
> then the cost can be large. An explicit --leak-check=no should
> override compiled-in assumptions about how much --xml-file= contains.
The below patch implements the idea that an explicit --leak-check overrides
the --leak-check=full default when --xml=yes is given.
Before pushing this to HEAD, I would however prefer to have some feedback
(e.g. from Julian) about this.
Philippe
diff --git a/NEWS b/NEWS
index ba0f1285b..53038936c 100644
--- a/NEWS
+++ b/NEWS
@@ -24,6 +24,9 @@ support for X86/macOS 10.13 and AMD64/macOS 10.13.
* Massif:
* Memcheck:
+ - The option --xml=yes used to unconditionally set --leak-check=full.
+ Now, when --xml=yes, --leck-check=full is used only if the user did
+ not explicitely give a --leak-check value.
* ==================== OTHER CHANGES ====================
diff --git a/memcheck/docs/mc-manual.xml b/memcheck/docs/mc-manual.xml
index a993479a9..24a9c7fcc 100644
--- a/memcheck/docs/mc-manual.xml
+++ b/memcheck/docs/mc-manual.xml
@@ -747,6 +747,8 @@ is <option>--errors-for-leak-kinds=definite,possible</option>
in detail and/or counted as an error, as specified by the options
<option>--show-leak-kinds</option> and
<option>--errors-for-leak-kinds</option>. </para>
+ <para>If <varname>--xml=yes</varname> is given, the default value
+ is set to <varname>full</varname>. </para>
</listitem>
</varlistentry>
diff --git a/memcheck/mc_main.c b/memcheck/mc_main.c
index 253f091dc..a9ecab138 100644
--- a/memcheck/mc_main.c
+++ b/memcheck/mc_main.c
@@ -5938,6 +5938,9 @@ Bool MC_(clo_partial_loads_ok) = True;
Long MC_(clo_freelist_vol) = 20*1000*1000LL;
Long MC_(clo_freelist_big_blocks) = 1*1000*1000LL;
LeakCheckMode MC_(clo_leak_check) = LC_Summary;
+/* user_clc is set to True if the user explicitly gave the clo option
+ --leak-check. If True, --xml will not change the value of --leak-check. */
+Bool user_clc = False;
VgRes MC_(clo_leak_resolution) = Vg_HighRes;
UInt MC_(clo_show_leak_kinds) = R2S(Possible) | R2S(Unreached);
UInt MC_(clo_error_for_leak_kinds) = R2S(Possible) | R2S(Unreached);
@@ -6044,14 +6047,17 @@ static Bool mc_process_cmd_line_options(const HChar* arg)
MC_(clo_freelist_big_blocks),
0, 10*1000*1000*1000LL) {}
- else if VG_XACT_CLO(arg, "--leak-check=no",
- MC_(clo_leak_check), LC_Off) {}
+ else if VG_XACT_CLO(arg, "--leak-check=no", MC_(clo_leak_check), LC_Off)
+ { user_clc = True; }
else if VG_XACT_CLO(arg, "--leak-check=summary",
- MC_(clo_leak_check), LC_Summary) {}
+ MC_(clo_leak_check), LC_Summary)
+ { user_clc = True; }
else if VG_XACT_CLO(arg, "--leak-check=yes",
- MC_(clo_leak_check), LC_Full) {}
+ MC_(clo_leak_check), LC_Full)
+ { user_clc = True; }
else if VG_XACT_CLO(arg, "--leak-check=full",
- MC_(clo_leak_check), LC_Full) {}
+ MC_(clo_leak_check), LC_Full)
+ { user_clc = True; }
else if VG_XACT_CLO(arg, "--leak-resolution=low",
MC_(clo_leak_resolution), Vg_LowRes) {}
@@ -7727,8 +7733,9 @@ static void mc_post_clo_init ( void )
{
/* If we've been asked to emit XML, mash around various other
options so as to constrain the output somewhat. */
- if (VG_(clo_xml)) {
- /* Extract as much info as possible from the leak checker. */
+ if (VG_(clo_xml) & !user_clc) {
+ /* Extract as much info as possible from the leak checker, unless
+ the user explicitly gave the --leak-check option. */
MC_(clo_leak_check) = LC_Full;
}
diff --git a/memcheck/tests/xml1.vgtest b/memcheck/tests/xml1.vgtest
index 6585b18f4..d0ee11da2 100644
--- a/memcheck/tests/xml1.vgtest
+++ b/memcheck/tests/xml1.vgtest
@@ -1,3 +1,3 @@
prog: xml1
-vgopts: --xml=yes --xml-fd=2 --log-file=/dev/null --keep-stacktraces=alloc-then-free
+vgopts: --xml=yes --xml-fd=2 --log-file=/dev/null --keep-stacktraces=alloc-then-free --leak-check=full
stderr_filter: filter_xml
|
|
From: Mark W. <ma...@so...> - 2019-05-18 12:59:13
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=59784c512ec40e588b21cf5ae8e31e9c4f99d6b8 commit 59784c512ec40e588b21cf5ae8e31e9c4f99d6b8 Author: Mark Wielaard <ma...@kl...> Date: Sat May 18 14:55:50 2019 +0200 aarch64 (arm64) isn't a supported architecture for exp-sgcheck. exp-sgcheck/pc_main.c contains: #if defined(VGA_arm) || defined(VGA_arm64) VG_(printf)("SGCheck doesn't work on ARM yet, sorry.\n"); VG_(exit)(1); #endif But exp-sgcheck/tests/is_arch_supported checked against uname -m which returns aarch64 (not arm64). Fix the test check so the exp-sgcheck tests are skipped instead of producing failures. Diff: --- exp-sgcheck/tests/is_arch_supported | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exp-sgcheck/tests/is_arch_supported b/exp-sgcheck/tests/is_arch_supported index 818cc61..d4c6191 100755 --- a/exp-sgcheck/tests/is_arch_supported +++ b/exp-sgcheck/tests/is_arch_supported @@ -10,6 +10,6 @@ # architectures. case `uname -m` in - ppc*|arm*|s390x|mips*) exit 1;; + ppc*|aarch64|arm*|s390x|mips*) exit 1;; *) exit 0;; esac |
|
From: Philippe W. <phi...@so...> - 2019-05-18 10:11:21
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=bc758374a25e5cfb1a7c11f3ac3b0e31217746a5 commit bc758374a25e5cfb1a7c11f3ac3b0e31217746a5 Author: Philippe Waroquiers <phi...@sk...> Date: Sat May 18 12:10:40 2019 +0200 Add a test for the new gdbserver adddress[length] syntax. Diff: --- memcheck/tests/leak_cpp_interior.cpp | 101 ++++++++++++---------- memcheck/tests/leak_cpp_interior.stderr.exp-64bit | 8 +- 2 files changed, 59 insertions(+), 50 deletions(-) diff --git a/memcheck/tests/leak_cpp_interior.cpp b/memcheck/tests/leak_cpp_interior.cpp index a4b4824..56c5370 100644 --- a/memcheck/tests/leak_cpp_interior.cpp +++ b/memcheck/tests/leak_cpp_interior.cpp @@ -11,65 +11,65 @@ // Derived from test provided by Timur Iskhodzhanov (bug 280271) class MyClass -{ +{ char m1; int m2; public: - ~MyClass() - { fprintf(stderr, "destruct MyClass\n"); - } + ~MyClass() + { fprintf(stderr, "destruct MyClass\n"); + } }; // Two hierarchies using MI, one with no fields, // the other one with some data. -struct Ae -{ - virtual ~Ae() - { fprintf(stderr, "destruct Ae\n"); - } -}; -struct Be -{ - virtual ~Be() - { fprintf(stderr, "destruct Be\n"); - } -}; -struct Ce : public Ae, public Be -{ - virtual ~Ce() - { fprintf(stderr, "destruct Ce\n"); - } +struct Ae +{ + virtual ~Ae() + { fprintf(stderr, "destruct Ae\n"); + } +}; +struct Be +{ + virtual ~Be() + { fprintf(stderr, "destruct Be\n"); + } +}; +struct Ce : public Ae, public Be +{ + virtual ~Ce() + { fprintf(stderr, "destruct Ce\n"); + } }; -struct A -{ +struct A +{ char a; - A() + A() { a = 'a'; - } - virtual ~A() - { fprintf(stderr, "destruct A\n"); - } -}; -struct B -{ + } + virtual ~A() + { fprintf(stderr, "destruct A\n"); + } +}; +struct B +{ char b; - B() + B() { b = 'b'; - } - virtual ~B() - { fprintf(stderr, "destruct B\n"); - } -}; -struct C : public A, public B -{ + } + virtual ~B() + { fprintf(stderr, "destruct B\n"); + } +}; +struct C : public A, public B +{ char c; - C() + C() { c = 'c'; - } - virtual ~C() - { fprintf(stderr, "destruct C\n"); - } + } + virtual ~C() + { fprintf(stderr, "destruct C\n"); + } }; void* wrap64_malloc(int size) @@ -100,6 +100,7 @@ A *ptrAC; void* ptr64; char who_points_at_cmd[100]; +char who_points_at_cmd_brackets[100]; /* Same but with brackets. */ void doit(void) { @@ -107,11 +108,13 @@ void doit(void) str2 = str; ptr = new MyClass[3]; // interior ptr. ptr64 = wrap64_malloc(23); - + // prepare the who_points_at cmd we will run. // Do it here to avoid having ptr or its exterior ptr kept in a register. sprintf(who_points_at_cmd, "who_points_at %#" PRIxPTR " 20", (uintptr_t) (char*)ptr - sizeof(void*)); + sprintf(who_points_at_cmd_brackets, "who_points_at %#" PRIxPTR "[20]", + (uintptr_t) (char*)ptr - sizeof(void*)); ptr2 = new MyClass[0]; // "interior but exterior ptr". // ptr2 points after the chunk, is wrongly considered by memcheck as definitely leaked. @@ -120,13 +123,13 @@ void doit(void) ptrACe = new Ce; // not an interior pointer. ptrBC = new C; // interior ptr. ptrAC = new C; // not an interior pointer. - - + + str2 += " rocks (str2)\n"; // interior ptr. } -int main() { +int main() { doit(); (void) VALGRIND_MONITOR_COMMAND("v.set log_output"); @@ -154,6 +157,8 @@ int main() { // Test the who_points_at when the block is pointed to with an interior ptr. (void) VALGRIND_MONITOR_COMMAND(who_points_at_cmd); + // Same but with the bracket syntax. + (void) VALGRIND_MONITOR_COMMAND(who_points_at_cmd_brackets); delete [] ptr; delete [] ptr2; diff --git a/memcheck/tests/leak_cpp_interior.stderr.exp-64bit b/memcheck/tests/leak_cpp_interior.stderr.exp-64bit index 4474b03..5c85d99 100644 --- a/memcheck/tests/leak_cpp_interior.stderr.exp-64bit +++ b/memcheck/tests/leak_cpp_interior.stderr.exp-64bit @@ -2,8 +2,8 @@ valgrind output will go to log VALGRIND_DO_LEAK_CHECK x bytes in 1 blocks are definitely lost in loss record ... of ... - by 0x........: doit() (leak_cpp_interior.cpp:116) - by 0x........: main (leak_cpp_interior.cpp:131) + by 0x........: doit() (leak_cpp_interior.cpp:119) + by 0x........: main (leak_cpp_interior.cpp:134) LEAK SUMMARY: definitely lost: x bytes in 1 blocks @@ -107,6 +107,10 @@ Searching for pointers pointing in x bytes from 0x........ *0x........ interior points at x bytes inside 0x........ Address 0x........ is 0 bytes inside data symbol "ptr" block at 0x........ considered reachable by ptr 0x........ using newarray heuristic +Searching for pointers pointing in x bytes from 0x........ +*0x........ interior points at x bytes inside 0x........ + Address 0x........ is 0 bytes inside data symbol "ptr" +block at 0x........ considered reachable by ptr 0x........ using newarray heuristic destruct MyClass destruct MyClass destruct MyClass |