[Pdns-users] recursor unable to resolve asn.routeviews.org data

J Knight jknight+pdns at spamshield.org
Wed Jan 30 04:07:25 UTC 2008


Just a follow-up to this dated issue:

we just compiled the (seemingly silently refreshed) pdns-recursor-3.1.5-snapshot
dated 15-Nov-2007 from source, and the issue with the disappearing
control socket has been resolved - we are now doing the lookups against
asn.routeviews.org out of the Recursor: with up to 120 lookups per minute,
we'd sure like to forgot the memory bleed of BIND :)

Thanks.


On 8/18/2007 at 11:18 PM, "J Knight" <jknight+pdns at spamshield.org> wrote:

> On 8/18/2007 at 7:17 AM, "bert hubert" <bert.hubert at netherlabs.nl> wrote:

>> On Fri, Aug 17, 2007 at 12:42:56PM -0400, J Knight wrote:
>>> After stumbling into the HACKING section of the Wiki, I find:
>>> http://svn.powerdns.com/snapshots/ - but there's no 3.1.5 snapshot,
>>> there's pre-relesase 3.1.4 snapshots only.
>>> Is there another HTTP/FTP-accessible location?

>> I've uploaded a 3.1.5 snapshot here:
>> http://svn.powerdns.com/snapshots/pdns-recursor-3.1.5-snapshot.tar.bz2

>>> http://downloads.powerdns.com/releases/rpm/ have not seen an update since
>>> 12-Nov-2006 (9 months ago!).

>> And for good reason - we've only found 1 important bug in 3.1.4, and there
>> are no (urgent) feature requests. There will be a 3.1.5 of course, but so
>> far there have not been pressing reasons for it.

>> Please let us know how the 3.1.5 snapshot works for you!

> Thank you!

> Yes, I can confirm that all (3) TXT records are returned.

> Unfortunately, something rather significant broke:

> The pdns_recursor.controlsocket gets unlink'd the moment pdns_recursor
> daemonizes - and the fork'd child somehow never re-creates it - e.g.:
> no control socket.

> If I interpret the strace right, under the official pdns-recursor-3.1.4-1.i386.rpm
> recursor, the controlsocket never gets unlinked before the parent process exits!


> Environment: Linux RedHat ES3
> Boost: boost_1_34_1 (not compiled)

> builds ok with one warning:
> CXXFLAGS=-I../boost_1_34_1/ ./configure
> CXXFLAGS=-I../boost_1_34_1/ make clean
> CXXFLAGS=-I../boost_1_34_1/ make all
> ...
>    g++ -I../boost_1_34_1/ -Wall -DBOOST_SP_DISABLE_THREADS -O3  -D_GNU_SOURCE   -c -o dnsparser.o dnsparser.cc
>    dnsparser.cc: In member function `void PacketReader::copyRecord(unsigned char*,
>       short unsigned int)':
>       dnsparser.cc:309: warning: comparison between signed and unsigned integer
>          expressions
> ....
> CXXFLAGS=-I../boost_1_34_1/ make install

> (may I suggest an uninstall: target in the Makefile :) ?)

> Tried it with suid/sgid and without - no effect.
> Tried with chroot and without - no effect.

> (machine heavily loaded with disk activity at this time (LA>4), it can take a minute for the
>  recursor to come up, but one can nicely observe the control socket in /var/run/ getting
>  created and unlink'd the moment PID 16099 (below) disappears!)

> Aug 18 23:04:05 pascal pdns_recursor[16099]: PowerDNS recursor 3.1.5-snapshot (C) 2001-2007 PowerDNS.COM BV (Aug 18
> 2007, 21:57:19, gcc 3.2.3 20030502 (Red Hat Linux 3.2.3-49)) starting up
> Aug 18 23:04:06 pascal pdns_recursor[16099]: PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and
> you are welcome to redistribute it according to the terms of the GPL version 2.
> Aug 18 23:04:07 pascal pdns_recursor[16099]: Operating in 32 bits mode
> Aug 18 23:04:08 pascal pdns_recursor[16099]: Only allowing queries from: 127.0.0.0/8, ....
> Aug 18 23:04:09 pascal pdns_recursor[16099]: Will not send queries to: 127.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, ::1/128, fe80::/10
> Aug 18 23:04:18 pascal pdns_recursor[16099]: Inserting rfc 1918 private space zones
> Aug 18 23:04:19 pascal pdns_recursor[16099]: Listening for UDP queries on 67.18.254.X:53
> Aug 18 23:04:20 pascal pdns_recursor[16099]: Listening for UDP queries on 127.0.0.1:5353
> Aug 18 23:04:21 pascal pdns_recursor[16099]: Listening for TCP queries on 67.18.254.X:53
> Aug 18 23:04:22 pascal pdns_recursor[16099]: Listening for TCP queries on 127.0.0.1:5353
> Aug 18 23:04:23 pascal pdns_recursor[16099]: Done priming cache with root hints
> Aug 18 23:04:24 pascal pdns_recursor[16099]: Calling daemonize, going to background
> Aug 18 23:04:25 pascal pdns_recursor[16124]: Non-fatal error initializing possible multiplexer (Setting up epoll: Function not implemented), falling back
> Aug 18 23:04:26 pascal pdns_recursor[16124]: Enabled 'select' multiplexer
> Aug 18 23:04:27 pascal pdns_recursor[16124]: Set effective group id to 513
> Aug 18 23:04:28 pascal pdns_recursor[16124]: Set effective user id to 512
> Aug 18 23:04:30 pascal pdns_recursor[16124]: Refreshed . records


> Note: the "Non-Fatal error" appears with the official pdns-recursor-3.1.4-1.i386.rpm as well.

> strace'ing the process (and the output below is not from the log msgs above
> strictly, but some other run - I did too many to count):

> rt_sigaction(SIGPIPE, {0x272140, [], SA_RESTORER, 0x1c0ec8}, {SIG_DFL}, 8) = 0
> send(3, "<27>Aug 18 23:27:47 pdns_recurso"..., 85, 0) = 85
> rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
> socket(PF_FILE, SOCK_DGRAM, 0)          = 8
> setsockopt(8, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
> unlink("/var/run/powerdns/pdns_recursor.controlsocket") = -1 ENOENT (No such file or directory)
> bind(8, {sa_family=AF_FILE, path="/var/run/powerdns/pdns_recursor.controlsocket"}, 110) = 0
> time(NULL)                              = 1187494068
> time(NULL)                              = 1187494068
> time(NULL)                              = 1187494068

> .....

> write(2, " ", 1 )                        = 1
> write(2, "t", 1t)                        = 1
> write(2, "o", 1o)                        = 1
> write(2, " ", 1 )                        = 1
> write(2, "b", 1b)                        = 1
> write(2, "a", 1a)                        = 1
> write(2, "c", 1c)                        = 1
> write(2, "k", 1k)                        = 1
> write(2, "g", 1g)                        = 1
> write(2, "r", 1r)                        = 1
> write(2, "o", 1o)                        = 1
> write(2, "u", 1u)                        = 1
> write(2, "n", 1n)                        = 1
> write(2, "d", 1d)                        = 1
> write(2, "\n", 1
> )                       = 1
> time([1187494068])                      = 1187494068
> getpid()                                = 19513
> rt_sigaction(SIGPIPE, {0x272140, [], SA_RESTORER, 0x1c0ec8}, {SIG_DFL}, 8) = 0
> send(3, "<28>Aug 18 23:27:48 pdns_recurso"..., 80, 0) = 80
> rt_sigaction(SIGPIPE, {SIG_DFL}, NULL, 8) = 0
> clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb75f00c8) = 19557
> close(8)                                = 0
> unlink("/var/run/powerdns/pdns_recursor.controlsocket") = 0
> exit_group(0)                           = ?

> I also ran this with strace -f , and the child never does a bind() call
> for the socket (sa_family=AF_FILE).


> Thanks - Jamie


> _______________________________________________
> Pdns-users mailing list
> Pdns-users at mailman.powerdns.com
> http://mailman.powerdns.com/mailman/listinfo/pdns-users





More information about the Pdns-users mailing list