BIND 10 #1384: tests after #1217 don't always work

BIND 10 Development do-not-reply at isc.org
Tue Nov 15 14:11:17 UTC 2011


#1384: tests after #1217 don't always work
-------------------------------------+-------------------------------------
                   Reporter:         |                 Owner:  jelte
  jinmei                             |                Status:  reviewing
                       Type:         |             Milestone:
  defect                             |  Sprint-20111122
                   Priority:         |            Resolution:
  blocker                            |             Sensitive:  0
                  Component:  data   |           Sub-Project:  DNS
  source                             |  Estimated Difficulty:  0
                   Keywords:         |           Total Hours:  4
            Defect Severity:  N/A    |
Feature Depending on Ticket:         |
        Add Hours to Ticket:  0      |
                  Internal?:  0      |
-------------------------------------+-------------------------------------
Changes (by vorner):

 * owner:  vorner => jelte


Comment:

 Hello

 The code looks OK, but it crashes for me in the
 InMemoryClientTest.iterator_separate_rrs test:
 {{{
 Core was generated by
 `/home/vorner/work/bind10/src/lib/datasrc/tests/.libs/run_unittests_memory'.
 Program terminated with signal 11, Segmentation fault.
 #0  0x0000000000442fa7 in isc::datasrc::(anonymous
 namespace)::MemoryIterator::MemoryIterator (this=0x23cee40, tree=...,
 origin=..., separate_rrs=true)
     at ../../../../src/lib/datasrc/memory_datasrc.cc:756
 756                         rdata_iterator_ =
 dom_iterator_->second->getRdataIterator();
 (gdb) l
 751             // Initialize the iterator if there's somewhere to point
 to
 752             if (node_ != NULL && node_->getData() != DomainPtr()) {
 753                 dom_iterator_ = node_->getData()->begin();
 754                 if (separate_rrs_) {
 755                     if (dom_iterator_->second != NULL) {
 756                         rdata_iterator_ =
 dom_iterator_->second->getRdataIterator();
 757                     }
 758                 }
 759             }
 760         }
 (gdb) print dom_iterator_
 $1 = {first = {typecode_ = 0}, second = {px = , pn = {pi_ = }}}
 (gdb) bt
 #0  0x0000000000442fa7 in isc::datasrc::(anonymous
 namespace)::MemoryIterator::MemoryIterator (this=0x23cee40, tree=...,
 origin=..., separate_rrs=true)
     at ../../../../src/lib/datasrc/memory_datasrc.cc:756
 #1  0x0000000000443bd9 in isc::datasrc::InMemoryClient::getIterator
 (this=0x23c5148, name=..., separate_rrs=true)
     at ../../../../src/lib/datasrc/memory_datasrc.cc:847
 #2  0x00000000004211f7 in (anonymous
 namespace)::InMemoryClientTest_iterator_separate_rrs_Test::TestBody
 (this=0x23c5130) at memory_datasrc_unittest.cc:209
 #3  0x00007f7226e09f0a in testing::Test::Run (this=0x23c5130) at
 src/gtest.cc:2095
 #4  0x00007f7226e0a000 in testing::internal::TestInfoImpl::Run
 (this=0x23c0d10) at src/gtest.cc:2314
 #5  0x00007f7226e0a0ac in testing::TestCase::Run (this=0x23c04e0) at
 src/gtest.cc:2420
 #6  0x00007f7226e0a35c in testing::internal::UnitTestImpl::RunAllTests
 (this=0x23c0890) at src/gtest.cc:4024
 #7  0x000000000045062c in isc::util::unittests::run_all () at
 run_all.cc:87
 #8  0x00000000004167c2 in main (argc=1, argv=0x7fff756f0d28) at
 run_unittests.cc:28
 (gdb) print dom_iterator_
 $2 = {first = {typecode_ = 0}, second = {px = , pn = {pi_ = }}}
 (gdb) print dom_iterator_->second
 You can't do that without a process to debug.
 (gdb) frame 3
 #3  0x00007f7226e09f0a in testing::Test::Run (this=0x23c5130) at
 src/gtest.cc:2095
 2095        TestBody();
 (gdb) l
 2090      SetUp();
 2091
 2092      // We will run the test only if SetUp() was successful.
 2093      if (!HasFatalFailure()) {
 2094        impl->os_stack_trace_getter()->UponLeavingGTest();
 2095        TestBody();
 2096      }
 2097
 2098      // However, we want to clean up as much as possible.  Hence we
 will
 2099      // always call TearDown(), even if SetUp() or the test body has
 (gdb) down
 #2  0x00000000004211f7 in (anonymous
 namespace)::InMemoryClientTest_iterator_separate_rrs_Test::TestBody
 (this=0x23c5130) at memory_datasrc_unittest.cc:209
 209         ZoneIteratorPtr iterator(memory_client.getIterator(Name("a"),
 true));
 (gdb) l
 204         // First, the zone is not there, so it should throw
 205         EXPECT_THROW(memory_client.getIterator(Name("b"), true),
 DataSourceError);
 206         // This zone is not there either, even when there's a zone
 containing this
 207         EXPECT_THROW(memory_client.getIterator(Name("x.a")),
 DataSourceError);
 208         // Now, an empty zone
 209         ZoneIteratorPtr iterator(memory_client.getIterator(Name("a"),
 true));
 210         EXPECT_EQ(ConstRRsetPtr(), iterator->getNextRRset());
 211         // It throws Unexpected when we are past the end
 212         EXPECT_THROW(iterator->getNextRRset(), isc::Unexpected);
 213
 }}}

 I guess it doesn't like an empty zone here. Should I look into it, or do
 you have an idea why it failes?

 Thank you

-- 
Ticket URL: <http://bind10.isc.org/ticket/1384#comment:6>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list