List:Commits« Previous MessageNext Message »
From:Magnus Svensson Date:October 7 2008 7:38am
Subject:Re: bzr commit into mysql-5.1 branch (sven:2668) Bug#38817
View as plain text  
Magnus Svensson skrev:
> Sven Sandberg skrev:
>> Hi Magnus!
>>
>> I committed an update to BUG#38817, which should allow printing stack
>> traces on Pushbuild's Valgrind host (we discussed it on IRC, the problem
>> was just that gdb printed backtick after the binary's filename on that
>> host). Could you review it?
> 
> 
> Yes, it looks fine except that you have a couple of paths where the 
> tempfile is not deleted. I think you better put back the autoremoving 
> dir you get with "my $dir = tempdir( CLEANUP => 1 );"

Maybe you should actually move that to the outher calling function, so 
that any new function for debugger support we implement may use that dir?

> 
>>
>> /Sven
>>
>>
>> Sven Sandberg wrote:
>>> #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:49:09 +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 "Core 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 $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;
>>>  }
>>>  
>>>
>>>
>>
>>
> 
> 

Thread
bzr commit into mysql-5.1 branch (sven:2668) Bug#38817Sven Sandberg4 Oct
  • Re: bzr commit into mysql-5.1 branch (sven:2668) Bug#38817Sven Sandberg4 Oct
    • Re: bzr commit into mysql-5.1 branch (sven:2668) Bug#38817Magnus Svensson7 Oct
      • Re: bzr commit into mysql-5.1 branch (sven:2668) Bug#38817Magnus Svensson7 Oct
      • Re: bzr commit into mysql-5.1 branch (sven:2668) Bug#38817Sven Sandberg8 Oct
        • Re: bzr commit into mysql-5.1 branch (sven:2668) Bug#38817Magnus Svensson8 Oct