httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brian Pane <brian.p...@cnet.com>
Subject Re: another socket segv (worker MPM)
Date Thu, 22 Nov 2001 05:23:04 GMT
I wrote:
[...]

> I've managed to isolate the problem a bit further.  The csd struct gets
> corrupted within core_create_conn: 


Er, no, it actually happens earlier than that.  What seems
to have happened is that, in the listener loop, this block
got executed with rv->accept_func==check_pipe_of_death() :

    got_fd:
        if (!workers_may_exit) {
            /* create a new transaction pool for each accepted socket */
            apr_pool_create(&ptrans, tpool);

            rv = lr->accept_func(&csd, lr, ptrans);

[...]
           if (csd != NULL) {
                rv = ap_queue_push(worker_queue, csd, ptrans);


The accept_func doesn't modify csd, so its value is
bogus when we hit the "if (csd != NULL)" check.  And
we end up with a bad socket descriptor on the queue.

I'm testing a fix for this now...

--Brian




Mime
View raw message