Opened 5 years ago
Last modified 5 years ago
#3324 new bug
Deluge segfaults when starting to receive packets from some torrents
Reported by: | skuizy | Owned by: | |
---|---|---|---|
Priority: | critical | Milestone: | not applicable |
Component: | libtorrent | Version: | develop |
Keywords: | segfault | Cc: |
Description
deluged 2.1.1.dev7496 libtorrent: 1.1.13.0 Python: 3.7.5rc1 OS: Linux Ubuntu 19.10 Eoan Ermine libboost-python1.67.0: Installed: 1.67.0-13ubuntu1 libboost-iostreams1.67.0: Installed: 1.67.0-13ubuntu1 libboost-locale1.67.0: Installed: 1.67.0-13ubuntu1 libboost-filesystem1.67.0: Installed: 1.67.0-13ubuntu1 libboost-date-time1.67.0: Installed: 1.67.0-13ubuntu1 libboost-thread1.67.0: Installed: 1.67.0-13ubuntu1 libboost-system1.67.0: Installed: 1.67.0-13ubuntu1
I'm forced to pause some torrents as they keeps segfaulting deluge as it starts recieving packets.
I've run it againts gdb and here is the stack :
Thread 2 "python3" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0xb4d15460 (LWP 26810)] 0xb4446f30 in ?? () (gdb) bt #0 0xb4446f30 in ?? () #1 0xb582b848 in boost::_mfi::cmf2<bool, libtorrent::piece_picker, libtorrent::piece_picker::downloading_piece const*, libtorrent::piece_picker::downloading_piece const*>::call<libtorrent::piece_picker const* const, libtorrent::piece_picker::downloading_piece const*, libtorrent::piece_picker::downloading_piece const*> (this=0xb4d1481c, this=0xb4d1481c, u=@0xb4d14824: 0xae288a88, b1=<synthetic pointer>: <optimized out>, b2=<synthetic pointer>: <optimized out>) at /usr/include/boost/bind/mem_fn_template.hpp:342 #2 boost::_mfi::cmf2<bool, libtorrent::piece_picker, libtorrent::piece_picker::downloading_piece const*, libtorrent::piece_picker::downloading_piece const*>::operator()<libtorrent::piece_picker const*> ( u=@0xb4d14824: 0xae288a88, a2=<optimized out>, a1=<optimized out>, this=0xb4d1481c) at /usr/include/boost/bind/mem_fn_template.hpp:345 #3 boost::_bi::list3<boost::_bi::value<libtorrent::piece_picker const*>, boost::arg<1>, boost::arg<2> >::operator()<bool, boost::_mfi::cmf2<bool, libtorrent::piece_picker, libtorrent::piece_picker::downloading_piece const*, libtorrent::piece_picker::downloading_piece const*>, boost::_bi::rrlist2<libtorrent::piece_picker::downloading_piece const*&, libtorrent::piece_picker::downloading_piece const*&> > (a=<synthetic pointer>..., f=..., this=0xb4d14824) at /usr/include/boost/bind/bind.hpp:388 #4 boost::_bi::bind_t<bool, boost::_mfi::cmf2<bool, libtorrent::piece_picker, libtorrent::piece_picker::downloading_piece const*, libtorrent::piece_picker::downloading_piece const*>, boost::_bi::list3<boost::_bi::value<libtorrent::piece_picker const*>, boost::arg<1>, boost::arg<2> > >::operator()<libtorrent::piece_picker::downloading_piece const*&, libtorrent::piece_picker::downloading_piece const*&> (a2=@0xb4d148b4: 0xb03e7030, a1=<synthetic pointer>: <optimized out>, this=0xb4d1481c) at /usr/include/boost/bind/bind.hpp:1318 #5 __gnu_cxx::__ops::_Val_comp_iter<boost::_bi::bind_t<bool, boost::_mfi::cmf2<bool, libtorrent::piece_picker, libtorrent::piece_picker::downloading_piece const*, libtorrent::piece_picker::downloading_piece const*>, boost::_bi::list3<boost::_bi::value<libtorrent::piece_picker const*>, boost::arg<1>, boost::arg<2> > > >::operator()<libtorrent::piece_picker::downloading_piece const*, libtorrent::piece_picker::downloading_piece const**> (__it=0xb4d148b4, __val=<synthetic pointer>: <optimized out>, this=0xb4d1481c) at /usr/include/c++/9/bits/predefined_ops.h:215 #6 std::__unguarded_linear_insert<libtorrent::piece_picker::downloading_piece const**, __gnu_cxx::__ops::_Val_comp_iter<boost::_bi::bind_t<bool, boost::_mfi::cmf2<bool, libtorrent::piece_picker, libtorrent::piece_picker::downloading_piece const*, libtorrent::piece_picker::downloading_piece const*>, boost::_bi::list3<boost::_bi::value<libtorrent::piece_picker const*>, boost::arg<1>, boost::arg<2> > > > > ( __last=__last@entry=0xb4d148b8, __comp=...) at /usr/include/c++/9/bits/stl_algo.h:1827 #7 0xb582b8e0 in std::__insertion_sort<libtorrent::piece_picker::downloading_piece const**, __gnu_cxx::__ops::_Iter_comp_iter<boost::_bi::bind_t<bool, boost::_mfi::cmf2<bool, libtorrent::piece_picker, libtorrent::piece_picker::downloading_piece const*, libtorrent::piece_picker::downloading_piece const*>, boost::_bi::list3<boost::_bi::value<libtorrent::piece_picker const*>, boost::arg<1>, boost::arg<2> > > > > (__first=0xb4d148b0, __last=__last@entry=0xb4d148d0, __comp=...) at /usr/include/c++/9/bits/move.h:99 #8 0xb582a8e6 in std::__final_insertion_sort<libtorrent::piece_picker::downloading_piece const**, __gnu_cxx::__ops::_Iter_comp_iter<boost::_bi::bind_t<bool, boost::_mfi::cmf2<bool, libtorrent::piece_picker, libtorrent::piece_picker::downloading_piece const*, libtorrent::piece_picker::downloading_piece const*>, boost::_bi::list3<boost::_bi::value<libtorrent::piece_picker const*>, boost::arg<1>, boost::arg<2> > > > > (__comp=..., __last=0xb4d148d0, __first=<optimized out>) at ../../src/piece_picker.cpp:2169 #9 std::__sort<libtorrent::piece_picker::downloading_piece const**, __gnu_cxx::__ops::_Iter_comp_iter<boost::_bi::bind_t<bool, boost::_mfi::cmf2<bool, libtorrent::piece_picker, libtorrent::piece_picker::downloading_piece const*, libtorrent::piece_picker::downloading_piece const*>, boost::_bi::list3<boost::_bi::value<libtorrent::piece_picker const*>, boost::arg<1>, boost::arg<2> > > > > (__comp=..., __last=0xb4d148d0, __first=<optimized out>) at /usr/include/c++/9/bits/stl_algo.h:1970 #10 std::sort<libtorrent::piece_picker::downloading_piece const**, boost::_bi::bind_t<bool, boost::_mfi::cmf2<bool, libtorrent::piece_picker, libtorrent::piece_picker::downloading_piece const*, libtorrent::piece_picker::downloading_piece const*>, boost::_bi::list3<boost::_bi::value<libtorrent::piece_picker const*>, boost::arg<1>, boost::arg<2> > > > (__comp=..., __last=0xb4d148d0, __first=<optimized out>) at /usr/include/c++/9/bits/stl_algo.h:4860 #11 libtorrent::piece_picker::pick_pieces (this=this@entry=0xae288a88, pieces=..., interesting_blocks=std::vector of length 0, capacity 100, num_blocks=num_blocks@entry=4, prefer_contiguous_blocks=<optimized out>, prefer_contiguous_blocks@entry=0, peer=<optimized out>, peer@entry=0xb446f250, options=<optimized out>, suggested_pieces=..., num_peers=<optimized out>, num_peers@entry=29, pc=...) at ../../src/piece_picker.cpp:2074 #12 0xb583358a in libtorrent::request_a_block (t=..., c=...) at /usr/include/c++/9/bits/stl_vector.h:915 #13 0xb57fddec in libtorrent::peer_connection::incoming_unchoke (this=this@entry=0xafc012b0) at ../../src/peer_connection.cpp:1646 #14 0xb577dffa in libtorrent::bt_peer_connection::on_unchoke (this=0xafc012b0, received=<optimized out>) at ../../src/bt_peer_connection.cpp:971 #15 0xb5781288 in libtorrent::bt_peer_connection::dispatch_message (received=1, this=0xafc012b0) at ../../src/bt_peer_connection.cpp:1965 #16 libtorrent::bt_peer_connection::dispatch_message (this=0xafc012b0, received=1) at ../../src/bt_peer_connection.cpp:1916 #17 0xb5785778 in libtorrent::bt_peer_connection::on_receive_impl (this=this@entry=0xafc012b0, bytes_transferred=<optimized out>) at ../../src/bt_peer_connection.cpp:3536 #18 0xb5786ea0 in libtorrent::bt_peer_connection::on_receive (this=0xafc012b0, error=..., bytes_transferred=<optimized out>) at ../../src/bt_peer_connection.cpp:2634 #19 0xb5807038 in libtorrent::peer_connection::receive_data_impl (this=this@entry=0xafc012b0, error=..., bytes_transferred=<optimized out>, read_loops=0) at ../../src/peer_connection.cpp:6191 #20 0xb58073fa in libtorrent::peer_connection::on_receive_data_nb (this=0xafc012b0, error=..., bytes_transferred=<optimized out>) at ../../src/peer_connection.cpp:6078 #21 0xb592e388 in boost::function2<void, boost::system::error_code const&, unsigned int>::operator() (a1=<optimized out>, a0=..., this=0xb4d14d60) at /usr/include/boost/function/function_template.hpp:682 #22 boost::_bi::list2<boost::_bi::value<boost::system::error_code>, boost::_bi::value<unsigned int> >::operator()<boost::function2<void, boost::system::error_code const&, unsigned int>, boost::_bi::list0> ( a=<synthetic pointer>..., f=..., this=0xb4d14d70) at /usr/include/boost/bind/bind.hpp:319 #23 boost::_bi::bind_t<void, boost::function2<void, boost::system::error_code const&, unsigned int>, boost::_bi::list2<boost::_bi::value<boost::system::error_code>, boost::_bi::value<unsigned int> > >::operator() ( this=0xb4d14d60) at /usr/include/boost/bind/bind.hpp:1294 #24 boost::asio::asio_handler_invoke<boost::_bi::bind_t<void, boost::function2<void, boost::system::error_code const&, unsigned int>, boost::_bi::list2<boost::_bi::value<boost::system::error_code>, boost::_bi::value<unsigned int> > > > (function=...) at /usr/include/boost/asio/handler_invoke_hook.hpp:69 #25 boost_asio_handler_invoke_helpers::invoke<boost::_bi::bind_t<void, boost::function2<void, boost::system::error_code const&, unsigned int>, boost::_bi::list2<boost::_bi::value<boost::system::error_code>, boost::_bi::--Type <RET> for more, q to quit, c to continue without paging-- value<unsigned int> > >, boost::_bi::bind_t<void, boost::function2<void, boost::system::error_code const&, unsigned int>, boost::_bi::list2<boost::_bi::value<boost::system::error_code>, boost::_bi::value<unsigned int> > > > (context=..., function=...) at /usr/include/boost/asio/detail/handler_invoke_helpers.hpp:37 #26 boost::asio::detail::handler_work<boost::_bi::bind_t<void, boost::function2<void, boost::system::error_code const&, unsigned int>, boost::_bi::list2<boost::_bi::value<boost::system::error_code>, boost::_bi::value<unsigned int> > >, boost::asio::system_executor>::complete<boost::_bi::bind_t<void, boost::function2<void, boost::system::error_code const&, unsigned int>, boost::_bi::list2<boost::_bi::value<boost::system::error_code>, boost::_bi::value<unsigned int> > > > (this=<synthetic pointer>, handler=..., function=...) at /usr/include/boost/asio/detail/handler_work.hpp:82 #27 boost::asio::detail::completion_handler<boost::_bi::bind_t<void, boost::function2<void, boost::system::error_code const&, unsigned int>, boost::_bi::list2<boost::_bi::value<boost::system::error_code>, boost::_bi::value<unsigned int> > > >::do_complete (owner=0x56c6b8, base=<optimized out>) at /usr/include/boost/asio/detail/completion_handler.hpp:70 #28 0xb578f304 in boost::asio::detail::scheduler_operation::complete (bytes_transferred=<optimized out>, ec=..., owner=0x56c6b8, this=0xafc29e68) at /usr/include/boost/asio/detail/scheduler_operation.hpp:40 #29 boost::asio::detail::scheduler::do_run_one (ec=..., this_thread=..., lock=..., this=0x56c6b8) at /usr/include/boost/asio/detail/impl/scheduler.ipp:401 #30 boost::asio::detail::scheduler::run (this=0x56c6b8, ec=...) at /usr/include/boost/asio/detail/impl/scheduler.ipp:154 #31 0xb5842588 in boost::asio::io_context::run (this=0x6c3614) at /usr/include/boost/asio/impl/io_context.ipp:62 #32 0xb579ac92 in boost::asio::detail::boost_asio_detail_posix_thread_function (arg=0x6c2338) at /usr/include/boost/asio/detail/impl/posix_thread.ipp:74 #33 0xb6e9ed3e in start_thread (arg=0x4ac76531) at pthread_create.c:479 #34 0xb6f5e17c in ?? () at ../sysdeps/unix/sysv/linux/arm/clone.S:73 from /lib/arm-linux-gnueabihf/libc.so.6 Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Change History (4)
comment:1 by , 5 years ago
comment:2 by , 5 years ago
Summary: | Deluge segfaults when starting to recieve packets from certain torrents → Deluge segfaults when starting to receive packets from some torrents |
---|
comment:3 by , 5 years ago
I've opened the issue there https://github.com/arvidn/libtorrent/issues/4094
comment:4 by , 5 years ago
Component: | Unknown → libtorrent |
---|---|
Milestone: | needs verified → not applicable |
Note:
See TracTickets
for help on using tickets.
You should report this at the libtorrent issue tracker: https://github.com/arvidn/libtorrent