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: <sv...@va...> - 2007-04-18 14:02:56
|
Author: njn
Date: 2007-04-18 15:02:15 +0100 (Wed, 18 Apr 2007)
New Revision: 6705
Log:
No functional changes, just changed some comments, formatting, variable
names.
Modified:
branches/MASSIF2/massif/ms_main.c
branches/MASSIF2/massif/ms_print
Modified: branches/MASSIF2/massif/ms_main.c
===================================================================
--- branches/MASSIF2/massif/ms_main.c 2007-04-18 13:53:30 UTC (rev 6704)
+++ branches/MASSIF2/massif/ms_main.c 2007-04-18 14:02:15 UTC (rev 6705)
@@ -185,69 +185,7 @@
// - User-requested snapshots: These are done in response to client
// requests. They are always kept.
//
-// The summary output produced by Massif could include a graph like this.
-//
-//---------------------------------------------------------------------------
-// 100M|B . :A
-// | .::: :::#
-// | :::::. c:::#:
-// | b:::::: |:::#::
-// | :|:::::::|:::#::
-// 75M| :|:::::::|:::#:::
-// | ::|:::::::|:::#:::
-// | ::|:::::::|:::#:::d
-// | ::|:::::::|:::#:::|:
-// | .::|:::::::|:::#:::|::
-// 50M| :::|:::::::|:::#:::|:::
-// | ::::|:::::::|:::#:::|::::: :::.
-// | :::::|:::::::|:::#:::|:::::: g::::::::
-// | a:::::|:::::::|:::#:::|:::::::e: ::|::::::::::h
-// | |:::::|:::::::|:::#:::|:::::::|::. :: .:::|::::::::::|::
-// 25M| |:::::|:::::::|:::#:::|:::::::|:::: f:::::::|::::::::::|::
-// | :|:::::|:::::::|:::#:::|:::::::|::::. .::|:::::::|::::::::::|::
-// | .::|:::::|:::::::|:::#:::|:::::::|::::::::::|:::::::|::::::::::|::
-// | .::::|:::::|:::::::|:::#:::|:::::::|::::::::::|:::::::|::::::::::|::
-// |:::::::|:::::|:::::::|:::#:::|:::::::|::::::::::|:::::::|::::::::::|::
-// 0M+----------------------------------------------------------------------t
-// 012
-//
-// Temporary snapshots:
-// a: periodic snapshot, total size: 33,000,000 bytes
-// b: periodic snapshot, total size: 82,000,000 bytes
-// c: periodic snapshot, total size: 90,000,000 bytes
-// d: periodic snapshot, total size: 64,000,000 bytes
-// e: periodic snapshot, total size: 34,000,000 bytes
-// f: periodic snapshot, total size: 24,000,000 bytes
-// g: periodic snapshot, total size: 39,000,000 bytes
-// h: periodic snapshot, total size: 33,000,000 bytes
-//
-// Permanent snapshots:
-// A: peak snapshot, total size: 100,000,000 bytes
-//---------------------------------------------------------------------------
-//
-// Explanation of the y-axis:
-// - Top of the x-axis box represents 0.
-//
-// 4M^| .: This row has base=2M, half-threshold=3M, full-threshold=4M
-// 2M^| .::: This row has base=0M, half-threshold=1M, full-threshold=2M
-// 0M +-----
-// abcde
-//
-// - A '.' is only shown in a row if we've reached its half-threshold
-// - A ':' is only shown in a row if we've reached its full-threshold
-// - So: a is in range 0 -- 0.99
-// b is in range 1 -- 1.99
-// c is in range 2 -- 2.99
-// d is in range 3 -- 3.99
-// e is in range 4 -- 4.99
-//
-// Explanation of x-axis:
-// - Assume each column represents one second
-// - First usable column has range 0..0.99s
-// - Second usable column has range 1..1.99s
-// - etc.
-
///-----------------------------------------------------------//
//--- Main types ---//
//------------------------------------------------------------//
@@ -1397,7 +1335,7 @@
//------------------------------------------------------------//
-//--- Writing the graph file ---//
+//--- Writing snapshots ---//
//------------------------------------------------------------//
#if 0
@@ -1419,142 +1357,6 @@
}
#endif
-#if 0
-static void write_text_graph(void)
-{
- Int i;
- Int x, y; // y must be signed!
- Int end_time_ms;
- Char unit;
- Int orders_of_magnitude;
- SizeT peak_snapshot_total_szScaled;
-
- // XXX: unhardwire the sizes later
- #define GRAPH_X 72
- #define GRAPH_Y 20
-
- // 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.
- Char graph[GRAPH_X+1][GRAPH_Y+1];
-
- // We increment end_time_ms by 1 so that the last snapshot occurs just
- // before it, and doesn't spill over into the final column.
- tl_assert(next_snapshot > 0);
- end_time_ms = snapshots[next_snapshot-1].time_ms + 1;
- tl_assert(end_time_ms > 0);
-
- // 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
- for (i = 0; i < next_snapshot; i++) {
- Snapshot* snapshot = & snapshots[i];
-
- // Work out how many bytes each row represents.
- double per_row_full_thresh_szB = (double)peak_snapshot_total_szB / GRAPH_Y;
- double per_row_half_thresh_szB = per_row_full_thresh_szB / 2;
-
- // Work out which column this snapshot belongs to.
- double x_pos_frac = ((double)snapshot->time_ms / 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++) {
- double this_row_full_thresh_szB = y * per_row_full_thresh_szB;
- double this_row_half_thresh_szB =
- this_row_full_thresh_szB - per_row_half_thresh_szB;
-
- graph[x][y] = ' ';
- if (snapshot->total_szB >= this_row_half_thresh_szB)
- graph[x][y] = '.';
- if (snapshot->total_szB >= this_row_full_thresh_szB)
- graph[x][y] = ( is_detailed_snapshot(snapshot) ? '|' : ':' );
- }
- // If it's detailed, mark the x-axis
- if (is_detailed_snapshot(snapshot))
- graph[x][0] = '|';
- }
-
- // Work out the units for the y-axis.
- orders_of_magnitude = 0;
- peak_snapshot_total_szScaled = peak_snapshot_total_szB;
- while (peak_snapshot_total_szScaled > 1000) {
- orders_of_magnitude++;
- peak_snapshot_total_szScaled /= 1000;
- }
- switch (orders_of_magnitude) {
- case 0: unit = ' '; break;
- case 1: unit = 'k'; break;
- case 2: unit = 'M'; break;
- case 3: unit = 'G'; break;
- case 4: unit = 'T'; break;
- default:
- tl_assert2(0, "unknown order of magnitude: %d", orders_of_magnitude);
- }
-
- // Print graph header, including command line.
- P("-- start graph header --\n");
- P("cmd: ");
- if (VG_(args_the_exename)) {
- P("%s", VG_(args_the_exename));
- for (i = 0; i < VG_(sizeXA)( VG_(args_for_client) ); i++) {
- HChar* arg = * (HChar**) VG_(indexXA)( VG_(args_for_client), i );
- if (arg)
- P(" %s", arg);
- }
- } else {
- P(" ???");
- }
- P("\n");
- P("-- end graph header --\n");
-
- // Print graph[][].
- P("-- start graph --\n");
- for (y = GRAPH_Y; y >= 0; y--) {
- // Row prefix
- if (GRAPH_Y == y) // top point
- P("%3lu%c", peak_snapshot_total_szScaled, unit);
- else if (0 == y) // bottom point
- P(" 0 ");
- else // anywhere else
- P(" ");
-
- // Axis and data for the row
- for (x = 0; x <= GRAPH_X; x++) {
- P("%c", graph[x][y]);
- }
- P("\n");
- }
- P("-- end graph --\n");
-
- // Print graph legend.
- P("-- start graph legend --\n");
- for (i = 0; i < next_snapshot; i++) {
- Snapshot* snapshot = & snapshots[i];
- if (is_detailed_snapshot(snapshot)) {
- P(" snapshot %3d: t = %,12d ms, size = %,12ld bytes\n",
- i, snapshot->time_ms, snapshot->total_szB);
- }
- }
- P("-- end graph legend --\n");
-}
-#endif
-
-
-//------------------------------------------------------------//
-//--- Writing snapshots ---//
-//------------------------------------------------------------//
-
// Nb: uses a static buffer, each call trashes the last string returned.
static Char* make_perc(ULong x, ULong y)
{
@@ -1604,24 +1406,21 @@
}
// Sort XPt's children by curr_szB (reverse order: biggest to smallest)
- // XXX: is it better to keep them always in order?
- // XXX: or, don't keep them in order, inspect all of them, but sort
- // the selected ones in the queue when they're added.
VG_(ssort)(xpt->children, xpt->n_children, sizeof(XPt*),
XPt_revcmp_curr_szB);
// How many children are significant? Also calculate the number of child
- // entries to print: there may be a need for an "insignificant rest"
- // line.
- for (i = 0;
- i < xpt->n_children &&
- is_significant_XPt(xpt->children[i], curr_total_szB);
- i++) { }
- n_sig_children = i;
+ // entries to print -- there may be a need for an "N other insignificant
+ // places" line.
+ n_sig_children = 0;
+ while (n_sig_children < xpt->n_children &&
+ is_significant_XPt(xpt->children[n_sig_children], curr_total_szB)) {
+ n_sig_children++;
+ }
n_insig_children = xpt->n_children - n_sig_children;
n_child_entries = n_sig_children + ( n_insig_children > 0 ? 1 : 0 );
- // Print the XPt entry
+ // Print the XPt entry.
if (xpt->ip == 0) {
ip_desc =
"(heap allocation functions) malloc/new/new[], --alloc-fns, etc.";
@@ -1629,15 +1428,14 @@
ip_desc = VG_(describe_IP)(xpt->ip-1, buf2, BUF_LEN);
}
perc = make_perc(xpt->curr_szB, curr_total_szB);
- P("%sn%d: %ld %s\n",
- depth_str, n_child_entries, xpt->curr_szB, ip_desc);
+ P("%sn%d: %ld %s\n", depth_str, n_child_entries, xpt->curr_szB, ip_desc);
- // Indent
+ // Indent.
tl_assert(depth+1 < depth_str_len-1); // -1 for end NUL char
depth_str[depth+0] = ' ';
depth_str[depth+1] = '\0';
- // Print the children
+ // Print the children.
for (i = 0; i < n_sig_children; i++) {
XPt* child = xpt->children[i];
pp_snapshot_XPt(child, depth+1, depth_str, depth_str_len,
@@ -1645,13 +1443,11 @@
printed_children_szB += child->curr_szB;
}
- // Print the extra "insignificant rest" entry, if necessary
+ // Print the extra "N other insignificant places" line, if necessary.
if (n_insig_children > 0) {
Char* s = ( n_insig_children == 1 ? "" : "s" );
Char* other = ( 0 == i ? "" : "other " );
SizeT unprinted_children_szB = xpt->curr_szB - printed_children_szB;
- // XXX: should give the percentage. be careful when computing
- // it...
perc = make_perc(unprinted_children_szB, curr_total_szB);
P("%sn0: %ld in %d %sinsignificant place%s\n",
depth_str, unprinted_children_szB, n_insig_children, other, s);
Modified: branches/MASSIF2/massif/ms_print
===================================================================
--- branches/MASSIF2/massif/ms_print 2007-04-18 13:53:30 UTC (rev 6704)
+++ branches/MASSIF2/massif/ms_print 2007-04-18 14:02:15 UTC (rev 6705)
@@ -38,6 +38,73 @@
# - merge read_input_file[12]
#----------------------------------------------------------------------------
+# Discussion of the graph.
+#----------------------------------------------------------------------------
+# The summary output includes a graph like this.
+#
+#---------------------------------------------------------------------------
+# 100M|B . :A
+# | .::: :::#
+# | :::::. c:::#:
+# | b:::::: |:::#::
+# | :|:::::::|:::#::
+# 75M| :|:::::::|:::#:::
+# | ::|:::::::|:::#:::
+# | ::|:::::::|:::#:::d
+# | ::|:::::::|:::#:::|:
+# | .::|:::::::|:::#:::|::
+# 50M| :::|:::::::|:::#:::|:::
+# | ::::|:::::::|:::#:::|::::: :::.
+# | :::::|:::::::|:::#:::|:::::: g::::::::
+# | a:::::|:::::::|:::#:::|:::::::e: ::|::::::::::h
+# | |:::::|:::::::|:::#:::|:::::::|::. :: .:::|::::::::::|::
+# 25M| |:::::|:::::::|:::#:::|:::::::|:::: f:::::::|::::::::::|::
+# | :|:::::|:::::::|:::#:::|:::::::|::::. .::|:::::::|::::::::::|::
+# | .::|:::::|:::::::|:::#:::|:::::::|::::::::::|:::::::|::::::::::|::
+# | .::::|:::::|:::::::|:::#:::|:::::::|::::::::::|:::::::|::::::::::|::
+# |:::::::|:::::|:::::::|:::#:::|:::::::|::::::::::|:::::::|::::::::::|::
+# 0M+----------------------------------------------------------------------t
+# 012
+#
+# Temporary snapshots:
+# a: periodic snapshot, total size: 33,000,000 bytes
+# b: periodic snapshot, total size: 82,000,000 bytes
+# c: periodic snapshot, total size: 90,000,000 bytes
+# d: periodic snapshot, total size: 64,000,000 bytes
+# e: periodic snapshot, total size: 34,000,000 bytes
+# f: periodic snapshot, total size: 24,000,000 bytes
+# g: periodic snapshot, total size: 39,000,000 bytes
+# h: periodic snapshot, total size: 33,000,000 bytes
+#
+# Permanent snapshots:
+# A: peak snapshot, total size: 100,000,000 bytes
+#---------------------------------------------------------------------------
+#
+# Explanation of the y-axis:
+# - Top of the x-axis box represents 0.
+#
+# 4M^| .: This row has base=2M, half-threshold=3M, full-threshold=4M
+# 2M^| .::: This row has base=0M, half-threshold=1M, full-threshold=2M
+# 0M +-----
+# abcde
+#
+# - A '.' is only shown in a row if we've reached its half-threshold
+# - A ':' is only shown in a row if we've reached its full-threshold
+# - So: a is in range 0 -- 0.99
+# b is in range 1 -- 1.99
+# c is in range 2 -- 2.99
+# d is in range 3 -- 3.99
+# e is in range 4 -- 4.99
+#
+# Explanation of x-axis:
+# - Assume each column represents one second
+# - First usable column has range 0..0.99s
+# - Second usable column has range 1..1.99s
+# - etc.
+
+
+
+#----------------------------------------------------------------------------
# Global variables, main data structures
#----------------------------------------------------------------------------
|
|
From: <sv...@va...> - 2007-04-18 13:53:46
|
Author: njn
Date: 2007-04-18 14:53:30 +0100 (Wed, 18 Apr 2007)
New Revision: 6704
Log:
ms_print can now read the output produced by the tool (although the tool
still prints it to stdout). It also prints the graph, so the tool doesn't
have to.
Modified:
branches/MASSIF2/massif/ms_main.c
branches/MASSIF2/massif/ms_print
Modified: branches/MASSIF2/massif/ms_main.c
===================================================================
--- branches/MASSIF2/massif/ms_main.c 2007-04-15 22:15:57 UTC (rev 6703)
+++ branches/MASSIF2/massif/ms_main.c 2007-04-18 13:53:30 UTC (rev 6704)
@@ -325,7 +325,7 @@
typedef
struct {
- Int ms_time; // Int: must allow -1.
+ Int time_ms; // Int: must allow -1.
SizeT total_szB; // Size of all allocations at that snapshot time.
SizeT heap_admin_szB;
SizeT heap_szB;
@@ -876,8 +876,8 @@
static Bool is_snapshot_in_use(Snapshot* snapshot)
{
- if (-1 == snapshot->ms_time) {
- // If .ms_time looks unused, check everything else is.
+ if (-1 == snapshot->time_ms) {
+ // If .time_ms looks unused, check everything else is.
tl_assert(snapshot->total_szB == 0);
tl_assert(snapshot->heap_admin_szB == 0);
tl_assert(snapshot->heap_szB == 0);
@@ -920,7 +920,7 @@
static void clear_snapshot(Snapshot* snapshot)
{
sanity_check_snapshot(snapshot);
- snapshot->ms_time = -1;
+ snapshot->time_ms = -1;
snapshot->total_szB = 0;
snapshot->heap_admin_szB = 0;
snapshot->heap_szB = 0;
@@ -980,7 +980,7 @@
FIND_SNAPSHOT(1, j);
FIND_SNAPSHOT(j+1, jn);
while (jn < MAX_N_SNAPSHOTS) {
- Int timespan = snapshots[jn].ms_time - snapshots[jp].ms_time;
+ Int timespan = snapshots[jn].time_ms - snapshots[jp].time_ms;
tl_assert(timespan >= 0);
if (timespan < min_span) {
min_span = timespan;
@@ -1022,18 +1022,18 @@
// [XXX: is that still true?]
static void take_snapshot(void)
{
- static UInt ms_interval = 5;
+ static UInt interval_ms = 5;
static UInt ms_prev_snapshot = 0;
static UInt ms_next_snapshot = 0; // zero allows startup snapshot
static Int n_snapshots_since_last_detailed = 0;
- Int ms_time, ms_time_since_prev;
+ Int time_ms, time_ms_since_prev;
Snapshot* snapshot;
// Only do a snapshot if it's time.
- ms_time = VG_(read_millisecond_timer)();
- ms_time_since_prev = ms_time - ms_prev_snapshot;
- if (ms_time < ms_next_snapshot) {
+ time_ms = VG_(read_millisecond_timer)();
+ time_ms_since_prev = time_ms - ms_prev_snapshot;
+ if (time_ms < ms_next_snapshot) {
n_fake_snapshots++;
return;
}
@@ -1074,7 +1074,7 @@
}
// Finish writing snapshot ------------------------------------------
- snapshot->ms_time = ms_time;
+ snapshot->time_ms = time_ms;
snapshot->total_szB =
snapshot->heap_szB + snapshot->heap_admin_szB + snapshot->stacks_szB;
@@ -1096,7 +1096,7 @@
// Halve the entries, if our snapshot table is full
if (MAX_N_SNAPSHOTS == next_snapshot) {
halve_snapshots();
- ms_interval *= 2;
+ interval_ms *= 2;
}
// Take time for next snapshot from now, rather than when this snapshot
@@ -1104,11 +1104,11 @@
// operation, there's no point doing catch-up snapshots every allocation
// for a while -- that would just give N snapshots at almost the same time.
if (VG_(clo_verbosity) > 1) {
- VG_(message)(Vg_DebugMsg, "snapshot: %d ms (took %d ms)", ms_time,
- VG_(read_millisecond_timer)() - ms_time );
+ VG_(message)(Vg_DebugMsg, "snapshot: %d ms (took %d ms)", time_ms,
+ VG_(read_millisecond_timer)() - time_ms );
}
- ms_prev_snapshot = ms_time;
- ms_next_snapshot = ms_time + ms_interval;
+ ms_prev_snapshot = time_ms;
+ ms_next_snapshot = time_ms + interval_ms;
}
@@ -1419,11 +1419,12 @@
}
#endif
+#if 0
static void write_text_graph(void)
{
Int i;
Int x, y; // y must be signed!
- Int end_ms_time;
+ Int end_time_ms;
Char unit;
Int orders_of_magnitude;
SizeT peak_snapshot_total_szScaled;
@@ -1438,11 +1439,11 @@
// The rest ([1][1]..[GRAPH_X][GRAPH_Y]) is the usable graph area.
Char graph[GRAPH_X+1][GRAPH_Y+1];
- // We increment end_ms_time by 1 so that the last snapshot occurs just
+ // We increment end_time_ms by 1 so that the last snapshot occurs just
// before it, and doesn't spill over into the final column.
tl_assert(next_snapshot > 0);
- end_ms_time = snapshots[next_snapshot-1].ms_time + 1;
- tl_assert(end_ms_time > 0);
+ end_time_ms = snapshots[next_snapshot-1].time_ms + 1;
+ tl_assert(end_time_ms > 0);
// Setup graph[][].
graph[0][0] = '+'; // axes join point
@@ -1464,7 +1465,7 @@
double per_row_half_thresh_szB = per_row_full_thresh_szB / 2;
// Work out which column this snapshot belongs to.
- double x_pos_frac = ((double)snapshot->ms_time / end_ms_time) * GRAPH_X;
+ double x_pos_frac = ((double)snapshot->time_ms / end_time_ms) * GRAPH_X;
x = (int)x_pos_frac + 1; // +1 due to y-axis
// Grow this snapshot bar from bottom to top.
@@ -1542,11 +1543,12 @@
Snapshot* snapshot = & snapshots[i];
if (is_detailed_snapshot(snapshot)) {
P(" snapshot %3d: t = %,12d ms, size = %,12ld bytes\n",
- i, snapshot->ms_time, snapshot->total_szB);
+ i, snapshot->time_ms, snapshot->total_szB);
}
}
P("-- end graph legend --\n");
}
+#endif
//------------------------------------------------------------//
@@ -1580,134 +1582,143 @@
return (xpt->curr_szB * 10000 / curr_total_szB >= clo_threshold);
}
-static void pp_snapshot_child_XPts(XPt* parent, Int depth, Char* depth_str,
- Int depth_str_len,
- SizeT curr_heap_szB, SizeT curr_total_szB)
+static void pp_snapshot_XPt(XPt* xpt, Int depth, Char* depth_str,
+ Int depth_str_len,
+ SizeT curr_heap_szB, SizeT curr_total_szB)
{
Int i;
- XPt* child;
- Bool child_is_last_sibling;
Char* ip_desc, *perc;
SizeT printed_children_szB = 0;
+ Int n_sig_children;
+ Int n_insig_children;
+ Int n_child_entries;
- // Check that the sum of all children's sizes equals the parent's size.
- SizeT children_sum_szB = 0;
- for (i = 0; i < parent->n_children; i++) {
- children_sum_szB += parent->children[i]->curr_szB;
+ // If the XPt has children, check that the sum of all their sizes equals
+ // the XPt's size.
+ if (xpt->n_children > 0) {
+ SizeT children_sum_szB = 0;
+ for (i = 0; i < xpt->n_children; i++) {
+ children_sum_szB += xpt->children[i]->curr_szB;
+ }
+ tl_assert(children_sum_szB == xpt->curr_szB);
}
- tl_assert(children_sum_szB == parent->curr_szB);
-// VG_(printf)("szB = %,ld B\n", children_sum_szB);
- // Sort children by curr_szB (reverse order: biggest to smallest)
+ // Sort XPt's children by curr_szB (reverse order: biggest to smallest)
// XXX: is it better to keep them always in order?
// XXX: or, don't keep them in order, inspect all of them, but sort
// the selected ones in the queue when they're added.
- VG_(ssort)(parent->children, parent->n_children, sizeof(XPt*),
+ VG_(ssort)(xpt->children, xpt->n_children, sizeof(XPt*),
XPt_revcmp_curr_szB);
- // Show all children that account for > 1% of current total szB.
- for (i = 0; i < parent->n_children; i++) {
- child = parent->children[i];
+ // How many children are significant? Also calculate the number of child
+ // entries to print: there may be a need for an "insignificant rest"
+ // line.
+ for (i = 0;
+ i < xpt->n_children &&
+ is_significant_XPt(xpt->children[i], curr_total_szB);
+ i++) { }
+ n_sig_children = i;
+ n_insig_children = xpt->n_children - n_sig_children;
+ n_child_entries = n_sig_children + ( n_insig_children > 0 ? 1 : 0 );
- // Indent appropriately
- P("%s", depth_str);
- if (is_significant_XPt(child, curr_total_szB)) {
- // This child is significant. Print it.
- perc = make_perc(child->curr_szB, curr_total_szB);
- ip_desc = VG_(describe_IP)(child->ip-1, buf2, BUF_LEN);
- P("->%s (%,ldB): %s\n", perc, child->curr_szB, ip_desc);
- printed_children_szB += child->curr_szB;
+ // Print the XPt entry
+ if (xpt->ip == 0) {
+ ip_desc =
+ "(heap allocation functions) malloc/new/new[], --alloc-fns, etc.";
+ } else {
+ ip_desc = VG_(describe_IP)(xpt->ip-1, buf2, BUF_LEN);
+ }
+ perc = make_perc(xpt->curr_szB, curr_total_szB);
+ P("%sn%d: %ld %s\n",
+ depth_str, n_child_entries, xpt->curr_szB, ip_desc);
- // If the child has any children, print them. But first add the
- // 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 ( 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';
- } else {
- depth_str[depth*2+0] = '|';
- depth_str[depth*2+1] = ' ';
- depth_str[depth*2+2] = '\0';
- }
- if (child->n_children > 0) {
- pp_snapshot_child_XPts(child, depth+1, depth_str, depth_str_len,
- curr_heap_szB, curr_total_szB);
- } else {
- // Reached the bottom of an XCon, print a blank (modulo
- // indentation lines) line.
- P("%s\n", depth_str);
- }
- // Undo the indentation.
- depth_str[depth*2+0] = '\0';
- depth_str[depth*2+1] = '\0';
- depth_str[depth*2+2] = '\0';
+ // Indent
+ tl_assert(depth+1 < depth_str_len-1); // -1 for end NUL char
+ depth_str[depth+0] = ' ';
+ depth_str[depth+1] = '\0';
- } else {
- // This child is insignificant, as are all those remaining.
- // Don't bother with them.
- UInt n_insig = parent->n_children - i;
- Char* s = ( n_insig == 1 ? "" : "s" );
- Char* other = ( 0 == i ? "" : "other " );
- SizeT unprinted_children_szB = parent->curr_szB - printed_children_szB;
- // XXX: should give the percentage. be careful when computing
- // it...
- perc = make_perc(unprinted_children_szB, curr_total_szB);
- P("->%s (%,ldB): in %d %sinsignificant place%s\n",
- perc, unprinted_children_szB, n_insig, other, s);
- P("%s\n", depth_str);
- return;
- }
+ // Print the children
+ for (i = 0; i < n_sig_children; i++) {
+ XPt* child = xpt->children[i];
+ pp_snapshot_XPt(child, depth+1, depth_str, depth_str_len,
+ curr_heap_szB, curr_total_szB);
+ printed_children_szB += child->curr_szB;
}
+
+ // Print the extra "insignificant rest" entry, if necessary
+ if (n_insig_children > 0) {
+ Char* s = ( n_insig_children == 1 ? "" : "s" );
+ Char* other = ( 0 == i ? "" : "other " );
+ SizeT unprinted_children_szB = xpt->curr_szB - printed_children_szB;
+ // XXX: should give the percentage. be careful when computing
+ // it...
+ perc = make_perc(unprinted_children_szB, curr_total_szB);
+ P("%sn0: %ld in %d %sinsignificant place%s\n",
+ depth_str, unprinted_children_szB, n_insig_children, other, s);
+ }
+
+ // Unindent.
+ depth_str[depth+0] = '\0';
+ depth_str[depth+1] = '\0';
}
static void pp_snapshot(Snapshot* snapshot, Int snapshot_n)
{
- Int depth_str_len = clo_depth * 2 + 2;
- Char* depth_str = VG_(malloc)(sizeof(Char) * depth_str_len);
- depth_str[0] = '\0'; // Initialise to "".
-
sanity_check_snapshot(snapshot);
- P("=================================\n");
- P("== snapshot %d\n", snapshot_n);
- P("=================================\n");
- P("Total memory usage: %,12lu bytes\n", snapshot->total_szB);
- P("Useful heap usage : %,12lu bytes (%s)\n",
- snapshot->heap_szB,
- make_perc(snapshot->heap_szB, snapshot->total_szB));
- P("Admin heap usage : %,12lu bytes (%s)\n",
- snapshot->heap_admin_szB,
- make_perc(snapshot->heap_admin_szB, snapshot->total_szB));
- P("Stacks usage : %,12lu bytes (%s)\n",
- snapshot->stacks_szB,
- make_perc(snapshot->stacks_szB, snapshot->total_szB));
+ P("#--------------------------------\n");
+ P("snapshot=%d\n", snapshot_n);
+ P("#--------------------------------\n");
+ P("time_ms=%lu\n", snapshot->time_ms);
+ P("mem_total_B=%lu\n", snapshot->total_szB);
+ P("mem_heap_B=%lu\n", snapshot->heap_szB);
+ P("mem_heap_admin_B=%lu\n", snapshot->heap_admin_szB);
+ P("mem_stacks_B=%lu\n", snapshot->stacks_szB);
- if (0 == snapshot->heap_szB) {
- P("(No heap memory currently allocated)\n");
+ if (is_detailed_snapshot(snapshot)) {
+ // Detailed snapshot -- print heap tree
+ // XXX: check this works ok when no heap memory has been allocated
+ Int depth_str_len = clo_depth + 3;
+ Char* depth_str = VG_(malloc)(sizeof(Char) * depth_str_len);
+ depth_str[0] = '\0'; // Initialise depth_str to "".
+
+ P("heap_tree=...\n");
+ pp_snapshot_XPt(snapshot->alloc_xpt, 0, depth_str,
+ depth_str_len, snapshot->heap_szB,
+ snapshot->total_szB);
+
+ VG_(free)(depth_str);
+
} else {
- P("Heap tree:\n");
- P("%s (%,ldB): (heap allocation functions) malloc/new/new[],"
- " --alloc-fns, etc.\n",
- make_perc(snapshot->heap_szB, snapshot->total_szB),
- snapshot->heap_szB);
-
- pp_snapshot_child_XPts(snapshot->alloc_xpt, 0, depth_str, depth_str_len,
- snapshot->heap_szB, snapshot->total_szB);
+ P("heap_tree=empty\n");
}
-
- VG_(free)(depth_str);
}
static void write_detailed_snapshots(void)
{
Int i;
+
+ // Print description lines.
+ P("desc: XXX\n");
+
+ // Print "cmd:" line.
+ P("cmd: ");
+ if (VG_(args_the_exename)) {
+ P("%s", VG_(args_the_exename));
+ for (i = 0; i < VG_(sizeXA)( VG_(args_for_client) ); i++) {
+ HChar* arg = * (HChar**) VG_(indexXA)( VG_(args_for_client), i );
+ if (arg)
+ P(" %s", arg);
+ }
+ } else {
+ P(" ???");
+ }
+ P("\n");
+
+
for (i = 0; i < next_snapshot; i++) {
Snapshot* snapshot = & snapshots[i];
- if (snapshot->alloc_xpt) {
- pp_snapshot(snapshot, i); // Detailed snapshot!
- }
+ pp_snapshot(snapshot, i); // Detailed snapshot!
}
}
@@ -1722,7 +1733,6 @@
take_snapshot();
// Output.
- write_text_graph();
write_detailed_snapshots();
// Stats
Modified: branches/MASSIF2/massif/ms_print
===================================================================
--- branches/MASSIF2/massif/ms_print 2007-04-15 22:15:57 UTC (rev 6703)
+++ branches/MASSIF2/massif/ms_print 2007-04-18 13:53:30 UTC (rev 6704)
@@ -32,6 +32,11 @@
# XXX:need to put threshold in the stats at the top of the output
+# XXX:
+# - move graph printing stuff into a separate subroutine
+# - implement --threshold
+# - merge read_input_file[12]
+
#----------------------------------------------------------------------------
# Global variables, main data structures
#----------------------------------------------------------------------------
@@ -61,9 +66,9 @@
--threshold=<n> significance threshold, in percent [$threshold]
You must use either --<pid> or --massif-out-file exactly once
- in order that cg_annotate knows what file to read profile data from.
+ in order that ms_print knows what file to read profile data from.
- ms_print is Copyright (C) 2007 Nicholas Nethercote.
+ ms_print is Copyright (C) 2007-2007 Nicholas Nethercote.
and licensed under the GNU General Public License, version 2.
Bug reports, feedback, admiration, abuse, etc, to: njn\@valgrind.org.
@@ -85,7 +90,7 @@
# --version
if ($arg =~ /^-v$|^--version$/) {
- die("cg_annotate-$version\n");
+ die("ms_print-$version\n");
# --threshold=X (tolerates a trailing '%')
} elsif ($arg =~ /^--threshold=([\d\.]+)%?$/) {
@@ -164,7 +169,7 @@
# any children of this node with "$this_prefix$child_midfix$arrow".
my ($print, $this_prefix, $child_midfix, $arrow, $mem_total_B) = @_;
my $line = get_line();
- (defined $line and $line =~ /^\s*n(\d+):(\d+)(.*)$/)
+ (defined $line and $line =~ /^\s*n(\d+):\s*(\d+)(.*)$/)
or die("Line $.: expected a tree node line, got:\n$line\n");
my $n = $1;
my $bytes = $2;
|
|
From: Tom H. <th...@cy...> - 2007-04-18 02:32:06
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-04-18 03:15:03 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-18 02:28:38
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-04-18 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/cc40yYzH.s: Assembler messages: /tmp/cc40yYzH.s:27: Error: suffix or operands invalid for `lahf' /tmp/cc40yYzH.s:37: Error: suffix or operands invalid for `lahf' /tmp/cc40yYzH.s:43: Error: suffix or operands invalid for `sahf' /tmp/cc40yYzH.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-18/valgrind/none/tests/amd64' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-04-18/valgrind/none/tests/amd64' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-04-18/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-04-18/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-04-18/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/ccGWvLFy.s: Assembler messages: /tmp/ccGWvLFy.s:27: Error: suffix or operands invalid for `lahf' /tmp/ccGWvLFy.s:37: Error: suffix or operands invalid for `lahf' /tmp/ccGWvLFy.s:43: Error: suffix or operands invalid for `sahf' /tmp/ccGWvLFy.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-18/valgrind/none/tests/amd64' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-04-18/valgrind/none/tests/amd64' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-04-18/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-04-18/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-04-18/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Apr 18 03:18:11 2007 --- new.short Wed Apr 18 03:28:32 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/ccGWvLFy.s: Assembler messages: ! /tmp/ccGWvLFy.s:27: Error: suffix or operands invalid for `lahf' ! /tmp/ccGWvLFy.s:37: Error: suffix or operands invalid for `lahf' ! /tmp/ccGWvLFy.s:43: Error: suffix or operands invalid for `sahf' ! /tmp/ccGWvLFy.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/cc40yYzH.s: Assembler messages: ! /tmp/cc40yYzH.s:27: Error: suffix or operands invalid for `lahf' ! /tmp/cc40yYzH.s:37: Error: suffix or operands invalid for `lahf' ! /tmp/cc40yYzH.s:43: Error: suffix or operands invalid for `sahf' ! /tmp/cc40yYzH.s:45: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 |
|
From: Tom H. <th...@cy...> - 2007-04-18 02:23:48
|
Nightly build on dellow ( x86_64, Fedora Core 6 ) started at 2007-04-18 03:10:03 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, 3 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_cvsimple (stdout) none/tests/pth_detached (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Apr 18 03:17:00 2007 --- new.short Wed Apr 18 03:23:39 2007 *************** *** 8,10 **** ! == 292 tests, 4 stderr failures, 3 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,17 **** none/tests/mremap2 (stdout) - none/tests/pth_cvsimple (stdout) - none/tests/pth_detached (stdout) --- 14,15 ---- |
|
From: Tom H. <th...@cy...> - 2007-04-18 02:12:42
|
Nightly build on lloyd ( x86_64, Fedora Core 3 ) started at 2007-04-18 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/ccyvOzwg.s: Assembler messages: /tmp/ccyvOzwg.s:18: Error: suffix or operands invalid for `lahf' /tmp/ccyvOzwg.s:28: Error: suffix or operands invalid for `lahf' /tmp/ccyvOzwg.s:34: Error: suffix or operands invalid for `sahf' /tmp/ccyvOzwg.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-18/valgrind/none/tests/amd64' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-04-18/valgrind/none/tests/amd64' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-04-18/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-04-18/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-04-18/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/ccfo2Jaa.s: Assembler messages: /tmp/ccfo2Jaa.s:18: Error: suffix or operands invalid for `lahf' /tmp/ccfo2Jaa.s:28: Error: suffix or operands invalid for `lahf' /tmp/ccfo2Jaa.s:34: Error: suffix or operands invalid for `sahf' /tmp/ccfo2Jaa.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-18/valgrind/none/tests/amd64' make[4]: *** [check-am] Error 2 make[4]: Leaving directory `/tmp/vgtest/2007-04-18/valgrind/none/tests/amd64' make[3]: *** [check-recursive] Error 1 make[3]: Leaving directory `/tmp/vgtest/2007-04-18/valgrind/none/tests' make[2]: *** [check-recursive] Error 1 make[2]: Leaving directory `/tmp/vgtest/2007-04-18/valgrind/none' make[1]: *** [check-recursive] Error 1 make[1]: Leaving directory `/tmp/vgtest/2007-04-18/valgrind' make: *** [check] Error 2 ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Apr 18 03:09:36 2007 --- new.short Wed Apr 18 03:12:33 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/ccfo2Jaa.s: Assembler messages: ! /tmp/ccfo2Jaa.s:18: Error: suffix or operands invalid for `lahf' ! /tmp/ccfo2Jaa.s:28: Error: suffix or operands invalid for `lahf' ! /tmp/ccfo2Jaa.s:34: Error: suffix or operands invalid for `sahf' ! /tmp/ccfo2Jaa.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/ccyvOzwg.s: Assembler messages: ! /tmp/ccyvOzwg.s:18: Error: suffix or operands invalid for `lahf' ! /tmp/ccyvOzwg.s:28: Error: suffix or operands invalid for `lahf' ! /tmp/ccyvOzwg.s:34: Error: suffix or operands invalid for `sahf' ! /tmp/ccyvOzwg.s:36: Error: suffix or operands invalid for `lahf' make[5]: *** [slahf-amd64.o] Error 1 |
|
From: <js...@ac...> - 2007-04-18 00:17:50
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-04-18 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) |