<apologies if this comes through twice, my first try didn't seem to
make it>
This program core dumps when run under mod_perl on Solaris 2.8 x86.
#!./perl
use Oraperl;
use XML::Parser;
my $parser = new XML::Parser;
$parser->parsestring(''); # fails with valid xml here as well
It runs fine on Linux and Sparc Solaris. It also works fine from the
command line, or if I remove the use Oraperl line. I'm using the
following releases. I had the same problem under apache 1.3.19 and
mod_perl-1.25, and with perl compiled with and without usemymalloc.
I also tried Apache with mod_perl as a DSO and statically linked.
apache 1.3.20
expat-1.95.1
mod_perl-1.26
perl-5.6.1
DBD-Oracle-1.06
DBI-1.15
XML-Parser-2.30
I searched the web and found a known problem with symbol conflict with
apache's expat, but I have --disable-rule=EXPAT. I also saw a
recommendation to use XML-Parser-2.29, which I tried with no success.
Has anyone here seen this problem or have ideas on how to solve it?
The gdb backtrace:
(gdb) bt
#0 0xdefd3f98 in ?? ()
#1 0xdfbd7da9 in ?? ()
#2 0xdfbdeee2 in ?? ()
#3 0xdfbd31a9 in ?? ()
#4 0xdf78c6d1 in Perl_pp_entersub ()
from /server/local/apache/libexec/libperl.so
#5 0xdf786f92 in Perl_runops_standard ()
from /server/local/apache/libexec/libperl.so
#6 0xdf7484d6 in S_call_body () from /server/local/apache/libexec/libperl.so
#7 0xdf74829a in Perl_call_sv () from /server/local/apache/libexec/libperl.so
#8 0xdf729676 in perl_call_handler ()
from /server/local/apache/libexec/libperl.so
#9 0xdf728ef4 in perl_run_stacked_handlers ()
from /server/local/apache/libexec/libperl.so
#10 0xdf727734 in perl_handler () from /server/local/apache/libexec/libperl.so
#11 0x80739a5 in ap_invoke_handler ()
#12 0x8088398 in process_request_internal ()
#13 0x8088402 in ap_process_request ()
#14 0x807f2db in child_main ()
#15 0x807f564 in make_child ()
#16 0x807f8ec in perform_idle_server_maintenance ()
#17 0x807fe21 in standalone_main ()
#18 0x8080460 in main ()
#19 0x8056adf in _start ()
I turned on the nontstop debugging. The output from where it seg faults
is as follows.
entering XML::Parser::Expat::parse
438: my $self = shift;
439: my $arg = shift;
440: croak "Parse already in progress (Expat)" if $self->{_State_};
441: $self->{_State_} = 1;
442: my $parser = $self->{Parser};
443: my $ioref;
444: my $result = 0;
446: if (defined $arg) {
447: if (ref($arg) and UNIVERSAL::isa($arg, 'IO::Handle')) {
455: eval {
456: $ioref = *{$arg}{IO};
456: $ioref = *{$arg}{IO};
-- end of output, seg fault here
XML/Parser.pm
455 sub Char {
456 my $expat = shift;
457 my $text = shift;
458 my $class = "${$expat}{Pkg}::Characters";
459 my $clist = $expat->{Curlist};
perl configure options:
-Dprefix=/server/local -Uusemymalloc -Ubincompat5005 -des
% perl -V
Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration:
Platform:
osname=solaris, osvers=2.8, archname=i86pc-solaris
uname='sunos x86-b 5.8 generic_108529-06 i86pc i386 i86pc '
config_args='-Dprefix=/server/local -Uinstallusrbinperl -Ubincompat5005 -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 ='-fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64',
optimize='-O',
cppflags='-fno-strict-aliasing -I/usr/local/include'
ccversion='', gccversion='2.95.2 19991024 (release)', gccosandvers='solaris2.8'
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=y, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -L/usr/local/lib '
libpth=/usr/local/lib /usr/lib /usr/ccs/lib
libs=-lsocket -lnsl -ldl -lm -lc
perllibs=-lsocket -lnsl -ldl -lm -lc
libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
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: USE_LARGE_FILES
Built under solaris
Compiled at Jul 20 2001 22:45:47
@INC:
/server/local/lib/perl5/5.6.1/i86pc-solaris
/server/local/lib/perl5/5.6.1
/server/local/lib/perl5/site_perl/5.6.1/i86pc-solaris
/server/local/lib/perl5/site_perl/5.6.1
/server/local/lib/perl5/site_perl
.