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

Reply via email to