I am not sure if it's the same type of error, but the idea of recording
the PID is a great one -- if it is the problem, then forcing the
error-prone child to commit suicide might indeed be the answer. I will
add it to the error reporting.
Adam Prime x443 wrote:
I have encounter the same problem (at least the same symptoms)
thread here:
http://marc.info/?l=apache-modperl&m=114226565622372&w=2
I have never been able to find a true solution, but it is very
intermittent. I worked around it by doing this (which isn't really a
solution at all, and in fact borders on horrible). It does however keep
the user from getting a 500 (they get nothing at all instead). I kill
the child because the errors would usually come in clusters all from a
single apache child.
sub handler {
my $r = shift;
if ( !ref($r) || (ref($r) ne 'Apache' && ref($r) ne
'Apache::Request' && ref($r) ne 'Apache::Filter')){
print STDERR 'pnotes error occuring '.__PACKAGE__.' - pid: ' . $$
. ' non-apache object: ' . ref($r) . "\n";
Apache->request->child_terminate;
return DONE;
}
...
You might be able to work around it by doing something like this though
now that i think about it.
sub handler {
my $r = shift;
if ( !ref($r) || (ref($r) ne 'Apache' && ref($r) ne
'Apache::Request' && ref($r) ne 'Apache::Filter')){
$r = Apache->request;
$r->child_terminate; # i'd still kill off the child anyway
}
HTH
Adam
-----Original Message-----
From: Victor Danilchenko [mailto:[EMAIL PROTECTED]
Sent: Thursday, May 03, 2007 6:51 PM
To: Frank Wiles
Cc: modperl@perl.apache.org
Subject: Re: Help with $r being corrupted
Frank Wiles wrote:
Actually it isn't an issue of methods being forgotten, more likely
you aren't using Apache2::RequestUtil in your code. Preferably
preloading it.
Well, the production code which has this problem is running
under
mod_perl 1 and Apache 1.3 right now, but I do load both Apache and
Apache::Request there (the code is compatible with moth mod_perl and
mod_perl2, I also load Apache2::RequestUtil in the Apache2 comaptibility
block), and the error still occurs.
Is it some different module for Apache 1 that I am missing?
Though the
fact that the error occurs only infrequently, and mostly in requests
which occur over SSL, makes me suspect that it's something else.