Bug 182488

Summary: perl-Sub-Uplevel: misbehaves in perl 5.8.8
Product: [Fedora] Fedora Reporter: Jose Pedro Oliveira <jose.p.oliveira.oss>
Component: perl-Sub-UplevelAssignee: Jose Pedro Oliveira <jose.p.oliveira.oss>
Status: CLOSED NEXTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: extras-qa, wtogami
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2006-03-02 18:37:53 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Jose Pedro Oliveira 2006-02-22 20:54:23 UTC
Description of problem:
Although the package builds with perl 5.8.8, it produces a lot of warnings
during the execution of the test suite. These warnings are new (perl 5.8.8) and
didn't  occur with perl 5.8.6 or 5.8.7 (something appears to have changed in the
perl package between perl 5.8.7 and 5.8.8).

----------
$ make test TEST_VERBOSE=1
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(1,
'blib/lib', 'blib/arch')" t/*.t
t/die_check....1..1
ok 1
ok
t/Uplevel......Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
Use of uninitialized value in string eq at
/home/users/fedora/rpms/BUILD/Sub-Uplevel-0.09/blib/lib/Sub/Uplevel.pm line 123.
1..18
ok 1 - use Sub::Uplevel;
ok 2 - Sub::Uplevel->can(uplevel)
ok 3 - main->can(uplevel)
ok 4 - top-level caller() not screwed up
ok 5 - die() not screwed up
ok 6 - uplevel()
ok 7 - die() fooled
ok 8 - warn() fooled
ok 9 - croak() fooled
ok 10 - caller() not screwed up
ok 11 - die() not screwed up
ok 12 - carp() fooled
ok 13 - main->can(fooble)
ok 14 - caller check
ok 15 - shallow caller
ok 16 - deep caller()
ok 17 - deep caller() + uplevel
ok 18 - nested uplevel()s
ok
All tests successful.
Files=2, Tests=19,  1 wallclock secs ( 0.16 cusr +  0.08 csys =  0.24 CPU)
----------

This new behaviour causes major problems in other perl modules. For example:

  * perl-Test-Warn  fails to build
  * perl-Test-Exception produces noise during the test suite
  * perl-WWW-Mechanize fails to build 
  * ...

Comment 1 Jose Pedro Oliveira 2006-02-22 21:08:56 UTC
Sub-Uplevel-0.09/lib/Sub/Uplevel.pm patch
-----------------------------------------

@@ -120,13 +120,14 @@
         # Yes, we need a C style for loop here since $height changes
         for( my $up = 1;  $up <= $height + 1;  $up++ ) {
             my @caller = CORE::caller($up);
+            next unless @caller;
             if( $caller[0] eq __PACKAGE__ ) {
                 $height++;
                 $height += $Up_Frames unless $saw_uplevel;
                 $saw_uplevel = 1;
             }
         }

Comment 2 Jose Pedro Oliveira 2006-02-22 21:25:56 UTC
With the above patch (already available in the CVS devel branch) applied I was
able to eliminate the warnings and able to build successfully perl-Test-Warn,
perl-Test-Exception and perl-WWW-Mechanize.

But I am not sure if it is the best solution for the problem ....

Any way, feedback would be appreciated.

jpo

PS - Patch in CPAN ticket 17637
     http://rt.cpan.org/Public/Bug/Display.html?id=17637


Comment 3 Jose Pedro Oliveira 2006-02-22 21:39:03 UTC
Today a new working patch appeared in the CPAN ticket system:
  http://rt.cpan.org/Public/Bug/Display.html?id=17807

Comment 4 Jose Pedro Oliveira 2006-02-24 15:22:05 UTC
Rafael Garcia-Suarez forwarded us to one of the bug fixes mentioned in the perl
5.8.8 release notes (perl588delta):
http://search.cpan.org/dist/perl/pod/perl588delta.pod#no_warnings_%27category%27_works_correctly_with_-w

Source:
http://www.redhat.com/archives/fedora-perl-devel-list/2006-February/msg00038.html



Comment 5 Jose Pedro Oliveira 2006-02-24 15:30:09 UTC
From the perl 5.8.8 delta page
==========
...
no warnings 'category' works correctly with -w
----------------------------------------------

Previously when running with warnings enabled globally via -w, selective
disabling of specific warning categories would actually turn off all warnings.
This is now fixed; now no warnings 'io'; will only turn off warnings in the io
class. Previously it would erroneously turn off all warnings.

This bug fix may cause some programs to start correctly issuing warnings.
...
==========

Comment 6 Jose Pedro Oliveira 2006-03-02 18:37:53 UTC
Closing ticket: perl-Sub-Uplevel-0.09-4.fc5 is already in the Fedora Extra's
mirrors (with the patch from comment #1 applied).