Hi Bill-

On Apr 17, 2007, at 4:34 PM, Bill Kelly wrote:

> Hi,
>
> I'm getting a deadlock on this small program, on both Windows
> and Linux:
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> require 'net/ftp'
> Thread.abort_on_exception = true
> ftp = Net::FTP.new('ftp.idsoftware.com')
> p( Thread.new {$SAFE=4; ftp.login('anonymous', 'abc / def.com')}.value )
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>
>  # ruby -v ftp_safe_test.rb
>  ruby 1.8.4 (2005-12-24) [i386-mswin32]
>  ftp_safe_test.rb:4:in `value': Thread(0x27855c8): deadlock (fatal)
>          from ftp_safe_test.rb:4
>
>
>  $ ruby -v safe_ftp_test.rb
>  ruby 1.8.4 (2005-12-24) [i686-linux]
>  safe_ftp_test.rb:4:in `value': Thread(0x4f060748): deadlock (fatal)
>          from safe_ftp_test.rb:4
>
>
> Now, I didn't necessarily expect the code to WORK at $SAFE=4,
> but I was anticipating a SecurityError rather than a deadlock.
>
> (I've tried it with Thread.abort_on_exception both true and
> false, same result.)
>
> Any thoughts?
>
> Thanks,
>
> Regards,
>
> Bill

	Are you using ruby 1.8.6 by chance? If so install the laets  
fastthread gem and require it in your script to see if it fixes the  
deadlock. Unfortunately the fastthread code in the ruby1.8.6 release  
has some bugs that are fixed in the fastthread gem

Cheers-
-- Ezra Zygmuntowicz 
-- Lead Rails Evangelist
-- ez / engineyard.com
-- Engine Yard, Serious Rails Hosting
-- (866) 518-YARD (9273)