Date: Thu, 6 Jun 2013 11:00:05 -0700 From: Doug Hardie <bc979@lafn.org> To: "freebsd-questions@freebsd.org List" <freebsd-questions@freebsd.org> Subject: Re: System Calls that do DNS Message-ID: <12AE26D3-2C19-4C0C-917F-2D1569ADC518@lafn.org> In-Reply-To: <CC1F81CF-1107-4031-A72F-164D6E23E5B7@lafn.org> References: <F5EBDC53-CBA3-415D-B7CD-1EC873692348@lafn.org> <20130604033930.GA10393@uriel.asininetech.com> <CC1F81CF-1107-4031-A72F-164D6E23E5B7@lafn.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 3 June 2013, at 22:21, Doug Hardie <bc979@lafn.org> wrote: >=20 > On 3 June 2013, at 20:39, staticsafe <me@staticsafe.ca> wrote: >=20 >> 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. >>>=20 >>>=20 >>=20 >> Use truss: >> http://www.freebsd.org/cgi/man.cgi?query=3Dtruss >>=20 >> The truss utility traces the system calls called by the specified >> process or program. >> --=20 >> 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. >>=20 >=20 > 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=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?12AE26D3-2C19-4C0C-917F-2D1569ADC518>