BIND 10 #2420: allow loading zones containing an orphan RRSIG
BIND 10 Development
do-not-reply at isc.org
Mon Nov 26 12:19:56 UTC 2012
#2420: allow loading zones containing an orphan RRSIG
-------------------------------------+-------------------------------------
Reporter: | Owner: jinmei
jinmei | Status: reviewing
Type: | Milestone:
defect | Sprint-20121204
Priority: | Resolution:
medium | Sensitive: 0
Component: data | Sub-Project: DNS
source | Estimated Difficulty: 5
Keywords: | Total Hours: 0
Defect Severity: High |
Feature Depending on Ticket: |
Add Hours to Ticket: 0 |
Internal?: 0 |
-------------------------------------+-------------------------------------
Comment (by vorner):
Hello
Replying to [comment:9 jinmei]:
> Replying to [comment:8 vorner]:
>
> > The size was actually quite OK (the changes were related to each
other). I just want to confirm, the incoming RRsets need to be (still)
grouped by the name, right?
> >
> > There's one serious thing. The tests don't pass:
> > {{{
> > [ RUN ] ZoneDataUpdaterTest.rrisgForNSEC3Only
> > unknown file: Failure
> > C++ exception with description "Unknown NSEC3 algorithm: 200" thrown
in the test body.
> > [ FAILED ] ZoneDataUpdaterTest.rrisgForNSEC3Only (0 ms)
> > }}}
>
> One quick check: I can't reproduce it on my environment. Is this
> specific to some special cases like distcheck? Or does that happen
> even if you run it on the tests/memory directory by "./run_unittests"?
> Is it possible that your environment uses the wrong version of shlib?
It happens every time. However, the reported number of algorithm differs
from run to run.
Also, when run with `GTEST_FILTER` to run only the one test, it segfaults.
Here's a stacktrace, if it is of any help:
{{{
Program received signal SIGSEGV, Segmentation fault.
0x000000000049dbf8 in isc::datasrc::memory::NSEC3Data::getSaltLen
(this=0x10076ff3f) at
../../../../../src/lib/datasrc/memory/zone_data.h:161
1619 size_t getSaltLen() const { return (*getSaltBuf()); }
(gdb) bt
#0 0x000000000049dbf8 in isc::datasrc::memory::NSEC3Data::getSaltLen
(this=0x10076ff3f) at
../../../../../src/lib/datasrc/memory/zone_data.h:161
#1 0x00007ffff7b8a1da in
isc::datasrc::memory::ZoneDataUpdater::getNSEC3Hash (this=0x76fc20) at
zone_data_updater.cc:220
#2 0x00007ffff7b8b79a in
isc::datasrc::memory::ZoneDataUpdater::setupNSEC3<isc::dns::rdata::generic::NSEC3>
(this=0x76fc20, rrset=...)
at zone_data_updater.cc:240
#3 0x00007ffff7b8a296 in isc::datasrc::memory::ZoneDataUpdater::addNSEC3
(this=0x76fc20, name=..., rrset=..., rrsig=...) at
zone_data_updater.cc:254
#4 0x00007ffff7b8a597 in
isc::datasrc::memory::ZoneDataUpdater::addRdataSet (this=0x76fc20,
name=..., rrtype=..., rrset=..., rrsig=...)
at zone_data_updater.cc:286
#5 0x00007ffff7b8aea1 in isc::datasrc::memory::ZoneDataUpdater::add
(this=0x76fc20, rrset=..., sig_rrset=...) at zone_data_updater.cc:376
#6 0x00000000004dc19d in (anonymous
namespace)::ZoneDataUpdaterTest_rrisgForNSEC3Only_Test::TestBody
(this=0x76fbc0) at zone_data_updater_unittest.cc:189
#7 0x00007ffff4f1bcff in
HandleSehExceptionsInMethodIfSupported<testing::Test, void>
(method=<optimized out>, object=<optimized out>,
location=<optimized out>) at src/gtest.cc:2090
#8 testing::internal::HandleExceptionsInMethodIfSupported<testing::Test,
void> (object=0x76fbc0, method=&virtual testing::Test::TestBody(),
location=0x7ffff4f1c9cb "the test body") at src/gtest.cc:2126
#9 0x00007ffff4f13509 in testing::Test::Run (this=0x76fbc0) at
src/gtest.cc:2162
#10 0x00007ffff4f135d6 in testing::TestInfo::Run (this=0x762030) at
src/gtest.cc:2338
#11 0x00007ffff4f13716 in testing::TestCase::Run (this=0x761e10) at
src/gtest.cc:2445
#12 0x00007ffff4f13abe in RunAllTests (this=0x753250) at src/gtest.cc:4237
#13 testing::internal::UnitTestImpl::RunAllTests (this=0x753250) at
src/gtest.cc:4145
#14 0x00007ffff4f1b8df in
HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
bool> (method=<optimized out>, object=<optimized out>,
location=<optimized out>) at src/gtest.cc:2090
#15
testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl,
bool> (object=0x753250, method=
(bool
(testing::internal::UnitTestImpl::*)(testing::internal::UnitTestImpl *
const)) 0x7ffff4f137a0 <testing::internal::UnitTestImpl::RunAllTests()>,
location=0x7ffff4f1dab8 "auxiliary test code (environments or event
listeners)") at src/gtest.cc:2126
#16 0x00007ffff4f12b7e in testing::UnitTest::Run (this=<optimized out>) at
src/gtest.cc:3874
#17 0x00000000004e553c in isc::util::unittests::run_all () at
run_all.cc:87
#18 0x000000000042f63a in main (argc=1, argv=0x7fffffffd658) at
run_unittests.cc:25
}}}
From a quick look, nsec3_data might be uninitialized when being used here.
But I didn't look how that could happen.
I'm not aware of using shlib, and emerge (gentoo's package manager) does
not see any package with name or description of shlib.
Does the backtrace help, or should I try digging
Also, maybe pass the ticket to me if you have further questions. I noticed
the question mostly by accident.
--
Ticket URL: <http://bind10.isc.org/ticket/2420#comment:10>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list