We are pleased to announce the release of the PowerDNS recursor 4.0.0 Alpha 3. This release features a great number of DNSSEC correctness fixes.
The changelog with clickable links can be found in the documentation.
Changes from 4.0.0 Alpha 2 are:
- #3752 Correct handling of query flags in conformance with RFC 6840
- #3804 Fix a memory leak in DNSSEC validation
- #3785 and #3390 Correctly validate insecure delegations
- #3606 Various DNSSEC fixes, disabling DNSSEC on forward-zones
- #3681 Catch exception with a malformed DNSName in rec_control wipe-cache
- #3779, #3768, #3766, #3783 and #3789 DNSName and other hardening improvements
- With the above flags I'm actually able to compile and link a
pdns_recursor binary - however, it dumps core right after startup
(when trying to produce the recursor.conf-dist file). The gdb
backtrace is as follows:
Reading symbols from pdns_recursor...done.
[New LWP 100108]
Core was generated by `pdns_recursor'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x0000000000000000 in ?? ()
#0 0x0000000000000000 in ?? ()
#1 0x000000080114d3f9 in __cxxabiv1::__dynamic_cast (src_ptr=0x80144ba80 <(anonymous namespace)::ctype_c>,
src_type=0x80143f780 <typeinfo for std::locale::facet>, dst_type=0x801440858 <typeinfo for std::ctype<char>>, src2dst=src2dst@entry=0)
#2 0x00000008011cc610 in std::has_facet<std::ctype<char> > (__loc=...)
#3 0x00000008011c0084 in std::basic_ios<char, std::char_traits<char> >::_M_cache_locale (this=this@entry=0x8bb5e8 <std::cout@@GLIBCXX_3.4+8>, __loc=...)
#4 0x00000008011c01f0 in std::basic_ios<char, std::char_traits<char> >::init (this=this@entry=0x8bb5e8 <std::cout@@GLIBCXX_3.4+8>, __sb=
#5 0x0000000801163ff1 in std::basic_ostream<char, std::char_traits<char> >::basic_ostream (__sb=<optimized out>, this=<optimized out>,
__in_chrg=<optimized out>, __vtt_parm=<optimized out>)
#6 std::ios_base::Init::Init (this=<optimized out>) at ../../../.././../gcc-5.3.0/libstdc++-v3/src/c++98/ios_init.cc:91
#7 0x000000000040cbbe in __static_initialization_and_destruction_0 (__priority=65535, __initialize_p=1) at /usr/local/lib/gcc5/include/c++/iostream:74
#8 _GLOBAL__sub_I__ZN7ArgvMap5beginB5cxx11Ev () at arguments.cc:505
#9 0x00000008008b0d77 in ?? () from /libexec/ld-elf.so.1
#10 0x00000008008b028e in ?? () from /libexec/ld-elf.so.1
#11 0x00000008008ae449 in ?? () from /libexec/ld-elf.so.1
#12 0x0000000000000000 in ?? ()
> I'm trying to get this up and running on a FreeBSD 10.3/x64 server.
> Not entirely straightforward.
> - I'm trying to use gcc 5.3.0 and Boost libraries 1.55.0. Which
> versions are you using for development?
I use GCC 6.1 and Boost 1.60, but the recursor also compiles on Debian Jessie with GCC 4.9.2 and Boost 1.55.0.
> - I ended up with the following compiler flags - particularly the
> g++ part was tricky (I'm not a C++ expert). Do these flags make
> CFLAGS "-g"
> CXXFLAGS "-g -std=c++11 -D_GLIBCXX_USE_C99"
There should be no need to choose the flags. PowerDNS Recursor 4.0.0 is fully auto-tooled. So downloading and unpacking the tarball and running './configuge && make' should do the trick.
> - With the above flags I'm actually able to compile and link a
> pdns_recursor binary - however, it dumps core right after startup
> (when trying to produce the recursor.conf-dist file). The gdb
> backtrace is as follows:
I have a feeling this happened because of missing flags. I compiled the recursor on a FreeBSD 10.3 machine by running './configure && make' and it does not segfault on startup. So I suggest compiling it like that, and not mess with flags. Note that you'll probably need `pkgconf` installed.