Commit 906fc6bb authored by Sven Sandberg's avatar Sven Sandberg

BUG#38817: please make mtr analyze crashes better

Post-push fixes making it work on pushbuild's valgrind host, and clarifying the output.


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.
parent 27233c23
...@@ -29,33 +29,33 @@ sub _gdb { ...@@ -29,33 +29,33 @@ sub _gdb {
return unless -f $core_name; return unless -f $core_name;
my $dir = tempdir( CLEANUP => 1 ); # Find out name of binary that generated core
my ($tmp, $tmp_name) = tempfile( DIR => $dir ); `gdb -c '$core_name' --batch 2>&1` =~
/Core was generated by `([^\s\'\`]+)/;
my $binary= $1 or return;
print "Core generated by '$binary'\n";
# Create tempfile containing gdb commands
my ($tmp, $tmp_name) = tempfile();
print $tmp print $tmp
"bt\n",
"thread apply all bt\n", "thread apply all bt\n",
"quit\n"; "quit\n";
close $tmp or die "Error closing $tmp_name: $!";
# Find out name of binary that generated core # Run gdb
my $list= `gdb -c $core_name -x $tmp_name -batch 2>&1` my $gdb_output=
or return; `gdb '$binary' -c '$core_name' -x '$tmp_name' --batch 2>&1`;
my $binary;
foreach my $line (split('\n', $list))
{
$binary= $1
if ($line =~ /Core was generated by `(\S+)/);
}
return unless $binary;
print " - core generated by '$binary'\n";
my $list= `gdb $binary -c $core_name -x $tmp_name -batch 2>&1` unlink $tmp_name or die "Error removing $tmp_name: $!";
or return;
print $list, "\n"; return unless $gdb_output;
print <<EOF, $gdb_output, "\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; return 1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment