Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.93k stars 552 forks source link

B::Lint is broken... #5084

Closed p5pRT closed 21 years ago

p5pRT commented 22 years ago

Migrated from rt.perl.org#8595 (status was 'resolved')

Searchable as RT8595$

p5pRT commented 22 years ago

From scog@roe.ac.uk

Created by scog@roe.ac.uk

With bleadperl​:

$ perl -MO=Lint -e '$foo' -e syntax OK

but​:

$ perl -M0=Lint -e '@​foo' Can't call method "name" on an undefined value at /home/scog/bin/test/perl/lib/5.7.2/i686-linux/B/Lint.pm line 188. CHECK failed--call queue aborted.

$ perl -M0=Lint -e '%foo' Can't call method "name" on an undefined value at /home/scog/bin/test/perl/lib/5.7.2/i686-linux/B/Lint.pm line 188. CHECK failed--call queue aborted.

All three of these work with 5.6.0; I don't have a copy of 5.6.1 handy to test them against.

This seems to be the same bug as [ID 20010823.020]

Perl Info ``` Flags: category=library severity=medium Site configuration information for perl v5.7.2: Configured by scog at Tue Feb 19 10:20:08 EST 2002. Summary of my perl5 (revision 5.0 version 7 subversion 2 patch 14752) configuration: Platform: osname=linux, osvers=2.4.9-13smp, archname=i686-linux uname='linux odie 2.4.9-13smp #1 smp tue oct 30 19:06:50 est 2001 i686 unknown ' config_args='-Dprefix=/home/scog/bin/test/perl' hint=recommended, useposix=true, d_sigaction=define usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=y, bincompat5005=define Compiler: cc='gcc', ccflags ='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm', optimize='-O2', cppflags='-fno-strict-aliasing -I/usr/local/include -I/usr/include/gdbm' ccversion='', gccversion='2.96 20000731 (Red Hat Linux 7.1 2.96-98)', gccosandvers='' intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=4, prototype=define Linker and Libraries: ld='gcc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lnsl -lgdbm -ldb -ldl -lm -lc -lcrypt -lutil perllibs=-lnsl -ldl -lm -lc -lcrypt -lutil libc=/lib/libc-2.2.4.so, so=so, useshrplib=false, libperl=libperl.a Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic' cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib' Locally applied patches: DEVEL14752 @INC for perl v5.7.2: /home/scog/bin/test/perl/lib/5.7.2/i686-linux /home/scog/bin/test/perl/lib/5.7.2 /home/scog/bin/test/perl/lib/site_perl/5.7.2/i686-linux /home/scog/bin/test/perl/lib/site_perl/5.7.2 /home/scog/bin/test/perl/lib/site_perl . Environment for perl v5.7.2: HOME=/home/scog LANG=en_US LANGUAGE (unset) LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=/bin:/usr/bin:/usr/bin/X11:/usr/local/bin:/usr/bin:/usr/X11R6/bin:/usr/X11R6/bin:/astro/pgi/linux86/bin PERL_BADLANG (unset) SHELL=/bin/tcsh ```
p5pRT commented 22 years ago

From @rgarcia

On 2002.02.20 00​:18 Simon Glover wrote​:

With bleadperl​:

$ perl -MO=Lint -e '$foo' -e syntax OK

but​:

$ perl -M0=Lint -e '@​foo' Can't call method "name" on an undefined value at /home/scog/bin/test/perl/lib/5.7.2/i686-linux/B/Lint.pm line 188. CHECK failed--call queue aborted.

$ perl -M0=Lint -e '%foo' Can't call method "name" on an undefined value at /home/scog/bin/test/perl/lib/5.7.2/i686-linux/B/Lint.pm line 188. CHECK failed--call queue aborted.

Apparently this bug goes away if you replace every occurence of walkoptree by walkoptree_slow in B/Lint.pm.

But\, as (1) there's no regression test (yet) for B​::Lint\, and (2) I've no knowledge about the history of changes in B.pm and the B​::* modules\, I won't send a patch until someone that knows better can find where and why B​::Lint has broken.

All three of these work with 5.6.0; I don't have a copy of 5.6.1 handy to test them against.

p5pRT commented 22 years ago

From @schwern

On Wed\, Feb 20\, 2002 at 11​:37​:49PM +0100\, Rafael Garcia-Suarez wrote​:

On 2002.02.20 00​:18 Simon Glover wrote​:

With bleadperl​:

$ perl -MO=Lint -e '$foo' -e syntax OK

but​:

$ perl -M0=Lint -e '@​foo' Can't call method "name" on an undefined value at /home/scog/bin/test/perl/lib/5.7.2/i686-linux/B/Lint.pm line 188. CHECK failed--call queue aborted.

$ perl -M0=Lint -e '%foo' Can't call method "name" on an undefined value at /home/scog/bin/test/perl/lib/5.7.2/i686-linux/B/Lint.pm line 188. CHECK failed--call queue aborted.

Apparently this bug goes away if you replace every occurence of walkoptree by walkoptree_slow in B/Lint.pm.

walkoptree_slow implements something that walkoptree doesn't and I forget what\, but I've hit this before. I'll look at it tonite.

But\, as (1) there's no regression test (yet) for B​::Lint\, and (2) I've no knowledge about the history of changes in B.pm and the B​::* modules\, I won't send a patch until someone that knows better can find where and why B​::Lint has broken.

All three of these work with 5.6.0; I don't have a copy of 5.6.1 handy to test them against.

--

Michael G. Schwern \schwern@​pobox\.com http​://www.pobox.com/~schwern/ Perl Quality Assurance \perl\-qa@​perl\.org Kwalitee Is Job One My feet hurt... with destiny!   http​://sluggy.com/d/010204.html

p5pRT commented 21 years ago

scog@roe.ac.uk - Status changed from 'open' to 'resolved'