Open Lwxiang opened 1 year ago
this looks like heap corruption. Can you reproduce it with address sanitizer?
It seems like tcmalloc will have some conflicts with boost::pool::malloc
.
After I remove the tcmalloc from project, the crash does not reappear.
that's another indication of general memory corruption. try running with address sanitizer
here is the stdout of the crash app, which I produce with address sanitizer.
ASAN:DEADLYSIGNAL
=================================================================
==10241==ERROR: AddressSanitizer: SEGV on unknown address 0x18a88000e3ab (pc 0x000000f5bdc2 bp 0x7f8d1c15ba10 sp 0x7f8d1c15b9f0 T25)
==10241==The signal is caused by a READ memory access.
#0 0xf5bdc1 in boost::simple_segregated_storage<unsigned long>::malloc() (/data/myapp+0xf5bdc1)
#1 0xf5bc62 in boost::pool<libtorrent::aux::allocator_new_delete>::malloc() (/data/myapp+0xf5bc62)
#2 0xf5b08d in libtorrent::torrent_peer_allocator::allocate_peer_entry(int) (/data/myapp+0xf5b08d)
#3 0x1484a23 in libtorrent::peer_list::new_connection(libtorrent::peer_connection_interface&, int, libtorrent::torrent_state*) (/data/myapp+0x1484a23)
#4 0xdb5cba in libtorrent::torrent::attach_peer(libtorrent::peer_connection*) (/data/myapp+0xdb5cba)
#5 0x13c6c57 in libtorrent::peer_connection::attach_to_torrent(libtorrent::digest32<160l> const&) (/data/myapp+0x13c6c57)
#6 0x11ef79a in libtorrent::bt_peer_connection::on_receive_impl(unsigned long) (/data/myapp+0x11ef79a)
#7 0x11e9fd0 in libtorrent::bt_peer_connection::on_receive(boost::system::error_code const&, unsigned long) (/data/myapp+0x11e9fd0)
#8 0x13faf0c in libtorrent::peer_connection::on_receive_data(boost::system::error_code const&, unsigned long) (/data/myapp+0x13faf0c)
#9 0x1461c4a in void std::__invoke_impl<void, void (libtorrent::peer_connection::* const&)(boost::system::error_code const&, unsigned long), std::shared_ptr<libtorrent::peer_connection> const&, boost::system::error_code const&, unsigned long const&>(std::__invoke_memfun_deref, void (libtorrent::peer_connection::* const&)(boost::system::error_code const&, unsigned long), std::shared_ptr<libtorrent::peer_connection> const&, boost::system::error_code const&, unsigned long const&) (/data/myapp+0x1461c4a)
#10 0x1459d65 in std::__invoke_result<void (libtorrent::peer_connection::* const&)(boost::system::error_code const&, unsigned long), std::shared_ptr<libtorrent::peer_connection> const&, boost::system::error_code const&, unsigned long const&>::type std::__invoke<void (libtorrent::peer_connection::* const&)(boost::system::error_code const&, unsigned long), std::shared_ptr<libtorrent::peer_connection> const&, boost::system::error_code const&, unsigned long const&>(void (libtorrent::peer_connection::* const&)(boost::system::error_code const&, unsigned long), std::shared_ptr<libtorrent::peer_connection> const&, boost::system::error_code const&, unsigned long const&) (/data/myapp+0x1459d65)
#11 0x14551e3 in void std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>::__call_c<void, boost::system::error_code const&, unsigned long const&, 0ul, 1ul, 2ul>(std::tuple<boost::system::error_code const&, unsigned long const&>&&, std::_Index_tuple<0ul, 1ul, 2ul>) const (/data/myapp+0x14551e3)
#12 0x144d95d in void std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>::operator()<boost::system::error_code const&, unsigned long const&, void>(boost::system::error_code const&, unsigned long const&) const (/data/myapp+0x144d95d)
#13 0x1447082 in void libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul>::operator()<boost::system::error_code const&, unsigned long const&>(boost::system::error_code const&, unsigned long const&) const (/data/myapp+0x1447082)
#14 0x14549a8 in boost::asio::detail::binder2<libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul>, boost::system::error_code, unsigned long>::operator()() (/data/myapp+0x14549a8)
#15 0x144c64e in void boost::asio::asio_handler_invoke<boost::asio::detail::binder2<libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul>, boost::system::error_code, unsigned long> >(boost::asio::detail::binder2<libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul>, boost::system::error_code, unsigned long>&, ...) (/data/myapp+0x144c64e)
#16 0x1445f1e in void boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul>, boost::system::error_code, unsigned long>, libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul> >(boost::asio::detail::binder2<libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul>, boost::system::error_code, unsigned long>&, libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul>&) (/data/myapp+0x1445f1e)
#17 0x1442d51 in boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul> >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned long) (/data/myapp+0x1442d51)
#18 0xae3758 in boost::asio::detail::task_io_service_operation::complete(boost::asio::detail::task_io_service&, boost::system::error_code const&, unsigned long) (/data/myapp+0xae3758)
#19 0xae5e61 in boost::asio::detail::task_io_service::do_run_one(boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex>&, boost::asio::detail::task_io_service_thread_info&, boost::system::error_code const&) (/data/myapp+0xae5e61)
#20 0xae557a in boost::asio::detail::task_io_service::run(boost::system::error_code&) (/data/myapp+0xae557a)
#21 0xae636a in boost::asio::io_service::run() (/data/myapp+0xae636a)
#22 0xadf669 in libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}::operator()() const (/data/myapp+0xadf669)
#23 0xae24de in void std::__invoke_impl<void, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::__invoke_other, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xae24de)
#24 0xae209b in std::__invoke_result<libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>::type std::__invoke<libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::__invoke_result&&, (libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&)...) (/data/myapp+0xae209b)
#25 0xae2eab in decltype (__invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (/data/myapp+0xae2eab)
#26 0xae2e31 in std::thread::_Invoker<std::tuple<libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}> >::operator()() (/data/myapp+0xae2e31)
#27 0xae2da1 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}> > >::_M_run() (/data/myapp+0xae2da1)
#28 0x1730a5e in execute_native_thread_routine (/data/myapp+0x1730a5e)
#29 0x7f8d2ccc8ea4 in start_thread (/lib64/libpthread.so.0+0x7ea4)
#30 0x7f8d2c4ebb0c in clone (/lib64/libc.so.6+0xfeb0c)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/data/myapp+0xf5bdc1) in boost::simple_segregated_storage<unsigned long>::malloc()
Thread T25 created by T0 here:
#0 0x7275bf in pthread_create (/data/myapp+0x7275bf)
#1 0x1730af4 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/data/myapp+0x1730af4)
#2 0xae1fdb in void __gnu_cxx::new_allocator<std::thread>::construct<std::thread, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::thread*, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xae1fdb)
#3 0xae1f8c in void std::allocator_traits<std::allocator<std::thread> >::construct<std::thread, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::allocator<std::thread>&, std::thread*, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xae1f8c)
#4 0xae1ecc in std::_Sp_counted_ptr_inplace<std::thread, std::allocator<std::thread>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::allocator<std::thread>, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xae1ecc)
#5 0xae1beb in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<std::thread, std::allocator<std::thread>, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::_Sp_make_shared_tag, std::thread*, std::allocator<std::thread> const&, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xae1beb)
#6 0xae19a2 in std::__shared_ptr<std::thread, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<std::thread>, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::_Sp_make_shared_tag, std::allocator<std::thread> const&, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xae19a2)
#7 0xae191c in std::shared_ptr<std::thread>::shared_ptr<std::allocator<std::thread>, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::_Sp_make_shared_tag, std::allocator<std::thread> const&, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xae191c)
#8 0xae1885 in std::shared_ptr<std::thread> std::allocate_shared<std::thread, std::allocator<std::thread>, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::allocator<std::thread> const&, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xae1885)
#9 0xae174b in std::shared_ptr<std::thread> std::make_shared<std::thread, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xae174b)
#10 0xadff6c in libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*) (/data/myapp+0xadff6c)
#11 0xae083e in libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::settings_pack&&, boost::asio::io_service*) (/data/myapp+0xae083e)
#12 0x89e8e8 in libtorrent::session::session(libtorrent::settings_pack const&, libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>) /usr/local/include/libtorrent/session.hpp:239
#13 0x89e8e8 in void __gnu_cxx::new_allocator<libtorrent::session>::construct<libtorrent::session, libtorrent::settings_pack&>(libtorrent::session*, libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/ext/new_allocator.h:136
#14 0x89e8e8 in void std::allocator_traits<std::allocator<libtorrent::session> >::construct<libtorrent::session, libtorrent::settings_pack&>(std::allocator<libtorrent::session>&, libtorrent::session*, libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/alloc_traits.h:475
#15 0x89e8e8 in std::_Sp_counted_ptr_inplace<libtorrent::session, std::allocator<libtorrent::session>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<libtorrent::settings_pack&>(std::allocator<libtorrent::session>, libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/shared_ptr_base.h:526
#16 0x89e8e8 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<libtorrent::session, std::allocator<libtorrent::session>, libtorrent::settings_pack&>(std::_Sp_make_shared_tag, libtorrent::session*, std::allocator<libtorrent::session> const&, libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/shared_ptr_base.h:637
#17 0x89e8e8 in std::__shared_ptr<libtorrent::session, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<libtorrent::session>, libtorrent::settings_pack&>(std::_Sp_make_shared_tag, std::allocator<libtorrent::session> const&, libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/shared_ptr_base.h:1295
#18 0x89e8e8 in std::shared_ptr<libtorrent::session>::shared_ptr<std::allocator<libtorrent::session>, libtorrent::settings_pack&>(std::_Sp_make_shared_tag, std::allocator<libtorrent::session> const&, libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/shared_ptr.h:344
#19 0x89e8e8 in std::shared_ptr<libtorrent::session> std::allocate_shared<libtorrent::session, std::allocator<libtorrent::session>, libtorrent::settings_pack&>(std::allocator<libtorrent::session> const&, libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/shared_ptr.h:691
#20 0x89e8e8 in std::shared_ptr<libtorrent::session> std::make_shared<libtorrent::session, libtorrent::settings_pack&>(libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/shared_ptr.h:707
#21 0x89e8e8 in myapp::bittorrent::BitTorrent::StartSession() /data/myapp/module/bittorrent/bittorrent.cpp:301
==10241==ABORTING
this is another crash, same position at boost::simple_segregated_storage<unsigned long>::malloc()
but trigger by add_peer
ASAN:DEADLYSIGNAL
=================================================================
==13474==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x00000132fe0e bp 0x7f0885a5b220 sp 0x7f0885a5b200 T25)
==13474==The signal is caused by a READ memory access.
==13474==Hint: address points to the zero page.
#0 0x132fe0d in boost::simple_segregated_storage<unsigned long>::malloc() (/data/myapp+0x132fe0d)
#1 0x132fcae in boost::pool<libtorrent::aux::allocator_new_delete>::malloc() (/data/myapp+0x132fcae)
#2 0x132f0d9 in libtorrent::torrent_peer_allocator::allocate_peer_entry(int) (/data/myapp+0x132f0d9)
#3 0x185d4be in libtorrent::peer_list::add_peer(boost::asio::ip::basic_endpoint<boost::asio::ip::tcp> const&, libtorrent::flags::bitfield_flag<unsigned char, libtorrent::peer_source_flags_tag, void>, libtorrent::flags::bitfield_flag<unsigned char, libtorrent::pex_flags_tag, void>, libtorrent::torrent_state*) (/data/myapp+0x185d4be)
#4 0x11a45df in libtorrent::torrent::add_peer(boost::asio::ip::basic_endpoint<boost::asio::ip::tcp> const&, libtorrent::flags::bitfield_flag<unsigned char, libtorrent::peer_source_flags_tag, void>, libtorrent::flags::bitfield_flag<unsigned char, libtorrent::pex_flags_tag, void>) (/data/myapp+0x11a45df)
#5 0x143ff87 in libtorrent::(anonymous namespace)::ut_pex_peer_plugin::on_extended(int, int, libtorrent::span<char const>) (/data/myapp+0x143ff87)
#6 0x15b422e in libtorrent::bt_peer_connection::on_extended(int) (/data/myapp+0x15b422e)
#7 0x15b73d7 in libtorrent::bt_peer_connection::dispatch_message(int) (/data/myapp+0x15b73d7)
#8 0x15c5690 in libtorrent::bt_peer_connection::on_receive_impl(unsigned long) (/data/myapp+0x15c5690)
#9 0x15be01c in libtorrent::bt_peer_connection::on_receive(boost::system::error_code const&, unsigned long) (/data/myapp+0x15be01c)
#10 0x17ce9e4 in libtorrent::peer_connection::on_receive_data(boost::system::error_code const&, unsigned long) (/data/myapp+0x17ce9e4)
#11 0x1835722 in void std::__invoke_impl<void, void (libtorrent::peer_connection::* const&)(boost::system::error_code const&, unsigned long), std::shared_ptr<libtorrent::peer_connection> const&, boost::system::error_code const&, unsigned long const&>(std::__invoke_memfun_deref, void (libtorrent::peer_connection::* const&)(boost::system::error_code const&, unsigned long), std::shared_ptr<libtorrent::peer_connection> const&, boost::system::error_code const&, unsigned long const&) (/data/myapp+0x1835722)
#12 0x182d83d in std::__invoke_result<void (libtorrent::peer_connection::* const&)(boost::system::error_code const&, unsigned long), std::shared_ptr<libtorrent::peer_connection> const&, boost::system::error_code const&, unsigned long const&>::type std::__invoke<void (libtorrent::peer_connection::* const&)(boost::system::error_code const&, unsigned long), std::shared_ptr<libtorrent::peer_connection> const&, boost::system::error_code const&, unsigned long const&>(void (libtorrent::peer_connection::* const&)(boost::system::error_code const&, unsigned long), std::shared_ptr<libtorrent::peer_connection> const&, boost::system::error_code const&, unsigned long const&) (/data/myapp+0x182d83d)
#13 0x1828cbb in void std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>::__call_c<void, boost::system::error_code const&, unsigned long const&, 0ul, 1ul, 2ul>(std::tuple<boost::system::error_code const&, unsigned long const&>&&, std::_Index_tuple<0ul, 1ul, 2ul>) const (/data/myapp+0x1828cbb)
#14 0x1821435 in void std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>::operator()<boost::system::error_code const&, unsigned long const&, void>(boost::system::error_code const&, unsigned long const&) const (/data/myapp+0x1821435)
#15 0x181ab5a in void libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul>::operator()<boost::system::error_code const&, unsigned long const&>(boost::system::error_code const&, unsigned long const&) const (/data/myapp+0x181ab5a)
#16 0x1828480 in boost::asio::detail::binder2<libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul>, boost::system::error_code, unsigned long>::operator()() (/data/myapp+0x1828480)
#17 0x1820126 in void boost::asio::asio_handler_invoke<boost::asio::detail::binder2<libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul>, boost::system::error_code, unsigned long> >(boost::asio::detail::binder2<libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul>, boost::system::error_code, unsigned long>&, ...) (/data/myapp+0x1820126)
#18 0x18199f6 in void boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul>, boost::system::error_code, unsigned long>, libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul> >(boost::asio::detail::binder2<libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul>, boost::system::error_code, unsigned long>&, libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul>&) (/data/myapp+0x18199f6)
#19 0x1816829 in boost::asio::detail::reactive_socket_recv_op<boost::asio::mutable_buffers_1, libtorrent::aux::allocating_handler<std::_Bind<void (libtorrent::peer_connection::*(std::shared_ptr<libtorrent::peer_connection>, std::_Placeholder<1>, std::_Placeholder<2>))(boost::system::error_code const&, unsigned long)>, 432ul> >::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned long) (/data/myapp+0x1816829)
#20 0xeb5808 in boost::asio::detail::task_io_service_operation::complete(boost::asio::detail::task_io_service&, boost::system::error_code const&, unsigned long) (/data/myapp+0xeb5808)
#21 0xfc0954 in boost::asio::detail::epoll_reactor::descriptor_state::do_complete(boost::asio::detail::task_io_service*, boost::asio::detail::task_io_service_operation*, boost::system::error_code const&, unsigned long) (/data/myapp+0xfc0954)
#22 0xeb5808 in boost::asio::detail::task_io_service_operation::complete(boost::asio::detail::task_io_service&, boost::system::error_code const&, unsigned long) (/data/myapp+0xeb5808)
#23 0xeb7f11 in boost::asio::detail::task_io_service::do_run_one(boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex>&, boost::asio::detail::task_io_service_thread_info&, boost::system::error_code const&) (/data/myapp+0xeb7f11)
#24 0xeb762a in boost::asio::detail::task_io_service::run(boost::system::error_code&) (/data/myapp+0xeb762a)
#25 0xeb841a in boost::asio::io_service::run() (/data/myapp+0xeb841a)
#26 0xeb1719 in libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}::operator()() const (/data/myapp+0xeb1719)
#27 0xeb458e in void std::__invoke_impl<void, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::__invoke_other, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xeb458e)
#28 0xeb414b in std::__invoke_result<libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>::type std::__invoke<libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::__invoke_result&&, (libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&)...) (/data/myapp+0xeb414b)
#29 0xeb4f5b in decltype (__invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (/data/myapp+0xeb4f5b)
#30 0xeb4ee1 in std::thread::_Invoker<std::tuple<libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}> >::operator()() (/data/myapp+0xeb4ee1)
#31 0xeb4e51 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}> > >::_M_run() (/data/myapp+0xeb4e51)
#32 0x1b0455e in execute_native_thread_routine (/data/myapp+0x1b0455e)
#33 0x7f08965edea4 in start_thread (/lib64/libpthread.so.0+0x7ea4)
#34 0x7f0895e10b0c in clone (/lib64/libc.so.6+0xfeb0c)
AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/data/myapp+0x132fe0d) in boost::simple_segregated_storage<unsigned long>::malloc()
Thread T25 created by T0 here:
#0 0x7354cf in __interceptor_pthread_create (/data/myapp+0x7354cf)
#1 0x1b045f4 in std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (/data/myapp+0x1b045f4)
#2 0xeb408b in void __gnu_cxx::new_allocator<std::thread>::construct<std::thread, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::thread*, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xeb408b)
#3 0xeb403c in void std::allocator_traits<std::allocator<std::thread> >::construct<std::thread, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::allocator<std::thread>&, std::thread*, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xeb403c)
#4 0xeb3f7c in std::_Sp_counted_ptr_inplace<std::thread, std::allocator<std::thread>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::allocator<std::thread>, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xeb3f7c)
#5 0xeb3c9b in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<std::thread, std::allocator<std::thread>, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::_Sp_make_shared_tag, std::thread*, std::allocator<std::thread> const&, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xeb3c9b)
#6 0xeb3a52 in std::__shared_ptr<std::thread, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<std::thread>, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::_Sp_make_shared_tag, std::allocator<std::thread> const&, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xeb3a52)
#7 0xeb39cc in std::shared_ptr<std::thread>::shared_ptr<std::allocator<std::thread>, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::_Sp_make_shared_tag, std::allocator<std::thread> const&, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xeb39cc)
#8 0xeb3935 in std::shared_ptr<std::thread> std::allocate_shared<std::thread, std::allocator<std::thread>, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(std::allocator<std::thread> const&, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xeb3935)
#9 0xeb37fb in std::shared_ptr<std::thread> std::make_shared<std::thread, libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}>(libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*)::{lambda()#1}&&) (/data/myapp+0xeb37fb)
#10 0xeb201c in libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::session_params&&, boost::asio::io_service*) (/data/myapp+0xeb201c)
#11 0xeb28ee in libtorrent::session::start(libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>, libtorrent::settings_pack&&, boost::asio::io_service*) (/data/myapp+0xeb28ee)
#12 0xac95ef in libtorrent::session::session(libtorrent::settings_pack const&, libtorrent::flags::bitfield_flag<unsigned char, libtorrent::session_flags_tag, void>) /usr/local/include/libtorrent/session.hpp:239
#13 0xac95ef in void __gnu_cxx::new_allocator<libtorrent::session>::construct<libtorrent::session, libtorrent::settings_pack&>(libtorrent::session*, libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/ext/new_allocator.h:136
#14 0xac95ef in void std::allocator_traits<std::allocator<libtorrent::session> >::construct<libtorrent::session, libtorrent::settings_pack&>(std::allocator<libtorrent::session>&, libtorrent::session*, libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/alloc_traits.h:475
#15 0xac95ef in std::_Sp_counted_ptr_inplace<libtorrent::session, std::allocator<libtorrent::session>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<libtorrent::settings_pack&>(std::allocator<libtorrent::session>, libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/shared_ptr_base.h:526
#16 0xac95ef in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<libtorrent::session, std::allocator<libtorrent::session>, libtorrent::settings_pack&>(std::_Sp_make_shared_tag, libtorrent::session*, std::allocator<libtorrent::session> const&, libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/shared_ptr_base.h:637
#17 0xac95ef in std::__shared_ptr<libtorrent::session, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<libtorrent::session>, libtorrent::settings_pack&>(std::_Sp_make_shared_tag, std::allocator<libtorrent::session> const&, libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/shared_ptr_base.h:1295
#18 0xac95ef in std::shared_ptr<libtorrent::session>::shared_ptr<std::allocator<libtorrent::session>, libtorrent::settings_pack&>(std::_Sp_make_shared_tag, std::allocator<libtorrent::session> const&, libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/shared_ptr.h:344
#19 0xac95ef in std::shared_ptr<libtorrent::session> std::allocate_shared<libtorrent::session, std::allocator<libtorrent::session>, libtorrent::settings_pack&>(std::allocator<libtorrent::session> const&, libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/shared_ptr.h:691
#20 0xac95ef in std::shared_ptr<libtorrent::session> std::make_shared<libtorrent::session, libtorrent::settings_pack&>(libtorrent::settings_pack&) /opt/rh/devtoolset-7/root/usr/include/c++/7/bits/shared_ptr.h:707
#21 0xac95ef in myapp::bittorrent::BitTorrent::StartSession() /data/myapp/module/bittorrent/bittorrent.cpp:301
==13474==ABORTING
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Please provide the following information
libtorrent version (or branch): 1.2.18
platform/architecture: centos7/x86_64
compiler and compiler version: gcc7.3.1
observed a crash in peer allocator when handling new connections