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