Issue #12702 has been updated by jeremyevans0 (Jeremy Evans).

Status changed from Open to Rejected

This is a bug in your code, you are not calling `DRb.start_service` in the client program.  The client program needs a DRb server running in order to handle the sending-block-to-remote-method case.  See the example in the "Client code" section of the `DRb` module rdoc. 

----------------------------------------
Bug #12702: DRb client fails when calling out-of-process remote method with a block
https://bugs.ruby-lang.org/issues/12702#change-80963

* Author: djellemah (John Anderson)
* Status: Rejected
* Priority: Normal
* Assignee: seki (Masatoshi Seki)
* Target version: 
* ruby -v: ruby 2.4.0dev (2016-08-24 trunk 55999) [x86_64-linux]
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
See attached code for test case.

applies to ruby-2.3.1 and ruby-2.4.0dev (2016-08-24 trunk 55999)

The problem starts in DRbObject#method_missing where
the code following DRb.here? is used for the in-process case which works.

But the code in the block for

  succ, result = self.class.with_friend(@uri) do

is used for the out-of-process case. Here, DrbMessage#send_request fails
because b is a Proc, and in DrbMessage#dump the call to make_proxy fails
because DRbObject.new(b) fails.


---Files--------------------------------
drb_block_error.rb (1.46 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>