I've had this problem too, I have yet to resolve it.

On Feb 16, 2016 10:54 AM, "arisawa" <arisawa@ar.aichi-u.ac.jp> wrote:
Hello,

I have observed warning messages from dns server:
dns 30792: warning process exceeded 100 file descriptors
dns 30888: warning process exceeded 200 file descriptors


probably the file descriptor leak comes from dnresolve.c

udpquery(Query *qp, char *mntpt, int depth, int patient, int inns)
{
        …
                        msg = system(open("/dev/null", ORDWR), "outside");
        …
}

char *
system(int fd, char *cmd)
{
        int pid, p, i;
        static Waitmsg msg;

        if((pid = fork()) == -1)
                sysfatal("fork failed: %r");
        else if(pid == 0){
                dup(fd, 0);
                close(fd);
                for (i = 3; i < 200; i++)
                        close(i);               /* don't leak fds */
                execl("/bin/rc", "rc", "-c", cmd, nil);
                sysfatal("exec rc: %r");
        }
        for(p = waitpid(); p >= 0; p = waitpid())
                if(p == pid)
                        return msg.msg;
        return "lost child";
}

fd is lost if pid > 0

my server is running on 9front. however both 9atom and bell-labs use same routine.

Kenji Arisawa