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

J Knight jknight+pdns at spamshield.org
Sun Aug 19 04:18:07 UTC 2007


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




More information about the Pdns-users mailing list