Deadlock in ferret server running in Cygwin

Hi everyone,

We are having instability running the acts_as_ferret DRb server on
Cygwin, with the ferret server crashing after a variable amount of time,
from as little as 2 hours to as much as a week. This is what we get from
the server:

deadlock 0x7f2eb13c: sleep:F(14) - /usr/lib/ruby/1.8/drb/drb.rb:566
deadlock 0x7ed56fb4: sleep:F(13) - /usr/lib/ruby/1.8/drb/drb.rb:566
deadlock 0x7ee1d7e0: sleep:F(9) - /usr/lib/ruby/1.8/drb/drb.rb:566
deadlock 0x7eee57a4: sleep:F(8) - /usr/lib/ruby/1.8/drb/drb.rb:566
deadlock 0x7ef716f0: sleep:F(7) - /usr/lib/ruby/1.8/drb/drb.rb:566
deadlock 0x7ee9d88c: sleep:F(4) - /usr/lib/ruby/1.8/drb/drb.rb:944
deadlock 0x1043c8e8: sleep:J(0x7ef77b54) (main) -
/coupa/script/ferret_server:7
deadlock 0x7ef77b54: sleep:F(6) - /usr/lib/ruby/1.8/drb/drb.rb:944
/usr/lib/ruby/1.8/drb/drb.rb:1581: Thread(0x7eddd4c4): deadlock (fatal)

Note that the ferret_server script is a minimal shell for running as a
service in Windows:

#!/usr/bin/env ruby

require File.join(File.dirname(FILE), ‘…/config/boot’)
require File.join(File.dirname(FILE), ‘…/config/environment’)

ActsAsFerret::Remote::Server.start
DRb.thread.join

I found an almost identical stack trace in this thread:

http://www.ruby-forum.com/topic/150473

But that was happening in the native Windows port of Ruby, and the final
solution was specific to Windows. We also took the advice given in that
thread to upgrade Ruby, so this is our setup:

  1. acts_as_ferret 0.4.1
  2. ferret 0.11.6
  3. ruby 1.8.6p114
  4. Cygwin DLL version: 1.5.25
  5. Windows 2003 Server Ver 5.2 Build 3790 Service Pack 2

Anybody else running ferret drb server on Cygwin?

Here’s our ruby -v:

ruby 1.8.6 (2008-03-03 patchlevel 114) [i386-cygwin]