[Dovecot] File descriptor leak in 1.0rc2[45]?

Victor Duchovni Victor.Duchovni at MorganStanley.com
Tue Mar 6 17:04:55 EET 2007


On Tue, Mar 06, 2007 at 04:38:12PM +0200, Timo Sirainen wrote:

> On Tue, 2007-03-06 at 08:49 -0500, Victor Duchovni wrote:
> > On Tue, Mar 06, 2007 at 03:20:26PM +0200, Timo Sirainen wrote:
> > 
> > > On Mon, 2007-03-05 at 15:51 -0500, Victor Duchovni wrote:
> > > > 
> > > > I upgraded (NetBSD 2.99 i386) from 1.0rc7 to 1.0rc24 and then tried
> > > > rc25,
> > > > and in both cases need to restart Dovecot every day or so (low volume
> > > > server).
> > > > It seems to run out of file descriptors. I have now raised the file
> > > > descriptor
> > > > limit to 1024, but that is not a long-term solution... 
> > > 
> > > I guess you built with kqueue code?
> > 
> > I used the pkgsrc defaults. It looks like this uses kqueue. I am puzzled
> > why kqueue introduces descriptor leaks.
> > 
> > > It seems to be buggy with older NetBSDs.
> > 
> > Is "it" the kqueue code in the kernel (how does this lead to descriptor
> > leaks) or the kqueue-using event code in Dovecot (how does this lead
> > to descriptor leaks).
> 
> Dovecot creates a log pipe for each child process. When the child
> process dies, the log pipe should get a notification that there's new
> data to be read from the pipe. Then when Dovecot tries to read() it, it
> returns "end of file" and the pipe gets closed.
> 
> Something in the above doesn't work with some NetBSD versions + kqueue
> and the pipe doesn't get closed.
> 
> > What can I do to work around the issue?
> 
> Remove --with-ioloop=kqueue from the pkgsrc build.

    make PKG_OPTIONS.dovecot="gssapi -kqueue pam sasl" update

did the trick (no kqueue support in the build). Hopefully it will now
be stable.

-- 
	Viktor.


More information about the dovecot mailing list