#At file:///home/sven/bzr/b38817-mtr_core/5.1-rpl/
2668 Sven Sandberg 2008-10-04
BUG#38817: please make mtr analyze crashes better
Post-push fixes making it work on pushbuild's valgrind host, and clarifying the
output.
modified:
mysql-test/lib/My/CoreDump.pm
per-file messages:
mysql-test/lib/My/CoreDump.pm
- Improved parsing of mtr output so that it works on pushbuild's "valgrind" host.
- Added stack trace for the thread that coredumped, to make output more readable when
there are many threads.
- Added explanation of what the output consists of.
- Added early removal of temp file.
=== modified file 'mysql-test/lib/My/CoreDump.pm'
--- a/mysql-test/lib/My/CoreDump.pm 2008-09-20 14:10:22 +0000
+++ b/mysql-test/lib/My/CoreDump.pm 2008-10-04 07:27:52 +0000
@@ -27,33 +27,33 @@ sub _gdb {
return unless -f $core_name;
- my $dir = tempdir( CLEANUP => 1 );
- my ($tmp, $tmp_name) = tempfile( DIR => $dir );
+ # Find out name of binary that generated core
+ `gdb -c '$core_name' -q --batch 2>&1` =~
+ /Core was generated by `([^\s\'\`]+)/;
+ my $binary= $1 or return;
+ print "Generated by '$binary'\n";
+ # Create tempfile containing gdb commands
+ my ($tmp, $tmp_name) = tempfile();
print $tmp
+ "bt\n",
"thread apply all bt\n",
"quit\n";
+ close $tmp or die "Error closing $tmp_name: $!";
- # Find out name of binary that generated core
- my $list= `gdb -c $core_name -x $tmp_name -q --batch 2>&1`
- or return;
-
- my $binary;
- foreach my $line (split('\n', $list))
- {
- $binary= $1
- if ($line =~ /Core was generated by `(\S+)/);
- }
-
- return unless $binary;
-
- print "Generated by '$binary'\n";
+ # Run gdb
+ my $gdb_output=
+ `gdb '$binary' -c '$core_name' -x '$tmp_name' -q --batch 2>&1`;
- my $list= `gdb $binary -c $core_name -x $tmp_name -q --batch 2>&1`
- or return;
+ unlink $tmp_name or die "Error removing $tmp_name: $!";
- print $list, "\n";
+ return unless $list;
+ print <<EOF, $list, "\n"
+Output from gdb follows. The first stack trace is from the failing thread.
+The following stack traces are from all threads (so the failing one is
+duplicated)."
+EOF
return 1;
}
| Thread |
|---|
| • bzr commit into mysql-5.1 branch (sven:2668) Bug#38817 | Sven Sandberg | 4 Oct |