Bug 786085

Summary: perl-Test-Refcount tests fail on 32-bit platforms
Product: [Fedora] Fedora Reporter: Petr Pisar <ppisar>
Component: perl-Test-RefcountAssignee: Nicolas Chauvet (kwizart) <kwizart>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 16CC: iarnell, kwizart, perl-devel, rc040203
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: perl-Test-Refcount-0.07-5.fc17 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-05-02 04:50:31 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On: 815073    
Bug Blocks:    
Attachments:
Description Flags
Silent warnings on 32-bit system
none
Silent warning on 64-bit systems none

Description Petr Pisar 2012-01-31 11:50:28 UTC
See <https://koji.fedoraproject.org/koji/packageinfo?packageID=8941>. perl-Test-Refcount fails to build for long time. %check phase fails. Substituting `make test' with `prove --verbose' shows:

xecuting(%check): /bin/sh -e /var/tmp/rpm-tmp.AFwG63
+ umask 022
+ cd /builddir/build/BUILD
+ cd Test-Refcount-0.07
+ unset DISPLAY
+ prove --blib --verbose t
t/00use.t ....... 
1..1
ok 1 - use Test::Refcount;
ok
t/01count.t ..... 
1..8
ok 1 - anon ARRAY ref succeeds
ok 2 - not ref fails
ok 3 - normal object succeeds
ok 4 - two refs to object succeeds
Failed 4/8 subtests
[...]

Tests 5--8 do not proceed for unknown reason. t/01count.t does not contain any exit or die.

This problem exhibits on i686, s390, ppc. It does not occur on x86_64 and ppc64. So it's problem on 32-bit platforms only.

Upstream has one related bug report: <https://rt.cpan.org/Public/Bug/Display.html?id=74460>. The bug is in perl-Devel-FindRef probably, but we did not notice because perl-Devel-FindRef tests check loading of the module only.

Comment 1 Petr Pisar 2012-01-31 15:33:24 UTC
I propose to remove perl(Devel::FindRef) from BuildRequires.

Comment 2 Iain Arnell 2012-02-01 05:17:30 UTC
Please don't just hide the problem by simply removing the BuildRequires. As Petr's noted in the upstream bug, Devel::FindRef is segfaulting for weird reasons. Anyone installing both Test-Refcount and Devel-FindRef may run into the same problem. Would be better to remove the use of Devel::FindRef from Test/Refcount.pm entirely (at least until Devel-FindRef is fixed).

Comment 3 Ralf Corsepius 2012-02-01 06:49:25 UTC
(In reply to comment #2)
> Please don't just hide the problem by simply removing the BuildRequires.
ACK.

> As
> Petr's noted in the upstream bug, Devel::FindRef is segfaulting for weird
> reasons. Anyone installing both Test-Refcount and Devel-FindRef may run into
> the same problem. Would be better to remove the use of Devel::FindRef from
> Test/Refcount.pm entirely (at least until Devel-FindRef is fixed).
Did anybody try to go after the warnings building Devel::FindRef shows?

I currently don't have time to do so, but a quick look into Devel::FindRef's build logs shows some suspicious pieces of code, related to improper fprintf format strings, my gut feeling is they could be related to this issue.

Comment 4 Iain Arnell 2012-02-01 10:41:09 UTC
Those warnings seem to be innocuous. 

But I have a patch for Devel-FindRef that seems to solve the problem. 

diff -up Devel-FindRef-1.422/FindRef.xs.orig Devel-FindRef-1.422/FindRef.xs
--- Devel-FindRef-1.422/FindRef.xs.orig 2009-08-30 16:33:01.000000000 +0200
+++ Devel-FindRef-1.422/FindRef.xs      2012-02-01 10:17:35.698276247 +0100
@@ -214,7 +214,7 @@ find_ (SV *target_ref)
                                 if (GvSV (sv) == (SV *)targ) res_gv ('$');
                                 if (GvAV (sv) == (AV *)targ) res_gv ('@');
                                 if (GvHV (sv) == (HV *)targ) res_gv ('%');
-                                if (GvCV (sv) == (CV *)targ) res_gv ('&');
+                                if (GvCVu(sv) == (CV *)targ) res_gv ('&');
                               }
 
                             break;

Comment 5 Petr Pisar 2012-02-01 12:44:35 UTC
Created attachment 558816 [details]
Silent warnings on 32-bit system

Comment 6 Petr Pisar 2012-02-01 12:48:59 UTC
Created attachment 558817 [details]
Silent warning on 64-bit systems

Add-on patch on top of the 32-bit patch.

Comment 7 Petr Pisar 2012-02-01 12:52:52 UTC
You are right, the warnings are just warnings. Maybe one or two could create bogus output, but nothing to crash. Your patch is fine.

Comment 8 Fedora Update System 2012-04-22 17:49:53 UTC
perl-Devel-FindRef-1.42-15.fc17,perl-Test-Refcount-0.07-5.fc17 has been submitted as an update for Fedora 17.
https://admin.fedoraproject.org/updates/perl-Devel-FindRef-1.42-15.fc17,perl-Test-Refcount-0.07-5.fc17

Comment 9 Fedora Update System 2012-04-23 01:23:18 UTC
Package perl-Test-Refcount-0.07-5.fc17, perl-Devel-FindRef-1.42-16.fc17:
* should fix your issue,
* was pushed to the Fedora 17 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing perl-Test-Refcount-0.07-5.fc17 perl-Devel-FindRef-1.42-16.fc17'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2012-6422/perl-Devel-FindRef-1.42-16.fc17,perl-Test-Refcount-0.07-5.fc17
then log in and leave karma (feedback).

Comment 10 Fedora Update System 2012-05-02 04:50:31 UTC
perl-Test-Refcount-0.07-5.fc17, perl-Devel-FindRef-1.42-16.fc17 has been pushed to the Fedora 17 stable repository.  If problems still persist, please make note of it in this bug report.