On 3 June 2013, at 22:21, Doug Hardie <bc...@lafn.org> wrote: > > On 3 June 2013, at 20:39, staticsafe <m...@staticsafe.ca> wrote: > >> On Mon, Jun 03, 2013 at 07:57:07PM -0700, Doug Hardie wrote: >>> I have an unusual situation. A program is doing a DNS lookup and often the >>> IP address has no reverse DNS entries. As a result the program hangs for >>> several timeouts. The call is not being made directly in its code, but is >>> occurring in a system call. There are no specific calls to DNS, its >>> something else doing it. I have been trying to track down which system >>> call is doing it, but without success so far. I have tried syslog calls >>> around each of the system calls I thought might be the culprit, but my >>> guessing is not very good. How can I identify the system call that is >>> calling DNS? If I can find it, I hopefully can find another way to do >>> whatever it does that does not involve a reverse DNS lookup. >>> >>> >> >> Use truss: >> http://www.freebsd.org/cgi/man.cgi?query=truss >> >> The truss utility traces the system calls called by the specified >> process or program. >> -- >> staticsafe >> O< ascii ribbon campaign - stop html mail - www.asciiribbon.org >> Please don't top post - http://goo.gl/YrmAb >> Don't CC me! I'm subscribed to whatever list I just posted on. >> > > Unfortunately truss does not show anything more than ktrace. I know what is > going out on the internet connection. Its a plain old reverse DNS request. > The question is what library module (probably not a system call now that I > think about it) is making that request. Interestingly enough, adding the IP > address with a dummy name in /etc/hosts causes the reverse request to succeed > and there are no time delays. So whatever module it is, is not using bind. > Bind doesn't check the hosts files as far as I can tell. > _______________________________________________
After considering all the advice I received, the method I found that worked was to start the process and when it entered the reverse DNS timeout, quickly find the process ID and do a gdb on that process. Then a where command showed the entire stack which included all the module calls. I had to rebuild the process with debugging first. The IPv6 API when getting the client information will also do a reverse DNS lookup unless you specifically tell it not to do so. Changing that eliminated the lookup and the timeouts. Thanks to all. -- Doug _______________________________________________ freebsd-questions@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-questions To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"