w00t-labs / libtorrent

Automatically exported from code.google.com/p/libtorrent
Other
0 stars 0 forks source link

epoll in under layer block the libtorrent - epoll_wait on ARM platform #542

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
On ARM platform, libtorrent is silently blocked by epoll_wait() function. If I 
attach it by gdb and use Ctrl+c to break and then continue it. It will 
continue. It works in this way time to time. When it is blocked, no message get 
printed for downloading and others alerts. So I can notice it is blocked.

It could be blocked on alert pop or network thread. The question is how to 
debug this issue?

Below is my code to get alerts.

    std::deque<alert*> alerts;
    p_libtorrent->session->pop_alerts(&alerts);
    std::string now = time_now_string();

    for (std::deque<alert*>::iterator i = alerts.begin()
        , end(alerts.end()); i != end; ++i)
    {
        bool need_resort = false;
        if (!::handle_alert(p_libtorrent, p_libtorrent->session, *i)) 
        {
            // if we didn't handle the alert, print it to the log
            std::string event_string;
            print_alert(*i, event_string);
            mesgDbg("alert : %s [%s]", event_string.c_str(), now.c_str());
        }
        delete *i;
    }
    alerts.clear();

Original issue reported on code.google.com by ygao....@gmail.com on 6 Nov 2013 at 8:13

GoogleCodeExporter commented 8 years ago
After a few hours investigation, I believe it is blocked when push below alerts:
block_finished_alert
block_downloading_alert

Still need more investigation.

Original comment by ygao....@gmail.com on 6 Nov 2013 at 9:48

GoogleCodeExporter commented 8 years ago
which version/branch of libtorrent are you testing?

If the hang happens on shutdown, it can be debugged by building with 
asio-debugging=on

Original comment by arvid.no...@gmail.com on 6 Nov 2013 at 10:18

GoogleCodeExporter commented 8 years ago
I believe this is a dead lock. Let me explain below:
First thread - my client thread run below code:

 if (state_update_alert* p = alert_cast<state_update_alert>(a))
 {
        mDbg("state_update_alert begin");
        std::string now = time_now_string();
for (std::vector<torrent_status>::iterator i = p->status.begin();
i != p->status.end(); ++i)
{
            // debug
            session_status sess_stat = p_libtorrent->session->status();
       ///// <<<<< wait here as below message show

            mesg_Dbg((void*)p_libtorrent->p_access, "state update alert: %s
[%s - %s]", state_str[i->state],
                     add_suffix(sess_stat.download_rate, "/s").c_str(),
                     add_suffix(sess_stat.total_download).c_str()
                     );
        }
 }

Second thread - libtorrent thread (post alert - session thread, is this
from main thread?)

 bool peer_connection::add_request(piece_block const& block, int flags)
 {
    ....

if (t->alerts().should_post<block_downloading_alert>())
{
            LOGV("post block_downloading_alert begin");
t->alerts().post_alert(block_downloading_alert(t->get_handle(),
remote(), pid(), speedmsg, block.block_index, block.piece_index));
////// <<<<<< blocked here as below
            LOGV("post block_downloading_alert end");
}
        LOGV("pending_block begin");

    ....
 }

session_status session_impl::status() const
{
        LOGV("session status begin ...");
        ......
        }

session_status session::status() const
{
TORRENT_SYNC_CALL_RET(session_status, status);      <<<<< client wait for
libtorrent post block_downloading_alert done
return r;
}

Libtorrent(3265): post block_finiished_alert begin
Libtorrent(3265): push alert: block_finished_alert
Libtorrent(3265): post block_finiished_alert end

Libtorrent(3265): post block_downloading_alert begin    <<<<<<

Client(3265): access_torrent access: process alert begin ...
Client(3265): access_torrent access: process alert begin ... after pop
Client(3265): access_torrent access: handle_alert begin
Client(3265): access_torrent access: state_update_alert begin    <<<<<<

************************ dead lock here and go to below when ctrl+c
interrupt signal in GDB *******************

Libtorrent(3265): push alert: block_downloading_alert
Libtorrent(3265): post block_downloading_alert end   <<<<<<
Libtorrent(3265): pending_block begin
Libtorrent(3265): pending_block end
Libtorrent(3265): post block_finiished_alert begin
Libtorrent(3265): push alert: block_finished_alert
Libtorrent(3265): post block_finiished_alert end
Libtorrent(3265): session status begin ...                           <<<<<
client go into status()
Libtorrent(3265): session status before dht status ...
Libtorrent(3265): session status begin before get_status ...
Libtorrent(3265): session status begin after get_status ...
Libtorrent(3265): session status end
Client(3265): access_torrent access: state update alert: downloading
[571.kB/s - 81.6MB]

So client thread -> status() -> wait for  libtorrent thread -> wait for sth
(epoll_wait for some event)

Original comment by ygao....@gmail.com on 7 Nov 2013 at 3:41

GoogleCodeExporter commented 8 years ago
I recently fixed a deadlock in UDP trackers in RC_0_16 (the fix is not released 
yet). This was the patch: http://dpaste.com/1446281/

If you post stack traces for all thread when this happens, I'm sure I could 
easily figure out what's happening and fix it.

i gdb, do: thread apply all bt full

Original comment by arvid.no...@gmail.com on 7 Nov 2013 at 4:01

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
would you mind doing that again, but with a build with debug symbols?

if you're building with boost-build, just add "debug-symbols=on" or just add 
"-g" to your gcc command line

Original comment by arvid.no...@gmail.com on 7 Nov 2013 at 5:15

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
This is thread from stackoverflow pretty similar to I see here.

http://stackoverflow.com/questions/15713832/only-thread-handling-io-service-is-w
aiting-even-though-async-i-o-operations-are

Original comment by ygao....@gmail.com on 7 Nov 2013 at 5:39

GoogleCodeExporter commented 8 years ago
Thread 30 (Thread 8929):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x5f86a9ca in 
wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > 
(lock=..., this=0x60997eac) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/posix_event.hpp:80
No locals.
#4  boost::asio::detail::task_io_service::do_one (this=0x5c57c9d0, lock=..., 
this_idle_thread=0x60997eac) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/impl/task_io_service.
ipp:289
        polling = false
        task_has_run = <optimized out>
#5  0x5f86b660 in boost::asio::detail::task_io_service::run (this=0x5c57c9d0, 
ec=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/impl/task_io_service.
ipp:130
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, owner_ = 0x5c57c9d0, next_ = 0x0}
        this_idle_thread = {wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {value = -12}, signalled_ = false}, next = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x5c57c9e4, locked_ = true}
        n = 11
#6  0x5f86bb92 in boost::asio::io_service::run (this=0x5c65f598) at 
/home/mike/proj/test/boost/build/include/boost/asio/impl/io_service.ipp:57
        ec = {m_val = 0, m_cat = 0x601f7b90}
        s = <optimized out>
#7  0x5f865f82 in boost::asio::detail::boost_asio_detail_posix_thread_function 
(arg=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/impl/posix_thread.ipp
:64
        func = {ptr = 0x5c6a3920}
#8  0x401103dc in __thread_entry () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#9  0x4010fac8 in pthread_create () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#10 0x00000000 in ?? ()
No symbol table info available.

Original comment by ygao....@gmail.com on 7 Nov 2013 at 5:53

GoogleCodeExporter commented 8 years ago
Thread 29 (Thread 8928):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x4082e1e2 in ?? ()
No symbol table info available.
#4  0x4082e1e2 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 28 (Thread 8927):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x4010f5d8 in ?? () from /home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x5f8e9c3a in lock (this=0x5fde11ac) at 
/home/mike/proj/test/boost/build/include/boost/smart_ptr/detail/spinlock_pt.hpp:
41
No locals.
#3  scoped_lock (pv=0x5c7168f4, this=<synthetic pointer>) at 
/home/mike/proj/test/boost/build/include/boost/smart_ptr/detail/spinlock_pool.hp
p:61
No locals.
#4  atomic_conditional_increment (pw=0x5c7168f4) at 
/home/mike/proj/test/boost/build/include/boost/smart_ptr/detail/sp_counted_base_
spin.hpp:47
        rv = <optimized out>
#5  add_ref_lock (this=0x5c7168f0) at 
/home/mike/proj/test/boost/build/include/boost/smart_ptr/detail/sp_counted_base_
spin.hpp:95
No locals.
#6  shared_count (r=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/smart_ptr/detail/shared_count.hpp
:430
No locals.
#7  shared_ptr<libtorrent::torrent> (r=..., this=0x6079702c) at 
/home/mike/proj/test/boost/build/include/boost/smart_ptr/shared_ptr.hpp:220
No locals.
#8  boost::weak_ptr<libtorrent::torrent>::lock (this=0x5c794898) at 
/home/mike/proj/test/boost/build/include/boost/smart_ptr/weak_ptr.hpp:157
No locals.
#9  0x5f9aa81c in libtorrent::peer_connection::check_invariant 
(this=0x5c7945f8) at peer_connection.cpp:5808
        __PRETTY_FUNCTION__ = "void libtorrent::peer_connection::check_invariant() const"
        t = {px = 0x0, pn = {pi_ = 0x5c7168f0}}
        unique = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<libtorrent::piece_block> >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<libtorrent::piece_block> >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<libtorrent::piece_block, libtorrent::piece_block, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = 1618571968, _M_parent = 0x5c66abc8, _M_left = 0x0, _M_right = 0x6079720c}, _M_node_count = 1551452340}}}
#10 0x5f9bbe12 in check_invariant<libtorrent::peer_connection> (self=<optimized 
out>) at ../include/libtorrent/invariant_check.hpp:19
No locals.
#11 check_invariant<libtorrent::peer_connection> (x=<optimized out>) at 
../include/libtorrent/invariant_check.hpp:26
No locals.
#12 invariant_checker_impl (self_=<optimized out>, this=0x60797174) at 
../include/libtorrent/invariant_check.hpp:39
No locals.
#13 libtorrent::make_invariant_checker<libtorrent::peer_connection> 
(x=<optimized out>) at ../include/libtorrent/invariant_check.hpp:65
No locals.
#14 0x5f9ad0a4 in libtorrent::peer_connection::add_request (this=0x5c7945f8, 
block=..., flags=0) at peer_connection.cpp:3036
        _invariant_check = <optimized out>
        __PRETTY_FUNCTION__ = "bool libtorrent::peer_connection::add_request(const libtorrent::piece_block&, int)"
        state = <optimized out>
        speed = <optimized out>
        speedmsg = <optimized out>
        pb = {block = {static invalid = {static invalid = <same as static member of an already seen type>, piece_index = 524287, block_index = 8191}, piece_index = 1, block_index = 0}, skipped = 5555, not_wanted = false, timed_out = true, busy = false}
        t = {px = 0x1, pn = {pi_ = 0x5c66abc8}}
#15 0x5f9c9e0c in libtorrent::request_a_block (t=<optimized out>, c=...) at 
policy.cpp:293
        num_block_requests = <optimized out>
        i = {_M_current = 0x5c7be8b8}
        __PRETTY_FUNCTION__ = "void libtorrent::request_a_block(libtorrent::torrent&, libtorrent::peer_connection&)"
        interesting_pieces = {<std::_Vector_base<libtorrent::piece_block, std::allocator<libtorrent::piece_block> >> = {_M_impl = {<std::allocator<libtorrent::piece_block>> = {<__gnu_cxx::new_allocator<libtorrent::piece_block>> = {<No data fields>}, <No data fields>}, _M_start = 0x5c7be8b8, _M_finish = 0x5c7be8bc, _M_end_of_storage = 0x5c7bea48}}, <No data fields>}
        state = <optimized out>
        num_requests = 1
        dq = @0x5c7948d4
        st = {state = 1594784992, index = 1550164792, info = 0x60797318, finished = 29820, writing = 24697, requested = 980}
        ec = {m_val = 0, m_cat = 0x601f7b90}
        bits = <optimized out>
        fast_mask = {m_bytes = 0x0, m_size = 0, m_own = false}
        speed = <optimized out>
        p = @0x5c66abc8
        prefer_whole_pieces = 1
        rq = @0x5c7948c8
        dont_pick_busy_blocks = true
        busy_block = {static invalid = {static invalid = <same as static member of an already seen type>, piece_index = 524287, block_index = 8191}, piece_index = 524287, block_index = 8191}
#16 0x5f9b36be in libtorrent::peer_connection::incoming_piece (this=0x5c7945f8, 
p=<optimized out>, data=<optimized out>) at peer_connection.cpp:2695
        __PRETTY_FUNCTION__ = "void libtorrent::peer_connection::incoming_piece(const libtorrent::peer_request&, libtorrent::disk_buffer_holder&)"
        post_checker_ = {t = {px = 0x5c715d50, pn = {pi_ = 0x5c7168f0}}}
        block_finished = {static invalid = {static invalid = <same as static member of an already seen type>, piece_index = 524287, block_index = 8191}, piece_index = 980, block_index = 9}
        was_finished = <optimized out>
        multi = <optimized out>
        now = {time = 47115469955}
        fs = @0x5c716918
        pending_b = {block = {static invalid = {static invalid = <same as static member of an already seen type>, piece_index = 524287, block_index = 8191}, piece_index = 980, block_index = 9}, skipped = 0, not_wanted = false, timed_out = false, busy = false}
        pi = {state = libtorrent::piece_picker::fast, index = 980, info = 0x0, finished = 0, writing = 1, requested = 15}
        _invariant_check = @0x607973d0
        finished_blocks = {<std::_Vector_base<libtorrent::piece_block, std::allocator<libtorrent::piece_block> >> = {_M_impl = {<std::allocator<libtorrent::piece_block>> = {<__gnu_cxx::new_allocator<libtorrent::piece_block>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = <optimized out>, _M_end_of_storage = <optimized out>}}, <No data fields>}
        t = {px = 0x5c715d50, pn = {pi_ = 0x5c7168f0}}
        block_index = <optimized out>
        write_queue_size = <optimized out>
        num_blocks = <optimized out>
#17 0x5f961bb4 in libtorrent::bt_peer_connection::on_piece (this=0x5c7945f8, 
received=<optimized out>) at bt_peer_connection.cpp:1255
        _invariant_check = @0x6079793c
        t = {px = 0x5c715d50, pn = {pi_ = 0x5c7168f0}}
        merkle = <optimized out>
        piece_bytes = 0
        p = {piece = 980, start = 147456, length = 16384}
        list_size = <optimized out>
        __PRETTY_FUNCTION__ = "void libtorrent::bt_peer_connection::on_piece(int)"
        recv_buffer = <optimized out>
        header_size = <optimized out>
        holder = {m_disk_pool = @0x5c65a338, m_buf = 0x0}
#18 0x5f960c32 in libtorrent::bt_peer_connection::dispatch_message 
(this=0x5c7945f8, received=101) at bt_peer_connection.cpp:1877
        _invariant_check = @0x60797a6c
        __PRETTY_FUNCTION__ = "bool libtorrent::bt_peer_connection::dispatch_message(int)"
        recv_buffer = <optimized out>
        packet_type = <optimized out>
#19 0x5f9639c2 in libtorrent::bt_peer_connection::on_receive (this=0x5c7945f8, 
error=<optimized out>, bytes_transferred=101) at bt_peer_connection.cpp:3296
        _invariant_check = @0x60797ae4
        t = {px = 0x5c715d50, pn = {pi_ = 0x5c7168f0}}
        recv_buffer = {begin = 0x5c76af10 "\a", end = 0x5c76afa0 "\230"}
        __PRETTY_FUNCTION__ = "virtual void libtorrent::bt_peer_connection::on_receive(const boost::system::error_code&, std::size_t)"
#20 0x5f9b7c66 in libtorrent::peer_connection::on_receive_data 
(this=0x5c7945f8, error=..., bytes_transferred=101) at peer_connection.cpp:5404
        _invariant_check = @0x60797cd4
        ec = {m_val = 1550167328, m_cat = 0x5c65ad0c}
        __PRETTY_FUNCTION__ = "void libtorrent::peer_connection::on_receive_data(const boost::system::error_code&, std::size_t)"
        me = {px = 0x5c7945f8}
        _c = {m_pc = @0x5c7945f8}
        _invariant_check = @0x60797cd0
        bytes_in_loop = 101
#21 0x5f9b89e2 in call<boost::intrusive_ptr<libtorrent::peer_connection> const, 
boost::system::error_code const, unsigned int> (b1=<optimized out>, 
u=<optimized out>, this=<optimized out>, b2=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/bind/mem_fn_template.hpp:271
No locals.
#22 operator()<boost::intrusive_ptr<libtorrent::peer_connection> > 
(a2=<optimized out>, u=<optimized out>, this=<optimized out>, a1=<optimized 
out>) at 
/home/mike/proj/test/boost/build/include/boost/bind/mem_fn_template.hpp:294
No locals.
#23 operator()<boost::_mfi::mf2<void, libtorrent::peer_connection, const 
boost::system::error_code&, unsigned int>, boost::_bi::list2<const 
boost::system::error_code&, unsigned int const&> > (a=<synthetic pointer>, 
f=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/bind/bind.hpp:397
No locals.
#24 operator()<boost::system::error_code, unsigned int> (this=<optimized out>, 
a1=<optimized out>, a2=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/bind/bind_template.hpp:108
No locals.
#25 operator()<boost::system::error_code, unsigned int> (a0=<optimized out>, 
this=<optimized out>, a1=<optimized out>) at 
../include/libtorrent/peer_connection.hpp:1228
No locals.
#26 
boost::detail::function::void_function_obj_invoker2<libtorrent::peer_connection:
:allocating_handler<boost::_bi::bind_t<void, boost::_mfi::mf2<void, 
libtorrent::peer_connection, boost::system::error_code const&, unsigned int>, 
boost::_bi::list3<boost::_bi::value<boost::intrusive_ptr<libtorrent::peer_connec
tion> >, boost::arg<1>, boost::arg<2> > >, 300u>, void, 
boost::system::error_code const&, unsigned int>::invoke 
(function_obj_ptr=<optimized out>, a0=<optimized out>, a1=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/function/function_template.hpp:15
3
        f = <optimized out>
#27 0x5f93b86e in operator() (a1=<optimized out>, a0=..., this=0x60797dcc) at 
/home/mike/proj/test/boost/build/include/boost/function/function_template.hpp:10
13
No locals.
#28 operator()<boost::function2<void, const boost::system::error_code&, 
unsigned int>, boost::_bi::list0> (f=..., this=0x60797ddc, a=<optimized out>) 
at /home/mike/proj/test/boost/build/include/boost/bind/bind.hpp:313
No locals.
#29 operator() (this=0x60797dcc) at 
/home/mike/proj/test/boost/build/include/boost/bind/bind_template.hpp:20
No locals.
#30 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=access outside bounds of object 
referenced via synthetic pointer
) at 
/home/mike/proj/test/boost/build/include/boost/asio/handler_invoke_hook.hpp:64
No locals.
#31 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> > >, 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=..., context=<optimized out>) 
at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/handler_invoke_helper
s.hpp:39
No locals.
#32 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=0x5c664598, 
base=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/completion_handler.hp
p:63
        h = <optimized out>
        p = {h = 0x60797db0, v = 0x0, p = 0x0}
        handler = {f_ = {<boost::function_base> = {vtable = 0x5fde0ec0, functor = {obj_ptr = 0x5c4528e8, type = {type = 0x5c4528e8, const_qualified = 232, volatile_qualified = 172}, func_ptr = 0x5c4528e8, bound_memfunc_ptr = {memfunc_ptr = (void (boost::detail::function::X::*)(boost::detail::function::X * const, int)) 0x5c4528e8, this adjustment 775083636, obj_ptr = 0x5c65ad0c}, obj_ref = {obj_ptr = 0x5c4528e8, is_const_qualified = 232, is_volatile_qualified = 172}, data = 232 '\350'}}, <std::binary_function<boost::system::error_code const&, unsigned int, void>> = {<No data fields>}, static args = <optimized out>, static arity = <optimized out>}, l_ = {<boost::_bi::storage2<boost::_bi::value<boost::system::error_code>, boost::_bi::value<unsigned int> >> = {<boost::_bi::storage1<boost::_bi::value<boost::system::error_code> >> = {a1_ = {t_ = {m_val = 0, m_cat = 0x601f7b90}}}, a2_ = {t_ = 101}}, <No data fields>}}
#33 0x5f86aa1a in complete (owner=..., this=0x5c79dd80) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/task_io_service_opera
tion.hpp:35
No locals.
#34 boost::asio::detail::task_io_service::do_one (this=0x5c664598, lock=..., 
this_idle_thread=0x60797e7c) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/impl/task_io_service.
ipp:278
        on_exit = {task_io_service_ = 0x5c664598}
        more_handlers = <optimized out>
        polling = false
        task_has_run = <optimized out>
#35 0x5f86b660 in boost::asio::detail::task_io_service::run (this=0x5c664598, 
ec=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/impl/task_io_service.
ipp:130
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, owner_ = 0x5c664598, next_ = 0x0}
        this_idle_thread = {wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {value = 0}, signalled_ = false}, next = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x5c6645ac, locked_ = false}
        n = 44925
#36 0x5f89d080 in libtorrent::aux::session_impl::main_thread (this=0x5c65a008) 
at session_impl.cpp:4759
        ec = {m_val = 0, m_cat = 0x601f7b90}
        __PRETTY_FUNCTION__ = "void libtorrent::aux::session_impl::main_thread()"
        stop_loop = <optimized out>
#37 0x5f89ee7a in operator() (p=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/bind/mem_fn_template.hpp:49
No locals.
#38 operator()<boost::_mfi::mf0<void, libtorrent::aux::session_impl>, 
boost::_bi::list0> (f=<optimized out>, this=<optimized out>, a=<optimized out>) 
at /home/mike/proj/test/boost/build/include/boost/bind/bind.hpp:253
No locals.
#39 operator() (this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/bind/bind_template.hpp:20
No locals.
#40 boost::asio::detail::posix_thread::func<boost::_bi::bind_t<void, 
boost::_mfi::mf0<void, libtorrent::aux::session_impl>, 
boost::_bi::list1<boost::_bi::value<libtorrent::aux::session_impl*> > > >::run 
(this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/posix_thread.hpp:82
No locals.
#41 0x5f865f82 in boost::asio::detail::boost_asio_detail_posix_thread_function 
(arg=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/impl/posix_thread.ipp
:64
        func = {ptr = 0x5c6483f0}
#42 0x401103dc in __thread_entry () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#43 0x4010fac8 in pthread_create () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#44 0x00000000 in ?? ()
No symbol table info available.

Original comment by ygao....@gmail.com on 7 Nov 2013 at 5:54

GoogleCodeExporter commented 8 years ago
Thread 27 (Thread 8926):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x5f96d97e in 
wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > 
(lock=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/posix_event.hpp:80
No locals.
#4  libtorrent::disk_io_thread::thread_fun (this=0x5c65a338) at 
disk_io_thread.cpp:1527
        j = {action = libtorrent::disk_io_job::write, buffer = 0x5c88a000 "^<\025T\364\232\326EQ\001\024\223\246\016!]ժ,4ڙDM\353%\222\220ᇔ\315)H)A\273\273\313l\277H`\220|", buffer_size = 16384, storage = {px = 0x5c716918}, piece = 980, offset = 147456, str = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x601f9210 ""}}, error_file = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x601f9210 ""}}, max_cache_line = 0, cache_min_time = 0, resume_data = {px = 0x0, pn = {pi_ = 0x0}}, error = {m_val = 0, m_cat = 0x601f7b90}, callback = {<boost::function2<void, int, libtorrent::disk_io_job const&>> = {<boost::function_base> = {vtable = 0x0, functor = {obj_ptr = 0x0, type = {type = 0x0, const_qualified = false, volatile_qualified = false}, func_ptr = 0, bound_memfunc_ptr = {memfunc_ptr = NULL, obj_ptr = 0x0}, obj_ref = {obj_ptr = 0x0, is_const_qualified = false, is_volatile_qualified = false}, data = 0 '\000'}}, <std::binary_function<int, libtorrent::disk_io_job const&, void>> = {<No data fields>}, static args = <optimized out>, static arity = <optimized out>}, <No data fields>}, start_time = {time = 47115484104}}
        pick_read_job = <optimized out>
        jl = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x5c65a580, locked_ = true}
        operation_start = <optimized out>
        read_job_every = <optimized out>
        unchoke_limit = <optimized out>
        ret = <optimized out>
        job_start = <optimized out>
        now = {time = 47115484168}
        holder = {m_disk_pool = @0x5c65a338, m_buf = 0x0}
        elevator_direction = 1
        need_update_elevator_pos = false
        immediate_jobs_in_row = 917
        __PRETTY_FUNCTION__ = "void libtorrent::disk_io_thread::thread_fun()"
        elevator_job_pos = {_M_node = 0x5c65a6d4}
        last_elevator_pos = 57573376
#5  0x5f97122e in operator() (p=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/bind/mem_fn_template.hpp:49
No locals.
#6  operator()<boost::_mfi::mf0<void, libtorrent::disk_io_thread>, 
boost::_bi::list0> (f=<optimized out>, this=<optimized out>, a=<optimized out>) 
at /home/mike/proj/test/boost/build/include/boost/bind/bind.hpp:253
No locals.
#7  operator() (this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/bind/bind_template.hpp:20
No locals.
#8  boost::asio::detail::posix_thread::func<boost::_bi::bind_t<void, 
boost::_mfi::mf0<void, libtorrent::disk_io_thread>, 
boost::_bi::list1<boost::_bi::value<libtorrent::disk_io_thread*> > > >::run 
(this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/posix_thread.hpp:82
No locals.
#9  0x5f865f82 in boost::asio::detail::boost_asio_detail_posix_thread_function 
(arg=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/impl/posix_thread.ipp
:64
        func = {ptr = 0x5c500af0}
#10 0x401103dc in __thread_entry () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#11 0x4010fac8 in pthread_create () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#12 0x00000000 in ?? ()
No symbol table info available.

Thread 26 (Thread 8925):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x5f87fc6c in libtorrent::session::status (this=0x5c655fd0) at 
session.cpp:749
        done = <optimized out>
        r = {has_incoming_connections = false, upload_rate = 0, download_rate = 16960, total_download = 0, total_upload = 6661205499676136214, payload_upload_rate = 1768120656, payload_download_rate = 543385958, total_payload_download = 3544388273708034386, total_payload_upload = 8100095918052760883, ip_overhead_upload_rate = 1767266336, ip_overhead_download_rate = 1096491076, total_ip_overhead_download = -461462637337824445, total_ip_overhead_upload = 1528838727, dht_upload_rate = 0, dht_download_rate = 0, total_dht_download = 0, total_dht_upload = 1180591625252895768, tracker_upload_rate = 0, tracker_download_rate = -22740, total_tracker_download = 6907567147350730212, total_tracker_upload = 4616766977623457792, total_redundant_bytes = 803158884455, total_failed_bytes = 1576319316, num_peers = 0, num_unchoked = 1945157056, allowed_upload_slots = -1073741824, up_bandwidth_queue = 25, down_bandwidth_queue = 1612672480, up_bandwidth_bytes_queue = 0, down_bandwidth_bytes_queue = 1550943912, optimistic_unchoke_counter = 1074869187, unchoke_counter = 199, disk_write_queue = 1000, disk_read_queue = 0, dht_nodes = 95929079, dht_node_cache = 0, dht_torrents = 25, dht_global_nodes = 16363706751348192, active_requests = {<std::_Vector_base<libtorrent::dht_lookup, std::allocator<libtorrent::dht_lookup> >> = {_M_impl = {<std::allocator<libtorrent::dht_lookup>> = {<__gnu_cxx::new_allocator<libtorrent::dht_lookup>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, dht_routing_table = {<std::_Vector_base<libtorrent::dht_routing_bucket, std::allocator<libtorrent::dht_routing_bucket> >> = {_M_impl = {<std::allocator<libtorrent::dht_routing_bucket>> = {<__gnu_cxx::new_allocator<libtorrent::dht_routing_bucket>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, dht_total_allocations = 1576319360, utp_stats = {num_idle = 1602735201, num_syn_sent = 1595501301, num_connected = -22740, num_fin_sent = -23048, num_close_wait = 1608293304}, peerlist_size = 1604363764}
        l = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x5c65a010, locked_ = true}
#4  0x5f19a730 in handle_alert (p_libtorrent=0x5c655948, ses=<optimized out>, 
a=0x5c84da10) at ../../test/torrent/libtorrent.cpp:930
        sess_stat = {has_incoming_connections = false, upload_rate = 0, download_rate = 16960, total_download = 0, total_upload = 6661205499676136214, payload_upload_rate = 1768120656, payload_download_rate = 543385958, total_payload_download = 3544388273708034386, total_payload_upload = 8100095918052760883, ip_overhead_upload_rate = 1767266336, ip_overhead_download_rate = 1096491076, total_ip_overhead_download = -461462637337824445, total_ip_overhead_upload = 1528838727, dht_upload_rate = 0, dht_download_rate = 0, total_dht_download = 0, total_dht_upload = 1180591625252895768, tracker_upload_rate = 0, tracker_download_rate = -22740, total_tracker_download = 6907567147350730212, total_tracker_upload = 4616766977623457792, total_redundant_bytes = 803158884455, total_failed_bytes = 1576319316, num_peers = 0, num_unchoked = 1945157056, allowed_upload_slots = -1073741824, up_bandwidth_queue = 25, down_bandwidth_queue = 1612672480, up_bandwidth_bytes_queue = 0, down_bandwidth_bytes_queue = 1550943912, optimistic_unchoke_counter = 1074869187, unchoke_counter = 199, disk_write_queue = 1000, disk_read_queue = 0, dht_nodes = 95929079, dht_node_cache = 0, dht_torrents = 25, dht_global_nodes = 16363706751348192, active_requests = {<std::_Vector_base<libtorrent::dht_lookup, std::allocator<libtorrent::dht_lookup> >> = {_M_impl = {<std::allocator<libtorrent::dht_lookup>> = {<__gnu_cxx::new_allocator<libtorrent::dht_lookup>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, dht_routing_table = {<std::_Vector_base<libtorrent::dht_routing_bucket, std::allocator<libtorrent::dht_routing_bucket> >> = {_M_impl = {<std::allocator<libtorrent::dht_routing_bucket>> = {<__gnu_cxx::new_allocator<libtorrent::dht_routing_bucket>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, dht_total_allocations = 1576319360, utp_stats = {num_idle = 1602735201, num_syn_sent = 1595501301, num_connected = -22740, num_fin_sent = -23048, num_close_wait = 1608293304}, peerlist_size = 1604363764}
        i = {_M_current = 0x5c890e18}
        now = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x5c7be7ac "00:01:35.932"}}
        p = 0x5c84da10
        state_str = {0x5fa95da0 "checking (q)", 0x5fa95db0 "checking", 0x5fa95dbc "dl metadata", 0x5fa95dc8 "downloading", 0x5fa95dd4 "finished", 0x5fa95de0 "seeding", 0x5fa95de8 "allocating", 0x5fa95df4 "checking (r)"}
#5  0x5f19ce30 in processAlert (p_this=0x5c655948) at 
../../test/torrent/libtorrent.cpp:1024
        need_resort = false
        i = {_M_cur = 0x5c895d08, _M_first = <optimized out>, _M_last = 0x5c895f08, _M_node = 0x5c716694}
        end = {_M_cur = 0x5c895d80, _M_first = <optimized out>, _M_last = <optimized out>, _M_node = <optimized out>}
        p_libtorrent = 0x5c655948
        alerts = {<std::_Deque_base<libtorrent::alert*, std::allocator<libtorrent::alert*> >> = {_M_impl = {<std::allocator<libtorrent::alert*>> = {<__gnu_cxx::new_allocator<libtorrent::alert*>> = {<No data fields>}, <No data fields>}, _M_map = 0x5c716688, _M_map_size = 8, _M_start = {_M_cur = 0x5c895d08, _M_first = 0x5c895d08, _M_last = 0x5c895f08, _M_node = 0x5c716694}, _M_finish = {_M_cur = 0x5c895d80, _M_first = 0x5c895d08, _M_last = 0x5c895f08, _M_node = 0x5c716694}}}, <No data fields>}
        now = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x5c71869c "00:01:35.929"}}
#6  0x5f19d4da in startTorrent (p_this=0x5c655948) at 
../../test/torrent/libtorrent.cpp:1193
        p_libtorrent = 0x5c655948
        ec = {m_val = 0, m_cat = 0x601f7b90}
        b_requested = true
        psz_path = <optimized out>
        ps = {hostname = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x601f9210 ""}}, port = 0, username = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x601f9210 ""}}, password = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x601f9210 ""}}, type = libtorrent::proxy_settings::none, proxy_hostnames = true, proxy_peer_connections = true}
        in = {<std::_Vector_base<char, std::allocator<char> >> = {_M_impl = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}
        torrents = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x5c2313d0, _M_finish = 0x5c2313d4, _M_end_of_storage = 0x5c2313d4}}, <No data fields>}
#7  0x5f1975fc in Open (p_this=<optimized out>) at 
../../test/torrent/torrent.cpp:191
        p_access = 0x5c655734
        p_sys = 0x5c655810
        fd = 79
        psz_name = 0x5c6557b0 "/storage/emulated/0/test/torrent/Pacific+Rim+[2013]+BRRip+XViD+[AC3]+-ETRG.torrent"

.... 

Original comment by ygao....@gmail.com on 7 Nov 2013 at 5:54

GoogleCodeExporter commented 8 years ago
Thread 25 (Thread 8924):
#0  0x40118fe4 in __ioctl () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x4012c9b0 in ioctl () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x40044ba4 in ?? ()
No symbol table info available.
#3  0x40044ba4 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 24 (Thread 8877):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x5f86a9ca in 
wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > 
(lock=..., this=0x60597eac) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/posix_event.hpp:80
No locals.
#4  boost::asio::detail::task_io_service::do_one (this=0x5c64d588, lock=..., 
this_idle_thread=0x60597eac) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/impl/task_io_service.
ipp:289
        polling = false
        task_has_run = <optimized out>
#5  0x5f86b660 in boost::asio::detail::task_io_service::run (this=0x5c64d588, 
ec=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/impl/task_io_service.
ipp:130
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, owner_ = 0x5c64d588, next_ = 0x0}
        this_idle_thread = {wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {value = -8}, signalled_ = false}, next = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x5c64d59c, locked_ = true}
        n = 5
#6  0x5f86bb92 in boost::asio::io_service::run (this=0x5c4bdbc8) at 
/home/mike/proj/test/boost/build/include/boost/asio/impl/io_service.ipp:57
        ec = {m_val = 0, m_cat = 0x601f7b90}
        s = <optimized out>
#7  0x5f865f82 in boost::asio::detail::boost_asio_detail_posix_thread_function 
(arg=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/impl/posix_thread.ipp
:64
        func = {ptr = 0x5c6a1788}
#8  0x401103dc in __thread_entry () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#9  0x4010fac8 in pthread_create () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#10 0x00000000 in ?? ()
No symbol table info available.

Thread 23 (Thread 8876):
#0  0x40119ee4 in epoll_wait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x5f869858 in boost::asio::detail::epoll_reactor::run (this=0x5c4bdb80, 
block=<optimized out>, ops=...) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/impl/epoll_reactor.ip
p:240
        timeout = 38
        events = {{events = 1, data = {ptr = 0x5c4bdba4, fd = 1548475300, u32 = 1548475300, u64 = 1548475300}}, {events = 0, data = {ptr = 0x60497a3c, fd = 1615428156, u32 = 1615428156, u64 = 4616532748902431292}}, {events = 0, data = {ptr = 0x601f9204, fd = 1612681732, u32 = 1612681732, u64 = 6938211100670267908}}, {events = 0, data = {ptr = 0xc0000000, fd = -1073741824, u32 = 3221225472, u64 = 3221225472}}, {events = 0, data = {ptr = 0x60497a3c, fd = 1615428156, u32 = 1615428156, u64 = 4616532748902431292}}, {events = 0, data = {ptr = 0x601f9204, fd = 1612681732, u32 = 1612681732, u64 = 6938211100670267908}}, {events = 0, data = {ptr = 0xc0000000, fd = -1073741824, u32 = 3221225472, u64 = 3221225472}}, {events = 0, data = {ptr = 0x60497a3c, fd = 1615428156, u32 = 1615428156, u64 = 4616532748902431292}}, {events = 0, data = {ptr = 0x601f9204, fd = 1612681732, u32 = 1612681732, u64 = 6938211100670267908}}, {events = 0, data = {ptr = 0xc0000000, fd = -1073741824, u32 = 3221225472, u64 = 6938210844580773888}}, {events = 4294967294, data = {ptr = 0x31, fd = 49, u32 = 49, u64 = 4616532747287003185}}, {events = 1615428096, data = {ptr = 0xffffffff, fd = -1, u32 = 4294967295, u64 = 214748364799}}, {events = 1615428096, data = {ptr = 0x5c65e610, fd = 1550181904, u32 = 1550181904, u64 = 6888248446133069328}}, {events = 0, data = {ptr = 0x5c4bde88, fd = 1548476040, u32 = 1548476040, u64 = 6650653951988063880}}, {events = 1548476040, data = {ptr = 0x5c4bde88, fd = 1548476040, u32 = 1548476040, u64 = 6886770075438407304}}, {events = 1615427447, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6926390610324619264}}, {events = 1650552389, data = {ptr = 0x77654e3c, fd = 2003127868, u32 = 2003127868, u64 = 6659169429481672252}}, {events = 1608293304, data = {ptr = 0x5c4bde70, fd = 1548476016, u32 = 1548476016, u64 = 3674937726979530352}}, {events = 1548476040, data = {ptr = 0x5fd7fdec, fd = 1607990764, u32 = 1607990764, u64 = 6906265236997144044}}, {events = 825112113, data = {ptr = 0x31207461, fd = 824210529, u32 = 824210529, u64 = 3543825178005894241}}, {events = 1, data = {ptr = 0x60497840, fd = 1615427648, u32 = 1615427648, u64 = 5910394944}}, {events = 79, data = {ptr = 0x60497f08, fd = 1615429384, u32 = 1615429384, u64 = 6938208918829629192}}, {events = 0, data = {ptr = 0x5c4bdbb4, fd = 1548475316, u32 = 1548475316, u64 = 7299339939492912052}}, {events = 0, data = {ptr = 0x1, fd = 1, u32 = 1, u64 = 6658237831892172801}}, {events = 1608293304, data = {ptr = 0x5c66d008, fd = 1550241800, u32 = 1550241800, u64 = 6884122159382712328}}, {events = 1550194748, data = {ptr = 0x5c66d868, fd = 1550243944, u32 = 1550243944, u64 = 6895510879348381800}}, {events = 1607943244, data = {ptr = 0x5c66d868, fd = 1550243944, u32 = 1550243944, u64 = 6895510879348381800}}, {events = 1607943244, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 1615427576, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 1615427552, data = {ptr = 0x5fd7444c, fd = 1607943244, u32 = 1607943244, u64 = 6906062067864126540}}, {events = 3221225472, data = {ptr = 0x5c65590c, fd = 1550145804, u32 = 1550145804, u64 = 17985281437378894092}}, {events = 1550086280, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x604977d4, fd = 1615427540, u32 = 1615427540, u64 = 1615427540}}, {events = 0, data = {ptr = 0x604977e4, fd = 1615427556, u32 = 1615427556, u64 = 1615427556}}, {events = 1615427564, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6938208625156423680}}, {events = 1615427580, data = {ptr = 0x5c66d008, fd = 1550241800, u32 = 1550241800, u64 = 1550241800}}, {events = 1548205888, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6938210635201118208}}, {events = 1615428400, data = {ptr = 0x5c69b048, fd = 1550430280, u32 = 1550430280, u64 = 6884094164786065480}}, {events = 4294902280, data = {ptr = 0x60497908, fd = 1615427848, u32 = 1615427848, u64 = 6658237833507600648}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 4294902280, data = {ptr = 0x5c6a1fd8, fd = 1550458840, u32 = 1550458840, u64 = 6659169497748479960}}, {events = 37294, data = {ptr = 0x5c6a2dc8, fd = 1550462408, u32 = 1550462408, u64 = 6659170013144559048}}, {events = 1550458720, data = {ptr = 0x60497908, fd = 1615427848, u32 = 1615427848, u64 = 1615427848}}, {events = 1075105260, data = {ptr = 0xc0000000, fd = -1073741824, u32 = 3221225472, u64 = 282394099712}}, {events = 1615428124, data = {ptr = 0x5c7e0680, fd = 1551763072, u32 = 1551763072, u64 = 4616528007194871424}}, {events = 3221225472, data = {ptr = 0x2f, fd = 47, u32 = 47, u64 = 47}}, {events = 32, data = {ptr = 0x60497a1c, fd = 1615428124, u32 = 1615428124, u64 = 16363706754103836}}, {events = 3221225472, data = {ptr = 0x60497a1c, fd = 1615428124, u32 = 1615428124, u64 = 1615428124}}, {events = 3221225472, data = {ptr = 0xc0000000, fd = -1073741824, u32 = 3221225472, u64 = 106300440576}}, {events = 1615428756, data = {ptr = 0x23, fd = 35, u32 = 35, u64 = 4616528005643108387}}, {events = 1552139560, data = {ptr = 0x60497a1c, fd = 1615428124, u32 = 1615428124, u64 = 91809741340}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6659056401119182848}}, {events = 1551763012, data = {ptr = 0x60497c58, fd = 1615428696, u32 = 1615428696, u64 = 6885024892854041688}}, {events = 0, data = {ptr = 0x5f8c85a9, fd = 1603044777, u32 = 1603044777, u64 = 1603044777}}, {events = 1550241816, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6658237900611649536}}, {events = 1603044777, data = {ptr = 0x5c66d018, fd = 1550241816, u32 = 1550241816, u64 = 6885024892788854808}}, {events = 0, data = {ptr = 0x5f8c85a9, fd = 1603044777, u32 = 1603044777, u64 = 1603044777}}, {events = 1550241816, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6658237900611649536}}, {events = 0, data = {ptr = 0x604979c4, fd = 1615428036, u32 = 1615428036, u64 = 6938210550917200324}}, {events = 1615428032, data = {ptr = 0x5, fd = 5, u32 = 5, u64 = 12884901893}}, {events = 1615428204, data = {ptr = 0x604979c4, fd = 1615428036, u32 = 1615428036, u64 = 6938210602456807876}}, {events = 5, data = {ptr = 0xc, fd = 12, u32 = 12, u64 = 263882790666252}}, {events = 12, data = {ptr = 0x640, fd = 1600, u32 = 1600, u64 = 257698039360}}, {events = 1550456464, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 137438953472}}, {events = 2, data = {ptr = 0x604979f0, fd = 1615428080, u32 = 1615428080, u64 = 6659159670928275952}}, {events = 1550456432, data = {ptr = 0xc0000000, fd = -1073741824, u32 = 3221225472, u64 = 123480309760}}, {events = 1550246288, data = {ptr = 0x5c878570, fd = 1552385392, u32 = 1552385392, u64 = 6658257195157128560}}, {events = 1548475264, data = {ptr = 0x5c4bdb98, fd = 1548475288, u32 = 1548475288, u64 = 6650650464474618776}}, {events = 1615428152, data = {ptr = 0x5c66e1a4, fd = 1550246308, u32 = 1550246308, u64 = 6884472190627406244}}, {events = 4185531139, data = {ptr = 0x5c66e1a4, fd = 1550246308, u32 = 1550246308, u64 = 6658251371179336100}}, {events = 1608293304, data = {ptr = 0x5c66e190, fd = 1550246288, u32 = 1550246288, u64 = 5845213584}}, {events = 1615428236, data = {ptr = 0xf9789c63, fd = -109536157, u32 = 4185431139, u64 = 6884473550472256611}}, {events = 1552385368, data = {ptr = 0x5c66e1a4, fd = 1550246308, u32 = 1550246308, u64 = 6884231474890334628}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6884231473340088320}}, {events = 0, data = {ptr = 0x5f89b40d, fd = 1602860045, u32 = 1602860045, u64 = 1602860045}}, {events = 1550241800, data = {ptr = 0xf9789c63, fd = -109536157, u32 = 4185431139, u64 = 47135104099}}, {events = 1550246280, data = {ptr = 0x5c66dc48, fd = 1550244936, u32 = 1550244936, u64 = 44499917896}}, {events = 1550241800, data = {ptr = 0xf255a529, fd = -229268183, u32 = 4065699113, u64 = 47015372073}}, {events = 1550218532, data = {ptr = 0x5c661638, fd = 1550194232, u32 = 1550194232, u64 = 6658137898143323704}}, {events = 1548475264, data = {ptr = 0x5c806034, fd = 1551917108, u32 = 1551917108, u64 = 6907567144607703092}}, {events = 4185431139, data = {ptr = 0x5c66dc58, fd = 1550244952, u32 = 1550244952, u64 = 6658257349773810776}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 4320737099776}}, {events = 1607946624, data = {ptr = 0x5fd735c4, fd = 1607939524, u32 = 1607939524, u64 = 6658247179348948420}}, {events = 937505566, data = {ptr = 0xf9789c63, fd = -109536157, u32 = 4185431139, u64 = 47135104099}}, {events = 2233402842, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 8797605061149589504}}, {events = 1636824532, data = {ptr = 0x18ae9, fd = 101097, u32 = 101097, u64 = 101097}}, {events = 101097, data = {ptr = 0x6a01a8c0, fd = 1778493632, u32 = 1778493632, u64 = 1778493632}}, {events = 1550243872, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 5000, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 1602860045, data = {ptr = 0x5c66d008, fd = 1550241800, u32 = 1550241800, u64 = 1550241800}}, {events = 3776577538, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0xf92bdb97, fd = -114566249, u32 = 4180401047, u64 = 47130074007}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6659062276634443776}}, {events = 128, data = {ptr = 0x1, fd = 1, u32 = 1, u64 = 1}}, {events = 0, data = {ptr = 0x5c839f28, fd = 1552129832, u32 = 1552129832, u64 = 5847097128}}, {events = 1615428796, data = {ptr = 0xb, fd = 11, u32 = 11, u64 = 6666346867585974283}}, {events = 1615428776, data = {ptr = 0x5c69a850, fd = 1550428240, u32 = 1550428240, u64 = 6938214828639627344}}, {events = 1615429080, data = {ptr = 0x5c69a850, fd = 1550428240, u32 = 1550428240, u64 = 6938214828639627344}}, {events = 1550428432, data = {ptr = 0x5c839f30, fd = 1552129840, u32 = 1552129840, u64 = 6666346869138104112}}, {events = 1550456512, data = {ptr = 0x20, fd = 32, u32 = 32, u64 = 343597383712}}, {events = 5, data = {ptr = 0x60497cb0, fd = 1615428784, u32 = 1615428784, u64 = 6659159808367230128}}, {events = 1550456464, data = {ptr = 0xf979deec, fd = -109453588, u32 = 4185513708, u64 = 47135186668}}, {events = 1550428724, data = {ptr = 0x5c7de8d0, fd = 1551755472, u32 = 1551755472, u64 = 6659040665910765776}}, {events = 1548475264, data = {ptr = 0x5c4bdb98, fd = 1548475288, u32 = 1548475288, u64 = 6650650464474618776}}, {events = 1615428856, data = {ptr = 0x5c69aa34, fd = 1550428724, u32 = 1550428724, u64 = 6884472190627588660}}, {events = 4185513708, data = {ptr = 0x5c69aa34, fd = 1550428724, u32 = 1550428724, u64 = 6650650378577226292}}, {events = 1607924508, data = {ptr = 0x5c7de8b8, fd = 1551755448, u32 = 1551755448, u64 = 6938214605302655160}}, {events = 1550428240, data = {ptr = 0x60497d3c, fd = 1615428924, u32 = 1615428924, u64 = 6887189101104692540}}, {events = 1551755448, data = {ptr = 0xf4240, fd = 1000000, u32 = 1000000, u64 = 1000000}}, {events = 4184513708, data = {ptr = 0x5c69a850, fd = 1550428240, u32 = 1550428240, u64 = 6887187254203754576}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6659038585594839040}}, {events = 1603548241, data = {ptr = 0x5c69a850, fd = 1550428240, u32 = 1550428240, u64 = 6938214605301327952}}, {events = 0, data = {ptr = 0x5f943451, fd = 1603548241, u32 = 1603548241, u64 = 1603548241}}, {events = 1550428240, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6659038585594839040}}, {events = 1075105260, data = {ptr = 0xc0000000, fd = -1073741824, u32 = 3221225472, u64 = 6658066173860511744}}, {events = 1615429056, data = {ptr = 0x5c878560, fd = 1552385376, u32 = 1552385376, u64 = 6938215120699360608}}, {events = 1612675984, data = {ptr = 0x5c878560, fd = 1552385376, u32 = 1552385376, u64 = 6938215739174651232}}, {events = 1615429244, data = {ptr = 0x5fd6fb1c, fd = 1607924508, u32 = 1607924508, u64 = 6884298210149858076}}, {events = 0, data = {ptr = 0x5f89b40d, fd = 1602860045, u32 = 1602860045, u64 = 1602860045}}, {events = 1550241800, data = {ptr = 0x601f7b90, fd = 1612675984, u32 = 1612675984, u64 = 6884231474952764304}}}
        num_events = <optimized out>
        check_timers = <optimized out>
#2  0x5f86a8fc in boost::asio::detail::task_io_service::do_one 
(this=0x5c6633e8, lock=..., this_idle_thread=0x60497e7c) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/impl/task_io_service.
ipp:264
        completed_ops = {<boost::noncopyable_::noncopyable> = {<No data fields>}, front_ = 0x0, back_ = 0x0}
        c = {task_io_service_ = 0x5c6633e8, lock_ = 0x60497e74, ops_ = 0x60497e1c}
        more_handlers = <optimized out>
        polling = false
        task_has_run = true
#3  0x5f86b660 in boost::asio::detail::task_io_service::run (this=0x5c6633e8, 
ec=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/impl/task_io_service.
ipp:130
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, owner_ = 0x5c6633e8, next_ = 0x0}
        this_idle_thread = {wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {value = 0}, signalled_ = false}, next = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x5c6633fc, locked_ = false}
        n = 1625
#4  0x5f89d080 in libtorrent::aux::session_impl::main_thread (this=0x5c66d008) 
at session_impl.cpp:4759
        ec = {m_val = 0, m_cat = 0x601f7b90}
        __PRETTY_FUNCTION__ = "void libtorrent::aux::session_impl::main_thread()"
        stop_loop = <optimized out>
#5  0x5f89ee7a in operator() (p=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/bind/mem_fn_template.hpp:49
No locals.
#6  operator()<boost::_mfi::mf0<void, libtorrent::aux::session_impl>, 
boost::_bi::list0> (f=<optimized out>, this=<optimized out>, a=<optimized out>) 
at /home/mike/proj/test/boost/build/include/boost/bind/bind.hpp:253
No locals.
#7  operator() (this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/bind/bind_template.hpp:20
No locals.
#8  boost::asio::detail::posix_thread::func<boost::_bi::bind_t<void, 
boost::_mfi::mf0<void, libtorrent::aux::session_impl>, 
boost::_bi::list1<boost::_bi::value<libtorrent::aux::session_impl*> > > >::run 
(this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/posix_thread.hpp:82
No locals.
#9  0x5f865f82 in boost::asio::detail::boost_asio_detail_posix_thread_function 
(arg=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/impl/posix_thread.ipp
:64
        func = {ptr = 0x5c64d638}
#10 0x401103dc in __thread_entry () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#11 0x4010fac8 in pthread_create () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#12 0x00000000 in ?? ()
No symbol table info available.

Original comment by ygao....@gmail.com on 7 Nov 2013 at 5:55

GoogleCodeExporter commented 8 years ago
Thread 22 (Thread 8875):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x5f96d97e in 
wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > 
(lock=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/posix_event.hpp:80
No locals.
#4  libtorrent::disk_io_thread::thread_fun (this=0x5c66d338) at 
disk_io_thread.cpp:1527
        j = {action = libtorrent::disk_io_job::read, buffer = 0x0, buffer_size = 0, storage = {px = 0x0}, piece = 0, offset = 0, str = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x0}}, error_file = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x0}}, max_cache_line = 0, cache_min_time = 0, resume_data = {px = 0x0, pn = {pi_ = 0x0}}, error = {m_val = 0, m_cat = 0x0}, callback = {<boost::function2<void, int, libtorrent::disk_io_job const&>> = {<boost::function_base> = {vtable = 0x0, functor = {obj_ptr = 0x0, type = {type = 0x0, const_qualified = false, volatile_qualified = false}, func_ptr = 0, bound_memfunc_ptr = {memfunc_ptr = NULL, obj_ptr = 0x0}, obj_ref = {obj_ptr = 0x0, is_const_qualified = false, is_volatile_qualified = false}, data = 0 '\000'}}, <std::binary_function<int, libtorrent::disk_io_job const&, void>> = {<No data fields>}, static args = <optimized out>, static arity = <optimized out>}, <No data fields>}, start_time = {time = 0}}
        pick_read_job = <optimized out>
        jl = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x5c66d580, locked_ = true}
        operation_start = <optimized out>
        read_job_every = <optimized out>
        unchoke_limit = <optimized out>
        ret = <optimized out>
        job_start = <optimized out>
        now = {time = 0}
        holder = {m_disk_pool = @0x0, m_buf = 0x0}
        elevator_direction = 1
        need_update_elevator_pos = false
        immediate_jobs_in_row = 0
        __PRETTY_FUNCTION__ = "void libtorrent::disk_io_thread::thread_fun()"
        elevator_job_pos = {_M_node = 0x5c66d6d4}
        last_elevator_pos = 0
#5  0x5f97122e in operator() (p=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/bind/mem_fn_template.hpp:49
No locals.
#6  operator()<boost::_mfi::mf0<void, libtorrent::disk_io_thread>, 
boost::_bi::list0> (f=<optimized out>, this=<optimized out>, a=<optimized out>) 
at /home/mike/proj/test/boost/build/include/boost/bind/bind.hpp:253
No locals.
#7  operator() (this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/bind/bind_template.hpp:20
No locals.
#8  boost::asio::detail::posix_thread::func<boost::_bi::bind_t<void, 
boost::_mfi::mf0<void, libtorrent::disk_io_thread>, 
boost::_bi::list1<boost::_bi::value<libtorrent::disk_io_thread*> > > >::run 
(this=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/posix_thread.hpp:82
No locals.
#9  0x5f865f82 in boost::asio::detail::boost_asio_detail_posix_thread_function 
(arg=<optimized out>) at 
/home/mike/proj/test/boost/build/include/boost/asio/detail/impl/posix_thread.ipp
:64
        func = {ptr = 0x5c6633b8}
#10 0x401103dc in __thread_entry () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#11 0x4010fac8 in pthread_create () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#12 0x00000000 in ?? ()
No symbol table info available.

Thread 21 (Thread 8845):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x4082e1e2 in ?? ()
No symbol table info available.
#4  0x4082e1e2 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 20 (Thread 8844):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x4082e1e2 in ?? ()
No symbol table info available.
#4  0x4082e1e2 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 19 (Thread 8841):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x4082e1e2 in ?? ()
No symbol table info available.
#4  0x4082e1e2 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 18 (Thread 8840):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x4082e1e2 in ?? ()
No symbol table info available.
#4  0x4082e1e2 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 17 (Thread 8839):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x4082e1e2 in ?? ()
No symbol table info available.
#4  0x4082e1e2 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 16 (Thread 8838):
#0  0x40119ee4 in epoll_wait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x401a2b0c in ?? ()
No symbol table info available.
#2  0x401a2b0c in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 15 (Thread 8837):
#0  0x40119ee4 in epoll_wait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x401a2b0c in ?? ()
No symbol table info available.
#2  0x401a2b0c in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 14 (Thread 8831):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x5c317d0c in ?? ()
No symbol table info available.
Cannot access memory at address 0x0
#4  0x5c317d0c in ?? ()
No symbol table info available.
Cannot access memory at address 0x0
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 13 (Thread 8829):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x4082e1e2 in ?? ()
No symbol table info available.
#4  0x4082e1e2 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 12 (Thread 8828):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x4082e1e2 in ?? ()
No symbol table info available.
#4  0x4082e1e2 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 11 (Thread 8820):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x4082e1e2 in ?? ()
No symbol table info available.
#4  0x4082e1e2 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 10 (Thread 8618):
#0  0x40118fe4 in __ioctl () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x4012c9b0 in ioctl () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x40044ba4 in ?? ()
No symbol table info available.
#3  0x40044ba4 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 9 (Thread 8617):
#0  0x40118fe4 in __ioctl () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x4012c9b0 in ioctl () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x40044ba4 in ?? ()
No symbol table info available.
#3  0x40044ba4 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 8 (Thread 8616):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x4082e1e2 in ?? ()
No symbol table info available.
#4  0x4082e1e2 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 7 (Thread 8615):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x4082e1e2 in ?? ()
No symbol table info available.
#4  0x4082e1e2 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 6 (Thread 8614):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x4082e1e2 in ?? ()
No symbol table info available.
#4  0x4082e1e2 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 5 (Thread 8613):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x4084ec88 in ?? ()
No symbol table info available.
#4  0x4084ec88 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 4 (Thread 8612):
#0  0x40119108 in select () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x4083cc8e in ?? ()
No symbol table info available.
#2  0x4083cc8e in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 3 (Thread 8611):
#0  0x401199c8 in __rt_sigtimedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x4011e99a in sigwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4082d61e in ?? ()
No symbol table info available.
#3  0x4082d61e in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 2 (Thread 8610):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x4084da3a in ?? ()
No symbol table info available.
#4  0x4084da3a in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 1 (Thread 8606):
#0  0x4011a108 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x4010f0a0 in ?? () from /home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x5c44a144 in ?? ()
No symbol table info available.
#3  0x5c44a144 in ?? ()
No symbol table info available.
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) 

Original comment by ygao....@gmail.com on 7 Nov 2013 at 5:56

GoogleCodeExporter commented 8 years ago
boost version is 1_45. I will try to build new version for test.

Original comment by ygao....@gmail.com on 7 Nov 2013 at 6:03

GoogleCodeExporter commented 8 years ago
you might want to build without invariant-checks. It looks like the invariant 
checks are taking a very long time (is your ARM machine slower than a normal 
desktop by any chance?).

building with boost-build, specify "invariant-checks=off" or 
-DTORRENT_DISABLE_INVARIANT_CHECKS on gcc.

Original comment by arvid.no...@gmail.com on 7 Nov 2013 at 7:39

GoogleCodeExporter commented 8 years ago
Test with invariant check disabled with boost 53 gave new crash. Then went
back to boost 45, just the same.
Can we change that cond.wait() to have  a time out value?

Original comment by ygao....@gmail.com on 7 Nov 2013 at 9:36

GoogleCodeExporter commented 8 years ago
If you have any idea and let me do more test, please let me know. Thanks
very much!

Original comment by ygao....@gmail.com on 7 Nov 2013 at 10:08

GoogleCodeExporter commented 8 years ago
Do you have two session objects?

my understanding of what you're observing is that a call to session::status() 
blocks indefinitely.

This indicates that the session's main thread is either not processing messages 
at all, is stuck in a dead-lock with some other thread, or it has so many 
messages to process and they take so long that it appears to be stuck 
indefinitely.

The thread(s) of interest are the ones that has session_impl::main_thread() in 
theirs stacks. Both of the ones in the backtraces you posted appear to be alive 
(i.e. they don't appear to be stuck in a dead-lock). One of them is waiting for 
messages to process (in epoll) whereas the other one is running an invariant 
check (which can be quite expensive and add up).

Would you mind posting the stack traces from your main thread and the 
session_impl::main_thread() stacks from a build without invariant checks?

Original comment by arvid.no...@gmail.com on 7 Nov 2013 at 11:49

GoogleCodeExporter commented 8 years ago
also, would you mind filing a separate issue for the crash you see with boost 
1.53?

Original comment by arvid.no...@gmail.com on 7 Nov 2013 at 11:49

GoogleCodeExporter commented 8 years ago
Without invariant check back trace for threads

thread apply all bt full

**** This thread should be created by libtorrent, let call this the first 
task_io_service

Thread 31 (Thread 13305):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x5f86a20a in 
wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > 
(lock=..., this=0x60c90eac) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/posix_event.hpp:80
No locals.
#4  boost::asio::detail::task_io_service::do_one (this=0x5c754618, lock=..., 
this_idle_thread=0x60c90eac) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/impl/task_io_servic
e.ipp:289
        polling = false
        task_has_run = <optimized out>
#5  0x5f86aea0 in boost::asio::detail::task_io_service::run (this=0x5c754618, 
ec=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/impl/task_io_servic
e.ipp:130
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, owner_ = 0x5c754618, next_ = 0x0}
        this_idle_thread = {wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {value = -14}, signalled_ = false}, next = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x5c75462c, locked_ = true}
        n = 12
#6  0x5f86b3d2 in boost::asio::io_service::run (this=0x5c7545f0) at 
/home/mike/proj/test/boost45/build/include/boost/asio/impl/io_service.ipp:57
        ec = {m_val = 0, m_cat = 0x601f0b90}
        s = <optimized out>
#7  0x5f8657c2 in boost::asio::detail::boost_asio_detail_posix_thread_function 
(arg=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/impl/posix_thread.i
pp:64
        func = {ptr = 0x5c75d500}
#8  0x401103dc in __thread_entry () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#9  0x4010fac8 in pthread_create () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#10 0x00000000 in ?? ()
No symbol table info available.

***** This is the main thread for session of thread created by libtorrent, the 
second task_io_service of asio ****

Thread 29 (Thread 13303):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x4010f5d8 in ?? () from /home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x5f8e8f22 in lock (this=0x5fdda1a4) at 
/home/mike/proj/test/boost45/build/include/boost/smart_ptr/detail/spinlock_pt.hp
p:41
No locals.
#3  scoped_lock (pv=0x5c75db04, this=<synthetic pointer>) at 
/home/mike/proj/test/boost45/build/include/boost/smart_ptr/detail/spinlock_pool.
hpp:61
No locals.
#4  atomic_conditional_increment (pw=0x5c75db04) at 
/home/mike/proj/test/boost45/build/include/boost/smart_ptr/detail/sp_counted_bas
e_spin.hpp:47
        rv = <optimized out>
#5  add_ref_lock (this=0x5c75db00) at 
/home/mike/proj/test/boost45/build/include/boost/smart_ptr/detail/sp_counted_bas
e_spin.hpp:95
No locals.
#6  shared_count (r=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/smart_ptr/detail/shared_count.h
pp:430
No locals.
#7  shared_ptr<libtorrent::torrent> (r=..., this=0x60890180) at 
/home/mike/proj/test/boost45/build/include/boost/smart_ptr/shared_ptr.hpp:220
No locals.
#8  boost::weak_ptr<libtorrent::torrent>::lock (this=0x5c7e9b68) at 
/home/mike/proj/test/boost45/build/include/boost/smart_ptr/weak_ptr.hpp:157
No locals.
#9  0x5f9a2dc4 in libtorrent::peer_connection::peer_speed (this=0x5c7e98c8) at 
peer_connection.cpp:6057
        t = {px = 0x0, pn = {pi_ = 0x5c75db00}}
        __PRETTY_FUNCTION__ = "libtorrent::peer_connection::peer_speed_t libtorrent::peer_connection::peer_speed()"
        download_rate = 1551800520
        torrent_download_rate = 1608360228
#10 0x5f9c5fde in libtorrent::request_a_block (t=..., c=...) at policy.cpp:211
        __PRETTY_FUNCTION__ = "void libtorrent::request_a_block(libtorrent::torrent&, libtorrent::peer_connection&)"
        interesting_pieces = {<std::_Vector_base<libtorrent::piece_block, std::allocator<libtorrent::piece_block> >> = {_M_impl = {<std::allocator<libtorrent::piece_block>> = {<__gnu_cxx::new_allocator<libtorrent::piece_block>> = {<No data fields>}, <No data fields>}, _M_start = 0x5c865ba8, _M_finish = 0x5c865ba8, _M_end_of_storage = 0x5c865d38}}, <No data fields>}
        state = <optimized out>
        num_requests = 1
        dq = @0x5c7e9ba4
        st = {state = 1594783008, index = 1551184672, info = 0x60890330, finished = 1172, writing = 24713, requested = 1250}
        ec = {m_val = 0, m_cat = 0x601f0b90}
        bits = 0x5c7e9b84
        fast_mask = {m_bytes = 0x0, m_size = 0, m_own = false}
        speed = <optimized out>
        p = @0x5c75db18
        prefer_whole_pieces = 1
        rq = @0x5c7e9b98
        dont_pick_busy_blocks = <optimized out>
        busy_block = {static invalid = {static invalid = <same as static member of an already seen type>, piece_index = 524287, block_index = 8191}, piece_index = 453699, block_index = 3058}
#11 0x5f9ae7b2 in libtorrent::peer_connection::incoming_piece (this=0x5c7e98c8, 
p=<optimized out>, data=<optimized out>) at peer_connection.cpp:2695
        __PRETTY_FUNCTION__ = "void libtorrent::peer_connection::incoming_piece(const libtorrent::peer_request&, libtorrent::disk_buffer_holder&)"
        post_checker_ = {t = {px = 0x5c75c070, pn = {pi_ = 0x5c75db00}}}
        block_finished = {static invalid = {static invalid = <same as static member of an already seen type>, piece_index = 524287, block_index = 8191}, piece_index = 1250, block_index = 4}
        was_finished = <optimized out>
        multi = <optimized out>
        now = {time = 70398572884}
        fs = @0x5c75db90
        pending_b = {block = {static invalid = {static invalid = <same as static member of an already seen type>, piece_index = 524287, block_index = 8191}, piece_index = 1250, block_index = 4}, skipped = 2, not_wanted = false, timed_out = false, busy = false}
        pi = {state = libtorrent::piece_picker::fast, index = 1250, info = 0x0, finished = 6, writing = 1, requested = 9}
        finished_blocks = {<std::_Vector_base<libtorrent::piece_block, std::allocator<libtorrent::piece_block> >> = {_M_impl = {<std::allocator<libtorrent::piece_block>> = {<__gnu_cxx::new_allocator<libtorrent::piece_block>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = <optimized out>, _M_end_of_storage = <optimized out>}}, <No data fields>}
        t = {px = 0x5c75c070, pn = {pi_ = 0x5c75db00}}
        block_index = 1551800936
        write_queue_size = <optimized out>
        num_blocks = <optimized out>
#12 0x5f95f3e0 in libtorrent::bt_peer_connection::on_piece (this=0x5c7e98c8, 
received=<optimized out>) at bt_peer_connection.cpp:1255
        t = {px = 0x5c75c070, pn = {pi_ = 0x5c75db00}}
        merkle = <optimized out>
        piece_bytes = 0
        p = {piece = 1250, start = 65536, length = 16384}
        list_size = <optimized out>
        __PRETTY_FUNCTION__ = "void libtorrent::bt_peer_connection::on_piece(int)"
        recv_buffer = <optimized out>
        header_size = <optimized out>
        holder = {m_disk_pool = @0x5c753320, m_buf = 0x0}
#13 0x5f95d19e in libtorrent::bt_peer_connection::dispatch_message 
(this=0x5c7e98c8, received=245) at bt_peer_connection.cpp:1877
        __PRETTY_FUNCTION__ = "bool libtorrent::bt_peer_connection::dispatch_message(int)"
        recv_buffer = <optimized out>
        packet_type = <optimized out>
        cur_payload_dl = 234954
        cur_protocol_dl = 182
#14 0x5f9611b4 in libtorrent::bt_peer_connection::on_receive (this=0x5c7e98c8, 
error=<optimized out>, bytes_transferred=245) at bt_peer_connection.cpp:3296
        t = {px = 0x5c75c070, pn = {pi_ = 0x5c75db00}}
        recv_buffer = {begin = 0x5c8292e0 "\a", end = 0x5c8292f0 "\030"}
        __PRETTY_FUNCTION__ = "virtual void libtorrent::bt_peer_connection::on_receive(const boost::system::error_code&, std::size_t)"
#15 0x5f9b4a20 in libtorrent::peer_connection::on_receive_data 
(this=0x5c7e98c8, error=..., bytes_transferred=245) at peer_connection.cpp:5404
        ec = {m_val = 1551187208, m_cat = 0x5c753cf4}
        __PRETTY_FUNCTION__ = "void libtorrent::peer_connection::on_receive_data(const boost::system::error_code&, std::size_t)"
        me = {px = 0x5c7e98c8}
        _c = {m_pc = @0x5c7e98c8}
        bytes_in_loop = 245
#16 0x5f9b577a in call<boost::intrusive_ptr<libtorrent::peer_connection> const, 
boost::system::error_code const, unsigned int> (b1=<optimized out>, 
u=<optimized out>, this=<optimized out>, b2=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/bind/mem_fn_template.hpp:271
No locals.
#17 operator()<boost::intrusive_ptr<libtorrent::peer_connection> > 
(a2=<optimized out>, u=<optimized out>, this=<optimized out>, a1=<optimized 
out>) at 
/home/mike/proj/test/boost45/build/include/boost/bind/mem_fn_template.hpp:294
No locals.
#18 operator()<boost::_mfi::mf2<void, libtorrent::peer_connection, const 
boost::system::error_code&, unsigned int>, boost::_bi::list2<const 
boost::system::error_code&, unsigned int const&> > (a=<synthetic pointer>, 
f=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/bind/bind.hpp:397
No locals.
#19 operator()<boost::system::error_code, unsigned int> (this=<optimized out>, 
a1=<optimized out>, a2=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/bind/bind_template.hpp:108
No locals.
#20 operator()<boost::system::error_code, unsigned int> (a0=<optimized out>, 
this=<optimized out>, a1=<optimized out>) at 
../include/libtorrent/peer_connection.hpp:1228
No locals.
#21 
boost::detail::function::void_function_obj_invoker2<libtorrent::peer_connection:
:allocating_handler<boost::_bi::bind_t<void, boost::_mfi::mf2<void, 
libtorrent::peer_connection, boost::system::error_code const&, unsigned int>, 
boost::_bi::list3<boost::_bi::value<boost::intrusive_ptr<libtorrent::peer_connec
tion> >, boost::arg<1>, boost::arg<2> > >, 300u>, void, 
boost::system::error_code const&, unsigned int>::invoke 
(function_obj_ptr=<optimized out>, a0=<optimized out>, a1=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/function/function_template.hpp:
153
        f = <optimized out>
#22 0x5f939fbe in operator() (a1=<optimized out>, a0=..., this=0x60890dcc) at 
/home/mike/proj/test/boost45/build/include/boost/function/function_template.hpp:
1013
No locals.
#23 operator()<boost::function2<void, const boost::system::error_code&, 
unsigned int>, boost::_bi::list0> (f=..., this=0x60890ddc, a=<optimized out>) 
at /home/mike/proj/test/boost45/build/include/boost/bind/bind.hpp:313
No locals.
#24 operator() (this=0x60890dcc) at 
/home/mike/proj/test/boost45/build/include/boost/bind/bind_template.hpp:20
No locals.
#25 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=access outside bounds of object 
referenced via synthetic pointer
) at 
/home/mike/proj/test/boost45/build/include/boost/asio/handler_invoke_hook.hpp:64
No locals.
#26 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> > >, 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=..., context=<optimized out>) 
at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/handler_invoke_help
ers.hpp:39
No locals.
#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=0x5c7542f8, 
base=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/completion_handler.
hpp:63
        h = <optimized out>
        p = {h = 0x60890db0, v = 0x0, p = 0x0}
        handler = {f_ = {<boost::function_base> = {vtable = 0x5fdd9ec0, functor = {obj_ptr = 0x5c8bdcc8, type = {type = 0x5c8bdcc8, const_qualified = 208, volatile_qualified = 60}, func_ptr = 0x5c8bdcc8, bound_memfunc_ptr = {memfunc_ptr = (void (boost::detail::function::X::*)(boost::detail::function::X * const, int)) 0x5c8bdcc8, this adjustment 775593576, obj_ptr = 0x5c753cf4}, obj_ref = {obj_ptr = 0x5c8bdcc8, is_const_qualified = 208, is_volatile_qualified = 60}, data = 200 '\310'}}, <std::binary_function<boost::system::error_code const&, unsigned int, void>> = {<No data fields>}, static args = <optimized out>, static arity = <optimized out>}, l_ = {<boost::_bi::storage2<boost::_bi::value<boost::system::error_code>, boost::_bi::value<unsigned int> >> = {<boost::_bi::storage1<boost::_bi::value<boost::system::error_code> >> = {a1_ = {t_ = {m_val = 0, m_cat = 0x601f0b90}}}, a2_ = {t_ = 245}}, <No data fields>}}
#28 0x5f86a25a in complete (owner=..., this=0x5c868858) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/task_io_service_ope
ration.hpp:35
No locals.
#29 boost::asio::detail::task_io_service::do_one (this=0x5c7542f8, lock=..., 
this_idle_thread=0x60890e7c) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/impl/task_io_servic
e.ipp:278
        on_exit = {task_io_service_ = 0x5c7542f8}
        more_handlers = <optimized out>
        polling = false
        task_has_run = <optimized out>
#30 0x5f86aea0 in boost::asio::detail::task_io_service::run (this=0x5c7542f8, 
ec=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/impl/task_io_servic
e.ipp:130
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, owner_ = 0x5c7542f8, next_ = 0x0}
        this_idle_thread = {wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {value = 0}, signalled_ = false}, next = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x5c75430c, locked_ = false}
        n = 28200
#31 0x5f89c728 in libtorrent::aux::session_impl::main_thread (this=0x5c752ff0) 
at session_impl.cpp:4759
        ec = {m_val = 0, m_cat = 0x601f0b90}
        __PRETTY_FUNCTION__ = "void libtorrent::aux::session_impl::main_thread()"
        stop_loop = <optimized out>
#32 0x5f89e54a in operator() (p=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/bind/mem_fn_template.hpp:49
No locals.
#33 operator()<boost::_mfi::mf0<void, libtorrent::aux::session_impl>, 
boost::_bi::list0> (f=<optimized out>, this=<optimized out>, a=<optimized out>) 
at /home/mike/proj/test/boost45/build/include/boost/bind/bind.hpp:253
No locals.
#34 operator() (this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/bind/bind_template.hpp:20
No locals.
#35 boost::asio::detail::posix_thread::func<boost::_bi::bind_t<void, 
boost::_mfi::mf0<void, libtorrent::aux::session_impl>, 
boost::_bi::list1<boost::_bi::value<libtorrent::aux::session_impl*> > > >::run 
(this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/posix_thread.hpp:82
No locals.
#36 0x5f8657c2 in boost::asio::detail::boost_asio_detail_posix_thread_function 
(arg=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/impl/posix_thread.i
pp:64
        func = {ptr = 0x5c755728}
#37 0x401103dc in __thread_entry () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#38 0x4010fac8 in pthread_create () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#39 0x00000000 in ?? ()
No symbol table info available.

***** libtorrent disk io thread ******

Thread 28 (Thread 13302):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x5f96ad26 in 
wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > 
(lock=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/posix_event.hpp:80
No locals.
#4  libtorrent::disk_io_thread::thread_fun (this=0x5c753320) at 
disk_io_thread.cpp:1527
        j = {action = libtorrent::disk_io_job::write, buffer = 0x5c7d1000 "", buffer_size = 16384, storage = {px = 0x5c75db90}, piece = 1250, offset = 65536, str = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x601f2210 ""}}, error_file = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x601f2210 ""}}, max_cache_line = 0, cache_min_time = 0, resume_data = {px = 0x0, pn = {pi_ = 0x0}}, error = {m_val = 0, m_cat = 0x601f0b90}, callback = {<boost::function2<void, int, libtorrent::disk_io_job const&>> = {<boost::function_base> = {vtable = 0x0, functor = {obj_ptr = 0x0, type = {type = 0x0, const_qualified = false, volatile_qualified = false}, func_ptr = 0, bound_memfunc_ptr = {memfunc_ptr = NULL, obj_ptr = 0x0}, obj_ref = {obj_ptr = 0x0, is_const_qualified = false, is_volatile_qualified = false}, data = 0 '\000'}}, <std::binary_function<int, libtorrent::disk_io_job const&, void>> = {<No data fields>}, static args = <optimized out>, static arity = <optimized out>}, <No data fields>}, start_time = {time = 70398614366}}
        pick_read_job = <optimized out>
        jl = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x5c753568, locked_ = true}
        operation_start = <optimized out>
        read_job_every = <optimized out>
        unchoke_limit = <optimized out>
        ret = <optimized out>
        job_start = <optimized out>
        now = {time = 70398614455}
        holder = {m_disk_pool = @0x5c753320, m_buf = 0x0}
        elevator_direction = 1
        need_update_elevator_pos = false
        immediate_jobs_in_row = 5
        __PRETTY_FUNCTION__ = "void libtorrent::disk_io_thread::thread_fun()"
        elevator_job_pos = {_M_node = 0x5c7536bc}
        last_elevator_pos = 43057152
#5  0x5f96e45a in operator() (p=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/bind/mem_fn_template.hpp:49
No locals.
#6  operator()<boost::_mfi::mf0<void, libtorrent::disk_io_thread>, 
boost::_bi::list0> (f=<optimized out>, this=<optimized out>, a=<optimized out>) 
at /home/mike/proj/test/boost45/build/include/boost/bind/bind.hpp:253
No locals.
#7  operator() (this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/bind/bind_template.hpp:20
No locals.
#8  boost::asio::detail::posix_thread::func<boost::_bi::bind_t<void, 
boost::_mfi::mf0<void, libtorrent::disk_io_thread>, 
boost::_bi::list1<boost::_bi::value<libtorrent::disk_io_thread*> > > >::run 
(this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/posix_thread.hpp:82
No locals.
#9  0x5f8657c2 in boost::asio::detail::boost_asio_detail_posix_thread_function 
(arg=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/impl/posix_thread.i
pp:64
        func = {ptr = 0x5c754440}
#10 0x401103dc in __thread_entry () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#11 0x4010fac8 in pthread_create () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#12 0x00000000 in ?? ()
No symbol table info available.

Original comment by ygao....@gmail.com on 8 Nov 2013 at 2:59

GoogleCodeExporter commented 8 years ago
******  This thread is CLIENT thread from APP, it call status() and blocked 
with " while (!done) { cond.wait(l) } " endless  **** 

Thread 27 (Thread 13301):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x5f87f4ac in libtorrent::session::status (this=0x5c752fe0) at 
session.cpp:749
        done = <optimized out>
        r = {has_incoming_connections = false, upload_rate = 0, download_rate = 19520, total_download = 0, total_upload = 6662450352996768903, payload_upload_rate = 1768120656, payload_download_rate = -107442643, total_payload_download = 544041298, total_payload_upload = 0, ip_overhead_upload_rate = 0, ip_overhead_download_rate = 0, total_ip_overhead_download = -461462633585837032, total_ip_overhead_upload = 0, dht_upload_rate = 0, dht_download_rate = 0, total_dht_download = 0, total_dht_upload = 1180591625252895768, tracker_upload_rate = 0, tracker_download_rate = -22740, total_tracker_download = 6907444002048419300, total_tracker_upload = 4616766977623457792, total_redundant_bytes = 803158884352, total_failed_bytes = 1576319316, num_peers = 0, num_unchoked = 976782464, allowed_upload_slots = -1073741824, up_bandwidth_queue = 25, down_bandwidth_queue = 1612643808, up_bandwidth_bytes_queue = 1608360372, down_bandwidth_bytes_queue = 1551963248, optimistic_unchoke_counter = 0, unchoke_counter = 1552286848, disk_write_queue = 1576319268, disk_read_queue = 0, dht_nodes = 1608360372, dht_node_cache = 0, dht_torrents = 1608360372, dht_global_nodes = 6770239774410455348, active_requests = {<std::_Vector_base<libtorrent::dht_lookup, std::allocator<libtorrent::dht_lookup> >> = {_M_impl = {<std::allocator<libtorrent::dht_lookup>> = {<__gnu_cxx::new_allocator<libtorrent::dht_lookup>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, dht_routing_table = {<std::_Vector_base<libtorrent::dht_routing_bucket, std::allocator<libtorrent::dht_routing_bucket> >> = {_M_impl = {<std::allocator<libtorrent::dht_routing_bucket>> = {<__gnu_cxx::new_allocator<libtorrent::dht_routing_bucket>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, dht_total_allocations = 1608360372, utp_stats = {num_idle = 86, num_syn_sent = -1073741824, num_connected = 1552286848, num_fin_sent = 1551174312, num_close_wait = 1602733217}, peerlist_size = 1595499317}
        l = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x5c752ff8, locked_ = true}
#4  0x5f199f70 in handle_alert (p_libtorrent=0x5c750aa8, ses=<optimized out>, 
a=0x5c8c00a0) at ../../test/torrent/libtorrent.cpp:930
        sess_stat = {has_incoming_connections = false, upload_rate = 0, download_rate = 19520, total_download = 0, total_upload = 6662450352996768903, payload_upload_rate = 1768120656, payload_download_rate = -107442643, total_payload_download = 544041298, total_payload_upload = 0, ip_overhead_upload_rate = 0, ip_overhead_download_rate = 0, total_ip_overhead_download = -461462633585837032, total_ip_overhead_upload = 0, dht_upload_rate = 0, dht_download_rate = 0, total_dht_download = 0, total_dht_upload = 1180591625252895768, tracker_upload_rate = 0, tracker_download_rate = -22740, total_tracker_download = 6907444002048419300, total_tracker_upload = 4616766977623457792, total_redundant_bytes = 803158884352, total_failed_bytes = 1576319316, num_peers = 0, num_unchoked = 976782464, allowed_upload_slots = -1073741824, up_bandwidth_queue = 25, down_bandwidth_queue = 1612643808, up_bandwidth_bytes_queue = 1608360372, down_bandwidth_bytes_queue = 1551963248, optimistic_unchoke_counter = 0, unchoke_counter = 1552286848, disk_write_queue = 1576319268, disk_read_queue = 0, dht_nodes = 1608360372, dht_node_cache = 0, dht_torrents = 1608360372, dht_global_nodes = 6770239774410455348, active_requests = {<std::_Vector_base<libtorrent::dht_lookup, std::allocator<libtorrent::dht_lookup> >> = {_M_impl = {<std::allocator<libtorrent::dht_lookup>> = {<__gnu_cxx::new_allocator<libtorrent::dht_lookup>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, dht_routing_table = {<std::_Vector_base<libtorrent::dht_routing_bucket, std::allocator<libtorrent::dht_routing_bucket> >> = {_M_impl = {<std::allocator<libtorrent::dht_routing_bucket>> = {<__gnu_cxx::new_allocator<libtorrent::dht_routing_bucket>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}, dht_total_allocations = 1608360372, utp_stats = {num_idle = 86, num_syn_sent = -1073741824, num_connected = 1552286848, num_fin_sent = 1551174312, num_close_wait = 1602733217}, peerlist_size = 1595499317}
        i = {_M_current = 0x5c8117d0}
        now = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x5c764a04 "00:01:20.799"}}
        p = 0x5c8c00a0
        state_str = {0x5fa8fbe4 "checking (q)", 0x5fa8fbf4 "checking", 0x5fa8fc00 "dl metadata", 0x5fa8fc0c "downloading", 0x5fa8fc18 "finished", 0x5fa8fc24 "seeding", 0x5fa8fc2c "allocating", 0x5fa8fc38 "checking (r)"}
#5  0x5f19c670 in processAlert (p_this=0x5c750aa8) at 
../../test/torrent/libtorrent.cpp:1024
        need_resort = false
        i = {_M_cur = 0x5c8eac20, _M_first = <optimized out>, _M_last = 0x5c8eae10, _M_node = 0x5c84c06c}
        end = {_M_cur = 0x5c8eac70, _M_first = <optimized out>, _M_last = <optimized out>, _M_node = <optimized out>}
        p_libtorrent = 0x5c750aa8
        alerts = {<std::_Deque_base<libtorrent::alert*, std::allocator<libtorrent::alert*> >> = {_M_impl = {<std::allocator<libtorrent::alert*>> = {<__gnu_cxx::new_allocator<libtorrent::alert*>> = {<No data fields>}, <No data fields>}, _M_map = 0x5c84c060, _M_map_size = 8, _M_start = {_M_cur = 0x5c8eac10, _M_first = 0x5c8eac10, _M_last = 0x5c8eae10, _M_node = 0x5c84c06c}, _M_finish = {_M_cur = 0x5c8eac70, _M_first = 0x5c8eac10, _M_last = 0x5c8eae10, _M_node = 0x5c84c06c}}}, <No data fields>}
        now = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x5c829dbc "00:01:20.798"}}
#6  0x5f19cd1a in startTorrent (p_this=0x5c750aa8) at 
../../test/torrent/libtorrent.cpp:1193
        p_libtorrent = 0x5c750aa8
        ec = {m_val = 0, m_cat = 0x601f0b90}
        b_requested = true
        psz_path = <optimized out>
        ps = {hostname = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x601f2210 ""}}, port = 0, username = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x601f2210 ""}}, password = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x601f2210 ""}}, type = libtorrent::proxy_settings::none, proxy_hostnames = true, proxy_peer_connections = true}
        in = {<std::_Vector_base<char, std::allocator<char> >> = {_M_impl = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}
        torrents = {<std::_Vector_base<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {_M_impl = {<std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<__gnu_cxx::new_allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >> = {<No data fields>}, <No data fields>}, _M_start = 0x5c7557e8, _M_finish = 0x5c7557ec, _M_end_of_storage = 0x5c7557ec}}, <No data fields>}
#7  0x5f196e3c in Open (p_this=<optimized out>) at 
../../test/torrent/torrent.cpp:191
        p_access = 0x5c75077c
        p_sys = 0x5c750970
        fd = 75
        psz_name = 0x5c750910 "/storage/emulated/0/test/torrent/Pacific+Rim+[2013]+BRRip+XViD+[AC3]+-ETRG.torrent"

.... omit ....

***** Another (or second ) task_io_service thread created by libtorrent  *****

Thread 25 (Thread 13241):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x5f86a20a in 
wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > 
(lock=..., this=0x60690eac) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/posix_event.hpp:80
No locals.
#4  boost::asio::detail::task_io_service::do_one (this=0x5c6630f0, lock=..., 
this_idle_thread=0x60690eac) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/impl/task_io_servic
e.ipp:289
        polling = false
        task_has_run = <optimized out>
#5  0x5f86aea0 in boost::asio::detail::task_io_service::run (this=0x5c6630f0, 
ec=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/impl/task_io_servic
e.ipp:130
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, owner_ = 0x5c6630f0, next_ = 0x0}
        this_idle_thread = {wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {value = -8}, signalled_ = false}, next = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x5c663104, locked_ = true}
        n = 6
#6  0x5f86b3d2 in boost::asio::io_service::run (this=0x5c6729e0) at 
/home/mike/proj/test/boost45/build/include/boost/asio/impl/io_service.ipp:57
        ec = {m_val = 0, m_cat = 0x601f0b90}
        s = <optimized out>
#7  0x5f8657c2 in boost::asio::detail::boost_asio_detail_posix_thread_function 
(arg=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/impl/posix_thread.i
pp:64
        func = {ptr = 0x5c694b10}
#8  0x401103dc in __thread_entry () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#9  0x4010fac8 in pthread_create () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#10 0x00000000 in ?? ()
No symbol table info available.

Original comment by ygao....@gmail.com on 8 Nov 2013 at 3:02

GoogleCodeExporter commented 8 years ago
***** second main thread  - why I have two main thread from session_imp? Is 
this created by libtorrent ? So it creates two?  *****

Thread 24 (Thread 13239):
#0  0x40119ee4 in epoll_wait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x5f869098 in boost::asio::detail::epoll_reactor::run (this=0x5c656db0, 
block=<optimized out>, ops=...) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/impl/epoll_reactor.
ipp:240
        timeout = 99
        events = {{events = 1, data = {ptr = 0x5c656dd4, fd = 1550151124, u32 = 1550151124, u64 = 1550151124}}, {events = 0, data = {ptr = 0x60490a3c, fd = 1615399484, u32 = 1615399484, u64 = 4616532748902402620}}, {events = 0, data = {ptr = 0x601f2204, fd = 1612653060, u32 = 1612653060, u64 = 6938087955367928324}}, {events = 0, data = {ptr = 0xc0000000, fd = -1073741824, u32 = 3221225472, u64 = 3221225472}}, {events = 0, data = {ptr = 0x60490a3c, fd = 1615399484, u32 = 1615399484, u64 = 4616532748902402620}}, {events = 0, data = {ptr = 0x601f2204, fd = 1612653060, u32 = 1612653060, u64 = 6938087955367928324}}, {events = 0, data = {ptr = 0xc0000000, fd = -1073741824, u32 = 3221225472, u64 = 3221225472}}, {events = 0, data = {ptr = 0x60490a3c, fd = 1615399484, u32 = 1615399484, u64 = 4616532748902402620}}, {events = 0, data = {ptr = 0x601f2204, fd = 1612653060, u32 = 1612653060, u64 = 6938087955367928324}}, {events = 0, data = {ptr = 0xc0000000, fd = -1073741824, u32 = 3221225472, u64 = 6938087699278462976}}, {events = 4294967294, data = {ptr = 0x31, fd = 49, u32 = 49, u64 = 4616532747287003185}}, {events = 1615399424, data = {ptr = 0xffffffff, fd = -1, u32 = 4294967295, u64 = 214748364799}}, {events = 1615399424, data = {ptr = 0x5c6523e0, fd = 1550132192, u32 = 1550132192, u64 = 6888198521433170912}}, {events = 0, data = {ptr = 0x5c6563e0, fd = 1550148576, u32 = 1550148576, u64 = 6657837439411119072}}, {events = 1550148576, data = {ptr = 0x5c6563e0, fd = 1550148576, u32 = 1550148576, u64 = 6886742931246769120}}, {events = 1615398775, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6926267465022308352}}, {events = 1603755801, data = {ptr = 0x60490720, fd = 1615398688, u32 = 1615398688, u64 = 6658930285314901792}}, {events = 1608264632, data = {ptr = 0x5c6563c8, fd = 1550148552, u32 = 1550148552, u64 = 3819052915057058760}}, {events = 1550148576, data = {ptr = 0x5fd797e0, fd = 1607964640, u32 = 1607964640, u64 = 6906153035271477216}}, {events = 101, data = {ptr = 0x39, fd = 57, u32 = 57, u64 = 6891134031245606969}}, {events = 1, data = {ptr = 0x60490840, fd = 1615398976, u32 = 1615398976, u64 = 5910366272}}, {events = 75, data = {ptr = 0x60490f08, fd = 1615400712, u32 = 1615400712, u64 = 6938085773527289608}}, {events = 0, data = {ptr = 0x5c656de4, fd = 1550151140, u32 = 1550151140, u64 = 17985281244105371108}}, {events = 0, data = {ptr = 0x1, fd = 1, u32 = 1, u64 = 6650517267400359937}}, {events = 1608264632, data = {ptr = 0x5c4b6238, fd = 1548444216, u32 = 1548444216, u64 = 6884106164922704440}}, {events = 1545804724, data = {ptr = 0x604907a0, fd = 1615398816, u32 = 1615398816, u64 = 20556745886205856}}, {events = 1550148552, data = {ptr = 0x60490840, fd = 1615398976, u32 = 1615398976, u64 = 6662142852132833344}}, {events = 1615398976, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6884594114608758784}}, {events = 16384, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6926267465022308352}}, {events = 4294902280, data = {ptr = 0xc7, fd = 199, u32 = 199, u64 = 6668689634806988999}}, {events = 3221225472, data = {ptr = 0x5c74b194, fd = 1551151508, u32 = 1551151508, u64 = 17985281437379899796}}, {events = 1551150568, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x5c69587a, fd = 1550407802, u32 = 1550407802, u64 = 5845375098}}, {events = 62, data = {ptr = 0x5c82b5e4, fd = 1552070116, u32 = 1552070116, u64 = 6657838813802575332}}, {events = 1550148353, data = {ptr = 0x601f0b90, fd = 1612647312, u32 = 1612647312, u64 = 6938086426359565200}}, {events = 1548444216, data = {ptr = 0x5c7079be, fd = 1550875070, u32 = 1550875070, u64 = 1550875070}}, {events = 342, data = {ptr = 0x60490a88, fd = 1615399560, u32 = 1615399560, u64 = 6647627958616394376}}, {events = 1548444216, data = {ptr = 0x604909d0, fd = 1615399376, u32 = 1615399376, u64 = 6938085825066895824}}, {events = 1550390456, data = {ptr = 0x60490908, fd = 1615399176, u32 = 1615399176, u64 = 35975137544}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 4294902280, data = {ptr = 0x5c694ed8, fd = 1550405336, u32 = 1550405336, u64 = 6658930353969385176}}, {events = 58585, data = {ptr = 0x5c6959a8, fd = 1550408104, u32 = 1550408104, u64 = 6658940215214299560}}, {events = 1550403040, data = {ptr = 0x60490908, fd = 1615399176, u32 = 1615399176, u64 = 1615399176}}, {events = 1603755801, data = {ptr = 0xc0000000, fd = -1073741824, u32 = 3221225472, u64 = 282394099712}}, {events = 1615399452, data = {ptr = 0x5c75dea8, fd = 1551228584, u32 = 1551228584, u64 = 4616528007194336936}}, {events = 3221225472, data = {ptr = 0x2f, fd = 47, u32 = 47, u64 = 47}}, {events = 1552001752, data = {ptr = 0x60490a1c, fd = 1615399452, u32 = 1615399452, u64 = 16309933763529244}}, {events = 3221225472, data = {ptr = 0x60490a1c, fd = 1615399452, u32 = 1615399452, u64 = 1615399452}}, {events = 3221225472, data = {ptr = 0xc0000000, fd = -1073741824, u32 = 3221225472, u64 = 106300440576}}, {events = 1615400084, data = {ptr = 0x20, fd = 32, u32 = 32, u64 = 4616528005643108384}}, {events = 1552327096, data = {ptr = 0x60490a1c, fd = 1615399452, u32 = 1615399452, u64 = 91809712668}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6650517336119836672}}, {events = 1603045949, data = {ptr = 0x5c4b6248, fd = 1548444232, u32 = 1548444232, u64 = 6885029926488728136}}, {events = 0, data = {ptr = 0x5f8c8a3d, fd = 1603045949, u32 = 1603045949, u64 = 1603045949}}, {events = 1548444232, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6650517336119836672}}, {events = 1603045949, data = {ptr = 0x5c4b6248, fd = 1548444232, u32 = 1548444232, u64 = 6885029926488728136}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6938087421179330560}}, {events = 1615399356, data = {ptr = 0x604909b8, fd = 1615399352, u32 = 1615399352, u64 = 6650517269015759288}}, {events = 5, data = {ptr = 0x60490a64, fd = 1615399524, u32 = 1615399524, u64 = 6884195526079220324}}, {events = 1615399356, data = {ptr = 0x5, fd = 5, u32 = 5, u64 = 6650536629112930309}}, {events = 12, data = {ptr = 0x601f2210, fd = 1612653072, u32 = 1612653072, u64 = 1612653072}}, {events = 0, data = {ptr = 0x5c6917e0, fd = 1550391264, u32 = 1550391264, u64 = 1550391264}}, {events = 0, data = {ptr = 0x2, fd = 2, u32 = 2, u64 = 6658336289722466306}}, {events = 1615399400, data = {ptr = 0x5c6917c0, fd = 1550391232, u32 = 1550391232, u64 = 6884404957209499584}}, {events = 1716810376, data = {ptr = 0x5c4b73d4, fd = 1548448724, u32 = 1548448724, u64 = 6650530806685725652}}, {events = 1551217208, data = {ptr = 0x5c656db0, fd = 1550151088, u32 = 1550151088, u64 = 6662427075823365552}}, {events = 1548448724, data = {ptr = 0x60490a30, fd = 1615399472, u32 = 1615399472, u64 = 21232155263306288}}, {events = 1548448724, data = {ptr = 0x66547288, fd = 1716810376, u32 = 1716810376, u64 = 70436287112}}, {events = 1548448724, data = {ptr = 0x5fdc2bb8, fd = 1608264632, u32 = 1608264632, u64 = 6662427075881479096}}, {events = 1548448704, data = {ptr = 0x60490a84, fd = 1615399556, u32 = 1615399556, u64 = 6650517269015759492}}, {events = 1716710376, data = {ptr = 0x5c75b220, fd = 1551217184, u32 = 1551217184, u64 = 6650536510405063200}}, {events = 1548448724, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6650517267400359936}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6650517267400359936}}, {events = 1602857557, data = {ptr = 0x5c4b6238, fd = 1548444216, u32 = 1548444216, u64 = 6650536510402290232}}, {events = 1716710376, data = {ptr = 0x5c4b73b8, fd = 1548448696, u32 = 1548448696, u64 = 6650530841045463992}}, {events = 1548447352, data = {ptr = 0x5c4b6238, fd = 1548444216, u32 = 1548444216, u64 = 6884222146219565624}}, {events = 6881, data = {ptr = 0x5af73463, fd = 1526150243, u32 = 1526150243, u64 = 70245626979}}, {events = 1550149308, data = {ptr = 0x5c6734e8, fd = 1550267624, u32 = 1550267624, u64 = 6657840583327298792}}, {events = 1550151088, data = {ptr = 0x6652ebe8, fd = 1716710376, u32 = 1716710376, u64 = 70436187112}}, {events = 1548447368, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x5fd6eec0, fd = 1607921344, u32 = 1607921344, u64 = 1607921344}}, {events = 1607914324, data = {ptr = 0x618ff5d4, fd = 1636824532, u32 = 1636824532, u64 = 9592392166820279764}}, {events = 1716710376, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 2233402842, data = {ptr = 0x7e03f94c, fd = 2114189644, u32 = 2114189644, u64 = 8797605063263779148}}, {events = 1636824532, data = {ptr = 0x18839, fd = 100409, u32 = 100409, u64 = 100409}}, {events = 100409, data = {ptr = 0x6a01a8c0, fd = 1778493632, u32 = 1778493632, u64 = 1778493632}}, {events = 1548446288, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 5000, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 1602857557, data = {ptr = 0x5c4b6238, fd = 1548444216, u32 = 1548444216, u64 = 1548444216}}, {events = 3776577538, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 0}}, {events = 0, data = {ptr = 0x662b0105, fd = 1714094341, u32 = 1714094341, u64 = 70433571077}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6660962679403839488}}, {events = 128, data = {ptr = 0x1, fd = 1, u32 = 1, u64 = 1}}, {events = 0, data = {ptr = 0x5c8bf770, fd = 1552676720, u32 = 1552676720, u64 = 5847644016}}, {events = 1615400124, data = {ptr = 0xb, fd = 11, u32 = 11, u64 = 6668695733660549131}}, {events = 1, data = {ptr = 0x5c707e44, fd = 1550876228, u32 = 1550876228, u64 = 6938090652545613380}}, {events = 1552676720, data = {ptr = 0x601f2210, fd = 1612653072, u32 = 1612653072, u64 = 18446744071027237392}}, {events = 0, data = {ptr = 0x5c8bf778, fd = 1552676728, u32 = 1552676728, u64 = 6668695735213225848}}, {events = 1550391312, data = {ptr = 0x20, fd = 32, u32 = 32, u64 = 343597383712}}, {events = 5, data = {ptr = 0x60490cb0, fd = 1615400112, u32 = 1615400112, u64 = 6658879776499502256}}, {events = 1550391264, data = {ptr = 0x665abab7, fd = 1717222071, u32 = 1717222071, u64 = 70436698807}}, {events = 1550388916, data = {ptr = 0x5c6913c8, fd = 1550390216, u32 = 1550390216, u64 = 6658869691851281352}}, {events = 1550151088, data = {ptr = 0x5c656dc8, fd = 1550151112, u32 = 1550151112, u64 = 6658336291272617416}}, {events = 1615400184, data = {ptr = 0x5c690eb4, fd = 1550388916, u32 = 1550388916, u64 = 6884461625008000692}}, {events = 1717222071, data = {ptr = 0x5c690eb4, fd = 1550388916, u32 = 1550388916, u64 = 6658336205373509300}}, {events = 1607899452, data = {ptr = 0x5c6913b0, fd = 1550390192, u32 = 1550390192, u64 = 6938091459998978992}}, {events = 1550388432, data = {ptr = 0x60490d3c, fd = 1615400252, u32 = 1615400252, u64 = 6887160307643911484}}, {events = 1550390192, data = {ptr = 0xf4240, fd = 1000000, u32 = 1000000, u64 = 1000000}}, {events = 1716222071, data = {ptr = 0x5c690cd0, fd = 1550388432, u32 = 1550388432, u64 = 6887158460742962384}}, {events = 0, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6658867611536719872}}, {events = 1603541537, data = {ptr = 0x5c690cd0, fd = 1550388432, u32 = 1550388432, u64 = 6938091459998977232}}, {events = 0, data = {ptr = 0x5f941a21, fd = 1603541537, u32 = 1603541537, u64 = 1603541537}}, {events = 1550388432, data = {ptr = 0x0, fd = 0, u32 = 0, u64 = 6658867611536719872}}, {events = 1615400352, data = {ptr = 0xc0000000, fd = -1073741824, u32 = 3221225472, u64 = 6658325658604666880}}, {events = 1615400384, data = {ptr = 0x5c75b228, fd = 1551217192, u32 = 1551217192, u64 = 6938091975395881512}}, {events = 1612647312, data = {ptr = 0x5c75b228, fd = 1551217192, u32 = 1551217192, u64 = 6938092593871172136}}, {events = 1615400572, data = {ptr = 0x5fd6993c, fd = 1607899452, u32 = 1607899452, u64 = 6884287764789369148}}, {events = 0, data = {ptr = 0x5f89aa55, fd = 1602857557, u32 = 1602857557, u64 = 1602857557}}, {events = 1548444216, data = {ptr = 0x601f0b90, fd = 1612647312, u32 = 1612647312, u64 = 6884220789074103184}}}
        num_events = <optimized out>
        check_timers = <optimized out>
#2  0x5f86a13c in boost::asio::detail::task_io_service::do_one 
(this=0x5c671fe8, lock=..., this_idle_thread=0x60490e7c) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/impl/task_io_servic
e.ipp:264
        completed_ops = {<boost::noncopyable_::noncopyable> = {<No data fields>}, front_ = 0x0, back_ = 0x0}
        c = {task_io_service_ = 0x5c671fe8, lock_ = 0x60490e74, ops_ = 0x60490e1c}
        more_handlers = <optimized out>
        polling = false
        task_has_run = true
#3  0x5f86aea0 in boost::asio::detail::task_io_service::run (this=0x5c671fe8, 
ec=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/impl/task_io_servic
e.ipp:130
        ctx = {<boost::noncopyable_::noncopyable> = {<No data fields>}, owner_ = 0x5c671fe8, next_ = 0x0}
        this_idle_thread = {wakeup_event = {<boost::noncopyable_::noncopyable> = {<No data fields>}, cond_ = {value = 0}, signalled_ = false}, next = 0x0}
        lock = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x5c671ffc, locked_ = false}
        n = 1860
#4  0x5f89c728 in libtorrent::aux::session_impl::main_thread (this=0x5c4b6238) 
at session_impl.cpp:4759
        ec = {m_val = 0, m_cat = 0x601f0b90}
        __PRETTY_FUNCTION__ = "void libtorrent::aux::session_impl::main_thread()"
        stop_loop = <optimized out>
#5  0x5f89e54a in operator() (p=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/bind/mem_fn_template.hpp:49
No locals.
#6  operator()<boost::_mfi::mf0<void, libtorrent::aux::session_impl>, 
boost::_bi::list0> (f=<optimized out>, this=<optimized out>, a=<optimized out>) 
at /home/mike/proj/test/boost45/build/include/boost/bind/bind.hpp:253
No locals.
#7  operator() (this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/bind/bind_template.hpp:20
No locals.
#8  boost::asio::detail::posix_thread::func<boost::_bi::bind_t<void, 
boost::_mfi::mf0<void, libtorrent::aux::session_impl>, 
boost::_bi::list1<boost::_bi::value<libtorrent::aux::session_impl*> > > >::run 
(this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/posix_thread.hpp:82
No locals.
#9  0x5f8657c2 in boost::asio::detail::boost_asio_detail_posix_thread_function 
(arg=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/impl/posix_thread.i
pp:64
        func = {ptr = 0x5c411e50}
#10 0x401103dc in __thread_entry () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#11 0x4010fac8 in pthread_create () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#12 0x00000000 in ?? ()
No symbol table info available.

*** Another disk io thread ****

Thread 23 (Thread 13238):
#0  0x4011a104 in __futex_syscall3 () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#1  0x40110420 in __pthread_cond_timedwait_relative () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#2  0x4011047c in __pthread_cond_timedwait () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#3  0x5f96ad26 in 
wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> > 
(lock=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/posix_event.hpp:80
No locals.
#4  libtorrent::disk_io_thread::thread_fun (this=0x5c4b6568) at 
disk_io_thread.cpp:1527
        j = {action = libtorrent::disk_io_job::read, buffer = 0x0, buffer_size = 0, storage = {px = 0x0}, piece = 0, offset = 0, str = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x0}}, error_file = {static npos = <optimized out>, _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x0}}, max_cache_line = 0, cache_min_time = 0, resume_data = {px = 0x0, pn = {pi_ = 0x0}}, error = {m_val = 0, m_cat = 0x0}, callback = {<boost::function2<void, int, libtorrent::disk_io_job const&>> = {<boost::function_base> = {vtable = 0x0, functor = {obj_ptr = 0x0, type = {type = 0x0, const_qualified = false, volatile_qualified = false}, func_ptr = 0, bound_memfunc_ptr = {memfunc_ptr = NULL, obj_ptr = 0x0}, obj_ref = {obj_ptr = 0x0, is_const_qualified = false, is_volatile_qualified = false}, data = 0 '\000'}}, <std::binary_function<int, libtorrent::disk_io_job const&, void>> = {<No data fields>}, static args = <optimized out>, static arity = <optimized out>}, <No data fields>}, start_time = {time = 0}}
        pick_read_job = <optimized out>
        jl = {<boost::noncopyable_::noncopyable> = {<No data fields>}, mutex_ = @0x5c4b67b0, locked_ = true}
        operation_start = <optimized out>
        read_job_every = <optimized out>
        unchoke_limit = <optimized out>
        ret = <optimized out>
        job_start = <optimized out>
        now = {time = 0}
        holder = {m_disk_pool = @0x0, m_buf = 0x0}
        elevator_direction = 1
        need_update_elevator_pos = false
        immediate_jobs_in_row = 0
        __PRETTY_FUNCTION__ = "void libtorrent::disk_io_thread::thread_fun()"
        elevator_job_pos = {_M_node = 0x5c4b6904}
        last_elevator_pos = 0
#5  0x5f96e45a in operator() (p=<optimized out>, this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/bind/mem_fn_template.hpp:49
No locals.
#6  operator()<boost::_mfi::mf0<void, libtorrent::disk_io_thread>, 
boost::_bi::list0> (f=<optimized out>, this=<optimized out>, a=<optimized out>) 
at /home/mike/proj/test/boost45/build/include/boost/bind/bind.hpp:253
No locals.
#7  operator() (this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/bind/bind_template.hpp:20
No locals.
#8  boost::asio::detail::posix_thread::func<boost::_bi::bind_t<void, 
boost::_mfi::mf0<void, libtorrent::disk_io_thread>, 
boost::_bi::list1<boost::_bi::value<libtorrent::disk_io_thread*> > > >::run 
(this=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/posix_thread.hpp:82
No locals.
#9  0x5f8657c2 in boost::asio::detail::boost_asio_detail_posix_thread_function 
(arg=<optimized out>) at 
/home/mike/proj/test/boost45/build/include/boost/asio/detail/impl/posix_thread.i
pp:64
        func = {ptr = 0x5c557e58}
#10 0x401103dc in __thread_entry () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#11 0x4010fac8 in pthread_create () from 
/home/mike/proj/test/obj/local/armeabi-v7a/libc.so
No symbol table info available.
#12 0x00000000 in ?? ()
No symbol table info available.

Original comment by ygao....@gmail.com on 8 Nov 2013 at 3:03

GoogleCodeExporter commented 8 years ago
Because the comment can't be too long, I post multiple times.

So we have a few threads:
1. two main thread from session impl (libtorrent need two?)
2. two disk io threads
3. two task_io_services threads
4. one app client thread  (call session->status() and blocked)

I put a few log message print in session and alert post to see if it works when 
client thread blocked and dead lock happening. There is no any message printed 
when it happens. Because alert post is done by main thread of session, it means 
it stops too.

I will put more log message in two main and task_io thread to see if they keep 
running.  

Original comment by ygao....@gmail.com on 8 Nov 2013 at 3:15

GoogleCodeExporter commented 8 years ago
Because session->status() is blocked by below code, does this help to find 
which thread should send signal to this condition wait?

#define TORRENT_WAIT \
    mutex::scoped_lock l(m_impl->mut); \
    while (!done) { m_impl->cond.wait(l); };

#define TORRENT_SYNC_CALL_RET(type, x) \
    bool done = false; \
    type r; \
    m_impl->m_io_service.dispatch(boost::bind(&fun_ret<type>, &r, &done, &m_impl->cond, &m_impl->mut, boost::function<type(void)>(boost::bind(&session_impl:: x, m_impl.get())))); \
    TORRENT_WAIT

    session_status session::status() const
    {
        TORRENT_SYNC_CALL_RET(session_status, status);
        return r;
    }

And I saw it was blocked within torrent_handle as below.

#define TORRENT_SYNC_CALL_RET(type, def, x) \
    boost::shared_ptr<torrent> t = m_torrent.lock(); \
    if (!t) return def; \
    bool done = false; \
    session_impl& ses = t->session(); \
    type r; \
    mutex::scoped_lock l(ses.mut); \
    ses.m_io_service.dispatch(boost::bind(&fun_ret<type >, &r, &done, &ses.cond, &ses.mut, boost::function<type(void)>(boost::bind(&torrent:: x, t)))); \
    t.reset(); \
    do { ses.cond.wait(l); } while(!done)

Original comment by ygao....@gmail.com on 8 Nov 2013 at 3:21

GoogleCodeExporter commented 8 years ago
having two session_impl::main_thread and two disk threads definitely suggest 
that you construct two session objects, or at least that two get constructed 
somehow.

Is it the case that the main thread in the call to boost::shared_ptr::lock() 
does not make any progress? I noticed that both times it's in that function. If 
it's the case that it doesn't make progress you're hitting a more fundamental 
bug, probably in the hardware or compiler. The shared_ptr uses CAS operations 
for the reference counters, it's possible that your hardware does not support 
CAS operations or that your compiler generates invalid code for them. I would 
suggest you build with BOOST_AC_USE_PTHREADS defined. This will make shared_ptr 
use a mutex instead of atomic operations. If that works, it strongly indicates 
that this is the problem you have.

You may also want to try to run the boost.smart_ptr unit tests.

Original comment by arvid.no...@gmail.com on 8 Nov 2013 at 4:58

GoogleCodeExporter commented 8 years ago
This issue is fixed by using BOOST_AC_USE_PTHREADS with boost 1_45 and 
libtorrent 0.16.12. 
There is another problem is caused by a static variable of session (forgot to 
comment out) which created more threads. It is just a mistake in my code. After 
remove this static variable, there was still a dead lock. The status() in 
client thread dispatch a task to task_io_service which never return done for 
some reason. And after apply  BOOST_AC_USE_PTHREADS, this is gone.
So, thank you very much for help. I will remember this.

Original comment by ygao....@gmail.com on 8 Nov 2013 at 7:10

GoogleCodeExporter commented 8 years ago

Original comment by arvid.no...@gmail.com on 18 Nov 2013 at 7:08