[MacRuby] #1260: Segfault occurs when parses a RSS content with bundled RSS library.

MacRuby ruby-noreply at macosforge.org
Thu May 5 09:18:52 PDT 2011


#1260: Segfault occurs when parses a RSS content with bundled RSS library.
----------------------------------+-----------------------------------------
 Reporter:  watson1978@…          |       Owner:  lsansonetti@…        
     Type:  defect                |      Status:  new                  
 Priority:  blocker               |   Milestone:                       
Component:  MacRuby               |    Keywords:                       
----------------------------------+-----------------------------------------
 Test Script:
 {{{
 #!ruby
 require 'rss'
 require 'open-uri'

 url  = "http://images.apple.com/main/rss/hotnews/hotnews.rss"
 data = ""
 open(url) do |f|
   data = f.read
 end
 puts "* fetched RSS"

 rss = RSS::Parser.parse(data, false)
 puts "* Parsed RSS"
 }}}

 Result:
 {{{
 $ ruby19 tt.rb
 * fetched RSS
 * Parsed RSS

 $ macruby tt.rb
 * fetched RSS
 zsh: segmentation fault  macruby tt.rb
 }}}

 BackTrace:
 {{{

 Program received signal EXC_BAD_ACCESS, Could not access memory.
 Reason: KERN_PROTECTION_FAILURE at address: 0x00007fff5f3fffe8
 0x00000001001521a3 in std::_Rb_tree<objc_selector*,
 std::pair<objc_selector* const, std::map<objc_class*,
 rb_vm_method_source_t*, std::less<objc_class*>,
 std::allocator<std::pair<objc_class* const, rb_vm_method_source_t*> > >*>,
 std::_Select1st<std::pair<objc_selector* const, std::map<objc_class*,
 rb_vm_method_source_t*, std::less<objc_class*>,
 std::allocator<std::pair<objc_class* const, rb_vm_method_source_t*> > >*>
 >, std::less<objc_selector*>, std::allocator<std::pair<objc_selector*
 const, std::map<objc_class*, rb_vm_method_source_t*,
 std::less<objc_class*>, std::allocator<std::pair<objc_class* const,
 rb_vm_method_source_t*> > >*> > >::_S_key (__x=Cannot access memory at
 address 0x7fff5f3fffe8
 ) at stl_tree.h:499
 499           _S_key(_Const_Link_type __x)
 (gdb) bt 20
 #0  0x00000001001521a3 in std::_Rb_tree<objc_selector*,
 std::pair<objc_selector* const, std::map<objc_class*,
 rb_vm_method_source_t*, std::less<objc_class*>,
 std::allocator<std::pair<objc_class* const, rb_vm_method_source_t*> > >*>,
 std::_Select1st<std::pair<objc_selector* const, std::map<objc_class*,
 rb_vm_method_source_t*, std::less<objc_class*>,
 std::allocator<std::pair<objc_class* const, rb_vm_method_source_t*> > >*>
 >, std::less<objc_selector*>, std::allocator<std::pair<objc_selector*
 const, std::map<objc_class*, rb_vm_method_source_t*,
 std::less<objc_class*>, std::allocator<std::pair<objc_class* const,
 rb_vm_method_source_t*> > >*> > >::_S_key (__x=Cannot access memory at
 address 0x7fff5f3fffe8
 ) at stl_tree.h:499
 #1  0x00000001001522f5 in std::_Rb_tree<objc_selector*,
 std::pair<objc_selector* const, std::map<objc_class*,
 rb_vm_method_source_t*, std::less<objc_class*>,
 std::allocator<std::pair<objc_class* const, rb_vm_method_source_t*> > >*>,
 std::_Select1st<std::pair<objc_selector* const, std::map<objc_class*,
 rb_vm_method_source_t*, std::less<objc_class*>,
 std::allocator<std::pair<objc_class* const, rb_vm_method_source_t*> > >*>
 >, std::less<objc_selector*>, std::allocator<std::pair<objc_selector*
 const, std::map<objc_class*, rb_vm_method_source_t*,
 std::less<objc_class*>, std::allocator<std::pair<objc_class* const,
 rb_vm_method_source_t*> > >*> > >::find (this=0x102068418,
 __k=@0x7fff5f4000b0) at stl_tree.h:1378
 #2  0x00000001001523b9 in std::map<objc_selector*, std::map<objc_class*,
 rb_vm_method_source_t*, std::less<objc_class*>,
 std::allocator<std::pair<objc_class* const, rb_vm_method_source_t*> > >*,
 std::less<objc_selector*>, std::allocator<std::pair<objc_selector* const,
 std::map<objc_class*, rb_vm_method_source_t*, std::less<objc_class*>,
 std::allocator<std::pair<objc_class* const, rb_vm_method_source_t*> > >*>
 > >::find (this=0x102068418, __x=@0x7fff5f4000b0) at stl_map.h:542
 #3  0x000000010015ec64 in RoxorCore::method_sources_for_sel
 (this=0x102068200, sel=0x7fff8877f560, create=false) at vm.h:897
 #4  0x0000000100146ff2 in rb_vm_resolve_method (klass=0x200017d60,
 sel=0x7fff8877f560) at vm.cpp:2090
 #5  0x00000001001470dc in resolveInstanceMethod_imp (self=0x200017d60,
 sel=0x7fff88878585, name=0x7fff8877f560) at vm.cpp:5156
 #6  0x00007fff840a2937 in _class_resolveMethod ()
 #7  0x000000010012ab53 in rb_vm_super_lookup (klass=0x20040f580,
 sel=0x7fff8877f560, super_class_p=0x7fff5f400940) at dispatcher.cpp:316
 #8  0x000000010012d167 in rb_vm_dispatch () at dispatcher.cpp:631
 #9  0x00000001017009c4 in ?? ()
 #10 0x00000001017219fe in ?? ()
 #11 0x000000010012e65a in __rb_vm_rcall [inlined] () at /Users/watson/src
 /macruby-trunk/dispatcher.cpp:161
 #12 0x000000010012e65a in ruby_dispatch [inlined] () at /Users/watson/src
 /macruby-trunk/dispatcher.cpp:466
 #13 0x000000010012e65a in rb_vm_dispatch () at dispatcher.cpp:872
 #14 0x00000001017009c4 in ?? ()
 #15 0x00000001017219fe in ?? ()
 #16 0x000000010012e65a in __rb_vm_rcall [inlined] () at /Users/watson/src
 /macruby-trunk/dispatcher.cpp:161
 #17 0x000000010012e65a in ruby_dispatch [inlined] () at /Users/watson/src
 /macruby-trunk/dispatcher.cpp:466
 #18 0x000000010012e65a in rb_vm_dispatch () at dispatcher.cpp:872
 #19 0x00000001017009c4 in ?? ()
 (More stack frames follow...)
 (gdb)
 }}}

-- 
Ticket URL: <http://www.macruby.org/trac/ticket/1260>
MacRuby <http://macruby.org/>



More information about the macruby-tickets mailing list