[padb-devel] [padb commit] r51 - Fix a corner case where the stack-trace "tree" mode
codesite-noreply at google.com
codesite-noreply at google.com
Tue Jun 16 11:28:42 BST 2009
Author: apittman
Date: Tue Jun 16 03:12:06 2009
New Revision: 51
Modified:
trunk/src/padb
Log:
Fix a corner case where the stack-trace "tree" mode
was dropping frames. If one process in the job
had a short stack further processes in the job
erronously got reported as short too.
Modified: trunk/src/padb
==============================================================================
--- trunk/src/padb (original)
+++ trunk/src/padb Tue Jun 16 03:12:06 2009
@@ -1784,7 +1784,7 @@
# hash containing the "txt" of the function name and a further array
# of hash references called "children".
sub go_p {
- my ( $level, $indent, $indentNo, $lines, @tags ) = @_;
+ my ( $level, $lines, @tags ) = @_;
my @peers;
my $prev;
@@ -1795,7 +1795,6 @@
return if ( !defined($tag) );
return if ( !defined( $lines->{$tag} ) );
- return if ( !defined( $lines->{$tag}[$level] ) );
my @identical = ();
my @different = ();
@@ -1817,7 +1816,12 @@
}
}
} else {
- @different = @tags;
+ foreach my $dtag (@tags) {
+ if ( $dtag != $tag ) {
+ push( @different, $dtag );
+ }
+ }
+
}
# Move $endlevel on as far as we can...
@@ -1846,10 +1850,10 @@
$endlevel = ( $#{ $lines->{$tag} } );
}
- printf( "level $level, endlevel $endlevel, identical $#identical\n", )
- if $conf{"tree-verbose"};
+ printf(
+"level $level, endlevel $endlevel, identical:@identical
different:@different\n",
+ ) if $conf{"tree-verbose"};
- my $i = $indent;
for ( my $l = $level ; $l <= $endlevel ; $l++ ) {
my %this;
@@ -1873,8 +1877,7 @@
unshift @identical, $tag;
}
- $prev->{children} =
- go_p( $endlevel + 1, "$i", $indentNo + 1, $lines, @identical );
+ $prev->{children} = go_p( $endlevel + 1, $lines, @identical );
}
printf(
@@ -1882,11 +1885,12 @@
) if $conf{"tree-verbose"};
if (@different) {
- my $new = go_p( $level, "$indent", $indentNo, $lines, @different );
+ my $new = go_p( $level, $lines, @different );
foreach my $n ( @{$new} ) {
push @peers, $n;
}
}
+
return \@peers;
}
@@ -2886,7 +2890,7 @@
}
if ($tree) {
- print show_tree go_p( 0, "", 0, $lines,
+ print show_tree go_p( 0, $lines,
( sort { $a <=> $b } ( keys %$lines ) ) );
} elsif ($compress) {
foreach my $tag ( sort { $a <=> $b } ( keys %$lines ) ) {
More information about the padb-devel
mailing list