BIND 10 #2024: Segfault in RecursiveQueryTest.v6UDPSendSpecific on Solaris (SPARC)

BIND 10 Development do-not-reply at isc.org
Wed Jun 6 09:48:23 UTC 2012


#2024: Segfault in RecursiveQueryTest.v6UDPSendSpecific on Solaris (SPARC)
-------------------------------------+-------------------------------------
            Reporter:  muks          |                        Owner:
                Type:  defect        |                       Status:  new
            Priority:  medium        |                    Milestone:
           Component:  resolver      |  Sprint-20120612
           Sensitive:  0             |                     Keywords:
         Sub-Project:  DNS           |              Defect Severity:  N/A
Estimated Difficulty:  0             |  Feature Depending on Ticket:
         Total Hours:  0             |          Add Hours to Ticket:  0
                                     |                    Internal?:  0
-------------------------------------+-------------------------------------
 RecursiveQueryTest.v6UDPSendSpecific segfaults consistently on Solaris on
 SPARC. No other platforms are affected.

 See:
 http://git.bind10.isc.org/~tester/builder//BIND10/20120606052001-Solaris10
 -sparc-GCC/logs/unittests.out

 The issue seems to have started after the #1704 merge, but the issue is
 most likely unrelated (#1704 was probably a catalyst in it showing up).

 jinmei made a backtrace:

 {{{
 (gdb) bt
 #0
 boost::detail::sp_counted_impl_p<asio::basic_datagram_socket<asio::ip::udp,
 asio::datagram_socket_service<asio::ip::udp> > >::dispose (this=0xd)
     at /usr/sfw/lib/gcc/sparc-sun-
 solaris2.10/3.4.3/../../../../include/c++/3.4.3/bits/stl_list.h:134
 #1  0x00074504 in ~shared_count (this=0x105728)
     at
 /udir/jinmei/src/boost_1_46_1/boost/smart_ptr/detail/sp_counted_base_nt.hpp:79
 #2  0x7f9d71a0 in
 boost::detail::sp_counted_impl_p<isc::asiodns::UDPServer::Data>::dispose
 (this=0x154888) at udp_server.cc:67
 #3  0x00074504 in ~shared_count (this=0x154888)
     at
 /udir/jinmei/src/boost_1_46_1/boost/smart_ptr/detail/sp_counted_base_nt.hpp:79
 #4  0x7f9d2164 in ~UDPServer (this=0x113708) at udp_server.h:77
 #5  0x7f9b3230 in
 boost::detail::sp_counted_impl_p<isc::asiodns::UDPServer>::dispose
 (this=0xd54c8)
     at /udir/jinmei/src/boost_1_46_1/boost/checked_delete.hpp:34
 #6  0x7f9a2754 in ~DNSService (this=0x1057b8)
     at
 /udir/jinmei/src/boost_1_46_1/boost/smart_ptr/detail/sp_counted_base_nt.hpp:79
 #7  0x0006c868 in (anonymous namespace)::RecursiveQueryTest::setDNSService
 (
     this=0x113c30)
     at /udir/jinmei/src/boost_1_46_1/boost/smart_ptr/scoped_ptr.hpp:113
 }}}

 Valgrind reports the same stack with an invalid read error (among other
 issues):

 {{{
 ==11170== Invalid read of size 8
 ==11170==    at 0x5545A97:
 boost::detail::sp_counted_impl_p<asio::basic_socket_acceptor<asio::ip::tcp,
 asio::socket_acceptor_service<asio::ip::tcp> > >::dispose()
 (reactive_socket_service_base.ipp:52)
 ==11170==    by 0x414BE8: boost::detail::shared_count::~shared_count()
 (sp_counted_base_gcc_x86.hpp:145)
 ==11170==    by 0x5544A27: isc::asiodns::TCPServer::~TCPServer()
 (shared_ptr.hpp:164)
 ==11170==    by 0x5544B78: isc::asiodns::TCPServer::~TCPServer()
 (tcp_server.h:38)
 ==11170==    by 0x553F8AE: isc::asiodns::DNSService::~DNSService()
 (sp_counted_base_gcc_x86.hpp:145)
 ==11170==    by 0x553F948: isc::asiodns::DNSService::~DNSService()
 (dns_service.cc:74)
 ==11170==    by 0x42AA21: (anonymous
 namespace)::RecursiveQueryTest_v6UDPSendSpecific_Test::TestBody()
 (recursive_query_unittest.cc:307)
 ==11170==    by 0x4C78139: testing::Test::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78247: testing::internal::TestInfoImpl::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78304: testing::TestCase::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C7863D: testing::internal::UnitTestImpl::RunAllTests()
 (in /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4113E5: main (run_unittests.cc:26)
 ==11170==  Address 0x6a4dea8 is 40 bytes inside a block of size 48 free'd
 ==11170==    at 0x4A072BC: operator delete(void*)
 (vg_replace_malloc.c:387)
 ==11170==    by 0x530E88C: isc::asiolink::IOService::~IOService()
 (service_registry.ipp:76)
 ==11170==    by 0x427822: (anonymous
 namespace)::RecursiveQueryTest::setDNSService() (checked_delete.hpp:34)
 ==11170==    by 0x42AA21: (anonymous
 namespace)::RecursiveQueryTest_v6UDPSendSpecific_Test::TestBody()
 (recursive_query_unittest.cc:307)
 ==11170==    by 0x4C78139: testing::Test::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78247: testing::internal::TestInfoImpl::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78304: testing::TestCase::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C7863D: testing::internal::UnitTestImpl::RunAllTests()
 (in /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4113E5: main (run_unittests.cc:26)
 ==11170==
 ==11170== Invalid read of size 1
 ==11170==    at 0x5545AA4:
 boost::detail::sp_counted_impl_p<asio::basic_socket_acceptor<asio::ip::tcp,
 asio::socket_acceptor_service<asio::ip::tcp> > >::dispose()
 (epoll_reactor.ipp:196)
 ==11170==    by 0x414BE8: boost::detail::shared_count::~shared_count()
 (sp_counted_base_gcc_x86.hpp:145)
 ==11170==    by 0x5544A27: isc::asiodns::TCPServer::~TCPServer()
 (shared_ptr.hpp:164)
 ==11170==    by 0x5544B78: isc::asiodns::TCPServer::~TCPServer()
 (tcp_server.h:38)
 ==11170==    by 0x553F8AE: isc::asiodns::DNSService::~DNSService()
 (sp_counted_base_gcc_x86.hpp:145)
 ==11170==    by 0x553F948: isc::asiodns::DNSService::~DNSService()
 (dns_service.cc:74)
 ==11170==    by 0x42AA21: (anonymous
 namespace)::RecursiveQueryTest_v6UDPSendSpecific_Test::TestBody()
 (recursive_query_unittest.cc:307)
 ==11170==    by 0x4C78139: testing::Test::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78247: testing::internal::TestInfoImpl::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78304: testing::TestCase::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C7863D: testing::internal::UnitTestImpl::RunAllTests()
 (in /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4113E5: main (run_unittests.cc:26)
 ==11170==  Address 0x6a4e038 is 56 bytes inside a block of size 80 free'd
 ==11170==    at 0x4A072BC: operator delete(void*)
 (vg_replace_malloc.c:387)
 ==11170==    by 0x43CA3C:
 asio::detail::object_pool<asio::detail::epoll_reactor::descriptor_state>::~object_pool()
 (object_pool.hpp:40)
 ==11170==    by 0x43CDDC: asio::detail::epoll_reactor::~epoll_reactor()
 (epoll_reactor.ipp:66)
 ==11170==    by 0x530E88C: isc::asiolink::IOService::~IOService()
 (service_registry.ipp:76)
 ==11170==    by 0x427822: (anonymous
 namespace)::RecursiveQueryTest::setDNSService() (checked_delete.hpp:34)
 ==11170==    by 0x42AA21: (anonymous
 namespace)::RecursiveQueryTest_v6UDPSendSpecific_Test::TestBody()
 (recursive_query_unittest.cc:307)
 ==11170==    by 0x4C78139: testing::Test::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78247: testing::internal::TestInfoImpl::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78304: testing::TestCase::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C7863D: testing::internal::UnitTestImpl::RunAllTests()
 (in /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4113E5: main (run_unittests.cc:26)
 ==11170==
 ==11170== Invalid read of size 8
 ==11170==    at 0x554D8C7:
 boost::detail::sp_counted_impl_p<asio::basic_datagram_socket<asio::ip::udp,
 asio::datagram_socket_service<asio::ip::udp> > >::dispose()
 (reactive_socket_service_base.ipp:52)
 ==11170==    by 0x414BE8: boost::detail::shared_count::~shared_count()
 (sp_counted_base_gcc_x86.hpp:145)
 ==11170==    by 0x554DEB0:
 boost::detail::sp_counted_impl_p<isc::asiodns::UDPServer::Data>::dispose()
 (shared_ptr.hpp:164)
 ==11170==    by 0x414BE8: boost::detail::shared_count::~shared_count()
 (sp_counted_base_gcc_x86.hpp:145)
 ==11170==    by 0x554DDEF: isc::asiodns::UDPServer::~UDPServer()
 (shared_ptr.hpp:164)
 ==11170==    by 0x553F8AE: isc::asiodns::DNSService::~DNSService()
 (sp_counted_base_gcc_x86.hpp:145)
 ==11170==    by 0x553F948: isc::asiodns::DNSService::~DNSService()
 (dns_service.cc:74)
 ==11170==    by 0x42AA21: (anonymous
 namespace)::RecursiveQueryTest_v6UDPSendSpecific_Test::TestBody()
 (recursive_query_unittest.cc:307)
 ==11170==    by 0x4C78139: testing::Test::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78247: testing::internal::TestInfoImpl::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78304: testing::TestCase::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C7863D: testing::internal::UnitTestImpl::RunAllTests()
 (in /usr/lib64/libgtest.so.0.0.0)
 ==11170==  Address 0x6a4f3d8 is 40 bytes inside a block of size 48 free'd
 ==11170==    at 0x4A072BC: operator delete(void*)
 (vg_replace_malloc.c:387)
 ==11170==    by 0x530E88C: isc::asiolink::IOService::~IOService()
 (service_registry.ipp:76)
 ==11170==    by 0x427822: (anonymous
 namespace)::RecursiveQueryTest::setDNSService() (checked_delete.hpp:34)
 ==11170==    by 0x42AA21: (anonymous
 namespace)::RecursiveQueryTest_v6UDPSendSpecific_Test::TestBody()
 (recursive_query_unittest.cc:307)
 ==11170==    by 0x4C78139: testing::Test::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78247: testing::internal::TestInfoImpl::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78304: testing::TestCase::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C7863D: testing::internal::UnitTestImpl::RunAllTests()
 (in /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4113E5: main (run_unittests.cc:26)
 ==11170==
 ==11170== Invalid read of size 1
 ==11170==    at 0x554D8D4:
 boost::detail::sp_counted_impl_p<asio::basic_datagram_socket<asio::ip::udp,
 asio::datagram_socket_service<asio::ip::udp> > >::dispose()
 (epoll_reactor.ipp:196)
 ==11170==    by 0x414BE8: boost::detail::shared_count::~shared_count()
 (sp_counted_base_gcc_x86.hpp:145)
 ==11170==    by 0x554DEB0:
 boost::detail::sp_counted_impl_p<isc::asiodns::UDPServer::Data>::dispose()
 (shared_ptr.hpp:164)
 ==11170==    by 0x414BE8: boost::detail::shared_count::~shared_count()
 (sp_counted_base_gcc_x86.hpp:145)
 ==11170==    by 0x554DDEF: isc::asiodns::UDPServer::~UDPServer()
 (shared_ptr.hpp:164)
 ==11170==    by 0x553F8AE: isc::asiodns::DNSService::~DNSService()
 (sp_counted_base_gcc_x86.hpp:145)
 ==11170==    by 0x553F948: isc::asiodns::DNSService::~DNSService()
 (dns_service.cc:74)
 ==11170==    by 0x42AA21: (anonymous
 namespace)::RecursiveQueryTest_v6UDPSendSpecific_Test::TestBody()
 (recursive_query_unittest.cc:307)
 ==11170==    by 0x4C78139: testing::Test::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78247: testing::internal::TestInfoImpl::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78304: testing::TestCase::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C7863D: testing::internal::UnitTestImpl::RunAllTests()
 (in /usr/lib64/libgtest.so.0.0.0)
 ==11170==  Address 0x6a4f4b8 is 56 bytes inside a block of size 80 free'd
 ==11170==    at 0x4A072BC: operator delete(void*)
 (vg_replace_malloc.c:387)
 ==11170==    by 0x43CA3C:
 asio::detail::object_pool<asio::detail::epoll_reactor::descriptor_state>::~object_pool()
 (object_pool.hpp:40)
 ==11170==    by 0x43CDDC: asio::detail::epoll_reactor::~epoll_reactor()
 (epoll_reactor.ipp:66)
 ==11170==    by 0x530E88C: isc::asiolink::IOService::~IOService()
 (service_registry.ipp:76)
 ==11170==    by 0x427822: (anonymous
 namespace)::RecursiveQueryTest::setDNSService() (checked_delete.hpp:34)
 ==11170==    by 0x42AA21: (anonymous
 namespace)::RecursiveQueryTest_v6UDPSendSpecific_Test::TestBody()
 (recursive_query_unittest.cc:307)
 ==11170==    by 0x4C78139: testing::Test::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78247: testing::internal::TestInfoImpl::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C78304: testing::TestCase::Run() (in
 /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4C7863D: testing::internal::UnitTestImpl::RunAllTests()
 (in /usr/lib64/libgtest.so.0.0.0)
 ==11170==    by 0x4113E5: main (run_unittests.cc:26)
 ==11170==
 }}}

 I'm assigning it to the current sprint.

-- 
Ticket URL: <http://bind10.isc.org/ticket/2024>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list