# DRb Crashing

**URL:** <https://rubytalk.org/t/drb-crashing/22500>\
**Category:** ruby-talk\
**Created:** [15 November 2005 20:52 UTC](https://rubytalk.org/t/drb-crashing/22500 "2005-11-15T20:52:38Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![James\_Edward\_Gray\_II](https://avatars.discourse-cdn.com/v4/letter/j/ea5d25/32.png) [@James\_Edward\_Gray\_II](https://rubytalk.org/u/James_Edward_Gray_II)\
**Post date:** [15 November 2005 20:52 UTC](https://rubytalk.org/t/drb-crashing/22500/1 "2005-11-15T20:52:38Z")

</div>

If I launch this server:

#!/usr/local/bin/ruby

require "drb"  
require "rinda/tuplespace"

tuplespace = Rinda::TupleSpace.new  
DRb.start\_service("druby://localhost:61676", tuplespace)

loop do  
&nbsp;&nbsp;&nbsp;nums = Array.new(rand(9) + 2) { rand(10) + 1 }  
&nbsp;&nbsp;&nbsp;ops = Array.new(nums.size - 1) { %w{+ - \* /}[rand(4)] }  
&nbsp;&nbsp;&nbsp;problem = nums.zip(ops).flatten.compact.join(" ")

&nbsp;&nbsp;&nbsp;tuplespace.write(["Problem", problem])  
&nbsp;&nbsp;&nbsp;puts tuplespace.take(["Result", String]).last  
end

\_\_END\_\_

Then run this client:

#!/usr/local/bin/ruby -w

require "drb"  
require "rinda/tuplespace"

DRb.start\_service  
tuplespace = Rinda::TupleSpaceProxy.new(  
&nbsp;&nbsp;&nbsp;DRbObject.new\_with\_uri("druby://localhost:61676")  
)

while problem = tuplespace.take(["Problem", %r{^\d+(?: [-+\*/] \d+)+$}])  
&nbsp;&nbsp;&nbsp;tuplespace.write(["Result", "#{problem.last} = #{eval problem.last}"])  
end

\_\_END\_\_

The client crashes, generally within a few seconds. Adding a sleep inside the server loop seems to resolve the issue.

Anyone know why?

James Edward Gray II

---

<div class="post-metadata">

**Author:** ![Eric\_Hodel1](https://avatars.discourse-cdn.com/v4/letter/e/a9adbd/32.png) [@Eric\_Hodel1](https://rubytalk.org/u/Eric_Hodel1)\
**Post date:** [15 November 2005 23:12 UTC](https://rubytalk.org/t/drb-crashing/22500/2 "2005-11-15T23:12:31Z")

</div>

> If I launch this server:
> 
> #!/usr/local/bin/ruby
> 
> require "drb"  
> require "rinda/tuplespace"
> 
> tuplespace = Rinda::TupleSpace.new  
> DRb.start\_service("druby://localhost:61676", tuplespace)
> 
> loop do  
> &nbsp;&nbsp;nums = Array.new(rand(9) + 2) { rand(10) + 1 }  
> &nbsp;&nbsp;ops = Array.new(nums.size - 1) { %w{+ - \* /}[rand(4)] }  
> &nbsp;&nbsp;problem = nums.zip(ops).flatten.compact.join(" ")
> 
> &nbsp;&nbsp;tuplespace.write(["Problem", problem])  
> &nbsp;&nbsp;puts tuplespace.take(["Result", String]).last  
> end
> 
> \_\_END\_\_
> 
> Then run this client:
> 
> #!/usr/local/bin/ruby -w
> 
> require "drb"  
> require "rinda/tuplespace"
> 
> DRb.start\_service  
> tuplespace = Rinda::TupleSpaceProxy.new(  
> &nbsp;&nbsp;DRbObject.new\_with\_uri("druby://localhost:61676")  
> )
> 
> while problem = tuplespace.take(["Problem", %r{^\d+(?: [-+\*/] \d+)+$}])  
> &nbsp;&nbsp;tuplespace.write(["Result", "#{problem.last} = #{eval problem.last}"])  
> end
> 
> \_\_END\_\_
> 
> The client crashes, generally within a few seconds. Adding a sleep inside the server loop seems to resolve the issue.

With what error?

> Anyone know why?

I've had better luck with these kinds of errors by placing the TupleSpace in its own process.

> **···**
>
> On Nov 15, 2005, at 12:52 PM, James Edward Gray II wrote:
> 
> --  
> Eric Hodel - drbrain@segment7.net - [http://segment7.net](http://segment7.net)  
> FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04

---

<div class="post-metadata">

**Author:** ![Hugh\_Sasse](https://avatars.discourse-cdn.com/v4/letter/h/d6d6ee/32.png) [@Hugh\_Sasse](https://rubytalk.org/u/Hugh_Sasse)\
**Post date:** [16 November 2005 00:50 UTC](https://rubytalk.org/t/drb-crashing/22500/3 "2005-11-16T00:50:10Z")

</div>

> If I launch this server:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]

> \_\_END\_\_
> 
> Then run this client:
> 
> #!/usr/local/bin/ruby -w
> 
> require "drb"  
> require "rinda/tuplespace"
> 
> DRb.start\_service  
> tuplespace = Rinda::TupleSpaceProxy.new(  
> DRbObject.new\_with\_uri("druby://localhost:61676")  
> )
> 
> while problem = tuplespace.take(["Problem", %r{^\d+(?: [-+\*/] \d+)+$}])  
> tuplespace.write(["Result", "#{problem.last} = #{eval problem.last}"])  
> end
> 
> \_\_END\_\_
> 
> The client crashes, generally within a few seconds. Adding a sleep inside the  
> server loop seems to resolve the issue.
> 
> Anyone know why?

No, I don't. What happens if you match the old way? Like:  
&nbsp;&nbsp;while problem = tuplespace.take(["Problem", nil])

> James Edward Gray II

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hugh

> **···**
>
> On Wed, 16 Nov 2005, James Edward Gray II wrote:

---

<div class="post-metadata">

**Author:** ![Ptkwt](https://avatars.discourse-cdn.com/v4/letter/p/f14d63/32.png) [@Ptkwt](https://rubytalk.org/u/Ptkwt)\
**Post date:** [1 December 2005 21:07 UTC](https://rubytalk.org/t/drb-crashing/22500/4 "2005-12-01T21:07:31Z")

</div>

In article \<C30FFBD3-4115-47B1-B772-8BF5A73998C0@grayproductions.net\>,

> **···**
>
> James Edward Gray II \<james@grayproductions.net\> wrote:
> 
> > If I launch this server:
> > 
> > #!/usr/local/bin/ruby
> > 
> > require "drb"  
> > require "rinda/tuplespace"
> > 
> > tuplespace = Rinda::TupleSpace.new  
> > DRb.start\_service("druby://localhost:61676", tuplespace)
> > 
> > loop do  
> > &nbsp;&nbsp;nums = Array.new(rand(9) + 2) { rand(10) + 1 }  
> > &nbsp;&nbsp;ops = Array.new(nums.size - 1) { %w{+ - \* /}[rand(4)] }  
> > &nbsp;&nbsp;problem = nums.zip(ops).flatten.compact.join(" ")
> > 
> > &nbsp;&nbsp;tuplespace.write(["Problem", problem])  
> > &nbsp;&nbsp;puts tuplespace.take(["Result", String]).last  
> > end
> > 
> > \_\_END\_\_
> > 
> > Then run this client:
> > 
> > #!/usr/local/bin/ruby -w
> > 
> > require "drb"  
> > require "rinda/tuplespace"
> > 
> > DRb.start\_service  
> > tuplespace = Rinda::TupleSpaceProxy.new(  
> > &nbsp;&nbsp;DRbObject.new\_with\_uri("druby://localhost:61676")  
> > )
> > 
> > while problem = tuplespace.take(["Problem", %r{^\d+(?: [-+\*/] \d+)+$}])  
> > &nbsp;&nbsp;tuplespace.write(["Result", "#{problem.last} = #{eval  
> > problem.last}"])  
> > end
> > 
> > \_\_END\_\_
> > 
> > The client crashes, generally within a few seconds. Adding a sleep  
> > inside the server loop seems to resolve the issue.
> > 
> > Anyone know why?
> > 
> > James Edward Gray II
> 
> Just wondering if you've gotten any resolution on this? I'm seeing the same  
> thing on Tiger both with your test code and my own DRb code. While the same  
> code runs fine for hours on Linux and FreeBSD. It seems that DRb cannot be  
> used reliably on OSX. Anyone have any idea what might be going on?
> 
> Phil

---

<div class="post-metadata">

**Author:** ![James\_Edward\_Gray\_II](https://avatars.discourse-cdn.com/v4/letter/j/ea5d25/32.png) [@James\_Edward\_Gray\_II](https://rubytalk.org/u/James_Edward_Gray_II)\
**Post date:** [15 November 2005 23:17 UTC](https://rubytalk.org/t/drb-crashing/22500/5 "2005-11-15T23:17:26Z")

</div>

$ ruby client.rb  
(druby://localhost:61676) /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:332:in `move': undefined method `push' for :EDQUOT=:Symbol (NoMethodError)  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/monitor.rb:229:in `synchronize'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:329:in `move'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1552:in `perform\_without\_block'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1512:in `perform'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1586:in `main\_loop'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1582:in `main\_loop'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1578:in `main\_loop'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1427:in `run'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1424:in `run'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1344:in `initialize'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1624:in `start\_service'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) server.rb:7  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from /usr/local/lib/ruby/1.8/rinda/rinda.rb:153:in `take'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from client.rb:11

James Edward Gray II

> **···**
>
> On Nov 15, 2005, at 5:12 PM, Eric Hodel wrote:
> 
> > > The client crashes, generally within a few seconds. Adding a sleep inside the server loop seems to resolve the issue.
> > 
> > With what error?

---

<div class="post-metadata">

**Author:** ![Eric\_Hodel1](https://avatars.discourse-cdn.com/v4/letter/e/a9adbd/32.png) [@Eric\_Hodel1](https://rubytalk.org/u/Eric_Hodel1)\
**Post date:** [16 November 2005 01:05 UTC](https://rubytalk.org/t/drb-crashing/22500/6 "2005-11-16T01:05:44Z")

</div>

It seems to be a problem only when OS X is involved.

I've been running the same two scripts using Ruby 1.8.3 on FreeBSD for the past hour without error. I'll let them run for at least another four or five to see if they fail.

See-also: [ruby-core:06629]

> **···**
>
> On Nov 15, 2005, at 4:50 PM, Hugh Sasse wrote:
> 
> > On Wed, 16 Nov 2005, James Edward Gray II wrote:
> > 
> > > The client crashes, generally within a few seconds. Adding a sleep inside the  
> > > server loop seems to resolve the issue.
> > > 
> > > Anyone know why?
> > 
> > No, I don't. What happens if you match the old way? Like:  
> > &nbsp;&nbsp;while problem = tuplespace.take(["Problem", nil])
> 
> --  
> Eric Hodel - drbrain@segment7.net - [http://segment7.net](http://segment7.net)  
> FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04

---

<div class="post-metadata">

**Author:** ![James\_Edward\_Gray\_II](https://avatars.discourse-cdn.com/v4/letter/j/ea5d25/32.png) [@James\_Edward\_Gray\_II](https://rubytalk.org/u/James_Edward_Gray_II)\
**Post date:** [16 November 2005 15:22 UTC](https://rubytalk.org/t/drb-crashing/22500/7 "2005-11-16T15:22:33Z")

</div>

The Regexp is pretty critical in this case. It validates the data before an otherwise dangerous call to eval().

James Edward Gray II

> **···**
>
> On Nov 15, 2005, at 6:50 PM, Hugh Sasse wrote:
> 
> > On Wed, 16 Nov 2005, James Edward Gray II wrote:
> > 
> > > If I launch this server:
> > 
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]
> > 
> > > \_\_END\_\_
> > > 
> > > Then run this client:
> > > 
> > > #!/usr/local/bin/ruby -w
> > > 
> > > require "drb"  
> > > require "rinda/tuplespace"
> > > 
> > > DRb.start\_service  
> > > tuplespace = Rinda::TupleSpaceProxy.new(  
> > > DRbObject.new\_with\_uri("druby://localhost:61676")  
> > > )
> > > 
> > > while problem = tuplespace.take(["Problem", %r{^\d+(?: [-+\*/] \d+)+$}])  
> > > tuplespace.write(["Result", "#{problem.last} = #{eval problem.last}"])  
> > > end
> > > 
> > > \_\_END\_\_
> > > 
> > > The client crashes, generally within a few seconds. Adding a sleep inside the  
> > > server loop seems to resolve the issue.
> > > 
> > > Anyone know why?
> > 
> > No, I don't. What happens if you match the old way? Like:  
> > &nbsp;&nbsp;while problem = tuplespace.take(["Problem", nil])

---

<div class="post-metadata">

**Author:** ![Eric\_Hodel1](https://avatars.discourse-cdn.com/v4/letter/e/a9adbd/32.png) [@Eric\_Hodel1](https://rubytalk.org/u/Eric_Hodel1)\
**Post date:** [1 December 2005 22:18 UTC](https://rubytalk.org/t/drb-crashing/22500/8 "2005-12-01T22:18:43Z")

</div>

I haven't had the time to look into it yet. I'll try to get some time in against the latest 1.8.4 preview RSN.

> **···**
>
> On Dec 1, 2005, at 1:07 PM, Phil Tomson wrote:
> 
> > Just wondering if you've gotten any resolution on this? I'm seeing the same  
> > thing on Tiger both with your test code and my own DRb code. While the same  
> > code runs fine for hours on Linux and FreeBSD. It seems that DRb cannot be  
> > used reliably on OSX. Anyone have any idea what might be going on?
> 
> --  
> Eric Hodel - drbrain@segment7.net - [http://segment7.net](http://segment7.net)  
> This implementation is HODEL-HASH-9600 compliant
> 
> [http://trackmap.robotcoop.com](http://trackmap.robotcoop.com)

---

<div class="post-metadata">

**Author:** ![Eric\_Hodel1](https://avatars.discourse-cdn.com/v4/letter/e/a9adbd/32.png) [@Eric\_Hodel1](https://rubytalk.org/u/Eric_Hodel1)\
**Post date:** [5 December 2005 02:15 UTC](https://rubytalk.org/t/drb-crashing/22500/9 "2005-12-05T02:15:40Z")

</div>

Compiling Ruby with GCC3.3 seems to make the problem go away [ruby-core:6825].

GCC 4 seems to build an ok Ruby on other systems [ruby-core:6827].

> **···**
>
> On Dec 1, 2005, at 1:07 PM, Phil Tomson wrote:
> 
> > In article \<C30FFBD3-4115-47B1-B772-8BF5A73998C0@grayproductions.net\>,  
> > James Edward Gray II \<james@grayproductions.net\> wrote:
> > 
> > > If I launch this server:
> > > 
> > > #!/usr/local/bin/ruby
> > > 
> > > require "drb"  
> > > require "rinda/tuplespace"
> > > 
> > > tuplespace = Rinda::TupleSpace.new  
> > > DRb.start\_service("druby://localhost:61676", tuplespace)
> > > 
> > > loop do  
> > > &nbsp;&nbsp;nums = Array.new(rand(9) + 2) { rand(10) + 1 }  
> > > &nbsp;&nbsp;ops = Array.new(nums.size - 1) { %w{+ - \* /}[rand(4)] }  
> > > &nbsp;&nbsp;problem = nums.zip(ops).flatten.compact.join(" ")
> > > 
> > > &nbsp;&nbsp;tuplespace.write(["Problem", problem])  
> > > &nbsp;&nbsp;puts tuplespace.take(["Result", String]).last  
> > > end
> > > 
> > > \_\_END\_\_
> > > 
> > > Then run this client:
> > > 
> > > #!/usr/local/bin/ruby -w
> > > 
> > > require "drb"  
> > > require "rinda/tuplespace"
> > > 
> > > DRb.start\_service  
> > > tuplespace = Rinda::TupleSpaceProxy.new(  
> > > &nbsp;&nbsp;DRbObject.new\_with\_uri("druby://localhost:61676")  
> > > )
> > > 
> > > while problem = tuplespace.take(["Problem", %r{^\d+(?: [-+\*/] \d+)+$}])  
> > > &nbsp;&nbsp;tuplespace.write(["Result", "#{problem.last} = #{eval  
> > > problem.last}"])  
> > > end
> > > 
> > > \_\_END\_\_
> > > 
> > > The client crashes, generally within a few seconds. Adding a sleep  
> > > inside the server loop seems to resolve the issue.
> > > 
> > > Anyone know why?
> > 
> > Just wondering if you've gotten any resolution on this? I'm seeing the same  
> > thing on Tiger both with your test code and my own DRb code. While the same  
> > code runs fine for hours on Linux and FreeBSD. It seems that DRb cannot be  
> > used reliably on OSX. Anyone have any idea what might be going on?
> 
> --  
> Eric Hodel - drbrain@segment7.net - [http://segment7.net](http://segment7.net)  
> This implementation is HODEL-HASH-9600 compliant
> 
> [http://trackmap.robotcoop.com](http://trackmap.robotcoop.com)

---

<div class="post-metadata">

**Author:** ![Eric\_Hodel1](https://avatars.discourse-cdn.com/v4/letter/e/a9adbd/32.png) [@Eric\_Hodel1](https://rubytalk.org/u/Eric_Hodel1)\
**Post date:** [15 November 2005 23:50 UTC](https://rubytalk.org/t/drb-crashing/22500/10 "2005-11-15T23:50:35Z")

</div>

I'm seeing similar, but only on the Mac.

I wrote [ruby-core:06629], so you may want to add your ruby versions and any additional insight there, as I think this is a problem somewhere in the guts of Ruby.

> **···**
>
> On Nov 15, 2005, at 3:17 PM, James Edward Gray II wrote:
> 
> > On Nov 15, 2005, at 5:12 PM, Eric Hodel wrote:
> > 
> > > > The client crashes, generally within a few seconds. Adding a sleep inside the server loop seems to resolve the issue.
> > > 
> > > With what error?
> > 
> > $ ruby client.rb  
> > (druby://localhost:61676) /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:332:in `move': undefined method `push' for :EDQUOT=:Symbol (NoMethodError)
> 
> --  
> Eric Hodel - drbrain@segment7.net - [http://segment7.net](http://segment7.net)  
> FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04

---

<div class="post-metadata">

**Author:** ![Hugh\_Sasse](https://avatars.discourse-cdn.com/v4/letter/h/d6d6ee/32.png) [@Hugh\_Sasse](https://rubytalk.org/u/Hugh_Sasse)\
**Post date:** [16 November 2005 15:42 UTC](https://rubytalk.org/t/drb-crashing/22500/11 "2005-11-16T15:42:30Z")

</div>

> \>  
> \>  
> \> \> If I launch this server:  
> \> \>  
> \> [...]  
> \>  
> \> \> \_\_END\_\_  
> \> \>  
> \> \> Then run this client:  
> \> \>  
> \> \> #!/usr/local/bin/ruby -w  
> \> \>  
> \> \> require "drb"  
> \> \> require "rinda/tuplespace"  
> \> \>  
> \> \> DRb.start\_service  
> \> \> tuplespace = Rinda::TupleSpaceProxy.new(  
> \> \> DRbObject.new\_with\_uri("druby://localhost:61676")  
> \> \> )  
> \> \>  
> \> \> while problem = tuplespace.take(["Problem", %r{^\d+(?: [-+\*/] \d+)+$}])  
> \> \> tuplespace.write(["Result", "#{problem.last} = #{eval problem.last}"])  
> \> \> end  
> \> \>  
> \> \> \_\_END\_\_  
> \> \>  
> \> \> The client crashes, generally within a few seconds. Adding a sleep inside  
> \> \> the  
> \> \> server loop seems to resolve the issue.  
> \> \>  
> \> \> Anyone know why?  
> \> \>  
> \>  
> \> No, I don't. What happens if you match the old way? Like:  
> \> while problem = tuplespace.take(["Problem", nil])
> 
> The Regexp is pretty critical in this case. It validates the data before an  
> otherwise dangerous call to eval().

&nbsp;&nbsp;while problem = tuplespace.take(["Problem", nil])  
&nbsp;&nbsp;&nbsp;&nbsp;unless problem.last =~ %r{^\d+(?: [-+\*/] \d+)+$}  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts "Bogus input \'#{problem.last}\', Ted!" #:-)  
&nbsp;&nbsp;&nbsp;&nbsp;else  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tuplespace.write(["Result", "#{problem.last} = #{eval problem.last}"])  
&nbsp;&nbsp;&nbsp;&nbsp;end  
&nbsp;&nbsp;end

> James Edward Gray II

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hugh

> **···**
>
> On Thu, 17 Nov 2005, James Edward Gray II wrote:
> 
> > On Nov 15, 2005, at 6:50 PM, Hugh Sasse wrote:  
> > \> On Wed, 16 Nov 2005, James Edward Gray II wrote:

---

<div class="post-metadata">

**Author:** ![James\_Edward\_Gray\_II](https://avatars.discourse-cdn.com/v4/letter/j/ea5d25/32.png) [@James\_Edward\_Gray\_II](https://rubytalk.org/u/James_Edward_Gray_II)\
**Post date:** [16 November 2005 15:49 UTC](https://rubytalk.org/t/drb-crashing/22500/12 "2005-11-16T15:49:58Z")

</div>

This is not equivalent. You removed the problem from the TupleSpace whereas my version leaves it for someone else to solve.

I realize this isn't what you were originally asking for and I can try the change, if you want to see it. To me it's irrelevant though, because TupleSpace supports a Regexp search and it should not be crashing when doing it.

This is just a simplified case I cooked up to show the issue.

James Edward Gray II

> **···**
>
> On Nov 16, 2005, at 9:42 AM, Hugh Sasse wrote:
> 
> > On Thu, 17 Nov 2005, James Edward Gray II wrote:
> > 
> > > On Nov 15, 2005, at 6:50 PM, Hugh Sasse wrote:
> > > 
> > > > On Wed, 16 Nov 2005, James Edward Gray II wrote:
> > > > 
> > > > > If I launch this server:
> > > > 
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]
> > > > 
> > > > > \_\_END\_\_
> > > > > 
> > > > > Then run this client:
> > > > > 
> > > > > #!/usr/local/bin/ruby -w
> > > > > 
> > > > > require "drb"  
> > > > > require "rinda/tuplespace"
> > > > > 
> > > > > DRb.start\_service  
> > > > > tuplespace = Rinda::TupleSpaceProxy.new(  
> > > > > DRbObject.new\_with\_uri("druby://localhost:61676")  
> > > > > )
> > > > > 
> > > > > while problem = tuplespace.take(["Problem", %r{^\d+(?: [-+\*/] \d+)+$}])  
> > > > > tuplespace.write(["Result", "#{problem.last} = #{eval problem.last}"])  
> > > > > end
> > > > > 
> > > > > \_\_END\_\_
> > > > > 
> > > > > The client crashes, generally within a few seconds. Adding a sleep inside  
> > > > > the  
> > > > > server loop seems to resolve the issue.
> > > > > 
> > > > > Anyone know why?
> > > > 
> > > > No, I don't. What happens if you match the old way? Like:  
> > > > while problem = tuplespace.take(["Problem", nil])
> > > 
> > > The Regexp is pretty critical in this case. It validates the data before an  
> > > otherwise dangerous call to eval().
> > 
> > &nbsp;&nbsp;while problem = tuplespace.take(["Problem", nil])  
> > &nbsp;&nbsp;&nbsp;&nbsp;unless problem.last =~ %r{^\d+(?: [-+\*/] \d+)+$}  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts "Bogus input \'#{problem.last}\', Ted!" #:-)  
> > &nbsp;&nbsp;&nbsp;&nbsp;else  
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tuplespace.write(["Result", "#{problem.last} = #{eval problem.last}"])  
> > &nbsp;&nbsp;&nbsp;&nbsp;end  
> > &nbsp;&nbsp;end

---

<div class="post-metadata">

**Author:** ![Hugh\_Sasse](https://avatars.discourse-cdn.com/v4/letter/h/d6d6ee/32.png) [@Hugh\_Sasse](https://rubytalk.org/u/Hugh_Sasse)\
**Post date:** [16 November 2005 16:09 UTC](https://rubytalk.org/t/drb-crashing/22500/13 "2005-11-16T16:09:56Z")

</div>

> \>  
> \>  
> \> \>  
> \> \>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]

> \> \> The Regexp is pretty critical in this case. It validates the data before  
> \> \> an  
> \> \> otherwise dangerous call to eval().  
> \> \>  
> \>  
> \> while problem = tuplespace.take(["Problem", nil])  
> \> unless problem.last =~ %r{^\d+(?: [-+\*/] \d+)+$}  
> \> puts "Bogus input \'#{problem.last}\', Ted!" #:-)  
> \> else  
> \> tuplespace.write(["Result", "#{problem.last} = #{eval problem.last}"])  
> \> end  
> \> end
> 
> This is not equivalent. You removed the problem from the TupleSpace whereas  
> my version leaves it for someone else to solve.

Yes, that's true, but it's not really the point I was making -- one  
could write it back, or whatever.

> I realize this isn't what you were originally asking for and I can try the  
> change, if you want to see it. To me it's irrelevant though, because  
> TupleSpace supports a Regexp search and it should not be crashing when doing  
> it.

IIRC it didn't in the past. My point is that if the old way works then  
maybe it narrows down where to swat the bug. My expectation is that  
it won't make any difference, but it it isn't tested we won't know.

> This is just a simplified case I cooked up to show the issue.
> 
> James Edward Gray II

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hugh

> **···**
>
> On Thu, 17 Nov 2005, James Edward Gray II wrote:
> 
> > On Nov 16, 2005, at 9:42 AM, Hugh Sasse wrote:  
> > \> On Thu, 17 Nov 2005, James Edward Gray II wrote:  
> > \> \> On Nov 15, 2005, at 6:50 PM, Hugh Sasse wrote:  
> > \> \> \> On Wed, 16 Nov 2005, James Edward Gray II wrote:

---

<div class="post-metadata">

**Author:** ![James\_Edward\_Gray\_II](https://avatars.discourse-cdn.com/v4/letter/j/ea5d25/32.png) [@James\_Edward\_Gray\_II](https://rubytalk.org/u/James_Edward_Gray_II)\
**Post date:** [16 November 2005 16:53 UTC](https://rubytalk.org/t/drb-crashing/22500/14 "2005-11-16T16:53:44Z")

</div>

Same issue.

$ ruby client.rb  
(druby://localhost:61676) /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:446:in `move': undefined method `push' for :push:Symbol (NoMethodError)  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/monitor.rb:229:in `synchronize'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:443:in `move'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1552:in `perform\_without\_block'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1512:in `perform'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1586:in `main\_loop'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1582:in `main\_loop'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1578:in `main\_loop'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1427:in `run'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1424:in `run'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1344:in `initialize'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) /usr/local/lib/ruby/1.8/drb/drb.rb:1624:in `start\_service'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) server.rb:7  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from /usr/local/lib/ruby/1.8/rinda/rinda.rb:229:in `take'  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from client.rb:11  
$ cat client.rb  
#!/usr/local/bin/ruby -w

require "drb"  
require "rinda/tuplespace"

DRb.start\_service  
tuplespace = Rinda::TupleSpaceProxy.new(  
&nbsp;&nbsp;&nbsp;DRbObject.new\_with\_uri("druby://localhost:61676")  
)

while problem = tuplespace.take(["Problem", nil])  
&nbsp;&nbsp;&nbsp;tuplespace.write(["Result", "#{problem.last} = #{eval problem.last}"])  
end

\_\_END\_\_

James Edward Gray II

> **···**
>
> On Nov 16, 2005, at 10:09 AM, Hugh Sasse wrote:
> 
> > On Thu, 17 Nov 2005, James Edward Gray II wrote:
> > 
> > > I realize this isn't what you were originally asking for and I can try the  
> > > change, if you want to see it. To me it's irrelevant though, because  
> > > TupleSpace supports a Regexp search and it should not be crashing when doing  
> > > it.
> > 
> > IIRC it didn't in the past. My point is that if the old way works then  
> > maybe it narrows down where to swat the bug. My expectation is that  
> > it won't make any difference, but it it isn't tested we won't know.

---

<div class="post-metadata">

**Author:** ![Hugh\_Sasse](https://avatars.discourse-cdn.com/v4/letter/h/d6d6ee/32.png) [@Hugh\_Sasse](https://rubytalk.org/u/Hugh_Sasse)\
**Post date:** [16 November 2005 17:36 UTC](https://rubytalk.org/t/drb-crashing/22500/15 "2005-11-16T17:36:02Z")

</div>

> \>  
> \> \> I realize this isn't what you were originally asking for and I can try the  
> \> \> change, if you want to see it. To me it's irrelevant though, because  
> \> \> TupleSpace supports a Regexp search and it should not be crashing when  
> \> \> doing  
> \> \> it.  
> \> \>  
> \>  
> \> IIRC it didn't in the past. My point is that if the old way works then  
> \> maybe it narrows down where to swat the bug. My expectation is that  
> \> it won't make any difference, but it it isn't tested we won't know.
> 
> Same issue.

Bother.

> $ ruby client.rb  
> (druby://localhost:61676) /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:446:in  
> `move': undefined method `push' for :push:Symbol (NoMethodError)

which means the parameter port is set to :push

> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> /usr/local/lib/ruby/1.8/monitor.rb:229:in `synchronize'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:443:in `move'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> /usr/local/lib/ruby/1.8/drb/drb.rb:1552:in `perform\_without\_block'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)

something to do with @obj and @argv. These are delivered by  
\_\_send\_\_.

> /usr/local/lib/ruby/1.8/drb/drb.rb:1512:in `perform'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> /usr/local/lib/ruby/1.8/drb/drb.rb:1586:in `main\_loop'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)

seems to come from cliemt.recvfrom.

> /usr/local/lib/ruby/1.8/drb/drb.rb:1582:in `main\_loop'

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]

> /usr/local/lib/ruby/1.8/drb/drb.rb:1624:in `start\_service'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) server.rb:7  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from /usr/local/lib/ruby/1.8/rinda/rinda.rb:229:in `take'  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from client.rb:11

All comments are from looking at the CVS, but the line numbers  
agree, AFAICS.

> $ cat client.rb

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]

> \_\_END\_\_

Looks fine to me.

> James Edward Gray II

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I'm stumped.  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hugh

> **···**
>
> On Thu, 17 Nov 2005, James Edward Gray II wrote:
> 
> > On Nov 16, 2005, at 10:09 AM, Hugh Sasse wrote:  
> > \> On Thu, 17 Nov 2005, James Edward Gray II wrote:

---

<div class="post-metadata">

**Author:** ![Eric\_Hodel1](https://avatars.discourse-cdn.com/v4/letter/e/a9adbd/32.png) [@Eric\_Hodel1](https://rubytalk.org/u/Eric_Hodel1)\
**Post date:** [16 November 2005 22:46 UTC](https://rubytalk.org/t/drb-crashing/22500/16 "2005-11-16T22:46:35Z")

</div>

This is likely not a problem that can be fixed with more Ruby code.

I ran the two files on DRb for over 4 hours continuously on a FreeBSD machine, which tells me that it is Mac-specific. Mixing FreeBSD and Mac would always crash within 5 minutes at worst. My best guess is that Marshal is not operating correctly or ObjectSpace#\_id2ref is looking up bad objects.

> **···**
>
> On Nov 16, 2005, at 9:36 AM, Hugh Sasse wrote:
> 
> > On Thu, 17 Nov 2005, James Edward Gray II wrote:
> > 
> > > $ ruby client.rb  
> > > (druby://localhost:61676) /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:446:in  
> > > `move': undefined method `push' for :push:Symbol (NoMethodError)
> > 
> > which means the parameter port is set to :push
> > 
> > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> > > /usr/local/lib/ruby/1.8/monitor.rb:229:in `synchronize'  
> > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> > > /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:443:in `move'  
> > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> > > /usr/local/lib/ruby/1.8/drb/drb.rb:1552:in `perform\_without\_block'  
> > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)
> > 
> > something to do with @obj and @argv. These are delivered by  
> > \_\_send\_\_.
> > 
> > > /usr/local/lib/ruby/1.8/drb/drb.rb:1512:in `perform'  
> > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> > > /usr/local/lib/ruby/1.8/drb/drb.rb:1586:in `main\_loop'  
> > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)
> > 
> > seems to come from cliemt.recvfrom.
> > 
> > > /usr/local/lib/ruby/1.8/drb/drb.rb:1582:in `main\_loop'
> > 
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]
> > 
> > > /usr/local/lib/ruby/1.8/drb/drb.rb:1624:in `start\_service'  
> > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) server.rb:7  
> > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from /usr/local/lib/ruby/1.8/rinda/rinda.rb:229:in `take'  
> > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from client.rb:11
> > 
> > All comments are from looking at the CVS, but the line numbers  
> > agree, AFAICS.
> > 
> > > $ cat client.rb
> > 
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]
> > 
> > > \_\_END\_\_
> > 
> > Looks fine to me.
> > 
> > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I'm stumped.
> 
> --  
> Eric Hodel - drbrain@segment7.net - [http://segment7.net](http://segment7.net)  
> FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04

---

<div class="post-metadata">

**Author:** ![Eric\_Hodel1](https://avatars.discourse-cdn.com/v4/letter/e/a9adbd/32.png) [@Eric\_Hodel1](https://rubytalk.org/u/Eric_Hodel1)\
**Post date:** [16 November 2005 22:48 UTC](https://rubytalk.org/t/drb-crashing/22500/17 "2005-11-16T22:48:08Z")

</div>

I should also note that disabling the GC on the client does not affect the frequency of crashes.

> **···**
>
> On Nov 16, 2005, at 2:46 PM, Eric Hodel wrote:
> 
> > On Nov 16, 2005, at 9:36 AM, Hugh Sasse wrote:
> > 
> > > On Thu, 17 Nov 2005, James Edward Gray II wrote:
> > > 
> > > > $ ruby client.rb  
> > > > (druby://localhost:61676) /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:446:in  
> > > > `move': undefined method `push' for :push:Symbol (NoMethodError)
> > > 
> > > which means the parameter port is set to :push
> > > 
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> > > > /usr/local/lib/ruby/1.8/monitor.rb:229:in `synchronize'  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> > > > /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:443:in `move'  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> > > > /usr/local/lib/ruby/1.8/drb/drb.rb:1552:in `perform\_without\_block'  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)
> > > 
> > > something to do with @obj and @argv. These are delivered by  
> > > \_\_send\_\_.
> > > 
> > > > /usr/local/lib/ruby/1.8/drb/drb.rb:1512:in `perform'  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> > > > /usr/local/lib/ruby/1.8/drb/drb.rb:1586:in `main\_loop'  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)
> > > 
> > > seems to come from cliemt.recvfrom.
> > > 
> > > > /usr/local/lib/ruby/1.8/drb/drb.rb:1582:in `main\_loop'
> > > 
> > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]
> > > 
> > > > /usr/local/lib/ruby/1.8/drb/drb.rb:1624:in `start\_service'  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) server.rb:7  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from /usr/local/lib/ruby/1.8/rinda/rinda.rb:229:in `take'  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from client.rb:11
> > > 
> > > All comments are from looking at the CVS, but the line numbers  
> > > agree, AFAICS.
> > > 
> > > > $ cat client.rb
> > > 
> > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]
> > > 
> > > > \_\_END\_\_
> > > 
> > > Looks fine to me.
> > > 
> > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I'm stumped.
> > 
> > This is likely not a problem that can be fixed with more Ruby code.
> > 
> > I ran the two files on DRb for over 4 hours continuously on a FreeBSD machine, which tells me that it is Mac-specific. Mixing FreeBSD and Mac would always crash within 5 minutes at worst. My best guess is that Marshal is not operating correctly or ObjectSpace#\_id2ref is looking up bad objects.
> 
> --  
> Eric Hodel - drbrain@segment7.net - [http://segment7.net](http://segment7.net)  
> FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04

---

<div class="post-metadata">

**Author:** ![Ptkwt](https://avatars.discourse-cdn.com/v4/letter/p/f14d63/32.png) [@Ptkwt](https://rubytalk.org/u/Ptkwt)\
**Post date:** [1 December 2005 21:12 UTC](https://rubytalk.org/t/drb-crashing/22500/18 "2005-12-01T21:12:31Z")

</div>

In article \<97FD15FA-923E-4E03-887C-8B6C9CFCA2CF@segment7.net\>,

> **···**
>
> Eric Hodel \<drbrain@segment7.net\> wrote:
> 
> > On Nov 16, 2005, at 9:36 AM, Hugh Sasse wrote:
> > 
> > > On Thu, 17 Nov 2005, James Edward Gray II wrote:
> > > 
> > > > $ ruby client.rb  
> > > > (druby://localhost:61676) /usr/local/lib/ruby/1.8/rinda/  
> > > > tuplespace.rb:446:in  
> > > > `move': undefined method `push' for :push:Symbol (NoMethodError)
> > > 
> > > which means the parameter port is set to :push
> > > 
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> > > > /usr/local/lib/ruby/1.8/monitor.rb:229:in `synchronize'  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> > > > /usr/local/lib/ruby/1.8/rinda/tuplespace.rb:443:in `move'  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> > > > /usr/local/lib/ruby/1.8/drb/drb.rb:1552:in `perform\_without\_block'  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)
> > > 
> > > something to do with @obj and @argv. These are delivered by  
> > > \_\_send\_\_.
> > > 
> > > > /usr/local/lib/ruby/1.8/drb/drb.rb:1512:in `perform'  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)  
> > > > /usr/local/lib/ruby/1.8/drb/drb.rb:1586:in `main\_loop'  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676)
> > > 
> > > seems to come from cliemt.recvfrom.
> > > 
> > > > /usr/local/lib/ruby/1.8/drb/drb.rb:1582:in `main\_loop'
> > > 
> > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]
> > > 
> > > > /usr/local/lib/ruby/1.8/drb/drb.rb:1624:in `start\_service'  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from (druby://localhost:61676) server.rb:7  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from /usr/local/lib/ruby/1.8/rinda/rinda.rb:229:in `take'  
> > > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from client.rb:11
> > > 
> > > All comments are from looking at the CVS, but the line numbers  
> > > agree, AFAICS.
> > > 
> > > > $ cat client.rb
> > > 
> > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[...]
> > > 
> > > > \_\_END\_\_
> > > 
> > > Looks fine to me.
> > > 
> > > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I'm stumped.
> > 
> > This is likely not a problem that can be fixed with more Ruby code.
> > 
> > I ran the two files on DRb for over 4 hours continuously on a FreeBSD  
> > machine, which tells me that it is Mac-specific. Mixing FreeBSD and  
> > Mac would always crash within 5 minutes at worst. My best guess is  
> > that Marshal is not operating correctly or ObjectSpace#\_id2ref is  
> > looking up bad objects.
> 
> I've seen similar results: runs for hours on Linux, very flakey on OSX. It's  
> kind of hard to believe that Marshal is broke on OSX, though. I'm thinking  
> it's something related to networking code.
> 
> Phil
