mod_whatkilledus

mod_whatkilledus for IHS 1.3 writes information about the current connection and request to the error log after an IHS child process crash. This provides important information for interpreting a core dump, and even without a core dump it can be used to determine what types of requests lead to crashes. (Is the connection leading to a crash always to an SSL port? Is the request leading to a crash always for an object handled by a certain plug-in module? Is the connection leading to a crash always from the same client?)

Supported server versions:

The following versions on platforms other than Windows:

(Note: The version of this module for IHS 2.0 and above is described here.)

IBM recommendation

Any installation of an IHS with this support should have this module installed and activated.

Installation

Copy mod_whatkilledus.so for your platform to the libexec directory in the web server installation location (e.g., to /opt/IBMHTTPServer/libexec).

Activation

Add the following directive after existing LoadModule directives:

LoadModule whatkilledus_module libexec/mod_whatkilledus.so

Add the following directive after existing AddModule directives:

AddModule mod_whatkilledus.c

Add the following directive to the end of the configuration file:

EnableExceptionHook On

With IHS 1.3.26.x or 1.3.28.x with cumulative fix PK05084, PK16139, or later, additional function is available when ExtendedStatus is set to On. With that setting, IHS will track the plug-in module which is currently processing the request. If a crash occurs, mod_whatkilledus can then display the name of the plug-in module.

In configurations with third-party modules, it is important to set

ExtendedStatus On

so that mod_whatkilledus can report whether or not the crash occurred in the third-party module. The ExtendedStatus directive requires that mod_status be loaded.

Restart the server so that the updated configuration takes effect.

After requests are received, but before most plug-in modules run, the module saves information about the request in case the child process crashes while processing that request. This introduces a small amount of overhead into request processing, but the overhead is hard to measure and certainly is not noticeable.

Deactivation

Comment out the LoadModule and AddModule directives added as part of the activation step.

Restart the server so that the updated configuration takes effect.