[Date Prev][Date Next][Thread Prev][Thread Next][Interchange by date
][Interchange by thread
]
[ic] perl5.6.1 and evals SOLVED now UNSOLVED again
I've got a small usertag and page that seems
to kill perl evals. This is in interchange
4.7.3 on our debian machines. It does not seem
to kill interchange itself, so I'm not 100%
sure if it is a perl issue. It is, however,
dependant on the perl version, so maybe it
is. Anyone upgrading 5.6.0 to 5.6.1, at least
on a debian box, should be cautious.
--
Description:
On an up to date debian "unstable" system running
perl 5.6.1 this usertag and simple eval causes evals
to misbehave (segfault?) within an unpatched interchange.
The same thing happens with a home build perl 5.7.1
(using & -d defaults) 100% tests successful.
That same interchange runs on 5.6.0 machines no problem.
If I hack it to run with a local 5.6.0 binary and all
the 5.6.1 libs (modify Config.pm and symlink a few
5.6.0 directories to 5.6.1 equivalents) it works.
I do not know how to troubleshoot this further. It's
not like I can run interchange in gdb. Nor can I tell
for sure if this is a perl or interchange issue, except
that perl is behaving inconsistently from 5.6.0 to 5.6.1.
I'd be curious if anyone else can run this on a perl 5.6.1
machine and to hear if it works or does not.
#############
## xxx
UserTag xxx HasEndTag 1
UserTag xxx Interpolate 0
UserTag xxx Routine<<XXX
sub {
::logGlobal("logGlobal in scope in tag");
my $str = eval {
my $OUT=eval $_[0];
die $@ if $@;
return '' unless $OUT;
return $OUT;
};
if($@) {
my($err);
$err=$@;
::logGlobal("EVAL FAILED: $err");
$err=~s/\n/<BR>/g;
::logGlobal("xxx done");
return "error: $err";
}
::logGlobal("xxx done");
return "str: $str";
}
XXX
#end
For this simplified page:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML><HEAD>
</HEAD>
<BODY ALINK="#990000" BGCOLOR="#FFFFFF" LINK="#0165FF" TEXT="#000000" VLINK="#0000FF">
[xxx]
{
use strict 'vars';
my(@OUT); # COMMENT THIS LINE AND EVAL FAILS AND IS **NOT** TRAPPED
push @OUT,'HELLO WORLD';
::logGlobal("logGlobal is in scope here");
return join '',@OUT;
}
[/xxx]
</BODY>
</HTML>
The development machine logs this and returns server read error (probably segfault)
genii.znet.maine.com Rkagu3AP:maine.com - [15/June/2001:12:02:49 -0500] PAGE: xxx lobsters /Catalog/lobsters.cgi/xxx.html logGlobal in scope in tag
The production machine (5.6.0) logs this and returns page with "str:"
genii.znet.maine.com gWuyvxkm:maine.com - [15/June/2001:12:04:13 -0500] PAGE: xxx products /Catalog/products.cgi/xxx.html logGlobal in scope in tag
genii.znet.maine.com gWuyvxkm:maine.com - [15/June/2001:12:04:13 -0500] PAGE: xxx products /Catalog/products.cgi/xxx.html EVAL FAILED: Global symbol "@OUT" requires explicit package name at (eval 45) line 5.
> Global symbol "@OUT" requires explicit package name at (eval 45) line 7.
>
###################################
This is perl on production machine:
Summary of my perl5 (revision 5.0 version 6 subversion 0) configuration:
Platform:
osname=linux, osvers=2.4.2, archname=i386-linux
uname='linux duende 2.4.2 #1 fri mar 2 13:52:32 est 2001 i686 unknown '
config_args='-Dccflags=-DDEBIAN -Darchname=i386-linux -Dprefix=/usr -Dprivlib=/usr/share/perl/5.6.0 -Darchlib=/usr/lib/perl/5.6.0 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.6.0 -Dsitearch=/usr/local/lib/perl/5.6.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/pager -Uafs -Ud_csh -Uusesfio -Duseshrplib -Dlibperl=libperl.so.5.6.0 -Dd_dosuid -des'
hint=recommended, useposix=true, d_sigaction=define
usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef
useperlio=undef d_sfio=undef uselargefiles=define
use64bitint=undef use64bitall=undef uselongdouble=undef usesocks=undef
Compiler:
cc='cc', optimize='-O2', gccversion=2.95.3 20010219 (prerelease)
cppflags='-DDEBIAN -fno-strict-aliasing -I/usr/local/include'
ccflags ='-DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
stdchar='char', d_stdstdio=define, usevfork=false
intsize=4, longsize=4, ptrsize=4, doublesize=8
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, usemymalloc=n, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lnsl -ldl -lm -lc -lcrypt
libc=/lib/libc-2.2.2.so, so=so, useshrplib=true, libperl=libperl.so.5.6.0
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'
Characteristics of this binary (from libperl):
Compile-time options: USE_LARGE_FILES
Built under linux
Compiled at Mar 9 2001 05:59:18
@INC:
/usr/local/lib/perl/5.6.0
/usr/local/share/perl/5.6.0
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.6.0
/usr/share/perl/5.6.0
/usr/local/lib/site_perl/i386-linux
/usr/local/lib/site_perl
/usr/lib/perl5/5.6/i386-linux
/usr/lib/perl5/5.6
/usr/lib/perl5/5.005/i386-linux
.
###################################
This is perl on development machine:
Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration:
Platform:
osname=linux, osvers=2.4.5-ac9, archname=i386-linux
uname='linux duende 2.4.5-ac9 #1 thu jun 7 13:40:15 est 2001 i686 unknown '
config_args='-Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i386-linux -Dprefix=/usr -Dprivlib=/usr/share/perl/5.6.1 -Darchlib=/usr/lib/perl/5.6.1 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.6.1 -Dsitearch=/usr/local/lib/perl/5.6.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Uusesfio -Dotherlibdirs=/usr/lib/perl5/5.6:/usr/lib/perl5/5.005 -Duseshrplib -Dlibperl=libperl.so.5.6.1 -Dd_dosuid -des'
hint=recommended, useposix=true, d_sigaction=define
usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef
useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
Compiler:
cc='cc', ccflags ='-DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
optimize='-O2',
cppflags='-DDEBIAN -fno-strict-aliasing -I/usr/local/include'
ccversion='', gccversion='2.95.4 20010604 (Debian prerelease)', 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, usemymalloc=n, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lgdbm -ldbm -ldb -ldl -lm -lc -lcrypt
perllibs=-ldl -lm -lc -lcrypt
libc=/lib/libc-2.2.3.so, so=so, useshrplib=true, libperl=libperl.so.5.6.1
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'
Characteristics of this binary (from libperl):
Compile-time options: USE_LARGE_FILES
Built under linux
Compiled at Jun 13 2001 06:08:30
@INC:
/usr/local/lib/perl/5.6.1
/usr/local/share/perl/5.6.1
/usr/lib/perl5
/usr/share/perl5
/usr/lib/perl/5.6.1
/usr/share/perl/5.6.1
/usr/local/lib/site_perl
/usr/lib/perl5/5.6/i386-linux
/usr/lib/perl5/5.6
/usr/lib/perl5/5.005/i386-linux
/usr/lib/perl5/5.005
.
--
Christopher F. Miller, Publisher cfm@maine.com
MaineStreet Communications, Inc 208 Portland Road, Gray, ME 04039
1.207.657.5078 http://www.maine.com/
Content management, electronic commerce, internet integration, Debian linux