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