-
-
Notifications
You must be signed in to change notification settings - Fork 420
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Freezing when >1500 torrents #231
Comments
This may be of little help for you, but I read that rtorrent has issues like that if c-ares is not enabled in curl. If you can, I'd try recompiling curl with c-ares and see if the situation improves. I have a much larger count of torrents and am not experiencing any freezes. On Sep 03, 2014, at 02:42 PM, Grant Millar notifications@github.com wrote: Version: 0.9.4 |
I can confirm curl was compiled with the follow options: ./configure --prefix=/usr --enable-ares --libdir=/usr/lib64 |
Unfortunately I won't be of much help, thankfully you have a gdb output. Hopefully things can get sorted for you. Good luck :) On Sep 03, 2014, at 02:54 PM, Grant Millar notifications@github.com wrote: I can confirm curl was compiled with the follow options: |
You seem to be executing some shell command and it waits until it gets back the return value. Use 'execute.nothrow.bg' to run those in the background. |
I've also noticed that it's hanging on the below, I've enabled execute logging to see what is causing the above. #0 0x0000003e8e2e9163 in epoll_wait () at ../sysdeps/unix/syscall-template.S:82 AND #0 __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136 |
You need to bt all the threads with "thread apply all bt". |
Thanks, Thread 3 (Thread 0x7f3952a01700 (LWP 23501)): Thread 2 (Thread 0x7f39713ef700 (LWP 18851)): Thread 1 (Thread 0x7f39713f17e0 (LWP 18849)): |
The other rtorrent on another machine with the same system (OS version etc similar number of torrents) is stuck here: Thread 3 (Thread 0x7fc851be9700 (LWP 1142)): Thread 2 (Thread 0x7fc85b28d700 (LWP 30314)): Thread 1 (Thread 0x7fc85b28f7e0 (LWP 30303)): |
https://github.com/rakshasa/rtorrent/blob/branch-0.9/src/rpc/scgi.cc#L172 The issue is that rtorrent is currently taking the global lock during XMLRPC command processing as a whole, that is to say calling the commands in rtorrent's global lock and writing the data out while in the same. Try this; 65dfc46 |
@rakshasa thanks for the fix, the freezing of rtorrent is now gone, however the webui front-end (rutorrent) still seems to time out when connecting to the SCGI, it's currently stuck here: Thread 3 (Thread 0x7f67ae4b2700 (LWP 31854)): Thread 2 (Thread 0x7f6796ed8700 (LWP 32475)): Thread 1 (Thread 0x7f67ae4b47e0 (LWP 31842)): |
This is an issue with session save blocking, which iirc already has a ticket or if not make a new one. |
Version: 0.9.4
Libtorrent: 0.13.4
OS: CentOS 6.5 x64
When a large number (>1500) are loaded rtorrent regularly freezes and becomes unstable when accessed through XMLRPC or via the commandline. We are experiencing this issue on multiple separate systems. Using gdb it appears to be stuck in the following call:
#0 __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
#1 0x0000003e8e609508 in _L_lock_854 () from /lib64/libpthread.so.0
#2 0x0000003e8e6093d7 in __pthread_mutex_lock (mutex=0x728608) at pthread_mutex_lock.c:61
#3 0x00000000004c79e6 in acquire_global_lock (this=0x72b940, file=, argv=, flags=)
#4 rpc::ExecFile::execute (this=0x72b940, file=, argv=, flags=) at exec_file.cc:165
#5 0x00000000004c7d66 in rpc::ExecFile::execute_object (this=0x72b940, rawArgs=, flags=3) at exec_file.cc:227
#6 0x0000000000424b74 in operator() (__functor=, __args#0=, __args#1=)
#7 __call<rpc::rt_triple<int, void*, void*>&, torrent::Object const&, 0, 1, 2> (__functor=, __args#0=, __args#1=)
#8 operator()<rpc::rt_triple<int, void*, void*>, const torrent::Object> (__functor=, __args#0=, __args#1=)
#9 std::tr1::_Function_handler<torrent::Object(rpc::rt_triple<int, void*, void*>, const torrent::Object&), std::tr1::_Bind<std::tr1::Mem_fn<torrent::Object (rpc::ExecFile::*)(const torrent::Object&, int)>(rpc::ExecFile, std::tr1::_Placeholder<2>, int)> >::_M_invoke(const std::tr1::Any_data &, rpc::rt_triple<int, void, void*>, const torrent::Object &) (
#10 0x00000000004bf963 in operator() (rawCommand=0x25a93b8, target=, args=)
#11 _call<std::tr1::function<torrent::Object(rpc::target_type, const torrent::Object&)>, rpc::rt_triple<int, void*, void*>, torrent::Object> (rawCommand=0x25a93b8,
#12 rpc::command_base_call<rpc::rt_triple<int, void*, void*> > (rawCommand=0x25a93b8, target=, args=) at command.cc:59
#13 0x00000000004c336f in rpc::CommandMap::call_command (this=0x72b860, key=0x7fff25dacd00 "execute", arg=..., target=...) at command_map.cc:171
#14 0x00000000004cea87 in rpc::parse_command (target=..., first=0x7fa58c004a70 "", last=) at parse_commands.cc:166
#15 0x00000000004cf937 in rpc::parse_command_multiple (target=..., first=, last=0x7fa58c004a70 "") at parse_commands.cc:176
#16 0x00000000004d0279 in rpc::call_object (command=, target=...) at parse_commands.cc:243
#17 0x00000000004c5404 in rpc::CommandScheduler::call_item (this=0x253b3e0, item=0x7fa58c001710) at command_scheduler.cc:100
#18 0x000000000040f02b in operator() () at /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/tr1_impl/functional:2024
#19 priority_queue_perform () at ../rak/priority_queue_default.h:98
#20 client_perform () at main.cc:176
#21 0x00007fa59d17418a in torrent::thread_base::event_loop (thread=0x2549850) at thread_base.cc:139
#22 0x0000000000412c0f in main (argc=1, argv=0x7fff25dad9e8) at main.cc:857
The text was updated successfully, but these errors were encountered: