file descripter leak in current with Qmail?
Arjan van Leeuwen
avleeuwen at piwebs.com
Mon Jun 7 20:16:29 GMT 2004
On Monday 07 June 2004 21:42, you wrote:
> On Mon, 7 Jun 2004, Arjan van Leeuwen wrote:
> > > > In terms of debugging it: your first task it to identify if there's
> > > > one process that's holding all the fd's, or if it is distributed over
> > > > many proceses. After that, you want to track down what kind of fd is
> > > > being left open, which may help you track down why it's left open...
> > >
> > > Just as I'm reading this, I'm seeing the same thing on my -CURRENT
> > > server, which has a _very_ low load (atm, it's only routing the
> > > internet traffic for 3 users and serving SMTP for 2 of them). I'm also
> > > running qmail. The kernel is from June 6. How do I go about
> > > investigating this further?
> >
> > Replying to myself -
> > fstat shows all open files evenly distributed among the running
> > processes.
>
> It could be that this is related to the esd file descriptor leak problem
> also being reported. You might also try the attached patch.
I get a panic (address not allocated) when using the patch. I can't write down
any useful details about it right now, because although the server has only 3
users, they're very disconcerned when I disrupt their internet traffic :).
Best regards,
Arjan
>
> Robert N M Watson FreeBSD Core Team, TrustedBSD Projects
> robert at fledge.watson.org Senior Research Scientist, McAfee Research
>
> Index: uipc_syscalls.c
> ===================================================================
> RCS file: /data/ncvs/src/sys/kern/uipc_syscalls.c,v
> retrieving revision 1.187
> diff -u -r1.187 uipc_syscalls.c
> --- uipc_syscalls.c 7 Jun 2004 09:59:50 -0000 1.187
> +++ uipc_syscalls.c 7 Jun 2004 19:38:39 -0000
> @@ -285,7 +285,7 @@
> if ((head->so_state & SS_NBIO) && TAILQ_EMPTY(&head->so_comp)) {
> ACCEPT_UNLOCK();
> error = EWOULDBLOCK;
> - goto done;
> + goto noconnection;
> }
> while (TAILQ_EMPTY(&head->so_comp) && head->so_error == 0) {
> if (head->so_state & SS_CANTRCVMORE) {
> @@ -296,14 +296,14 @@
> "accept", 0);
> if (error) {
> ACCEPT_UNLOCK();
> - goto done;
> + goto noconnection;
> }
> }
> if (head->so_error) {
> error = head->so_error;
> head->so_error = 0;
> ACCEPT_UNLOCK();
> - goto done;
> + goto noconnection;
> }
> so = TAILQ_FIRST(&head->so_comp);
> KASSERT(!(so->so_qstate & SQ_INCOMP), ("accept1: so SQ_INCOMP"));
>
>
>
> !DSPAM:40c4c5b6283404763116770!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: signature
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20040607/6a1a55c7/attachment.bin
More information about the freebsd-current
mailing list