Subject: | Tracing mod_perl crashes Apache if ErrorLog is set to syslog |
When MP_TRACE is enabled, and Apache's ErrorLog is set to syslog,
mod_perl will crash because of the following code block:
#ifdef MP_TRACE
/* httpd core open_logs handler re-opens s->error_log, which might
* change, even though it still points to the same physical file
* (.e.g on win32 the filehandle will be different. Therefore
* reset the tracing logfile setting here, since this is the
* earliest place, happening after the open_logs phase.
*
* Moreover, we need to dup the filehandle so that when the server
* shuts down, we will be able to log to error_log after Apache
* has closed it (which happens too early for our likening).
*/
{
apr_file_t *dup;
MP_RUN_CROAK(apr_file_dup(&dup, s->error_log, pconf),
"mod_perl core post_config");
modperl_trace_logfile_set(dup);
}
#endif
The problem is that with syslog, s->error_log is NULL, and
apr_file_dup() does not accept a NULL parameter cleanly.
I'm not sure if this should be conditional to s->error_log != NULL or if
it requires more work to massage it into position.