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