Commit 08a0ac99 authored by Jeff Trawick's avatar Jeff Trawick
Browse files

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
parent aa13d5a5
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -113,6 +113,12 @@ extern "C" {

#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.
 * @param s_main The main server
+1 −0
Original line number Diff line number Diff line
@@ -418,3 +418,4 @@ EXPORTS
       ap_xml_insert_uri

       ap_os_create_privileged_process
       ap_open_stderr_log
+8 −1
Original line number Diff line number Diff line
@@ -174,6 +174,13 @@ static const TRANS priorities[] = {
    {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,
                     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) &&
	    ((level & APLOG_LEVELMASK) > DEFAULT_LOGLEVEL))
	    return;
	apr_open_stderr(&logf, pool);
        logf = stderr_log;
    }
    else if (s->error_log) {
	/*
+5 −0
Original line number Diff line number Diff line
@@ -214,6 +214,9 @@ static process_rec *create_process(int argc, const char * const *argv)

    stat = apr_create_pool(&cntx, NULL);
    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,
                     "apr_create_pool() failed to create "
                     "initial context");
@@ -221,6 +224,8 @@ static process_rec *create_process(int argc, const char * const *argv)
        exit(1);
    }

    ap_open_stderr_log(cntx);

    process = apr_palloc(cntx, sizeof(process_rec));
    process->pool = cntx;