Perl / perl5

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

Oddity with _58 and CPAN::WAIT #302

Closed p5pRT closed 20 years ago

p5pRT commented 25 years ago

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

Searchable as RT1125$

p5pRT commented 25 years ago

From gnat@frii.com

  [gnat@​localhost]$ make test   PERL_DL_NONLAZY=1 /usr/bin/perl -Iblib/arch -Iblib/lib -I/opt/perl/5.005_58/i586-linux -I/opt/perl/5.005_58 -e 'use Test​::Harness qw(&runtests $verbose); $verbose=0; runtests @​ARGV;' t/*.t   t/basic.............Use of uninitialized value at /opt/perl/5.005_58/ExtUtils/MM_Unix.pm line 110.   t/basic.............ok 2/5Exiting subroutine via last at blib/lib/CPAN/WAIT.pm line 46.   Exiting subroutine via last at blib/lib/CPAN/WAIT.pm line 46.   Label not found for "last SERVER" at blib/lib/CPAN/WAIT.pm line 46.   t/basic.............dubious
  Test returned status 255 (wstat 65280\, 0xff00)

With 5.005_57​:

  [gnat@​localhost]$ make test   PERL_DL_NONLAZY=1 /usr/bin/perl5.00557 -Iblib/arch -Iblib/lib -I/opt/perl/5.005_57/i586-linux -I/opt/perl/5.005_57 -e 'use Test​::Harness qw(&runtests $verbose); $verbose=0; runtests @​ARGV;' t/*.t   t/basic.............Use of uninitialized value at /opt/perl/5.005_57/ExtUtils/MM_Unix.pm line 111.   t/basic.............ok
  All tests successful.   Files=1\, Tests=5\, 5 wallclock secs ( 1.24 cusr + 0.13 csys = 1.37 CPU)

The weird thing being\, of course\, that 5.005_58 can't find the SERVER symbol\, while 5.005_57 can. I've tried looking at the op tree\, and while there's a heap of it\, I couldn't see any obvious differences between the two. I tried looking at the output of B​::Terse on both\, and I see that _58 is using the new method op of Chip's\, but otherwise they seem identical.

The troublesome thing is that I can't narrow it down to a single piece of code. I tried   perl -e 'SERVER​: for (1\,2\,3) { last if 1 }' and   perl -e 'sub foo { SERVER​: for (1\,2\,3) { last if 1 }} foo()' but neither reproduces the difference between _57 and _58.

If anyone does manage to track this down\, I'd love to know how you did it.

This problem occurs on both FreeBSD and Redhat Linux running _58.

Nat

p5pRT commented 25 years ago

From @chipdude

According to Nat Torkington​:

The weird thing being\, of course\, that 5.005_58 can't find the SERVER symbol\, while 5.005_57 can.

There was a change in the goto logic. Maybe that's relevant.

If anyone does manage to track this down\, I'd love to know how you did it.

In desperate situations\, I've diff'd the output of "perl -Dts". -- Chip Salzenberg - a.k.a. - \chip@​perlsupport\.com   "When do you work?" "Whenever I'm not busy."