Subject: | Unexpected "Can't run with Perl compiler backend at …" |
Date: | Wed, 29 Feb 2012 23:15:23 -0500 |
To: | bug-Filter-Crypto [...] rt.cpan.org |
From: | Gahring David <dgahring [...] mac.com> |
Greetings,
I have an application that uses Filter::Crypto to encrypt the source code. I recently upgraded my Perl environment to 5.14.2, and when I attempt to run an encrypted object using the newly built Perl, it fails with the following:
Can't run with Perl compiler backend at /opx/perl/lib/5.14.2/XSLoader.pm line 95.
BEGIN failed--compilation aborted at /opx/perl/lib/site_perl/5.14.2/sun4-solaris-thread-multi/Filter/Crypto/Decrypt.pm line 37.
Compilation failed in require at /opx/perl/lib/site_perl/OPXutils.pm line 1.
BEGIN failed--compilation aborted at /opx/perl/lib/site_perl/OPXutils.pm line 1.
Compilation failed in require at /opx/cver/sbin/opxjp line 19.
BEGIN failed--compilation aborted at /opx/cver/sbin/opxjp line 19.
After doing some digging, I found some code in the Decrypt.xs source that appears to be checking to ensure that we aren't running a Perl compiler backend with the following check..
if (gv_stashpvn("B", 1, FALSE))
croak("Can't run with Perl compiler backend");
I do not believe I am running a backend, so the only way around this issue was to comment out these lines of code. This seemed like using a sledgehammer to fix the problem, but I was at a loss as to what other options I had.
I guess my first question is whether this is actually a bug, or am I missing something obvious? Please advise.
Here is the standard stuff that may be helpful:
[version of Filter::Crypto]
1.33
[output of perl -V]
sal-/opx/logs> opxv200perl -V
Summary of my perl5 (revision 5 version 14 subversion 2) configuration:
Platform:
osname=solaris, osvers=2.10, archname=sun4-solaris-thread-multi
uname='sunos sal 5.10 generic_144488-17 sun4u sparc sunw,sun-fire-v445 '
config_args='-de -Dcc=gcc -Dprefix=/opx/perl -Dusethreads'
hint=recommended, useposix=true, d_sigaction=define
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='gcc', ccflags ='-D_REENTRANT -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV',
optimize='-O',
cppflags='-D_REENTRANT -fno-strict-aliasing -pipe -I/usr/local/include'
ccversion='', gccversion='3.4.6', gccosandvers='solaris2.10'
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='gcc', ldflags =' -L/usr/local/lib '
libpth=/usr/local/lib /usr/lib /usr/ccs/lib
libs=-lsocket -lnsl -ldl -lm -lpthread -lc
perllibs=-lsocket -lnsl -ldl -lm -lpthread -lc
libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
cccdlflags='-fPIC', lddlflags='-G -L/usr/local/lib'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
PERL_PRESERVE_IVUV PERL_USE_SAFE_PUTENV USE_ITHREADS
USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
USE_REENTRANT_API
Built under solaris
Compiled at Feb 27 2012 21:39:30
@INC:
/opx/perl/lib/site_perl/5.14.2/sun4-solaris-thread-multi
/opx/perl/lib/site_perl/5.14.2
/opx/perl/lib/5.14.2/sun4-solaris-thread-multi
/opx/perl/lib/5.14.2
/opx/perl/lib/site_perl
.
[output of uname -a]
SunOS sal 5.10 Generic_144488-17 sun4u sparc SUNW,Sun-Fire-V445
Thanks!
Dave