Thanks Perrin

Unfortunately, this doesn't work.
First, failure of a mod_perl process with "Out of Memory!", as occurs when the softlimit of RLIMIT_AS is exceeded, does not trigger an Apache ErrorDocument 500. A mod_perl process that exits (actually CORE::exit() must be called), that doesn't trigger an ErrorDocument 500 either.

Second, if Apache detects a server error and redirects to a script, that script runs in a new process and has no access to the request object $r. It can access the REDIRECT environment variables as discussed in Custom Error Response <http://httpd.apache.org/docs/2.0/custom-error.html> .

At this point I think that the best thing to do is use MaxRequestsPerChild <http://httpd.apache.org/docs/2.0/mod/mpm_common.html#maxrequestsperchild> and Apache2::SizeLimit <http://search.cpan.org/%7Egozer/mod_perl-2.0.4/docs/api/Apache2/SizeLimit.pod> to handle most memory problems, and simply processes that blow up die without feedback to users. Not ideal, but they should be extremely rare events.

BR
A

Perrin Harkins wrote:
On Sun, Mar 14, 2010 at 11:22 AM, Arthur Goldberg <a...@cs.nyu.edu> wrote:
Perhaps you're referring to Apache's ErrorDocument (also described in Custom
Error Response).

Yes, that's what I meant.

While that can run local Perl (in a new process of course)
as in the example
       ErrorDocument 500 /cgi-bin/crash-recover.pl
it isn't clear to me how to access $r (which I assume means the Request).

You can send it to any URL you like, including one handled by mod_perl.

- Perrin


--
Arthur P. Goldberg, PhD

Research Scientist in Bioinformatics
Plant Systems Biology Laboratory
www.virtualplant.org

Visiting Academic
Computer Science Department
Courant Institute of Mathematical Sciences www.cs.nyu.edu/artg

a...@cs.nyu.edu
New York University
100 Washington Sq East
8th Floor Silver Building


Reply via email to