Package: perl
Version: 5.14.2-7
Severity: normal
Very much simplified test case (I believe minimal) attached.
On my machine I get:
Died at survey.cgi line 19.
instead of the expected
foo at survey.cgi line 22
main::run_template(255490788292995187) called at
survey.cgi line 18
eval {...} called at survey.cgi line 18
...propagated at survey.cgi line 19.
because the plain die without arguments on line 19 isn't propagating the
error (originally, it was inside a few more evals and subroutines, but
this is much simpler).
Note that it works if:
you change "confess" to "die"
you substitute in the value in place of the CGI->param call
This brokeness is pretty fragile. Reducing down the several thousand
line program to this was a PITA, the brokeness kept vanishing.
-- System Information:
Debian Release: wheezy/sid
APT prefers testing
APT policy: (500, 'testing'), (200, 'unstable'), (150, 'stable'), (100,
'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 3.1.0-1-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages perl depends on:
ii libbz2-1.0 1.0.6-1
ii libc6 2.13-26
ii libdb5.1 5.1.29-1
ii libgdbm3 1.8.3-10
ii perl-base 5.14.2-7
ii perl-modules 5.14.2-7
ii zlib1g 1:1.2.6.dfsg-1
Versions of packages perl recommends:
ii netbase 4.47
Versions of packages perl suggests:
ii libterm-readline-gnu-perl 1.20-2+b1
ii libterm-readline-perl-perl 1.0303-1
ii make 3.81-8.1
ii perl-doc 5.14.2-7
-- no debconf information
#!/usr/bin/perl -Tw
use Carp qw(confess);
use CGI;
my $CGI;
sub send_template;
sub run_template;
my $dat = <<DATA;
survey_no=255490788292995187
DATA
open my $fh, '<', \$dat or die "guess we don't have PerlIO";
$CGI = CGI->new($fh);
close $fh;
eval { run_template($CGI->param('survey_no')); };
die if $@;
sub run_template {
confess "foo";
}