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