Bug 1370954 - Perl module Number::Fraction dumps core when loaded.
Summary: Perl module Number::Fraction dumps core when loaded.
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: perl-Number-Fraction
Version: 23
Hardware: x86_64
OS: Linux
unspecified
low
Target Milestone: ---
Assignee: Jitka Plesnikova
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2016-08-28 23:35 UTC by George Sicherman
Modified: 2016-09-02 14:13 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2016-09-02 14:13:00 UTC
Type: Bug


Attachments (Terms of Use)

Description George Sicherman 2016-08-28 23:35:53 UTC
Description of problem:

     This Perl module dumps core when loaded.

Version-Release number of selected component (if applicable):

     2.00-1.fc23 noarch

How reproducible:

     Create a file with this in it:

         #!/usr/bin/perl

         use Number::Fraction;

Make it executable and execute it.

Actual results:

      Segmentation fault (core dumped)

Expected results:

      Exit with status 0.

Additional info:

      The computer is an HP workstation with a quad-core Xeon CPU.

Comment 1 Petr Pisar 2016-09-02 13:29:49 UTC
I cannot reproduce it. Does this command fails at your machine?

$ perl -e 'use Number::Fraction;'

It should not print anything. If it fails, I suspect you have some private copy of a binary Perl module installed that was built against older perl and is not compatible with Fedora's perl (e.g. after upgrading from Fedora 22). You can check it with strace command to see where the files are loaded from:

$ strace -e open -- perl -e 'use Number::Fraction;'
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libperl.so.5.22", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libnsl.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libcrypt.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libutil.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libfreebl3.so", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/dev/urandom", O_RDONLY)          = 3
open("/dev/null", O_RDONLY)             = 3
open("/usr/share/perl5/vendor_perl/Number/Fraction.pm", O_RDONLY) = 4
open("/usr/share/perl5/strict.pm", O_RDONLY) = 5
open("/usr/share/perl5/warnings.pm", O_RDONLY) = 5
open("/usr/share/perl5/vendor_perl/Carp.pm", O_RDONLY) = 5
open("/usr/share/perl5/vendor_perl/Exporter.pm", O_RDONLY) = 5
[...]
open("/usr/lib64/perl5/vendor_perl/Moose/Meta/Role/Application/ToRole.pm", O_RDONLY) = 6
open("/usr/lib64/perl5/vendor_perl/Moose/Meta/Role/Application/ToInstance.pm", O_RDONLY) = 6
open("/usr/lib64/perl5/vendor_perl/Moose/Meta/Attribute/Native.pm", O_RDONLY) = 6
+++ exited with 0 +++

Especially files that end with ".so" are important as they are binary Perl modules that must match current perl. The wrong location is usually from /usr/local or home user's home directory. My output for the .so file looks like this:

$ strace -e open -- perl -e 'use Number::Fraction;' 2>&1 |grep \\.so
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libperl.so.5.22", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libnsl.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libcrypt.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libutil.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib64/libfreebl3.so", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib64/perl5/vendor_perl/auto/List/Util/Util.so", O_RDONLY|O_CLOEXEC) = 6
open("/usr/lib64/perl5/vendor_perl/auto/Params/Util/Util.so", O_RDONLY|O_CLOEXEC) = 8
open("/usr/lib64/perl5/vendor_perl/auto/Sub/Name/Name.so", O_RDONLY|O_CLOEXEC) = 9
open("/usr/lib64/perl5/vendor_perl/auto/Package/Stash/XS/XS.so", O_RDONLY|O_CLOEXEC) = 8
open("/usr/lib64/perl5/vendor_perl/auto/List/MoreUtils/MoreUtils.so", O_RDONLY|O_CLOEXEC) = 10
open("/usr/lib64/perl5/auto/mro/mro.so", O_RDONLY|O_CLOEXEC) = 9
open("/usr/lib64/perl5/vendor_perl/auto/Sub/Identify/Identify.so", O_RDONLY|O_CLOEXEC) = 11
open("/usr/lib64/perl5/vendor_perl/auto/Moose/Moose.so", O_RDONLY|O_CLOEXEC) = 7
open("/usr/lib64/perl5/auto/B/B.so", O_RDONLY|O_CLOEXEC) = 9
open("/usr/lib64/perl5/auto/re/re.so", O_RDONLY|O_CLOEXEC) = 9

Comment 2 George Sicherman 2016-09-02 14:13:00 UTC
Thank you!  This was indeed the cause.  My Perl takes modules Runtime
and Classify from /usr/local/... and is dumping core on Classify.so.
I will clean out the local modules and close this bug report.


Note You need to log in before you can comment on or make changes to this bug.