Well I did a little more investigation - it seems that we are dieing in Expat.pm line 451. The offending Function is:
sub parse {
my $self = shift;
my $arg = shift;
croak "Parse already in progress (Expat)" if $self->{_State_};
$self->{_State_} = 1;
my $parser = $self->{Parser};
my $ioref;
my $result = 0;
if (defined $arg) {
if (ref($arg) and UNIVERSAL::isa($arg, 'IO::Handler')) {
$ioref = $arg;
} else {
eval {
$ioref = *{$arg}{IO}; # *** <= This is where we are losing it ***
};
undef $@;
}
}
if (defined($ioref)) {
my $delim = $self->{Stream_Delimiter};
my $prev_rs;
$prev_rs = ref($ioref)->input_record_separator("\n$delim\n")
if defined($delim);
$result = ParseStream($parser, $ioref, $delim);
ref($ioref)->input_record_separator($prev_rs)
if defined($delim);
} else {
$result = ParseString($parser, $arg);
}
$self->{_State_} = 2;
$result or croak $self->{ErrorMessage};
}
As I recall, Doug, you helped me patch part of HTML::Mason dealing with typeglobs under an eval ... I believe that * is a typeglob in perl yes?
-----Original Message-----
From: Shane Adams
Sent: Tuesday, September 26, 2000 4:16 PM
To: [EMAIL PROTECTED]
Subject: Core file (debugging info turned on/stack trace)
Apache 1.3.12, mod_perl 1.24, Perl 5.6.0, Redhat 6.1
...
Program terminated with signal 11, Segmentation fault.
...
0 0x814abd4 in Perl_sv_setsv (dstr=0x8d34514, sstr=0x84afba4) at sv.c:2774
#1 0x813b6b3 in Perl_pp_sassign () at pp_hot.c:117
#2 0x813aeda in Perl_runops_debug () at run.c:56
#3 0x80e4b2f in S_call_body (myop=0x7ffff2f0, is_eval=0) at perl.c:1761
#4 0x80e4415 in perl_call_sv (sv=0x8845bd4, flags=2) at perl.c:1638
#5 0x812a892 in Perl_vdie (
pat=0x81d46a0 "Can't use string (\"%.32s\") as %s ref while \"strict refs\" in use",
args=0x7ffff36c) at util.c:1532
#6 0x812aa71 in Perl_die (
pat=0x81d46a0 "Can't use string (\"%.32s\") as %s ref while \"strict refs\" in use")
at util.c:1567
#7 0x8155127 in Perl_pp_rv2gv () at pp.c:249
#8 0x813aeda in Perl_runops_debug () at run.c:56
#9 0x80e4b2f in S_call_body (myop=0x7ffff4b8, is_eval=0) at perl.c:1761
#10 0x80e4780 in perl_call_sv (sv=0x82e7bcc, flags=4) at perl.c:1677
#11 0x8075aac in perl_call_handler (sv=0x82e7bcc, r=0x88ac844, args=0x0)
at mod_perl.c:1643
#12 0x8074fd8 in perl_run_stacked_handlers (hook=0x81ac879 "PerlHandler", r=0x88ac844,
handlers=0x876f72c) at mod_perl.c:1362
#13 0x80726a8 in perl_handler (r=0x88ac844) at mod_perl.c:905
#14 0x80a0913 in ap_invoke_handler ()
#15 0x80b3f29 in process_request_internal ()
#16 0x80b3f8c in ap_process_request ()
#17 0x80ab82e in child_main ()
#18 0x80aba6c in make_child ()
#19 0x80abde6 in perform_idle_server_maintenance ()
#20 0x80ac315 in standalone_main ()
#21 0x80ac8d3 in main ()
So far I've applied a mason related patch thanks to Doug, and a path on perl itself that was listed on this list. Still getting faults however, and they are frequent enough for me to worry about in a production scenario. We are using the HTML::Mason package if it helps any.