Bug 58633

Append stack trace for all errors, not only eval errors


git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@613 6955db30-a419-402b-8a0d-67ecbb4d7f56
master
vfilippov 2009-12-29 12:55:10 +00:00
parent 4eacafc0b5
commit 605d260ef9
2 changed files with 7 additions and 5 deletions

View File

@ -71,11 +71,6 @@ BEGIN
if ($msg !~ /^(Программа вызвала сброс соединения|Software caused connection abort) at /iso)
{
$msg = { eval_error => $msg };
if (eval { require Devel::StackTrace; })
{
# Append stack trace if Devel::StackTrace is available
$msg->{stack_trace} = Devel::StackTrace->new->as_string;
}
Bugzilla::Error::ThrowCodeError('eval_error', $msg);
}
}

View File

@ -38,6 +38,8 @@ use Data::Dumper;
use overload '""' => sub { $_[0]->{message} };
my $HAVE_DEVEL_STACKTRACE = eval { require Devel::StackTrace };
# We cannot use $^S to detect if we are in an eval(), because mod_perl
# already eval'uates everything, so $^S = 1 in all cases under mod_perl!
sub _in_eval {
@ -77,6 +79,11 @@ sub _throw_error
$vars ||= {};
$vars->{error} = $error;
if (!$vars->{stack_trace} && $HAVE_DEVEL_STACKTRACE)
{
# Append stack trace if Devel::StackTrace is available
$vars->{stack_trace} = Devel::StackTrace->new->as_string;
}
my $mode = Bugzilla->error_mode;
# Make sure any transaction is rolled back (if supported).