From: cremes.devlist@... Date: 2006-05-17T04:25:18+09:00 Subject: reproducible bug in DRb on OSX I've been tearing my hair out the last few days trying to track down a bug in a gem that turns out to live in DRb. The gem is 'reliable- msg' and it relies on DRb for rpc (I've cc'ed the author too). I am not a good enough rubyist to track the problem all the way to its true source, but I do have a simple test case to reproduce the bug. Plus, there's a simple work around (look at the comments in the server sample code). As near as I can tell, this only breaks on OSX (OSX 10.4.6, ruby 1.8.4, DRb 2.0.4). The error concerns ACL handling and how 127.0.0.1/localhost is interpreted (maybe an ipv6 prob?). Doing a 'netstat -an|grep 9000' while the following code is run shows: tcp6 0 0 ::1.9000 *.* LISTEN With apologies to Eric Hodel from whom I borrowed some code, here are the samples: ------ SERVER -------- #!/usr/bin/env ruby -w # simple_service.rb # A simple DRb service # load DRb require 'drb' require 'drb/acl' # start up the DRb service DRb.start_service 'druby://localhost:9000', [], :tcp_acl => ACL.new('allow 127.0.0.1'.split(" "), ACL::ALLOW_DENY) # <-- causes failure #:tcp_acl => ACL.new('allow localhost'.split(" "), ACL::ALLOW_DENY) <-- works # works if you replace 127.0.0.1 with localhost # wait for the DRb service to finish before exiting DRb.thread.join ------------- --------- CLIENT --------- #!/usr/bin/env ruby -w # simple_client.rb # A simple DRb client require 'drb' # attach to the DRb server remote_array = DRbObject.new nil, 'druby://localhost:9000' puts remote_array.size remote_array << 1 puts remote_array.size ------------- The error displayed by the client is: ~/developer/projects/ruby/bugs/drb-acl cremes$ ruby -w simple_client.rb druby://localhost:9000 /opt/local/lib/ruby/1.8/drb/drb.rb:567:in `load': connection closed (DRb::DRbConnError) from /opt/local/lib/ruby/1.8/drb/drb.rb:629:in `recv_reply' from /opt/local/lib/ruby/1.8/drb/drb.rb:918:in `recv_reply' from /opt/local/lib/ruby/1.8/drb/drb.rb:1192:in `send_message' from /opt/local/lib/ruby/1.8/drb/drb.rb:1083:in `method_missing' from /opt/local/lib/ruby/1.8/drb/drb.rb:1167:in `open' from /opt/local/lib/ruby/1.8/drb/drb.rb:1082:in `method_missing' from /opt/local/lib/ruby/1.8/drb/drb.rb:1100:in `with_friend' from /opt/local/lib/ruby/1.8/drb/drb.rb:1081:in `method_missing' from simple_client.rb:13