Set up stderr logging explictly early in initialization so that a pool is

available for creating the APR representation of stderr.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@87583 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jeff Trawick
2001-01-04 18:22:50 +00:00
parent 5c30786f06
commit a65b522fb9
4 changed files with 20 additions and 1 deletions

View File

@ -113,6 +113,12 @@ extern "C" {
#define APLOG_MARK __FILE__,__LINE__ #define APLOG_MARK __FILE__,__LINE__
/**
* Set up for logging to stderr.
* @param p The pool to allocate out of
*/
void ap_open_stderr_log(apr_pool_t *p);
/** /**
* Open the error log and replace stderr with it. * Open the error log and replace stderr with it.
* @param s_main The main server * @param s_main The main server

View File

@ -418,3 +418,4 @@ EXPORTS
ap_xml_insert_uri ap_xml_insert_uri
ap_os_create_privileged_process ap_os_create_privileged_process
ap_open_stderr_log

View File

@ -174,6 +174,13 @@ static const TRANS priorities[] = {
{NULL, -1}, {NULL, -1},
}; };
static apr_file_t *stderr_log;
void ap_open_stderr_log(apr_pool_t *p)
{
apr_open_stderr(&stderr_log, p);
}
static int log_child(apr_pool_t *p, const char *progname, static int log_child(apr_pool_t *p, const char *progname,
apr_file_t **fpin) apr_file_t **fpin)
{ {
@ -346,7 +353,7 @@ static void log_error_core(const char *file, int line, int level,
if (((level & APLOG_LEVELMASK) != APLOG_NOTICE) && if (((level & APLOG_LEVELMASK) != APLOG_NOTICE) &&
((level & APLOG_LEVELMASK) > DEFAULT_LOGLEVEL)) ((level & APLOG_LEVELMASK) > DEFAULT_LOGLEVEL))
return; return;
apr_open_stderr(&logf, pool); logf = stderr_log;
} }
else if (s->error_log) { else if (s->error_log) {
/* /*

View File

@ -214,6 +214,9 @@ static process_rec *create_process(int argc, const char * const *argv)
stat = apr_create_pool(&cntx, NULL); stat = apr_create_pool(&cntx, NULL);
if (stat != APR_SUCCESS) { if (stat != APR_SUCCESS) {
/* XXX From the time that we took away the NULL pool->malloc mapping
* we have been unable to log here without segfaulting.
*/
ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, 0, NULL, ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, 0, NULL,
"apr_create_pool() failed to create " "apr_create_pool() failed to create "
"initial context"); "initial context");
@ -221,6 +224,8 @@ static process_rec *create_process(int argc, const char * const *argv)
exit(1); exit(1);
} }
ap_open_stderr_log(cntx);
process = apr_palloc(cntx, sizeof(process_rec)); process = apr_palloc(cntx, sizeof(process_rec));
process->pool = cntx; process->pool = cntx;