Closed GoogleCodeExporter closed 9 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
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
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
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
[deleted comment]
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
[deleted comment]
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
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
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
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
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
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
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
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
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
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
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
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
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
****** 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
***** 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
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
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
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
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
Original comment by arvid.no...@gmail.com
on 18 Nov 2013 at 7:08
Original issue reported on code.google.com by
ygao....@gmail.com
on 6 Nov 2013 at 8:13