At 07:34 AM 3/30/2003, Jeff Trawick wrote:

>oh darn, I took a wild branch...  this doesn't have anything to do with 
>cgid_child_errfn at all...  it is this code, isn't it??? (look at Sander's minimal 
>traceback (which would be much better with a -g build and line numbers!!!))
>
>      rc = ap_os_create_privileged_process(r, procnew, argv0, argv,
>                                           (const char * const *)env,
>                                           procattr, ptrans);
>
>      if (rc != APR_SUCCESS) {
>            /* Bad things happened. Everyone should have cleaned up. */
>            ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_TOCLIENT, rc, r,
>                          "couldn't create child process: %d: %s", rc,
>                          apr_filename_of_pathname(r->filename));
>
>when I force rc != APR_SUCCESS on Linux, I get a segfault...  the problem is that 
>ap_log_rerror() references r->headers_in, which wasn't replicated in the daemon...  
>the attached patch works around that in the same manner as cgid_child_errfn()

Right... and we had a third I cleaned up :-(

>no theory here for why I get segfault and you get SIGPIPE from writing to a closed 
>descriptor; it certainly is an indication that we are talking about different 
>problems, but I've been up and down the cgid_child_errfn() path and can't make it fail

No doubt this is a strange overload condition.  The point is that we were
being pretty ungraceful about it.  I think all the ap_log_rerror foobars were
the biggest issue.  Hope these clear it all up.

>also, shouldn't the APLOG_TOCLIENT flag get zapped since it doesn't apply to 
>ap_log_error()?

Fixed.  I agree.

See the last commit to httpd-2.1 (1.149)... if I see anyone else agree 
I'll go ahead and commit to -2.0 and we can call this closed.

Thanks for they eyeballs, Jeff!

Bill 

Reply via email to