I've had this problem too, I have yet to resolve it.
On Feb 16, 2016 10:54 AM, "arisawa" <[email protected]> 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
>
>
>
>