List:Commits« Previous MessageNext Message »
From:Magnus Svensson Date:October 8 2008 9:16am
Subject:Re: bzr commit into mysql-5.1 branch (sven:2668) Bug#38817
View as plain text  
Sven Sandberg skrev:
> Magnus Svensson wrote:
>> 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 );"
> 
> Huh, I don't understand. My patch removes the file right after it's used.

No, there are several "return" between that place and the unlink.

> 
> /Sven
> 
>>> /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