Skip Menu |

This queue is for tickets about the Safe CPAN distribution.

Report information
The Basics
Id: 32897
Status: open
Priority: 0/
Queue: Safe

People
Owner: Nobody in particular
Requestors: frank.wiegand [...] gmail.com
Cc:
AdminCc:

Bug Information
Severity: Normal
Broken in:
  • 2.13
  • 2.14
Fixed in: (no value)



Subject: Safe.pm and version.pm and 5.8.8 broken
See also http://perlmonks.org/?node_id=665058 for more users with this problem. I could reduce the problem to this script: $ cat bug_safe use Safe; use version; use Data::Dumper; # script segfaults if this line is omitted my $comp = Safe->new; $comp->deny_only('shmwrite'); # permit everything my $code = <<'EOT'; # from ExtUtils::MM_Unix::parse_version package ExtUtils::MakeMaker::_version; no strict; BEGIN { eval { undef *version; require version; "version"->import; } } local $VERSION; $VERSION=undef; do { use version; $VERSION = qv('3.0.17'); }; $VERSION EOT my $ret = $comp->reval($code); print "$ret"; # should stringify the version $ perl bug_safe Can't locate auto/version/("".al in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at bug_safe line 24 If I remove the "use Data::Dumper;" line, the scripts segfaults. I think it has something to do with the "share *_ and functions defined in universal.c" thing in Safe.pm (introduced in 2.13), some of them aren't defined in 5.8.8's universal.c (like the version.pm ones). My Version of Safe.pm is 2.14. Thanks, Frank $ perl -V Summary of my perl5 (revision 5 version 8 subversion 8) configuration: Platform: osname=linux, osvers=2.6.15.7, archname=i486-linux-gnu-thread-multi uname='linux terranova 2.6.15.7 #1 smp thu jul 12 14:27:56 utc 2007 i686 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.8 -Darchlib=/usr/lib/perl/5.8 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.8.8 -Dsitearch=/usr/local/lib/perl/5.8.8 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Uusesfio -Uusenm -Duseshrplib -Dlibperl=libperl.so.5.8.8 -Dd_dosuid -des' hint=recommended, useposix=true, d_sigaction=define usethreads=define use5005threads=undef useithreads=define usemultiplicity=define useperlio=define d_sfio=undef uselargefiles=define usesocks=undef use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2', cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include' ccversion='', gccversion='4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)', 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='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt perllibs=-ldl -lm -lpthread -lc -lcrypt libc=/lib/libc-2.6.1.so, so=so, useshrplib=true, libperl=libperl.so.5.8.8 gnulibc_version='2.6.1' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP THREADS_HAVE_PIDS USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API Built under linux Compiled at Dec 4 2007 08:56:39 @INC: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl
From: RGARCIA [...] cpan.org
I just uploaded Safe 2.15 which is able to load version.pm in a Safe compartment with 5.8.8 and 5.10.0. However, your test code won't return a proper version object -- the object will be blessed in another (fake) stash. You can however rebless $ret in the "version" package and get a proper version object, though. For any problem that might remain, don't hesitate to follow up.
Subject: Re: [rt.cpan.org #32897] Safe.pm and version.pm and 5.8.8 broken
Date: Wed, 6 Feb 2008 16:52:36 +0100
To: bug-Safe [...] rt.cpan.org
From: "Frank Wiegand" <frank.wiegand [...] gmail.com>
2008/2/6, RGARCIA via RT <bug-Safe@rt.cpan.org>: Show quoted text
> <URL: http://rt.cpan.org/Ticket/Display.html?id=32897 > > > I just uploaded Safe 2.15 which is able to load version.pm in a Safe > compartment with 5.8.8 and 5.10.0.
Great, thanks. Show quoted text
> However, your test code won't return a proper version object -- the > object will be blessed in another (fake) stash. You can however rebless > $ret in the "version" package and get a proper version object, though.
My code was only intended to produce a minimal test case, I don't use Safe directly. It was a little help to Andreas König to track down the bug, as it seemed that it was in CPAN.pm (but it was not). CPAN.pm now runs fine with Safe 2.15, and I'm happy. Bye, Frank