[#28561] Ruby::DL vs Ruby::FFI — Aston <blackapache512-ticket@...>

Ruby.DL and FFI libraries are great for programmers like me who are not internet programmers, but are more interested in scientific and number processing etc.

11 messages 2010/03/08

[#28686] trunk (26947) build fail with msys/mingw/vista — Jon <jon.forums@...>

I get the following build failure when msysgit's "c:\git\cmd" dir is on PATH.

8 messages 2010/03/16

[#28687] [Bug #2973] rb_bug - Segmentation fault - error.c:213 — rudolf gavlas <redmine@...>

Bug #2973: rb_bug - Segmentation fault - error.c:213

10 messages 2010/03/16

[#28735] [Bug #2982] Ruby tries to link with both openssl and readline — Lucas Nussbaum <redmine@...>

Bug #2982: Ruby tries to link with both openssl and readline

16 messages 2010/03/18

[#28736] [Bug #2983] Ruby (GPLv2 only) tries to link to with readline (now GPLv3) — Lucas Nussbaum <redmine@...>

Bug #2983: Ruby (GPLv2 only) tries to link to with readline (now GPLv3)

10 messages 2010/03/18

[#28907] [Bug #3000] Open SSL Segfaults — Christian Höltje <redmine@...>

Bug #3000: Open SSL Segfaults

19 messages 2010/03/23

[#28924] [Bug #3005] Ruby core dump - [BUG] rb_sys_fail() - errno == 0 — Sebastian YEPES <redmine@...>

Bug #3005: Ruby core dump - [BUG] rb_sys_fail() - errno == 0

10 messages 2010/03/24

[#28954] [Feature #3010] slow require gems in ruby 1.9.1 — Miao Jiang <redmine@...>

Feature #3010: slow require gems in ruby 1.9.1

15 messages 2010/03/24

[#29179] [Bug #3071] Convert rubygems and rdoc to use psych — Aaron Patterson <redmine@...>

Bug #3071: Convert rubygems and rdoc to use psych

10 messages 2010/03/31

[ruby-core:28868] Re: Can DRb be used across a fork()

From: Joel VanderWerf <joelvanderwerf@...>
Date: 2010-03-22 17:36:03 UTC
List: ruby-core #28868
Chris Schlaeger wrote:
> I'm trying to use DRb to communicate between a parent and child
> processes. The DRb server is started before I fork-off the children.
> When I connect back from the child to the parent DRb server, I only
> seem to talk to a zombie copy of the DRb server in the child.
> 
> The attached program demonstrates the problem. Is that a bug or is DRb
> not designed to work across a fork?
> 
> With current ruby 1.9.2 I get the following output:
> 
> #ruby19 drb_over_fork.rb
> 13151: Parent
> 13155: Child
> 13155: a: 1
> 13155: A: 1
> 13151: A: 0
> 
> Chris

There are a couple of subtleties. See if this helps:

require 'drb'

class Foo
   attr_reader :a
   def initialize
     @a = 0
   end

   def inc
     @a += 1
     debug "a: #{@a}"
   end
end

def debug(msg)
   puts "#{Process.pid}: #{msg}"
end

foo = Foo.new
uri = DRb.start_service(nil, foo).uri
unless (pid = fork)
   DRb.start_service() # Because parent's DRb thread dies across fork
   debug 'Child'
   # child
   foo_c = DRbObject.new(nil, uri)
   # This call modifies a copy of foo in the child, not the parent foo!
   foo_c.inc
   debug "A: #{foo_c.a}"

else
   debug 'Parent'
   Process.wait
   debug "A: #{foo.a}"
end

__END__

The output I get (1.8.6) is

$ ruby drb_over_fork.rb
17245: Parent
17246: Child
17245: a: 1
17246: A: 1
17245: A: 1

In This Thread