[MacRuby-devel] Segfault on NSSet from Ruby Array

Laurent Sansonetti lsansonetti at apple.com
Thu Nov 6 14:03:32 PST 2008


The -[NSSet setWithObjects:] method accepts a vararg list which is not  
supported yet. Feel free to file a bug on the tracker if you want to  
follow this :)

In the meantime, you can use -[NSSet setWithArray:] which should work.

 >> NSSet.setWithArray(['one','two','three']).allObjects
=> ["two", "three", "one"]

Laurent

On Oct 31, 2008, at 3:14 PM, Daniel A Carleton wrote:

> Hello List,
>
> Am I right in thinking the below statement should create an NSSet
> containing the NSStrings "foo" and "bar"?  Even if not the segfault
> seems like a bug.
>
>>> s = NSSet.setWithObjects(["foo","bar"])
> (irb):3: [BUG] Segmentation fault
> MacRuby version 0.4 (ruby 1.9.0 2008-06-03) [universal-darwin9.0]
>
> -- stack frame ------------
> 0000 (0x690030): 00000004
> 0001 (0x690034): 00000000
> 0002 (0x690038): 00000004
> 0003 (0x69003c): 00000000
> 0004 (0x690040): 00000004
> 0005 (0x690044): 00000000
> 0006 (0x690048): 0047c310
> 0007 (0x69004c): 010f7230
> 0008 (0x690050): 0131dc70
> 0009 (0x690054): 00000004
> 0010 (0x690058): 010f96e0
> 0011 (0x69005c): 00000004
> 0012 (0x690060): 00478aa0
> 0013 (0x690064): 00000004
> 0014 (0x690068): 0070ff64
> 0015 (0x69006c): 00000004
> 0016 (0x690070): 010c45cc
> 0017 (0x690074): 0131dc70
> 0018 (0x690078): 00000004
> 0019 (0x69007c): 010f8a70
> 0020 (0x690080): 010a1030
> 0021 (0x690084): 00000004
> 0022 (0x690088): 0070fe84
> 0023 (0x69008c): 00000004
> 0024 (0x690090): 00485550
> 0025 (0x690094): 00000004
> 0026 (0x690098): 0070fe4c
> 0027 (0x69009c): 00000004
> 0028 (0x6900a0): 00690088 (= 22)
> 0029 (0x6900a4): 00000004
> 0030 (0x6900a8): 00000004
> 0031 (0x6900ac): 0070fda4
> 0032 (0x6900b0): 01395470
> 0033 (0x6900b4): 00000004
> 0034 (0x6900b8): 006900a0 (= 28)
> 0035 (0x6900bc): 01334b10
> 0036 (0x6900c0): 00000007
> 0037 (0x6900c4): 00000004
> 0038 (0x6900c8): 010244c4
> 0039 (0x6900cc): 00000004
> 0040 (0x6900d0): 00479340
> 0041 (0x6900d4): 00478d30
> 0042 (0x6900d8): 00000004
> 0043 (0x6900dc): 0070fcc4
> 0044 (0x6900e0): 00000004
> 0045 (0x6900e4): 00000004
> 0046 (0x6900e8): 00000004
> 0047 (0x6900ec): 00000004
> 0048 (0x6900f0): 00000004
> 0049 (0x6900f4): 00000004
> 0050 (0x6900f8): 00000004
> 0051 (0x6900fc): 006900c8 (= 38)
> 0052 (0x690100): 01090040
> 0053 (0x690104): 01334b10
> 0054 (0x690108): 00000007
> 0055 (0x69010c): 00000004
> 0056 (0x690110): 00000000
> 0057 (0x690114): 00000004
> 0058 (0x690118): 0131aca0
> 0059 (0x69011c): 01090040
> 0060 (0x690120): 01334b10
> 0061 (0x690124): 010dc260
> 0062 (0x690128): 00000007
> 0063 (0x69012c): 00000004
> 0064 (0x690130): 00000000
> 0065 (0x690134): 00000004
> 0066 (0x690138): 01334b10
> 0067 (0x69013c): 010c4dc0
> 0068 (0x690140): 010dc260
> 0069 (0x690144): 00000007
> 0070 (0x690148): 00000004
> 0071 (0x69014c): 00000000
> 0072 (0x690150): 00000004
> 0073 (0x690154): 00000000
> 0074 (0x690158): 00000004
> 0075 (0x69015c): 01394d00
> 0076 (0x690160): a05f7ec0
> 0077 (0x690164): 013942f0
> 0078 (0x690168): 00000004
> 0079 (0x69016c): 00000000 <- lfp <- dfp
> -- control frame ----------
> c:0024 p:---- s:0080 b:0080 l:000079 d:000079 CFUNC  :setWithObjects
> c:0023 p:0019 s:0076 b:0076 l:002274 d:0009f4 EVAL   (irb):3
> 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.0/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.0/irb/context.rb:218
> c:0018 p:0024 s:0052 b:0052 l:001704 d:000051 BLOCK
> /Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/ 
> 1.9.0/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.0/irb.rb:263
> c:0016 p:0009 s:0039 b:0039 l:001704 d:000038 BLOCK
> /Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/ 
> 1.9.0/irb.rb:146
> c:0015 p:0093 s:0035 b:0035 l:000022 d:000034 BLOCK
> /Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/ 
> 1.9.0/irb/ruby-lex.rb:243
> 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.0/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.0/irb/ruby-lex.rb:229
> c:0008 p:0034 s:0020 b:0020 l:001704 d:001704 METHOD
> /Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/ 
> 1.9.0/irb.rb:145
> c:0007 p:0009 s:0017 b:0017 l:0005ec d:000016 BLOCK
> /Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/ 
> 1.9.0/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:0005ec d:0005ec METHOD
> /Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ruby/ 
> 1.9.0/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> : "(irb):3:in `setWithObjects'"
> DBG> : "(irb):3:in `irb_binding'"
> DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
> ruby/1.9.0/irb/workspace.rb:80:in
> `eval'"
> DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
> ruby/1.9.0/irb/workspace.rb:80:in
> `evaluate'"
> DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
> ruby/1.9.0/irb/context.rb:218:in
> `evaluate'"
> DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
> ruby/1.9.0/irb.rb:149:in
> `block (2 levels) in eval_input'"
> DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
> ruby/1.9.0/irb.rb:263:in
> `signal_status'"
> DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
> ruby/1.9.0/irb.rb:146:in
> `block in eval_input'"
> DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
> ruby/1.9.0/irb/ruby-lex.rb:243:in
> `block (2 levels) in each_top_level_statement'"
> DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
> ruby/1.9.0/irb/ruby-lex.rb:230:in
> `loop'"
> DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
> ruby/1.9.0/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.0/irb/ruby-lex.rb:229:in
> `catch'"
> DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
> ruby/1.9.0/irb/ruby-lex.rb:229:in
> `each_top_level_statement'"
> DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
> ruby/1.9.0/irb.rb:145:in
> `eval_input'"
> DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
> ruby/1.9.0/irb.rb:69:in
> `block in start'"
> DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
> ruby/1.9.0/irb.rb:68:in
> `catch'"
> DBG> : "/Library/Frameworks/MacRuby.framework/Versions/0.4/usr/lib/ 
> ruby/1.9.0/irb.rb:68:in
> `start'"
> DBG> : "/usr/local/bin/macirb:12:in `<main>'"
> -- backtrace of native function call (Use addr2line) --
> 0x2dd036
> 0x1fa3bc
> 0x1fa3fb
> 0x2917a1
> 0x90f5009b
> 0xffffffff
> 0x948729be
> 0x94873e38
> 0x948742a3
> 0x948f55f1
> 0x948f7b36
> 0x93a2f1dd
> 0x93a2f771
> 0x2edf56
> 0x2d8463
> 0x2cb76c
> 0x2d2d5b
> 0x2d376e
> 0x2d3e01
> 0x2d3f4a
> 0x2c5935
> 0x2d80bf
> 0x2cb76c
> 0x2d2d5b
> 0x2dbe7d
> 0x1fdb49
> 0x2c5d37
> 0x2d80bf
> 0x2cb76c
> 0x2d2d5b
> 0x2d9f0b
> 0x2c5935
> 0x2d80bf
> 0x2cb76c
> 0x2d2d5b
> 0x2d9f0b
> 0x2c5935
> 0x2d80bf
> 0x2cb76c
> 0x2d2d5b
> 0x2d2fbe
> 0x1fd869
> 0x2008c0
> 0x1e8f
> 0x1df6
> 0x2
>
> Is there something I can install to produce more readable traces?
>
> Thanks,
>
> - Daniel
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel



More information about the MacRuby-devel mailing list