[Pdns-dev] PowerDNS Recursor 3.1.5 snapshot 3 available

James Cloos cloos at jhcloos.com
Mon Feb 11 23:25:15 CET 2008


I just noticed that the recusror is SEGVing on my laptop, and a test of
3.1.5 snap 3 does as well.

>From a core dump while running in strace(8):

(gdb) where
#0  0xb7c7bb7f in setcontext () from /lib/libc.so.6
#1  0xb7c7bc28 in makecontext () from /lib/libc.so.6
#2  0x08187288 in ?? ()
#3  0x0814b014 in _gm_ ()
#4  0x08152ed0 in ?? ()
#5  0x081871a8 in ?? ()
#6  0x081530b4 in ?? ()
#7  0x00000029 in ?? ()
#8  0x0809e1d8 in serviceMain (argc=3, argv=0xbfc021d4) at pdns_recursor.cc:1741
#9  0x080a380f in main (argc=3, argv=0xbfc021d4) at pdns_recursor.cc:1908

as you can see, something is screwing with the stack.  Also, the number
of ?? lines varies run to run.

Box is P3, Gentoo ~x86; libc is glibc-2.7, boost is 1.34.1 and gcc
is 4.2.2.  Above bt is from a compile with -ggdb -O0.

The matching strace output ends with:

bind(8, {sa_family=AF_INET, sin_port=htons(17681), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
fcntl64(8, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(8, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
connect(8, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.228.79.201")}, 16) = 0
epoll_ctl(7, EPOLL_CTL_ADD, 8, {EPOLLIN, {u32=8, u64=8}}) = 0
send(8, "\310p\0\0\0\1\0\0\0\0\0\1\0\0\2\0\1\0\0)\4\260\0\0\0\0\0\0", 28, 0) = 28
sigprocmask(SIG_SETMASK, [], [])        = 0
gettimeofday({1202771796, 763664}, NULL) = 0
epoll_wait(7, {}, 1024, 500)            = 0
gettimeofday({1202771797, 263003}, NULL) = 0
sigprocmask(SIG_SETMASK, [], [])        = 0
epoll_ctl(7, EPOLL_CTL_DEL, 8, {0, {u32=0, u64=0}}) = 0
close(8)                                = 0
time(NULL)                              = 1202771797
write(2, "Feb 11 18:16:14 ", 16)        = 16
write(2, "Failed to update . records, RCODE=2", 35) = 35
write(2, "\n", 1)                       = 1
brk(0x818b000)                          = 0x818b000
time(NULL)                              = 1202771797
send(3, "<27>Feb 11 18:16:14 pdns_recursor[15275]: Failed to update . records, RCODE=2", 77, MSG_NOSIGNAL) = 77
sigprocmask(SIG_SETMASK, [INT QUIT ILL ABRT], NULL) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV (core dumped) +++

but NB that the failed to update . is not relevant; other runs
successfully update . and still hit the SEGV.

Some cores and strace outputs are available is desired, but they don't
seem to shed much light except to point to makecontext(3).

-JimC
-- 
James Cloos <cloos at jhcloos.com>         OpenPGP: 1024D/ED7DAEA6


More information about the Pdns-dev mailing list