Deluge 有时会在没有明显原因的情况下达到 100% CPU(没有活动的种子)。如果我重新启动它,CPU 会变为 0% 左右
还有其他人遇到过吗?
编辑:
大声笑,终于解决了这个错误(经过一些调查)。简而言之,它似乎是由 Deluge 使用 twisted.internet.run() 而不是 gtk.main() 作为它的主循环,然后在内部调用 gobject.threads_init()导致的,它设置了一个 SIGCHLD 处理程序,最终归结为PyGtk 中的一个错误,该补丁已解决:
diff --git a/gtk/gtk.override b/gtk/gtk.override
index 75018f4..94309a6 100644
--- a/gtk/gtk.override
+++ b/gtk/gtk.override
@@ -1151,9 +1151,10 @@ pygtk_main_watch_check(GSource *source)
#ifdef HAVE_PYSIGNAL_SETWAKEUPFD
PySignalWatchSource *real_source = (PySignalWatchSource *)source;
GPollFD *poll_fd = &real_source->fd;
- int data_size = 0;
+ unsigned char dummy;
+ gssize ret;
if (poll_fd->revents & G_IO_IN)
- data_size = read(poll_fd->fd, 0, 1);
+ ret = read(poll_fd->fd, &dummy, 1);
#endif
state = pyg_gil_state_ensure();
现在 Deluge 工作正常,我知道这个补丁修复了其他使用 PyGtk 的程序中的类似错误。
我相信这是 Deluge 开发人员将其归咎于他们用于显示文件的 GTK+ 控件的错误。简而言之,解决方法是不使用文件窗格,也不使用“打开文件夹”上下文菜单选项。
deluge-web
有一个单独的错误也会导致 CPU 过高,但这已在其网站上提供的最新版本中正式修复。Deluge 论坛提供了有关此问题的更多详细信息,包括错误报告的链接以及 Natty 和 Maverick 的已修补 deb。
http://forum.deluge-torrent.org/viewtopic.php?p=152813#p152813