Bug#565703: perl segaults under -t mode

Niko Tyni ntyni at debian.org
Fri Jan 22 19:36:44 UTC 2010


tag 565703 upstream
thanks

On Mon, Jan 18, 2010 at 09:12:36AM +0200, Niko Tyni wrote:
> On Sun, Jan 17, 2010 at 07:19:32PM -0600, Raphael Geissert wrote:
> > Package: perl-base
> > Version: 5.10.1-8
>  
> > While testing lintian under the -t flag I got a segmentation fault.
> > Running lintian under perldebug on the same case produces a slightly
> > different output without any segmentation fault but with a failed
> > assertion:
> > 
> > Assertion !((gv)->sv_flags & 0x00004000) failed: file "gv.c", line 272
> > at /usr/lib/perl/5.10/Fcntl.pm line 173.
> 
> Thanks for the report. A quick way to reproduce this is
> 
>  perl -wt -e 'unshift @INC, shift; require IPC::Run::Debug' foo

The problem has to do with stubs for undefined constants like these:

% perl -MPOSIX -E 'say CLK_TCK'  
Your vendor has not defined POSIX macro CLK_TCK, used at -e line 1
% perl -MFcntl=S_IFWHT -E 'say S_IFWHT'
Your vendor has not defined Fcntl macro S_IFWHT, used at -e line 1.


Crash variants without dependencies outside the Perl core:

 debugperl -t -e 'unshift @INC, $ENV{HOME}; require Fcntl'

 cd $(mktemp -d) && echo 'XSLoader::load(q(Fcntl))' > T.pm && debugperl -MXSLoader -I. -t -e 'unshift @INC, shift; require T; *a = \&{"Fcntl::S_IFWHT"}' foo

 cd $(mktemp -d) && echo 'XSLoader::load(q(POSIX))' > T.pm && debugperl -MXSLoader -I. -t -e 'unshift @INC, shift; require T; *a = \&{"POSIX::CLK_TCK"}' foo


It's reproducible on current bleadperl, will report upstream next.
-- 
Niko Tyni   ntyni at debian.org






More information about the Perl-maintainers mailing list