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
(8) |
2
(10) |
3
(18) |
4
(14) |
5
(16) |
6
(11) |
7
(10) |
|
8
(7) |
9
(8) |
10
(6) |
11
(6) |
12
(9) |
13
(13) |
14
(8) |
|
15
(3) |
16
(6) |
17
(8) |
18
(7) |
19
(7) |
20
(7) |
21
(5) |
|
22
(6) |
23
(5) |
24
(5) |
25
(5) |
26
(7) |
27
(7) |
28
(7) |
|
29
(15) |
30
(11) |
|
|
|
|
|
|
From: Tom H. <th...@cy...> - 2007-04-17 02:12:38
|
Nightly build on lloyd ( x86_64, Fedora Core 3 ) started at 2007-04-17 03:05:08 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo gcc -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -o nibz_bennee_mmap nibz_bennee_mmap.o if gcc -DHAVE_CONFIG_H -I. -I. -I../../.. -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -MT slahf-amd64.o -MD -MP -MF ".deps/slahf-amd64.Tpo" -c -o slahf-amd64.o slahf-amd64.c; \ then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi /tmp/ccSASOm5.s: Assembler messages: /tmp/ccSASOm5.s:18: Error: suffix or operands invalid for `lahf' /tmp/ccSASOm5.s:28: Error: suffix or operands invalid for `lahf' /tmp/ccSASOm5.s:34: Error: suffix or operands invalid for `sahf' /tmp/ccSASOm5.s:36: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 rm insn_sse3.c insn_sse.c insn_mmx.c insn_fpu.c insn_sse2.c insn_basic.c make[5]: Leaving directory `/tmp/vgtest/2007-04-17/valgrind/none/tests/amd64' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-04-17/valgrind/none/tests/amd64' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-04-17/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-04-17/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-04-17/valgrind' make: *** [check] Error 2 ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo gcc -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -o nibz_bennee_mmap nibz_bennee_mmap.o if gcc -DHAVE_CONFIG_H -I. -I. -I../../.. -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -MT slahf-amd64.o -MD -MP -MF ".deps/slahf-amd64.Tpo" -c -o slahf-amd64.o slahf-amd64.c; \ then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi /tmp/ccMVM16O.s: Assembler messages: /tmp/ccMVM16O.s:18: Error: suffix or operands invalid for `lahf' /tmp/ccMVM16O.s:28: Error: suffix or operands invalid for `lahf' /tmp/ccMVM16O.s:34: Error: suffix or operands invalid for `sahf' /tmp/ccMVM16O.s:36: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 rm insn_sse3.c insn_sse.c insn_mmx.c insn_fpu.c insn_sse2.c insn_basic.c make[5]: Leaving directory `/tmp/vgtest/2007-04-17/valgrind/none/tests/amd64' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-04-17/valgrind/none/tests/amd64' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-04-17/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-04-17/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-04-17/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Apr 17 03:09:36 2007 --- new.short Tue Apr 17 03:12:28 2007 *************** *** 10,16 **** then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi ! /tmp/ccMVM16O.s: Assembler messages: ! /tmp/ccMVM16O.s:18: Error: suffix or operands invalid for `lahf' ! /tmp/ccMVM16O.s:28: Error: suffix or operands invalid for `lahf' ! /tmp/ccMVM16O.s:34: Error: suffix or operands invalid for `sahf' ! /tmp/ccMVM16O.s:36: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 --- 10,16 ---- then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi ! /tmp/ccSASOm5.s: Assembler messages: ! /tmp/ccSASOm5.s:18: Error: suffix or operands invalid for `lahf' ! /tmp/ccSASOm5.s:28: Error: suffix or operands invalid for `lahf' ! /tmp/ccSASOm5.s:34: Error: suffix or operands invalid for `sahf' ! /tmp/ccSASOm5.s:36: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 |
|
From: <js...@ac...> - 2007-04-17 00:09:25
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-04-17 02:00:01 CEST 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 == 226 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... failed Last 20 lines of verbose log follow echo Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2007-04-16T02:00:01} valgrind svn: Unknown hostname 'svn.valgrind.org' ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Apr 17 02:00:47 2007 --- new.short Tue Apr 17 02:09:21 2007 *************** *** 1,7 **** ! Checking out valgrind source tree ... failed ! Last 20 lines of verbose log follow echo - Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2007-04-16T02:00:01} valgrind - svn: Unknown hostname 'svn.valgrind.org' --- 1,18 ---- ! Checking out valgrind source tree ... done ! Configuring valgrind ... done ! Building valgrind ... done ! Running regression tests ... failed ! Regression test results follow ! ! == 226 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == ! memcheck/tests/deep_templates (stdout) ! memcheck/tests/leak-cycle (stderr) ! memcheck/tests/leak-tree (stderr) ! memcheck/tests/pointer-trace (stderr) ! none/tests/faultstatus (stderr) ! none/tests/fdleak_cmsg (stderr) ! none/tests/mremap (stderr) ! none/tests/mremap2 (stdout) |
|
From: Andrew S. <ag...@gm...> - 2007-04-16 23:31:21
|
On 4/13/07, Nicholas Nethercote <nj...@cs...> wrote: > On Fri, 13 Apr 2007, Josef Weidendorfer wrote: > > >> I was wondering if valgrind had the kind of functionality that memspy > >> does. For example, can it tell me which of three data structures > >> referenced in a line of code is experiencing the most cache misses > >> and what's pushing it out of cache? > > > > AFAIK no. > > It should be possible, and I once started something like this, but did > > not finish. However, it already showed some aggregate counters (as part > > of debug output) attributed to global data symbols... > > I have the startings of something like this as well :) It uses client > requests in the source code to specify which bits of memory should be > considered a single entity. But it's not very advanced. Would it be interesting for you to see the memspy source code? I've emailed the authors and they say they are no longer distributing the code since it is so old, but maybe I could ask them if they would share it with you so that you can reimpliment the functionality in Valgrind. -- Andrew Shewmaker |
|
From: Tom H. <th...@cy...> - 2007-04-16 02:31:45
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-04-16 03:15:01 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 == 256 tests, 27 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2007-04-16 02:28:27
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-04-16 03:00:03 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo gcc -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -o nibz_bennee_mmap nibz_bennee_mmap.o if gcc -DHAVE_CONFIG_H -I. -I. -I../../.. -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -MT slahf-amd64.o -MD -MP -MF ".deps/slahf-amd64.Tpo" -c -o slahf-amd64.o slahf-amd64.c; \ then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi /tmp/ccW2tzFC.s: Assembler messages: /tmp/ccW2tzFC.s:27: Error: suffix or operands invalid for `lahf' /tmp/ccW2tzFC.s:37: Error: suffix or operands invalid for `lahf' /tmp/ccW2tzFC.s:43: Error: suffix or operands invalid for `sahf' /tmp/ccW2tzFC.s:45: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 rm insn_sse3.c insn_sse.c insn_mmx.c insn_fpu.c insn_sse2.c insn_basic.c make[5]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none/tests/amd64' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none/tests/amd64' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind' make: *** [check] Error 2 ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo gcc -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -o nibz_bennee_mmap nibz_bennee_mmap.o if gcc -DHAVE_CONFIG_H -I. -I. -I../../.. -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -MT slahf-amd64.o -MD -MP -MF ".deps/slahf-amd64.Tpo" -c -o slahf-amd64.o slahf-amd64.c; \ then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi /tmp/ccBI1f8e.s: Assembler messages: /tmp/ccBI1f8e.s:27: Error: suffix or operands invalid for `lahf' /tmp/ccBI1f8e.s:37: Error: suffix or operands invalid for `lahf' /tmp/ccBI1f8e.s:43: Error: suffix or operands invalid for `sahf' /tmp/ccBI1f8e.s:45: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 rm insn_sse3.c insn_sse.c insn_mmx.c insn_fpu.c insn_sse2.c insn_basic.c make[5]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none/tests/amd64' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none/tests/amd64' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Apr 16 03:17:49 2007 --- new.short Mon Apr 16 03:28:20 2007 *************** *** 10,16 **** then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi ! /tmp/ccBI1f8e.s: Assembler messages: ! /tmp/ccBI1f8e.s:27: Error: suffix or operands invalid for `lahf' ! /tmp/ccBI1f8e.s:37: Error: suffix or operands invalid for `lahf' ! /tmp/ccBI1f8e.s:43: Error: suffix or operands invalid for `sahf' ! /tmp/ccBI1f8e.s:45: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 --- 10,16 ---- then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi ! /tmp/ccW2tzFC.s: Assembler messages: ! /tmp/ccW2tzFC.s:27: Error: suffix or operands invalid for `lahf' ! /tmp/ccW2tzFC.s:37: Error: suffix or operands invalid for `lahf' ! /tmp/ccW2tzFC.s:43: Error: suffix or operands invalid for `sahf' ! /tmp/ccW2tzFC.s:45: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 |
|
From: Tom H. <th...@cy...> - 2007-04-16 02:26:20
|
Nightly build on dellow ( x86_64, Fedora Core 6 ) started at 2007-04-16 03:10:05 BST 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 == 292 tests, 4 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) ================================================= == 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 == 292 tests, 4 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Apr 16 03:16:54 2007 --- new.short Mon Apr 16 03:23:26 2007 *************** *** 8,10 **** ! == 292 tests, 4 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 292 tests, 4 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) *************** *** 14,15 **** --- 14,16 ---- none/tests/mremap2 (stdout) + none/tests/pth_detached (stdout) |
|
From: Tom H. <th...@cy...> - 2007-04-16 02:12:47
|
Nightly build on lloyd ( x86_64, Fedora Core 3 ) started at 2007-04-16 03:05:07 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo gcc -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -o nibz_bennee_mmap nibz_bennee_mmap.o if gcc -DHAVE_CONFIG_H -I. -I. -I../../.. -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -MT slahf-amd64.o -MD -MP -MF ".deps/slahf-amd64.Tpo" -c -o slahf-amd64.o slahf-amd64.c; \ then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi /tmp/ccc8RWmZ.s: Assembler messages: /tmp/ccc8RWmZ.s:18: Error: suffix or operands invalid for `lahf' /tmp/ccc8RWmZ.s:28: Error: suffix or operands invalid for `lahf' /tmp/ccc8RWmZ.s:34: Error: suffix or operands invalid for `sahf' /tmp/ccc8RWmZ.s:36: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 rm insn_sse3.c insn_sse.c insn_mmx.c insn_fpu.c insn_sse2.c insn_basic.c make[5]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none/tests/amd64' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none/tests/amd64' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind' make: *** [check] Error 2 ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo gcc -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -o nibz_bennee_mmap nibz_bennee_mmap.o if gcc -DHAVE_CONFIG_H -I. -I. -I../../.. -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -MT slahf-amd64.o -MD -MP -MF ".deps/slahf-amd64.Tpo" -c -o slahf-amd64.o slahf-amd64.c; \ then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi /tmp/cc2ZUUJj.s: Assembler messages: /tmp/cc2ZUUJj.s:18: Error: suffix or operands invalid for `lahf' /tmp/cc2ZUUJj.s:28: Error: suffix or operands invalid for `lahf' /tmp/cc2ZUUJj.s:34: Error: suffix or operands invalid for `sahf' /tmp/cc2ZUUJj.s:36: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 rm insn_sse3.c insn_sse.c insn_mmx.c insn_fpu.c insn_sse2.c insn_basic.c make[5]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none/tests/amd64' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none/tests/amd64' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-04-16/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Apr 16 03:09:40 2007 --- new.short Mon Apr 16 03:12:35 2007 *************** *** 10,16 **** then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi ! /tmp/cc2ZUUJj.s: Assembler messages: ! /tmp/cc2ZUUJj.s:18: Error: suffix or operands invalid for `lahf' ! /tmp/cc2ZUUJj.s:28: Error: suffix or operands invalid for `lahf' ! /tmp/cc2ZUUJj.s:34: Error: suffix or operands invalid for `sahf' ! /tmp/cc2ZUUJj.s:36: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 --- 10,16 ---- then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi ! /tmp/ccc8RWmZ.s: Assembler messages: ! /tmp/ccc8RWmZ.s:18: Error: suffix or operands invalid for `lahf' ! /tmp/ccc8RWmZ.s:28: Error: suffix or operands invalid for `lahf' ! /tmp/ccc8RWmZ.s:34: Error: suffix or operands invalid for `sahf' ! /tmp/ccc8RWmZ.s:36: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 |
|
From: <js...@ac...> - 2007-04-16 00:17:45
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-04-16 02:00:01 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 == 226 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: <sv...@va...> - 2007-04-15 22:16:01
|
Author: njn
Date: 2007-04-15 23:15:57 +0100 (Sun, 15 Apr 2007)
New Revision: 6703
Log:
Fix some copyright notices:
- extend some to 2007
- use nj...@va... instead of nj...@ca...
- use "tool" instead of "skin"
Modified:
trunk/cachegrind/cg-ppc32.c
trunk/cachegrind/cg-ppc64.c
trunk/callgrind/callgrind.h
trunk/callgrind/callgrind_annotate.in
trunk/callgrind/clo.c
trunk/callgrind/command.c
trunk/callgrind/debug.c
trunk/callgrind/main.c
trunk/callgrind/sim.c
trunk/coregrind/m_syswrap/syscall-ppc32-linux.S
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
trunk/include/vki/vki-posixtypes-ppc32-linux.h
trunk/include/vki/vki-posixtypes-ppc64-linux.h
trunk/massif/ms_main.c
Modified: trunk/cachegrind/cg-ppc32.c
===================================================================
--- trunk/cachegrind/cg-ppc32.c 2007-04-14 05:27:20 UTC (rev 6702)
+++ trunk/cachegrind/cg-ppc32.c 2007-04-15 22:15:57 UTC (rev 6703)
@@ -1,13 +1,13 @@
/*--------------------------------------------------------------------*/
-/*--- PPC32-specific definitions. ppc32/cg-ppc32.c ---*/
+/*--- PPC32-specific definitions. cg-ppc32.c ---*/
/*--------------------------------------------------------------------*/
/*
This file is part of Cachegrind, a Valgrind tool for cache
profiling programs.
- Copyright (C) 2005 Nicholas Nethercote
+ Copyright (C) 2005-2007 Nicholas Nethercote
nj...@va...
This program is free software; you can redistribute it and/or
Modified: trunk/cachegrind/cg-ppc64.c
===================================================================
--- trunk/cachegrind/cg-ppc64.c 2007-04-14 05:27:20 UTC (rev 6702)
+++ trunk/cachegrind/cg-ppc64.c 2007-04-15 22:15:57 UTC (rev 6703)
@@ -1,13 +1,13 @@
/*--------------------------------------------------------------------*/
-/*--- PPC64-specific definitions. ppc64/cg-ppc64.c ---*/
+/*--- PPC64-specific definitions. cg-ppc64.c ---*/
/*--------------------------------------------------------------------*/
/*
This file is part of Cachegrind, a Valgrind tool for cache
profiling programs.
- Copyright (C) 2005 Nicholas Nethercote
+ Copyright (C) 2005-2007 Nicholas Nethercote
nj...@va...
This program is free software; you can redistribute it and/or
Modified: trunk/callgrind/callgrind.h
===================================================================
--- trunk/callgrind/callgrind.h 2007-04-14 05:27:20 UTC (rev 6702)
+++ trunk/callgrind/callgrind.h 2007-04-15 22:15:57 UTC (rev 6703)
@@ -10,7 +10,7 @@
----------------------------------------------------------------
- This file is part of callgrind, a valgrind skin for cache simulation
+ This file is part of callgrind, a valgrind tool for cache simulation
and call tree tracing.
Copyright (C) 2003-2007 Josef Weidendorfer. All rights reserved.
Modified: trunk/callgrind/callgrind_annotate.in
===================================================================
--- trunk/callgrind/callgrind_annotate.in 2007-04-14 05:27:20 UTC (rev 6702)
+++ trunk/callgrind/callgrind_annotate.in 2007-04-15 22:15:57 UTC (rev 6703)
@@ -11,9 +11,9 @@
# Copyright (C) 2003 Josef Weidendorfer
# Jos...@gm...
#
-# This file is based heavily on vg_annotate, part of Valgrind.
+# This file is based heavily on cg_annotate, part of Valgrind.
# Copyright (C) 2002 Nicholas Nethercote
-# nj...@ca...
+# nj...@va...
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
Modified: trunk/callgrind/clo.c
===================================================================
--- trunk/callgrind/clo.c 2007-04-14 05:27:20 UTC (rev 6702)
+++ trunk/callgrind/clo.c 2007-04-15 22:15:57 UTC (rev 6703)
@@ -1,11 +1,11 @@
/*
- This file is part of Callgrind, a Valgrind skin for call graph
+ This file is part of Callgrind, a Valgrind tool for call graph
profiling programs.
Copyright (C) 2002-2007, Josef Weidendorfer (Jos...@gm...)
- This skin is derived from and contains lot of code from Cachegrind
- Copyright (C) 2002 Nicholas Nethercote (nj...@ca...)
+ This tool is derived from and contains lot of code from Cachegrind
+ Copyright (C) 2002 Nicholas Nethercote (nj...@va...)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
Modified: trunk/callgrind/command.c
===================================================================
--- trunk/callgrind/command.c 2007-04-14 05:27:20 UTC (rev 6702)
+++ trunk/callgrind/command.c 2007-04-15 22:15:57 UTC (rev 6703)
@@ -1,11 +1,11 @@
/*
- This file is part of Callgrind, a Valgrind skin for call graph
+ This file is part of Callgrind, a Valgrind tool for call graph
profiling programs.
Copyright (C) 2002-2007, Josef Weidendorfer (Jos...@gm...)
- This skin is derived from and contains lot of code from Cachegrind
- Copyright (C) 2002 Nicholas Nethercote (nj...@ca...)
+ This tool is derived from and contains lot of code from Cachegrind
+ Copyright (C) 2002 Nicholas Nethercote (nj...@va...)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
Modified: trunk/callgrind/debug.c
===================================================================
--- trunk/callgrind/debug.c 2007-04-14 05:27:20 UTC (rev 6702)
+++ trunk/callgrind/debug.c 2007-04-15 22:15:57 UTC (rev 6703)
@@ -1,11 +1,11 @@
/*
- This file is part of Callgrind, a Valgrind skin for call graph
+ This file is part of Callgrind, a Valgrind tool for call graph
profiling programs.
Copyright (C) 2002-2007, Josef Weidendorfer (Jos...@gm...)
- This skin is derived from and contains lot of code from Cachegrind
- Copyright (C) 2002 Nicholas Nethercote (nj...@ca...)
+ This tool is derived from and contains lot of code from Cachegrind
+ Copyright (C) 2002 Nicholas Nethercote (nj...@va...)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
Modified: trunk/callgrind/main.c
===================================================================
--- trunk/callgrind/main.c 2007-04-14 05:27:20 UTC (rev 6702)
+++ trunk/callgrind/main.c 2007-04-15 22:15:57 UTC (rev 6703)
@@ -10,8 +10,8 @@
Copyright (C) 2002-2007, Josef Weidendorfer (Jos...@gm...)
- This skin is derived from and contains code from Cachegrind
- Copyright (C) 2002-2007 Nicholas Nethercote (nj...@ca...)
+ This tool is derived from and contains code from Cachegrind
+ Copyright (C) 2002-2007 Nicholas Nethercote (nj...@va...)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
Modified: trunk/callgrind/sim.c
===================================================================
--- trunk/callgrind/sim.c 2007-04-14 05:27:20 UTC (rev 6702)
+++ trunk/callgrind/sim.c 2007-04-15 22:15:57 UTC (rev 6703)
@@ -5,12 +5,13 @@
/*--------------------------------------------------------------------*/
/*
- This file is part of Callgrind.
- (c) 2003-2005, Josef Weidendorfer
+ This file is part of Callgrind, a Valgrind tool for call graph
+ profiling programs.
- Parts are Copyright (C) 2002 Nicholas Nethercote
- nj...@ca...
+ Copyright (C) 2003-2005, Josef Weidendorfer (Jos...@gm...)
+ This tool is derived from and contains code from Cachegrind
+ Copyright (C) 2002-2007 Nicholas Nethercote (nj...@va...)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
Modified: trunk/coregrind/m_syswrap/syscall-ppc32-linux.S
===================================================================
--- trunk/coregrind/m_syswrap/syscall-ppc32-linux.S 2007-04-14 05:27:20 UTC (rev 6702)
+++ trunk/coregrind/m_syswrap/syscall-ppc32-linux.S 2007-04-15 22:15:57 UTC (rev 6703)
@@ -7,7 +7,7 @@
This file is part of Valgrind, a dynamic binary instrumentation
framework.
- Copyright (C) 2005 Paul Mackerras <pa...@sa...>
+ Copyright (C) 2005-2007 Paul Mackerras (pa...@sa...)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2007-04-14 05:27:20 UTC (rev 6702)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2007-04-15 22:15:57 UTC (rev 6703)
@@ -7,8 +7,8 @@
This file is part of Valgrind, a dynamic binary instrumentation
framework.
- Copyright (C) 2005 Nicholas Nethercote <nj...@va...>
- Copyright (C) 2005 Cerion Armour-Brown <ce...@op...>
+ Copyright (C) 2005-2007 Nicholas Nethercote <nj...@va...>
+ Copyright (C) 2005-2007 Cerion Armour-Brown <ce...@op...>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
Modified: trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2007-04-14 05:27:20 UTC (rev 6702)
+++ trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2007-04-15 22:15:57 UTC (rev 6703)
@@ -7,8 +7,8 @@
This file is part of Valgrind, a dynamic binary instrumentation
framework.
- Copyright (C) 2005 Nicholas Nethercote <nj...@va...>
- Copyright (C) 2005 Cerion Armour-Brown <ce...@op...>
+ Copyright (C) 2005-2007 Nicholas Nethercote <nj...@va...>
+ Copyright (C) 2005-2007 Cerion Armour-Brown <ce...@op...>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
Modified: trunk/include/vki/vki-posixtypes-ppc32-linux.h
===================================================================
--- trunk/include/vki/vki-posixtypes-ppc32-linux.h 2007-04-14 05:27:20 UTC (rev 6702)
+++ trunk/include/vki/vki-posixtypes-ppc32-linux.h 2007-04-15 22:15:57 UTC (rev 6703)
@@ -8,7 +8,7 @@
This file is part of Valgrind, a dynamic binary instrumentation
framework.
- Copyright (C) 2005 Julian Seward
+ Copyright (C) 2005-2007 Julian Seward
js...@ac...
This program is free software; you can redistribute it and/or
Modified: trunk/include/vki/vki-posixtypes-ppc64-linux.h
===================================================================
--- trunk/include/vki/vki-posixtypes-ppc64-linux.h 2007-04-14 05:27:20 UTC (rev 6702)
+++ trunk/include/vki/vki-posixtypes-ppc64-linux.h 2007-04-15 22:15:57 UTC (rev 6703)
@@ -8,7 +8,7 @@
This file is part of Valgrind, a dynamic binary instrumentation
framework.
- Copyright (C) 2005 Julian Seward
+ Copyright (C) 2005-2007 Julian Seward
js...@ac...
This program is free software; you can redistribute it and/or
Modified: trunk/massif/ms_main.c
===================================================================
--- trunk/massif/ms_main.c 2007-04-14 05:27:20 UTC (rev 6702)
+++ trunk/massif/ms_main.c 2007-04-15 22:15:57 UTC (rev 6703)
@@ -1722,7 +1722,8 @@
VG_(details_name) ("Massif");
VG_(details_version) (NULL);
VG_(details_description) ("a space profiler");
- VG_(details_copyright_author)("Copyright (C) 2003, Nicholas Nethercote");
+ VG_(details_copyright_author)(
+ "Copyright (C) 2003-2007, Nicholas Nethercote");
VG_(details_bug_reports_to) (VG_BUGS_TO);
// Basic functions
|
|
From: <sv...@va...> - 2007-04-15 06:47:18
|
Author: njn Date: 2007-04-15 07:47:11 +0100 (Sun, 15 Apr 2007) New Revision: 333 Log: add UCSB Modified: trunk/info/about.html Modified: trunk/info/about.html =================================================================== --- trunk/info/about.html 2007-04-12 21:56:45 UTC (rev 332) +++ trunk/info/about.html 2007-04-15 06:47:11 UTC (rev 333) @@ -85,9 +85,10 @@ writing such tools from scratch. This makes Valgrind ideal for experimenting with new kinds of program analysis tools. It has been used for research purposes by people at the following -universities: Cambridge, MIT, Berkeley, Carnegie Mellon, Cornell, -University of New Mexico, Australian National University, University of -Melbourne, TU Muenchen (Munich) and Graz University of Technology. +universities: Cambridge, MIT, UC Berkeley, UC Santa Barbara, Carnegie +Mellon, Cornell, University of New Mexico, Australian National University, +University of Melbourne, TU Muenchen (Munich) and Graz University of +Technology. </li> <li>Valgrind is actively maintained. The Valgrind developers are |
|
From: <js...@ac...> - 2007-04-15 00:17:07
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-04-15 02:00:01 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 == 226 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: <js...@ac...> - 2007-04-14 12:17:46
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2007-04-14 09:00:01 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 == 219 tests, 10 stderr failures, 6 stdout failures, 0 posttest failures == memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-fp (stderr) none/tests/ppc32/round (stdout) none/tests/ppc32/round (stderr) none/tests/ppc32/test_fx (stdout) none/tests/ppc32/test_fx (stderr) none/tests/ppc32/test_gx (stdout) |
|
From: Bart V. A. <bar...@gm...> - 2007-04-14 07:48:35
|
On 4/13/07, Andrew Shewmaker <ag...@gm...> wrote: > > Hi, > > I was wondering if valgrind had the kind of functionality that memspy > does. For example, can it tell me which of three data structures > referenced in a line of code is experiencing the most cache misses > and what's pushing it out of cache? > This presentation by Joe Gross is a good overview of MemSpy: http://www.cs.umd.edu/class/fall2005/cmsc714/Lectures/gross-memspy.pdf Bart. |
|
From: <sv...@va...> - 2007-04-14 05:27:23
|
Author: njn
Date: 2007-04-14 06:27:20 +0100 (Sat, 14 Apr 2007)
New Revision: 6702
Log:
More progress on ms_print. Now printing out graphs like ms_main.c does.
ms_main.c still doesn't print files in the format that ms_print uses,
though.
Modified:
branches/MASSIF2/massif/ms_print
Modified: branches/MASSIF2/massif/ms_print
===================================================================
--- branches/MASSIF2/massif/ms_print 2007-04-13 04:50:48 UTC (rev 6701)
+++ branches/MASSIF2/massif/ms_print 2007-04-14 05:27:20 UTC (rev 6702)
@@ -36,9 +36,6 @@
# Global variables, main data structures
#----------------------------------------------------------------------------
-# Generic description string.
-my $desc = "";
-
# Command line of profiled program.
my $cmd;
@@ -127,7 +124,7 @@
}
#-----------------------------------------------------------------------------
-# Reading of input file
+# Reading the input file: auxiliary functions
#-----------------------------------------------------------------------------
# Gets the next line, stripping comments and skipping blanks.
@@ -159,13 +156,13 @@
}
# Forward declaration, because it's recursive.
-sub read_heap_tree($$$$);
+sub read_heap_tree($$$$$);
-sub read_heap_tree($$$$)
+sub read_heap_tree($$$$$)
{
# We precede this node's line with "$this_prefix.$arrow". We precede
# any children of this node with "$this_prefix$child_midfix$arrow".
- my ($this_prefix, $child_midfix, $arrow, $mem_total_B) = @_;
+ my ($print, $this_prefix, $child_midfix, $arrow, $mem_total_B) = @_;
my $line = get_line();
(defined $line and $line =~ /^\s*n(\d+):(\d+)(.*)$/)
or die("Line $.: expected a tree node line, got:\n$line\n");
@@ -173,26 +170,42 @@
my $bytes = $2;
my $details = $3;
my $perc = 100 * $bytes / $mem_total_B;
- printf("$this_prefix$arrow%05.2f%% (${bytes}B)$details\n", $perc);
+ printf("$this_prefix$arrow%05.2f%% (${bytes}B)$details\n", $perc)
+ if $print;
for (my $i = 0; $i < $n; $i++) {
my $this_prefix2 = $this_prefix . $child_midfix;
# If child is the last sibling, the midfix is empty.
my $child_midfix2 = ( $i+1 == $n ? " " : "| " );
- read_heap_tree($this_prefix2, $child_midfix2, "->", $mem_total_B);
+ read_heap_tree($print, $this_prefix2, $child_midfix2, "->",
+ $mem_total_B);
}
# If this node has no children, print an extra empty line.
if (0 == $n) {
- print("$this_prefix\n");
+ print("$this_prefix\n") if $print;
}
}
-sub read_input_file()
+#-----------------------------------------------------------------------------
+# Reading the input file: pass 1
+#-----------------------------------------------------------------------------
+
+# This pass is just for printing the graph. It just collects the snapshot
+# times and total sizes from the file and then prints the graph.
+#
+# XXX: should probably combine read_input_file[12] into a single function
+# with some conditionals in it.
+sub read_input_file1()
{
+ my $desc = ""; # Concatenated description lines.
+ my @snapshot_nums = ();
+ my @time_mss = ();
+ my @mem_total_Bs = ();
+ my @is_detaileds = ();
+ my $peak_mem_total_szB = 0;
+
open(INPUTFILE, "< $input_file")
|| die "Cannot open $input_file for reading\n";
- print($fancy);
-
# Read "desc:" lines.
my $line;
while ($line = get_line()) {
@@ -202,15 +215,191 @@
last;
}
}
- print($desc);
# Read "cmd:" line (Nb: will already be in $line from "desc:" loop above).
($line =~ /^cmd:\s*(.*)$/) or die("Line $.: missing command line\n");
$cmd = $1;
- print("Command: $cmd\n");
+ # Read body of input file.
+ $line = get_line();
+ while (defined $line) {
+ # XXX: equals_num_line vs get_equals_num_line is ugly
+ my $snapshot_num = equals_num_line($line, "snapshot");
+ my $time_ms = get_equals_num_line("time_ms");
+ my $mem_total_B = get_equals_num_line("mem_total_B");
+ my $mem_heap_B = get_equals_num_line("mem_heap_B");
+ my $mem_heap_admin_B = get_equals_num_line("mem_heap_admin_B");
+ my $mem_stacks_B = get_equals_num_line("mem_stacks_B");
+ my $heap_tree = get_equals_num_line("heap_tree");
+
+ # Skip over the heap_tree
+ if ($heap_tree eq "empty") {
+ # do nothing
+ } elsif ($heap_tree eq "...") {
+ # Depth in the heap tree. '0' means the tree should not be printed.
+ read_heap_tree(0, "", "", "", $mem_total_B);
+ } else {
+ die("Line $.: expected 'empty' or '...' after 'heap_tree='\n");
+ }
+
+ # Remember the pertinent information
+ push(@snapshot_nums, $snapshot_num);
+ push(@time_mss, $time_ms);
+ push(@mem_total_Bs, $mem_total_B);
+ push(@is_detaileds, ( $heap_tree eq "empty" ? 0 : 1 ));
+ $peak_mem_total_szB = $mem_total_B
+ if $mem_total_B > $peak_mem_total_szB;
+
+ $line = get_line();
+ }
+
+ close(INPUTFILE);
+
+ #-------------------------------------------------------------------------
+ # Print header
+ #-------------------------------------------------------------------------
+ print($fancy);
+ print("Command: $cmd\n");
print("Data file: $input_file\n");
+ print($desc);
+ print("\n");
+ #-------------------------------------------------------------------------
+ # Print graph
+ #-------------------------------------------------------------------------
+ # The ASCII graph.
+ # Row 0 ([0..GRAPH_X][0]) is the x-axis.
+ # Column 0 ([0][0..GRAPH_Y]) is the y-axis.
+ # The rest ([1][1]..[GRAPH_X][GRAPH_Y]) is the usable graph area.
+ my $GRAPH_X = 72;
+ my $GRAPH_Y = 20;
+ my @graph;
+ my $x;
+ my $y;
+
+ # We increment end_ms_time by 1 so that the last snapshot occurs just
+ # before it, and doesn't spill over into the final column.
+ my $n_snapshots = scalar(@snapshot_nums);
+ ($n_snapshots > 0) or die;
+ my $end_time_ms = $time_mss[$n_snapshots-1] + 1;
+ ($end_time_ms > 0) or die;
+
+ # Setup graph[][].
+ $graph[0][0] = '+'; # axes join point
+ for ($x = 1; $x <= $GRAPH_X; $x++) { $graph[$x][0] = '-'; } # x-axis
+ for ($y = 1; $y <= $GRAPH_Y; $y++) { $graph[0][$y] = '|'; } # y-axis
+ for ($x = 1; $x <= $GRAPH_X; $x++) { # usable area
+ for ($y = 1; $y <= $GRAPH_Y; $y++) {
+ $graph[$x][$y] = ' ';
+ }
+ }
+
+ # Write snapshot bars into graph[][].
+ # XXX: many detailed snapshot bars are being overwritten by non-detailed
+ # bars
+ for (my $i = 0; $i < $n_snapshots; $i++) {
+
+ # Work out how many bytes each row represents.
+ my $per_row_full_thresh_szB = $peak_mem_total_szB / $GRAPH_Y;
+ my $per_row_half_thresh_szB = $per_row_full_thresh_szB / 2;
+
+ # Work out which column this snapshot belongs to.
+ my $x_pos_frac = ($time_mss[$i] / $end_time_ms) * $GRAPH_X;
+ $x = int($x_pos_frac) + 1; # +1 due to y-axis
+
+ # Grow this snapshot bar from bottom to top.
+ for ($y = 1; $y <= $GRAPH_Y; $y++) {
+ my $this_row_full_thresh_szB = $y * $per_row_full_thresh_szB;
+ my $this_row_half_thresh_szB =
+ $this_row_full_thresh_szB - $per_row_half_thresh_szB;
+
+ $graph[$x][$y] = ' ';
+ if ($mem_total_Bs[$i] >= $this_row_half_thresh_szB) {
+ $graph[$x][$y] = '.';
+ }
+ if ($mem_total_Bs[$i] >= $this_row_full_thresh_szB) {
+ $graph[$x][$y] = ( $is_detaileds[$i] ? '|' : ':' );
+ }
+ }
+ # If it's detailed, mark the x-axis
+ if ($is_detaileds[$i]) {
+ $graph[$x][0] = '|';
+ }
+ }
+
+ # Work out the units for the $y-axis.
+ my $orders_of_magnitude = 0;
+ my $unit;
+ my $peak_mem_total_szBscaled = $peak_mem_total_szB;
+ while ($peak_mem_total_szBscaled > 1000) {
+ $orders_of_magnitude++;
+ $peak_mem_total_szBscaled /= 1000;
+ }
+ if (0 == $orders_of_magnitude) { $unit = ' '; }
+ elsif (1 == $orders_of_magnitude) { $unit = 'k'; }
+ elsif (2 == $orders_of_magnitude) { $unit = 'M'; }
+ elsif (3 == $orders_of_magnitude) { $unit = 'G'; }
+ elsif (4 == $orders_of_magnitude) { $unit = 'T'; }
+ else { die("unknown order of magnitude: $orders_of_magnitude\n"); }
+
+ # Print graph[][].
+ for ($y = $GRAPH_Y; $y >= 0; $y--) {
+ # Row prefix (ie. x-axis label)
+ if ($GRAPH_Y == $y) { # top point
+ if ($peak_mem_total_szBscaled < 10) {
+ printf("%3.1f%s", $peak_mem_total_szBscaled, $unit);
+ } else {
+ printf("%3d%s", $peak_mem_total_szBscaled, $unit);
+ }
+ } elsif (0 == $y) { # bottom point
+ print(" 0 ");
+ } else { # anywhere else
+ print(" ");
+ }
+
+ # Axis and data for the row.
+ for ($x = 0; $x <= $GRAPH_X; $x++) {
+ printf("%s", $graph[$x][$y]);
+ }
+ print("\n");
+ }
+
+ #-------------------------------------------------------------------------
+ # Print graph legend
+ #-------------------------------------------------------------------------
+ print("\n");
+ for (my $i = 0; $i < $n_snapshots; $i++) {
+ # XXX adjust the column widths dynamically
+ printf(" snapshot %3d: t = %12s ms, size = %12s bytes\n",
+ $snapshot_nums[$i], commify($time_mss[$i]),
+ commify($mem_total_Bs[$i]));
+ }
+ print("\n");
+}
+
+#-----------------------------------------------------------------------------
+# Reading the input file: pass 2
+#-----------------------------------------------------------------------------
+
+# This pass is for printing the snapshots. It prints them as it reads in
+# the file (as opposed to reading it all in and then dumping the output at
+# the end).
+sub read_input_file2()
+{
+ open(INPUTFILE, "< $input_file")
+ || die "Cannot open $input_file for reading\n";
+
+ # Read "desc:" lines.
+ my $line;
+ while ($line = get_line()) {
+ if ($line !~ s/^desc:\s*//) {
+ last;
+ }
+ }
+
+ # Read "cmd:" line (Nb: will already be in $line from "desc:" loop above).
+ ($line =~ /^cmd:\s*(.*)$/) or die("Line $.: missing command line\n");
+
# Read body of input file.
$line = get_line();
while (defined $line) {
@@ -235,8 +424,10 @@
if ($heap_tree eq "empty") {
# do nothing
} elsif ($heap_tree eq "...") {
- # Depth in the heap tree.
- read_heap_tree("", "", "", $mem_total_B);
+ # Depth in the heap tree. '1' means the tree should be printed.
+ read_heap_tree(1, "", "", "", $mem_total_B);
+ } else {
+ die("Line $.: expected 'empty' or '...' after 'heap_tree='\n");
}
$line = get_line();
}
@@ -245,458 +436,27 @@
}
#-----------------------------------------------------------------------------
-# Print options used
+# Misc functions
#-----------------------------------------------------------------------------
-# XXX: unused
-sub print_options ()
-{
- print($fancy);
- print($desc);
- print("Command: $cmd\n");
- print("Data file: $input_file\n");
-# print("Events recorded: @events\n");
-# print("Events shown: @show_events\n");
-# print("Event sort order: @sort_events\n");
-# print("Thresholds: @thresholds\n");
-#
-# my @include_dirs2 = @include_dirs; # copy @include_dirs
-# shift(@include_dirs2); # remove "" entry, which is always the first
-# unshift(@include_dirs2, "") if (0 == @include_dirs2);
-# my $include_dir = shift(@include_dirs2);
-# print("Include dirs: $include_dir\n");
-# foreach my $include_dir (@include_dirs2) {
-# print(" $include_dir\n");
-# }
-#
-# my @user_ann_files = keys %user_ann_files;
-# unshift(@user_ann_files, "") if (0 == @user_ann_files);
-# my $user_ann_file = shift(@user_ann_files);
-# print("User annotated: $user_ann_file\n");
-# foreach $user_ann_file (@user_ann_files) {
-# print(" $user_ann_file\n");
-# }
-#
-# my $is_on = ($auto_annotate ? "on" : "off");
-# print("Auto-annotation: $is_on\n");
-# print("\n");
-}
-
-#-----------------------------------------------------------------------------
-# Print summary and sorted function totals
-#-----------------------------------------------------------------------------
-#sub mycmp ($$)
-#{
-# my ($c, $d) = @_;
-#
-# # Iterate through sort events (eg. 3,2); return result if two are different
-# foreach my $i (@sort_order) {
-# my ($x, $y);
-# $x = $c->[$i];
-# $y = $d->[$i];
-# $x = -1 unless defined $x;
-# $y = -1 unless defined $y;
-#
-# my $cmp = $y <=> $x; # reverse sort
-# if (0 != $cmp) {
-# return $cmp;
-# }
-# }
-# # Exhausted events, equal
-# return 0;
-#}
-
sub commify ($) {
my ($val) = @_;
1 while ($val =~ s/^(\d+)(\d{3})/$1,$2/);
return $val;
}
-# Because the counts can get very big, and we don't want to waste screen space
-# and make lines too long, we compute exactly how wide each column needs to be
-# by finding the widest entry for each one.
-#sub compute_CC_col_widths (@)
-#{
-# my @CCs = @_;
-# my $CC_col_widths = [];
-#
-# # Initialise with minimum widths (from event names)
-# foreach my $event (@events) {
-# push(@$CC_col_widths, length($event));
-# }
-#
-# # Find maximum width count for each column. @CC_col_width positions
-# # correspond to @CC positions.
-# foreach my $CC (@CCs) {
-# foreach my $i (0 .. scalar(@$CC)-1) {
-# if (defined $CC->[$i]) {
-# # Find length, accounting for commas that will be added
-# my $length = length $CC->[$i];
-# my $clength = $length + int(($length - 1) / 3);
-# $CC_col_widths->[$i] = max($CC_col_widths->[$i], $clength);
-# }
-# }
-# }
-# return $CC_col_widths;
-#}
-#
-## Print the CC with each column's size dictated by $CC_col_widths.
-#sub print_CC ($$)
-#{
-# my ($CC, $CC_col_widths) = @_;
-#
-# foreach my $i (@show_order) {
-# my $count = (defined $CC->[$i] ? commify($CC->[$i]) : ".");
-# my $space = ' ' x ($CC_col_widths->[$i] - length($count));
-# print("$space$count ");
-# }
-#}
-#
-#sub print_events ($)
-#{
-# my ($CC_col_widths) = @_;
-#
-# foreach my $i (@show_order) {
-# my $event = $events[$i];
-# my $event_width = length($event);
-# my $col_width = $CC_col_widths->[$i];
-# my $space = ' ' x ($col_width - $event_width);
-# print("$space$event ");
-# }
-#}
-#
-## Prints summary and function totals (with separate column widths, so that
-## function names aren't pushed over unnecessarily by huge summary figures).
-## Also returns a hash containing all the files that are involved in getting the
-## events count above the thresholds (ie. all the interesting ones).
-#sub print_summary_and_fn_totals ()
-#{
-# my @fn_fullnames = keys %fn_totals;
-#
-# # Work out the size of each column for printing (summary and functions
-# # separately).
-# my $summary_CC_col_widths = compute_CC_col_widths($summary_CC);
-# my $fn_CC_col_widths = compute_CC_col_widths(values %fn_totals);
-#
-# # Header and counts for summary
-# print($fancy);
-# print_events($summary_CC_col_widths);
-# print("\n");
-# print($fancy);
-# print_CC($summary_CC, $summary_CC_col_widths);
-# print(" PROGRAM TOTALS\n");
-# print("\n");
-#
-# # Header for functions
-# print($fancy);
-# print_events($fn_CC_col_widths);
-# print(" file:function\n");
-# print($fancy);
-#
-# # Sort function names into order dictated by --sort option.
-# @fn_fullnames = sort {
-# mycmp($fn_totals{$a}, $fn_totals{$b})
-# } @fn_fullnames;
-#
-#
-# # Assertion
-# (scalar @sort_order == scalar @thresholds) or
-# die("sort_order length != thresholds length:\n",
-# " @sort_order\n @thresholds\n");
-#
-# my $threshold_files = {};
-# # @curr_totals has the same shape as @sort_order and @thresholds
-# my @curr_totals = ();
-# foreach my $e (@thresholds) {
-# push(@curr_totals, 0);
-# }
-#
-# # Print functions, stopping when the threshold has been reached.
-# foreach my $fn_name (@fn_fullnames) {
-#
-# # Stop when we've reached all the thresholds
-# my $reached_all_thresholds = 1;
-# foreach my $i (0 .. scalar @thresholds - 1) {
-# my $prop = $curr_totals[$i] * 100 / $summary_CC->[$sort_order[$i]];
-# $reached_all_thresholds &&= ($prop >= $thresholds[$i]);
-# }
-# last if $reached_all_thresholds;
-#
-# # Print function results
-# my $fn_CC = $fn_totals{$fn_name};
-# print_CC($fn_CC, $fn_CC_col_widths);
-# print(" $fn_name\n");
-#
-# # Update the threshold counts
-# my $filename = $fn_name;
-# $filename =~ s/:.+$//; # remove function name
-# $threshold_files->{$filename} = 1;
-# foreach my $i (0 .. scalar @sort_order - 1) {
-# $curr_totals[$i] += $fn_CC->[$sort_order[$i]]
-# if (defined $fn_CC->[$sort_order[$i]]);
-# }
-# }
-# print("\n");
-#
-# return $threshold_files;
-#}
-#-----------------------------------------------------------------------------
-# Annotate selected files
-#-----------------------------------------------------------------------------
-
-## Issue a warning that the source file is more recent than the input file.
-#sub warning_on_src_more_recent_than_inputfile ($)
-#{
-# my $src_file = $_[0];
-#
-# my $warning = <<END
-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-#@@ WARNING @@ WARNING @@ WARNING @@ WARNING @@ WARNING @@ WARNING @@ WARNING @@
-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-#@ Source file '$src_file' is more recent than input file '$input_file'.
-#@ Annotations may not be correct.
-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-#
-#END
-#;
-# print($warning);
-#}
-#
-## If there is information about lines not in the file, issue a warning
-## explaining possible causes.
-#sub warning_on_nonexistent_lines ($$$)
-#{
-# my ($src_more_recent_than_inputfile, $src_file, $excess_line_nums) = @_;
-# my $cause_and_solution;
-#
-# if ($src_more_recent_than_inputfile) {
-# $cause_and_solution = <<END
-#@@ cause: '$src_file' has changed since information was gathered.
-#@@ If so, a warning will have already been issued about this.
-#@@ solution: Recompile program and rerun under "valgrind --cachesim=yes" to
-#@@ gather new information.
-#END
-# # We suppress warnings about .h files
-# } elsif ($src_file =~ /\.h$/) {
-# $cause_and_solution = <<END
-#@@ cause: bug in the Valgrind's debug info reader that screws up with .h
-#@@ files sometimes
-#@@ solution: none, sorry
-#END
-# } else {
-# $cause_and_solution = <<END
-#@@ cause: not sure, sorry
-#END
-# }
-#
-# my $warning = <<END
-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-#@@ WARNING @@ WARNING @@ WARNING @@ WARNING @@ WARNING @@ WARNING @@ WARNING @@
-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-#@@
-#@@ Information recorded about lines past the end of '$src_file'.
-#@@
-#@@ Probable cause and solution:
-#$cause_and_solution@@
-#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-#END
-#;
-# print($warning);
-#}
-#
-#sub annotate_ann_files($)
-#{
-# my ($threshold_files) = @_;
-#
-# my %all_ann_files;
-# my @unfound_auto_annotate_files;
-# my $printed_totals_CC = [];
-#
-# # If auto-annotating, add interesting files (but not "???")
-# if ($auto_annotate) {
-# delete $threshold_files->{"???"};
-# %all_ann_files = (%user_ann_files, %$threshold_files)
-# } else {
-# %all_ann_files = %user_ann_files;
-# }
-#
-# # Track if we did any annotations.
-# my $did_annotations = 0;
-#
-# LOOP:
-# foreach my $src_file (keys %all_ann_files) {
-#
-# my $opened_file = "";
-# my $full_file_name = "";
-# foreach my $include_dir (@include_dirs) {
-# my $try_name = $include_dir . $src_file;
-# if (open(INPUTFILE, "< $try_name")) {
-# $opened_file = $try_name;
-# $full_file_name = ($include_dir eq ""
-# ? $src_file
-# : "$include_dir + $src_file");
-# last;
-# }
-# }
-#
-# if (not $opened_file) {
-# # Failed to open the file. If chosen on the command line, die.
-# # If arose from auto-annotation, print a little message.
-# if (defined $user_ann_files{$src_file}) {
-# die("File $src_file not opened in any of: @include_dirs\n");
-#
-# } else {
-# push(@unfound_auto_annotate_files, $src_file);
-# }
-#
-# } else {
-# # File header (distinguish between user- and auto-selected files).
-# print("$fancy");
-# my $ann_type =
-# (defined $user_ann_files{$src_file} ? "User" : "Auto");
-# print("-- $ann_type-annotated source: $full_file_name\n");
-# print("$fancy");
-#
-# # Get file's CCs
-# my $src_file_CCs = $all_ind_CCs{$src_file};
-# if (!defined $src_file_CCs) {
-# print(" No information has been collected for $src_file\n\n");
-# next LOOP;
-# }
-#
-# $did_annotations = 1;
-#
-# # Numeric, not lexicographic sort!
-# my @line_nums = sort {$a <=> $b} keys %$src_file_CCs;
-#
-# # If $src_file more recent than cachegrind.out, issue warning
-# my $src_more_recent_than_inputfile = 0;
-# if ((stat $opened_file)[9] > (stat $input_file)[9]) {
-# $src_more_recent_than_inputfile = 1;
-# warning_on_src_more_recent_than_inputfile($src_file);
-# }
-#
-# # Work out the size of each column for printing
-# my $CC_col_widths = compute_CC_col_widths(values %$src_file_CCs);
-#
-# # Events header
-# print_events($CC_col_widths);
-# print("\n\n");
-#
-# # Shift out 0 if it's in the line numbers (from unknown entries,
-# # likely due to bugs in Valgrind's stabs debug info reader)
-# shift(@line_nums) if (0 == $line_nums[0]);
-#
-# # Finds interesting line ranges -- all lines with a CC, and all
-# # lines within $context lines of a line with a CC.
-# my $n = @line_nums;
-# my @pairs;
-# for (my $i = 0; $i < $n; $i++) {
-# push(@pairs, $line_nums[$i] - $context); # lower marker
-# while ($i < $n-1 &&
-# $line_nums[$i] + 2*$context >= $line_nums[$i+1]) {
-# $i++;
-# }
-# push(@pairs, $line_nums[$i] + $context); # upper marker
-# }
-#
-# # Annotate chosen lines, tracking total counts of lines printed
-# $pairs[0] = 1 if ($pairs[0] < 1);
-# while (@pairs) {
-# my $low = shift @pairs;
-# my $high = shift @pairs;
-# while ($. < $low-1) {
-# my $tmp = <INPUTFILE>;
-# last unless (defined $tmp); # hack to detect EOF
-# }
-# my $src_line;
-# # Print line number, unless start of file
-# print("-- line $low " . '-' x 40 . "\n") if ($low != 1);
-# while (($. < $high) && ($src_line = <INPUTFILE>)) {
-# if (defined $line_nums[0] && $. == $line_nums[0]) {
-# print_CC($src_file_CCs->{$.}, $CC_col_widths);
-# add_array_a_to_b($src_file_CCs->{$.},
-# $printed_totals_CC);
-# shift(@line_nums);
-#
-# } else {
-# print_CC( [], $CC_col_widths);
-# }
-#
-# print(" $src_line");
-# }
-# # Print line number, unless EOF
-# if ($src_line) {
-# print("-- line $high " . '-' x 40 . "\n");
-# } else {
-# last;
-# }
-# }
-#
-# # If there was info on lines past the end of the file...
-# if (@line_nums) {
-# foreach my $line_num (@line_nums) {
-# print_CC($src_file_CCs->{$line_num}, $CC_col_widths);
-# print(" <bogus line $line_num>\n");
-# }
-# print("\n");
-# warning_on_nonexistent_lines($src_more_recent_than_inputfile,
-# $src_file, \@line_nums);
-# }
-# print("\n");
-#
-# # Print summary of counts attributed to file but not to any
-# # particular line (due to incomplete debug info).
-# if ($src_file_CCs->{0}) {
-# print_CC($src_file_CCs->{0}, $CC_col_widths);
-# print(" <counts for unidentified lines in $src_file>\n\n");
-# }
-#
-# close(INPUTFILE);
-# }
-# }
-#
-# # Print list of unfound auto-annotate selected files.
-# if (@unfound_auto_annotate_files) {
-# print("$fancy");
-# print("The following files chosen for auto-annotation could not be found:\n");
-# print($fancy);
-# foreach my $f (@unfound_auto_annotate_files) {
-# print(" $f\n");
-# }
-# print("\n");
-# }
-#
-# # If we did any annotating, print what proportion of events were covered by
-# # annotated lines above.
-# if ($did_annotations) {
-# my $percent_printed_CC;
-# foreach (my $i = 0; $i < @$summary_CC; $i++) {
-# $percent_printed_CC->[$i] =
-# sprintf("%.0f",
-# $printed_totals_CC->[$i] / $summary_CC->[$i] * 100);
-# }
-# my $pp_CC_col_widths = compute_CC_col_widths($percent_printed_CC);
-# print($fancy);
-# print_events($pp_CC_col_widths);
-# print("\n");
-# print($fancy);
-# print_CC($percent_printed_CC, $pp_CC_col_widths);
-# print(" percentage of events annotated\n\n");
-# }
-#}
-
#----------------------------------------------------------------------------
# "main()"
#----------------------------------------------------------------------------
process_cmd_line();
-read_input_file();
+read_input_file1();
+read_input_file2();
#print_options();
#my $threshold_files = print_summary_and_fn_totals();
#annotate_ann_files($threshold_files);
##--------------------------------------------------------------------##
-##--- end cg_annotate.in ---##
+##--- end ms_print.in ---##
##--------------------------------------------------------------------##
|
|
From: Tom H. <th...@cy...> - 2007-04-14 02:32:00
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-04-14 03:15:05 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 == 256 tests, 27 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2007-04-14 02:23:44
|
Nightly build on dellow ( x86_64, Fedora Core 6 ) started at 2007-04-14 03:10:04 BST 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 == 292 tests, 4 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) ================================================= == 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 == 292 tests, 4 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Apr 14 03:17:00 2007 --- new.short Sat Apr 14 03:23:37 2007 *************** *** 8,10 **** ! == 292 tests, 4 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 292 tests, 4 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) *************** *** 14,16 **** none/tests/mremap2 (stdout) - none/tests/pth_detached (stdout) --- 14,15 ---- |
|
From: Tom H. <th...@cy...> - 2007-04-14 02:14:54
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-04-14 03:00:02 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo gcc -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -o nibz_bennee_mmap nibz_bennee_mmap.o if gcc -DHAVE_CONFIG_H -I. -I. -I../../.. -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -MT slahf-amd64.o -MD -MP -MF ".deps/slahf-amd64.Tpo" -c -o slahf-amd64.o slahf-amd64.c; \ then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi /tmp/ccvjZGGM.s: Assembler messages: /tmp/ccvjZGGM.s:27: Error: suffix or operands invalid for `lahf' /tmp/ccvjZGGM.s:37: Error: suffix or operands invalid for `lahf' /tmp/ccvjZGGM.s:43: Error: suffix or operands invalid for `sahf' /tmp/ccvjZGGM.s:45: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 rm insn_sse3.c insn_sse.c insn_mmx.c insn_fpu.c insn_sse2.c insn_basic.c make[5]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none/tests/amd64' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none/tests/amd64' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind' make: *** [check] Error 2 ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo gcc -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -o nibz_bennee_mmap nibz_bennee_mmap.o if gcc -DHAVE_CONFIG_H -I. -I. -I../../.. -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -MT slahf-amd64.o -MD -MP -MF ".deps/slahf-amd64.Tpo" -c -o slahf-amd64.o slahf-amd64.c; \ then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi /tmp/ccvMx1Op.s: Assembler messages: /tmp/ccvMx1Op.s:27: Error: suffix or operands invalid for `lahf' /tmp/ccvMx1Op.s:37: Error: suffix or operands invalid for `lahf' /tmp/ccvMx1Op.s:43: Error: suffix or operands invalid for `sahf' /tmp/ccvMx1Op.s:45: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 rm insn_sse3.c insn_sse.c insn_mmx.c insn_fpu.c insn_sse2.c insn_basic.c make[5]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none/tests/amd64' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none/tests/amd64' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Apr 14 03:07:35 2007 --- new.short Sat Apr 14 03:14:47 2007 *************** *** 10,16 **** then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi ! /tmp/ccvMx1Op.s: Assembler messages: ! /tmp/ccvMx1Op.s:27: Error: suffix or operands invalid for `lahf' ! /tmp/ccvMx1Op.s:37: Error: suffix or operands invalid for `lahf' ! /tmp/ccvMx1Op.s:43: Error: suffix or operands invalid for `sahf' ! /tmp/ccvMx1Op.s:45: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 --- 10,16 ---- then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi ! /tmp/ccvjZGGM.s: Assembler messages: ! /tmp/ccvjZGGM.s:27: Error: suffix or operands invalid for `lahf' ! /tmp/ccvjZGGM.s:37: Error: suffix or operands invalid for `lahf' ! /tmp/ccvjZGGM.s:43: Error: suffix or operands invalid for `sahf' ! /tmp/ccvjZGGM.s:45: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 |
|
From: Tom H. <th...@cy...> - 2007-04-14 02:12:51
|
Nightly build on lloyd ( x86_64, Fedora Core 3 ) started at 2007-04-14 03:05:07 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo gcc -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -o nibz_bennee_mmap nibz_bennee_mmap.o if gcc -DHAVE_CONFIG_H -I. -I. -I../../.. -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -MT slahf-amd64.o -MD -MP -MF ".deps/slahf-amd64.Tpo" -c -o slahf-amd64.o slahf-amd64.c; \ then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi /tmp/cc5PrykG.s: Assembler messages: /tmp/cc5PrykG.s:18: Error: suffix or operands invalid for `lahf' /tmp/cc5PrykG.s:28: Error: suffix or operands invalid for `lahf' /tmp/cc5PrykG.s:34: Error: suffix or operands invalid for `sahf' /tmp/cc5PrykG.s:36: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 rm insn_sse3.c insn_sse.c insn_mmx.c insn_fpu.c insn_sse2.c insn_basic.c make[5]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none/tests/amd64' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none/tests/amd64' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind' make: *** [check] Error 2 ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Last 20 lines of verbose log follow echo gcc -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -o nibz_bennee_mmap nibz_bennee_mmap.o if gcc -DHAVE_CONFIG_H -I. -I. -I../../.. -Winline -Wall -Wshadow -g -I../../../include -Wno-long-long -Wdeclaration-after-statement -MT slahf-amd64.o -MD -MP -MF ".deps/slahf-amd64.Tpo" -c -o slahf-amd64.o slahf-amd64.c; \ then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi /tmp/cc48Yv71.s: Assembler messages: /tmp/cc48Yv71.s:18: Error: suffix or operands invalid for `lahf' /tmp/cc48Yv71.s:28: Error: suffix or operands invalid for `lahf' /tmp/cc48Yv71.s:34: Error: suffix or operands invalid for `sahf' /tmp/cc48Yv71.s:36: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 rm insn_sse3.c insn_sse.c insn_mmx.c insn_fpu.c insn_sse2.c insn_basic.c make[5]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none/tests/amd64' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none/tests/amd64' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-04-14/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Apr 14 03:09:44 2007 --- new.short Sat Apr 14 03:12:42 2007 *************** *** 10,16 **** then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi ! /tmp/cc48Yv71.s: Assembler messages: ! /tmp/cc48Yv71.s:18: Error: suffix or operands invalid for `lahf' ! /tmp/cc48Yv71.s:28: Error: suffix or operands invalid for `lahf' ! /tmp/cc48Yv71.s:34: Error: suffix or operands invalid for `sahf' ! /tmp/cc48Yv71.s:36: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 --- 10,16 ---- then mv -f ".deps/slahf-amd64.Tpo" ".deps/slahf-amd64.Po"; else rm -f ".deps/slahf-amd64.Tpo"; exit 1; fi ! /tmp/cc5PrykG.s: Assembler messages: ! /tmp/cc5PrykG.s:18: Error: suffix or operands invalid for `lahf' ! /tmp/cc5PrykG.s:28: Error: suffix or operands invalid for `lahf' ! /tmp/cc5PrykG.s:34: Error: suffix or operands invalid for `sahf' ! /tmp/cc5PrykG.s:36: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 |
|
From: <js...@ac...> - 2007-04-14 00:16:38
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-04-14 02:00:01 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 == 226 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Nicholas N. <nj...@cs...> - 2007-04-13 22:39:14
|
On Fri, 13 Apr 2007, Josef Weidendorfer wrote: >> I was wondering if valgrind had the kind of functionality that memspy >> does. For example, can it tell me which of three data structures >> referenced in a line of code is experiencing the most cache misses >> and what's pushing it out of cache? > > AFAIK no. > It should be possible, and I once started something like this, but did > not finish. However, it already showed some aggregate counters (as part > of debug output) attributed to global data symbols... I have the startings of something like this as well :) It uses client requests in the source code to specify which bits of memory should be considered a single entity. But it's not very advanced. Nick |
|
From: Vikas <cat...@gm...> - 2007-04-13 21:47:41
|
Yes , ASAIK also its no . those multiprocessor related details things are done in simulators like SIMICS which i worked on ... On 4/13/07, Josef Weidendorfer <Jos...@gm...> wrote: > > On Friday 13 April 2007, Andrew Shewmaker wrote: > > Hi, > > > > I was wondering if valgrind had the kind of functionality that memspy > > does. For example, can it tell me which of three data structures > > referenced in a line of code is experiencing the most cache misses > > and what's pushing it out of cache? > > AFAIK no. > It should be possible, and I once started something like this, but did > not finish. However, it already showed some aggregate counters (as part > of debug output) attributed to global data symbols... > > Perhaps a simpler way would be to attribute misses to source code columns > when debug info has this information... > > Josef > > > > > MemSpy > > > > "a prototype tool that helps programmers identify and fix memory > > bottlenecks in both sequential and parallel programs. A key aspect of > > MemSpy is that it introduces the notion of data oriented, in addition > > to code oriented, performance tuning. Thus, for both source level code > > objects and data objects, MemSpy provides information such as cache > > miss rates, causes of cache misses, and in multiprocessors, > > information on cache invalidations and local versus remote memory > > misses. MemSpy also introduces a concise matrix presentation to allow > > programmers to view both code and data oriented statistics at the same > > time." > > > > http://www.cs.washington.edu/homes/tom/pubs/memspy.html > > http://www.cs.washington.edu/homes/tom/pubs/trace-samp.html > > http://www.cs.washington.edu/homes/tom/pubs/memspy95.html > > > > > > Thanks, > > > > Andrew Shewmaker > > > > > ------------------------------------------------------------------------- > > Take Surveys. Earn Cash. Influence the Future of IT > > Join SourceForge.net's Techsay panel and you'll get the chance to share > your > > opinions on IT & business topics through brief surveys-and earn cash > > > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > > _______________________________________________ > > Valgrind-developers mailing list > > Val...@li... > > https://lists.sourceforge.net/lists/listinfo/valgrind-developers > > > > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share > your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers > |
|
From: Josef W. <Jos...@gm...> - 2007-04-13 21:35:48
|
On Friday 13 April 2007, Andrew Shewmaker wrote: > Hi, > > I was wondering if valgrind had the kind of functionality that memspy > does. For example, can it tell me which of three data structures > referenced in a line of code is experiencing the most cache misses > and what's pushing it out of cache? AFAIK no. It should be possible, and I once started something like this, but did not finish. However, it already showed some aggregate counters (as part of debug output) attributed to global data symbols... Perhaps a simpler way would be to attribute misses to source code columns when debug info has this information... Josef > > MemSpy > > "a prototype tool that helps programmers identify and fix memory > bottlenecks in both sequential and parallel programs. A key aspect of > MemSpy is that it introduces the notion of data oriented, in addition > to code oriented, performance tuning. Thus, for both source level code > objects and data objects, MemSpy provides information such as cache > miss rates, causes of cache misses, and in multiprocessors, > information on cache invalidations and local versus remote memory > misses. MemSpy also introduces a concise matrix presentation to allow > programmers to view both code and data oriented statistics at the same > time." > > http://www.cs.washington.edu/homes/tom/pubs/memspy.html > http://www.cs.washington.edu/homes/tom/pubs/trace-samp.html > http://www.cs.washington.edu/homes/tom/pubs/memspy95.html > > > Thanks, > > Andrew Shewmaker > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers > |
|
From: Andrew S. <ag...@gm...> - 2007-04-13 18:44:23
|
Hi, I was wondering if valgrind had the kind of functionality that memspy does. For example, can it tell me which of three data structures referenced in a line of code is experiencing the most cache misses and what's pushing it out of cache? MemSpy "a prototype tool that helps programmers identify and fix memory bottlenecks in both sequential and parallel programs. A key aspect of MemSpy is that it introduces the notion of data oriented, in addition to code oriented, performance tuning. Thus, for both source level code objects and data objects, MemSpy provides information such as cache miss rates, causes of cache misses, and in multiprocessors, information on cache invalidations and local versus remote memory misses. MemSpy also introduces a concise matrix presentation to allow programmers to view both code and data oriented statistics at the same time." http://www.cs.washington.edu/homes/tom/pubs/memspy.html http://www.cs.washington.edu/homes/tom/pubs/trace-samp.html http://www.cs.washington.edu/homes/tom/pubs/memspy95.html Thanks, Andrew Shewmaker |
|
From: <js...@ac...> - 2007-04-13 12:14:06
|
Nightly build on minnie ( SuSE 10.0, ppc32 ) started at 2007-04-13 09:00:01 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 == 219 tests, 10 stderr failures, 6 stdout failures, 0 posttest failures == memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-fp (stderr) none/tests/ppc32/round (stdout) none/tests/ppc32/round (stderr) none/tests/ppc32/test_fx (stdout) none/tests/ppc32/test_fx (stderr) none/tests/ppc32/test_gx (stdout) |
|
From: <sv...@va...> - 2007-04-13 04:50:52
|
Author: njn
Date: 2007-04-13 05:50:48 +0100 (Fri, 13 Apr 2007)
New Revision: 6701
Log:
minor things, mostly comments
Modified:
branches/MASSIF2/massif/ms_main.c
Modified: branches/MASSIF2/massif/ms_main.c
===================================================================
--- branches/MASSIF2/massif/ms_main.c 2007-04-13 04:50:36 UTC (rev 6700)
+++ branches/MASSIF2/massif/ms_main.c 2007-04-13 04:50:48 UTC (rev 6701)
@@ -37,9 +37,28 @@
// - exact peak, or within a certain percentage?
// - include the stack? makes it harder
//
+// Option #1
+// - just take the peak snapshot.
+// - pros:
+// - easy, fast
+// - cons:
+// - not the true peak
+//
+// #2: true peak
+// - check every malloc, every new_mem_stack
+// - slow
+// - most accurate
+//
+// #2a:
+// - same, but only do detailed snapshot if x% larger than previous peak
+//
+// #3: in-between
+// - check every malloc, but not every new_mem_stack
+//
// Separate content from presentation by dumping all results to a file and
// then post-processing with a separate program, a la Cachegrind?
-// - work out the file format
+// - work out the file format (Josef wants Callgrind format, Donna wants
+// XML, Nick wants something easy to read in Perl)
// - allow truncation of long fnnames if the exact line number is
// identified? [hmm, could make getting the name of alloc-fns more
// difficult]
@@ -671,6 +690,7 @@
// XXX: look at the "(below main)"/"__libc_start_main" mess (m_stacktrace.c
// and m_demangle.c). Don't hard-code "(below main)" in here.
+// [Nb: Josef wants --show-below-main to work for his fn entry/exit tracing]
static Bool is_main_or_below_main(Char* fnname)
{
Int i;
@@ -1589,8 +1609,6 @@
for (i = 0; i < parent->n_children; i++) {
child = parent->children[i];
- child_is_last_sibling = ( i+1 == parent->n_children ? True : False );
-
// Indent appropriately
P("%s", depth_str);
if (is_significant_XPt(child, curr_total_szB)) {
@@ -1604,7 +1622,7 @@
// prefix for them, which is " " if the parent has no smaller
// siblings following, or "| " if it does.
tl_assert(depth*2+1 < depth_str_len-1); // -1 for end NUL char
- if (child_is_last_sibling) {
+ if ( i+1 == parent->n_children ) { // ie. child is last sibling
depth_str[depth*2+0] = ' ';
depth_str[depth*2+1] = ' ';
depth_str[depth*2+2] = '\0';
|