[MacRuby-devel] DRb and macruby

John Shea johnmacshea at gmail.com
Mon Jun 22 05:23:35 PDT 2009


Hello all,

anyone using DRb and macruby?

I know next to nothing about DRb but its giving me some crashes in  
macirb that it is not in irb, for setting variables on the server side.

For example (I have coloured responses so its easier to see the  
difference between input and output):

with the simple server below running:
require 'drb'

class TestServer
   attr_accessor :var_a, :var_b
end

aServerObject = TestServer.new
DRb.start_service('druby://localhost:9000', aServerObject)
DRb.thread.join


#irb in a terminal:

dev:~ johnshea$ irb
 >> require 'drb'
=> true
 >>
?> DRb.start_service
=> #<DRb::DRbServer:0x5ce518 @safe_level=0,  
@protocol=#<DRb::DRbTCPSocket:0x5ce220 @msg=#<DRb::DRbMessage:0x5ce1f8  
@argc_limit=256, @load_limit=26214400>, @socket=#<TCPServer:0x5ce298>,  
@uri="druby://dev:50029", @acl=nil,  
@config 
= 
{:tcp_acl 
= 
 > 
nil 
, :argc_limit 
= 
 > 
256 
, :safe_level 
=>0, :load_limit=>26214400, :verbose=>false, :idconv=>#<DRb::DRbIdConv: 
0x5d1060>}>, @thread=#<Thread:0x5ce48c sleep>,  
@idconv=#<DRb::DRbIdConv:0x5d1060>, @uri="druby://dev:50029",  
@front=nil, @grp=#<ThreadGroup:0x5ce4dc>,  
@config 
= 
{:tcp_acl 
= 
 > 
nil 
, :argc_limit 
= 
 > 
256 
, :safe_level 
=>0, :load_limit=>26214400, :verbose=>false, :idconv=>#<DRb::DRbIdConv: 
0x5d1060>}>
 >> obj = DRbObject.new(nil, 'druby://localhost:9000')
=> #<DRb::DRbObject:0x5cb1ec @ref=nil, @uri="druby://localhost:9000">
 >> obj.var_a = 45
=> 45


#so far so good, now irb in another terminal:

dev:~ johnshea$ irb
 >> require 'drb'
=> true
 >>
?> DRb.start_service
=> #<DRb::DRbServer:0x5ce4a0 @safe_level=0, --cut out obj description  
- same as above-->
 >> obj = DRbObject.new(nil, 'druby://localhost:9000')
=> #<DRb::DRbObject:0x5cb174 @ref=nil, @uri="druby://localhost:9000">
 >> p obj.var_a
45
=> nil
 >> obj.var_b = 45
=> 45

#yep thats fine, now another terminal

dev:~ johnshea$ irb
 >> require 'drb'
=> true
 >>
?> DRb.start_service
=> #<DRb::DRbServer:0x5ce4a0 @safe_level=0, --cut out obj description  
- same as above-->
 >> obj = DRbObject.new(nil, 'druby://localhost:9000')
=> #<DRb::DRbObject:0x5cb174 @ref=nil, @uri="druby://localhost:9000">
 >> obj.var_b = 100
=> 100

#all good, now for macirb terminal:

dev:~ johnshea$ macirb
 >> require 'drb'
=> true
 >>
?> DRb.start_service
=> ##-<DRb::DRbServer:0x800557ee0  
@config 
= 
{:tcp_acl 
= 
 > 
nil 
, :load_limit=>26214400, :argc_limit=>256, :idconv=>#<DRb::DRbIdConv: 
0x8007e9020>, :verbose=>false, :safe_level=>0}, @protocol=##- 
<DRb::DRbTCPSocket:0x8005d1cc0 @uri="druby://dev:50042",  
@socket=#<TCPServer:0x8005c0320>,  
@config 
= 
{:tcp_acl 
= 
 > 
nil 
, :load_limit=>26214400, :argc_limit=>256, :idconv=>#<DRb::DRbIdConv: 
0x8007e9020 
 > 
, :verbose 
=>false, :tcp_port=>50042, :tcp_original_host=>"", :safe_level=>0},  
@acl=nil, @msg=##-<DRb::DRbMessage:0x8005ddc20 @load_limit=26214400,  
@argc_limit=256>>, @uri="druby://dev:50042", @front=nil,  
@idconv=#<DRb::DRbIdConv:0x8007e9020>, @safe_level=0,  
@grp=#<ThreadGroup:0x800724c60>, @thread=#<Thread:0x800722880 run>>
 >> obj = DRbObject.new(nil, 'druby://localhost:9000')
=> ##-<DRb::DRbObject:0x800394000 @uri="druby://localhost:9000",  
@ref=nil>
 >> p obj.var_b
100
=> 100
 >> obj.var_b = 99
/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/ 
drb/drb.rb:961: [BUG] destination 0x7fff5fbf7308 isn't in the auto zone
MacRuby version 0.4 (ruby 1.9.1) [universal-darwin9.5, x86_64]
-- stack frame ------------
0000 (0xc08000060): 00000004

--snip-- see the rest of the crash below

the crash log suggests that this is the problem line in drb.rb which is:
if IO.select([@socket], nil, nil, 0)

#oops go back to a previous irb session
 >> p obj.var_b
100
=> nil
 >> obj.var_b = 99
=> 99
#hmm that works fine.


anyone got any ideas?

Cheers,
John

the crash:

/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/ 
drb/drb.rb:961: [BUG] destination 0x7fff5fbf7308 isn't in the auto zone
MacRuby version 0.4 (ruby 1.9.1) [universal-darwin9.5, x86_64]
-- stack frame ------------
0000 (0xc08000060): 00000004
0001 (0xc08000068): 00000000
0002 (0xc08000070): 00000004
0003 (0xc08000078): 00000000
0004 (0xc08000080): 00000004
0005 (0xc08000088): 00000000
0006 (0xc08000090): 10039c630
0007 (0xc08000098): 8003af520
0008 (0xc080000a0): 8006883e0
0009 (0xc080000a8): 00000004
0010 (0xc080000b0): 80078abe0
0011 (0xc080000b8): 00000004
0012 (0xc080000c0): 100397b90
0013 (0xc080000c8): 00000004
0014 (0xc080000d0): c080ffec8
0015 (0xc080000d8): 00000004
0016 (0xc080000e0): 80078ac38
0017 (0xc080000e8): 8006883e0
0018 (0xc080000f0): 00000004
0019 (0xc080000f8): 80078ada0
0020 (0xc08000100): 800636380
0021 (0xc08000108): 00000004
0022 (0xc08000110): c080ffd08
0023 (0xc08000118): 00000004
0024 (0xc08000120): 1003a7dd0
0025 (0xc08000128): 00000004
0026 (0xc08000130): c080ffc98
0027 (0xc08000138): 00000004
0028 (0xc08000140): c08000110 (= 22)
0029 (0xc08000148): 00000004
0030 (0xc08000150): 00000004
0031 (0xc08000158): c080ffb48
0032 (0xc08000160): 800764fc0
0033 (0xc08000168): 00000004
0034 (0xc08000170): c08000140 (= 28)
0035 (0xc08000178): 8005fb760
0036 (0xc08000180): 0000000d
0037 (0xc08000188): 00000004
0038 (0xc08000190): 80078ade8
0039 (0xc08000198): 00000004
0040 (0xc080001a0): 1003986e0
0041 (0xc080001a8): 100397ef0
0042 (0xc080001b0): 00000004
0043 (0xc080001b8): c080ff988
0044 (0xc080001c0): 00000004
0045 (0xc080001c8): 00000004
0046 (0xc080001d0): 00000004
0047 (0xc080001d8): 00000004
0048 (0xc080001e0): 00000004
0049 (0xc080001e8): 00000004
0050 (0xc080001f0): 00000004
0051 (0xc080001f8): c08000190 (= 38)
0052 (0xc08000200): 800670940
0053 (0xc08000208): 8005fb760
0054 (0xc08000210): 0000000d
0055 (0xc08000218): 00000004
0056 (0xc08000220): 00000000
0057 (0xc08000228): 00000004
0058 (0xc08000230): 800670980
0059 (0xc08000238): 800670940
0060 (0xc08000240): 8005fb760
0061 (0xc08000248): 80074a820
0062 (0xc08000250): 0000000d
0063 (0xc08000258): 00000004
0064 (0xc08000260): 00000000
0065 (0xc08000268): 00000004
0066 (0xc08000270): 8005fb760
0067 (0xc08000278): 80068e460
0068 (0xc08000280): 80074a820
0069 (0xc08000288): 0000000d
0070 (0xc08000290): 00000004
0071 (0xc08000298): 00000000
0072 (0xc080002a0): 00000004
0073 (0xc080002a8): 00000000
0074 (0xc080002b0): 00000004
0075 (0xc080002b8): 800736880
0076 (0xc080002c0): 000000c7
0077 (0xc080002c8): 104b55690
0078 (0xc080002d0): 000000c7
0079 (0xc080002d8): 00000004
0080 (0xc080002e0): 00000000
0081 (0xc080002e8): 800394000
0082 (0xc080002f0): 104b55690
0083 (0xc080002f8): 800730300
0084 (0xc08000300): 00000004
0085 (0xc08000308): 00000004
0086 (0xc08000310): 00000004
0087 (0xc08000318): 00000004
0088 (0xc08000320): 00000004
0089 (0xc08000328): 00000004
0090 (0xc08000330): 00000000
0091 (0xc08000338): 104b4a170
0092 (0xc08000340): 80049d3a0
0093 (0xc08000348): 00000004
0094 (0xc08000350): 00000004
0095 (0xc08000358): 00000004
0096 (0xc08000360): c080ff598
0097 (0xc08000368): 00000004
0098 (0xc08000370): c08000330 (= 90)
0099 (0xc08000378): 104b50f40
0100 (0xc08000380): 80049d3a0
0101 (0xc08000388): 00000004
0102 (0xc08000390): 00000004
0103 (0xc08000398): 00000004
0104 (0xc080003a0): 00000004
0105 (0xc080003a8): c080ff4b8
0106 (0xc080003b0): 8005c6560
0107 (0xc080003b8): 00000004
0108 (0xc080003c0): c080ff448
0109 (0xc080003c8): 80072d080
0110 (0xc080003d0): 00000004
0111 (0xc080003d8): c080003a8 (= 105)
0112 (0xc080003e0): 800632c00
0113 (0xc080003e8): 00000004
0114 (0xc080003f0): c080ff368
0115 (0xc080003f8): 800632c40
0116 (0xc08000400): 00000004
0117 (0xc08000408): c080003d8 (= 111)
0118 (0xc08000410): 800632c40
0119 (0xc08000418): 00000004
0120 (0xc08000420): 00000000
0121 (0xc08000428): 8005f87c0
0122 (0xc08000430): 00000004
0123 (0xc08000438): 00000000
0124 (0xc08000440): 10035ab60
0125 (0xc08000448): 80072d0c0
0126 (0xc08000450): 00000004
0127 (0xc08000458): 00000004
0128 (0xc08000460): 00000001
0129 (0xc08000468): 00000004
0130 (0xc08000470): 00000000 <- lfp <- dfp
-- control frame ----------
c:0036 p:---- s:0131 b:0131 l:000130 d:000130 CFUNC  :select
c:0035 p:0030 s:0124 b:0124 l:000123 d:000123 METHOD /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/drb/ 
drb.rb:961
c:0034 p:0017 s:0121 b:0121 l:000120 d:000120 METHOD /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/drb/ 
drb.rb:1212
c:0033 p:0036 s:0118 b:0118 l:000105 d:000117 BLOCK  /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/drb/ 
drb.rb:1168
c:0032 p:---- s:0117 b:0117 l:000116 d:000116 FINISH :to_s
c:0031 p:---- s:0115 b:0115 l:000114 d:000114 CFUNC  :each
c:0030 p:0013 s:0112 b:0112 l:000105 d:000111 BLOCK  /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/drb/ 
drb.rb:1166
c:0029 p:0011 s:0109 b:0109 l:000108 d:000108 METHOD prelude.rb:8
c:0028 p:0011 s:0106 b:0106 l:000105 d:000105 METHOD /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/drb/ 
drb.rb:1163
c:0027 p:0015 s:0099 b:0099 l:000090 d:000098 BLOCK  /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/drb/ 
drb.rb:1092
c:0026 p:0026 s:0097 b:0097 l:000096 d:000096 METHOD /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/drb/ 
drb.rb:1110
c:0025 p:0090 s:0091 b:0091 l:000090 d:000090 METHOD /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/drb/ 
drb.rb:1091
c:0024 p:---- s:0081 b:0081 l:000080 d:000080 FINISH :empty?
c:0023 p:0014 s:0079 b:0076 l:000ad8 d:001678 EVAL   (irb):6
c:0022 p:---- s:0074 b:0074 l:000073 d:000073 FINISH :empty?
c:0021 p:---- s:0072 b:0072 l:000071 d:000071 CFUNC  :eval
c:0020 p:0023 s:0065 b:0065 l:000064 d:000064 METHOD /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/irb/ 
workspace.rb:80
c:0019 p:0025 s:0058 b:0057 l:000056 d:000056 METHOD /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/irb/ 
context.rb:218
c:0018 p:0024 s:0052 b:0052 l:001c28 d:000051 BLOCK  /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/irb.rb:149
c:0017 p:0025 s:0044 b:0044 l:000043 d:000043 METHOD /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/irb.rb:263
c:0016 p:0009 s:0039 b:0039 l:001c28 d:000038 BLOCK  /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/irb.rb:146
c:0015 p:0110 s:0035 b:0035 l:000022 d:000034 BLOCK  /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/irb/ruby- 
lex.rb:244
c:0014 p:---- s:0034 b:0034 l:000033 d:000033 FINISH :block_given?
c:0013 p:---- s:0032 b:0032 l:000031 d:000031 CFUNC  :loop
c:0012 p:0007 s:0029 b:0029 l:000022 d:000028 BLOCK  /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/irb/ruby- 
lex.rb:230
c:0011 p:---- s:0029 b:0029 l:000028 d:000028 FINISH :each
c:0010 p:---- s:0027 b:0027 l:000026 d:000026 CFUNC  :catch
c:0009 p:0017 s:0023 b:0023 l:000022 d:000022 METHOD /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/irb/ruby- 
lex.rb:229
c:0008 p:0034 s:0020 b:0020 l:001c28 d:001c28 METHOD /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/irb.rb:145
c:0007 p:0009 s:0017 b:0017 l:001a78 d:000016 BLOCK  /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/irb.rb:69
c:0006 p:---- s:0017 b:0017 l:000016 d:000016 FINISH :(null)
c:0005 p:---- s:0015 b:0015 l:000014 d:000014 CFUNC  :catch
c:0004 p:0147 s:0011 b:0011 l:001a78 d:001a78 METHOD /Library/ 
Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/1.9.1/irb.rb:68
c:0003 p:0033 s:0006 b:0006 l:000005 d:000005 TOP    /usr/local/bin/ 
macirb:12
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH :inherited:
c:0001 p:0000 s:0002 b:0002 l:000001 d:000001 TOP
---------------------------
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/drb/drb.rb:961:in `select'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/drb/drb.rb:961:in `alive?'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/drb/drb.rb:1212:in `alive?'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/drb/drb.rb:1168:in `block (2 levels) in open'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/drb/drb.rb:1166:in `each'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/drb/drb.rb:1166:in `block in open'"
DBG> : "prelude.rb:8:in `synchronize'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/drb/drb.rb:1163:in `open'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/drb/drb.rb:1092:in `block in method_missing'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/drb/drb.rb:1110:in `with_friend'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/drb/drb.rb:1091:in `method_missing'"
DBG> : "(irb):6:in `irb_binding'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/irb/workspace.rb:80:in `eval'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/irb/workspace.rb:80:in `evaluate'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/irb/context.rb:218:in `evaluate'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/irb.rb:149:in `block (2 levels) in eval_input'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/irb.rb:263:in `signal_status'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/irb.rb:146:in `block in eval_input'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/irb/ruby-lex.rb:244:in `block (2 levels) in  
each_top_level_statement'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/irb/ruby-lex.rb:230:in `loop'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/irb/ruby-lex.rb:230:in `block in each_top_level_statement'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/irb/ruby-lex.rb:229:in `catch'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/irb/ruby-lex.rb:229:in `each_top_level_statement'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/irb.rb:145:in `eval_input'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/irb.rb:69:in `block in start'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/irb.rb:68:in `catch'"
DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
ruby/1.9.1/irb.rb:68:in `start'"
DBG> : "/usr/local/bin/macirb:12:in `<main>'"
-- backtrace of native function call (Use addr2line) --
0x100110301
0x10002a544
0x10002a628
0x10003d055
0x10011147c
0x100047c0c
0x10010bde7
0x10010178f
0x100106722
0x10010e4e2
0x1000083e7
0x10010bde7
0x10010178f
0x100106722
0x100107c4a
0x1001081da
0x10010ad6e
0x10010bcd3
0x10010178f
0x100106722
0x10010716a
0x10010795d
0x10010bde7
0x10010178f
0x100106722
0x10010f382
0x10002e27f
0x1000f6525
0x10010bde7
0x10010178f
0x100106722
0x10010d495
0x10010bde7
0x10010178f
0x100106722
0x10010d495
0x10010bde7
0x10010178f
0x100106722
0x1001069ac
0x10002df42
0x100031307
0x100000f1f
0x100000ea4
0x2
-------------------------------------------------------
Abort trap

  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20090622/73226537/attachment-0001.html>


More information about the MacRuby-devel mailing list