RE: Core file (debugging info turned on/stack trace)

2000-09-28 Thread Doug MacEachern

On Tue, 26 Sep 2000, Shane Adams wrote:

> Well I did a little more investigation - it seems that we are dieing in
> Expat.pm line 451. The offending Function is:
...

is this something you can reproduce at will?  if you can give me a tiny
test case that i can drop and i run, i'll take a look.
 
> 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?

right.




RE: Core file (debugging info turned on/stack trace)

2000-09-26 Thread Shane Adams
Title: RE: Core file (debugging info turned on/stack trace)





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=0x72f0, 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=0x736c) 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=0x74b8, 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.