Bug #1848: Net::SSH hangs
http://redmine.ruby-lang.org/issues/show/1848

起票者: Shyouhei Urabe
ステータス: Open, 優先度: Normal
カテゴリ: core, Target version: Ruby 1.8.7
ruby -v: 1.8.7-p135 and later

Revision r21165 以降、Net::SSHを使う場合(具体的にいうとCapistrano)で、スレッド切り替えがうまくいかないという報告を受けました
# また聞きでもうしわけない

https://capistrano.lighthouseapp.com/projects/8716/tickets/79
このへんが関係しているかも。してないかも。

再現方法

["localhost","localhost"].map {|h| Thread.new{Net::SSH.start(h, "foo")}}.each {|t| t.join}

proposed patch against 1.8.7

--- eval.c      (revision 24335)
+++ eval.c      (working copy)
@@ -11228,7 +11228,7 @@
            break;
        }
        if ((th->status == THREAD_RUNNABLE || th == th_found) && th->stk_ptr) {
-           if (!next || next->priority < th->priority) {
+           if (!next || next->priority <= th->priority) {
                     th_found->status = THREAD_RUNNABLE;
                     th_found->wait_for = 0;


----------------------------------------
http://redmine.ruby-lang.org