[MacRuby] #882: Bus error with catch / throw, Using 32bit arch.
#882: Bus error with catch / throw, Using 32bit arch. ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: ----------------------------------+----------------------------------------- {{{ #!ruby # spec/frozen/language/catch_spec.rb # it "does not match objects that are not exactly the same" do catch("exit") { throw :exit } catch("exit") { throw "exit" } }}} Result: {{{ $ DYLD_LIBRARY_PATH=. ./macruby -v -I./lib t.rb MacRuby 0.7 (ruby 1.9.2) [universal-darwin10.0, i386] zsh: bus error DYLD_LIBRARY_PATH=. ./macruby -v -I./lib t.rb }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/882> MacRuby <http://macruby.org/>
#882: Bus error with catch / throw, Using 32bit arch. ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: ----------------------------------+----------------------------------------- Comment(by martinlagardette@…): Mmmh, I can't reproduce with trunk: {{{ $> cat /tmp/t.rb # spec/frozen/language/catch_spec.rb # it "does not match objects that are not exactly the same" do catch("exit") { throw :exit } catch("exit") { throw "exit" } $> DYLD_LIBRARY_PATH=. arch -i386 ./macruby -v -I./lib /tmp/t.rb MacRuby 0.7 (ruby 1.9.2) [universal-darwin10.0, i386] /tmp/t.rb:3:in `block': uncaught throw :exit (ArgumentError) from /tmp/t.rb:3:in `<main>' $> DYLD_LIBRARY_PATH=. arch -i386 ./macruby -v -e 'p MACRUBY_REVISION' MacRuby 0.7 (ruby 1.9.2) [universal-darwin10.0, i386] "svn revision 4478 from http://svn.macosforge.org/repository/ruby/MacRuby/trunk" $> }}} Did you try rebuilding everything? Sometimes it helps (`rake clean; mkdir doc; rake jobs=4`) -- Ticket URL: <http://www.macruby.org/trac/ticket/882#comment:1> MacRuby <http://macruby.org/>
#882: Bus error with catch / throw, Using 32bit arch. ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: ----------------------------------+----------------------------------------- Comment(by watson1978@…): After Rebuilt: {{{ $ rake clean; mkdir doc; RC_ARCHS=i386 rake jobs=2 $ cat t.rb # spec/frozen/language/catch_spec.rb # it "does not match objects that are not exactly the same" do catch("exit") { throw :exit } catch("exit") { throw "exit" } $ DYLD_LIBRARY_PATH=. ./macruby -v -e 'p MACRUBY_REVISION' MacRuby 0.7 (ruby 1.9.2) [universal-darwin10.0, i386] "git commit 4dbcad71ba4233c3eef93d6276d920132d0d91c9" $ git log | head -7 commit 4dbcad71ba4233c3eef93d6276d920132d0d91c9 Author: lsansonetti@apple.com <lsansonetti@apple.com@23306eb0-4c56-4727 -a40e-e92c0eb68959> Date: Mon Aug 30 20:52:55 2010 +0000 #sprintf: don't try to mutate symbols git-svn-id: http://svn.macosforge.org/repository/ruby/MacRuby/trunk@4478 23306eb0-4c56-4727-a40e-e92c0eb68959 $ DYLD_LIBRARY_PATH=. ./macruby -v -I./lib t.rb MacRuby 0.7 (ruby 1.9.2) [universal-darwin10.0, i386] zsh: bus error DYLD_LIBRARY_PATH=. arch -i386 ./macruby -v -I./lib t.rb $ DYLD_LIBRARY_PATH=. gdb --args ./macruby -v -I./lib t.rb GNU gdb 6.3.50-20050815 (Apple version gdb-1469) (Wed May 5 04:36:56 UTC 2010) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "x86_64-apple-darwin"...Reading symbols for shared libraries ..... done (gdb) r Starting program: /Users/watson/src/MacRuby/macruby -v -I./lib t.rb warning: posix_spawn failed, trying execvp, error: 86 Reading symbols for shared libraries .++++......................... done Reading symbols for shared libraries . done MacRuby 0.7 (ruby 1.9.2) [universal-darwin10.0, i386] Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_PROTECTION_FAILURE at address: 0x00000003 0x0015e2d6 in RoxorVM::ruby_catch (this=0x1406570, tag=34058336) at vm.cpp:4144 4144 if (sexc != NULL && sexc->type == CATCH_THROW_EXCEPTION) { (gdb) p sexc $1 = (RoxorSpecialException *) 0x3 (gdb) p sexc->type Cannot access memory at address 0x3 (gdb) bt #0 0x0015e2d6 in RoxorVM::ruby_catch (this=0x1406570, tag=34058336) at vm.cpp:4144 #1 0x00164795 in rb_vm_catch (tag=34058336) at vm.cpp:4167 #2 0x0015269d in rb_vm_dispatch (_vm=0x1406570, cache=0xa852c50, top=33675840, self=33675840, klass=0x201daf0, sel=0x14720f0, block=0x2078ce0, opt=2 '\002', argc=1, argv=0xbfffe898) at dispatcher.cpp:161 #3 0x01700455 in ?? () #4 0x017000ac in ?? () #5 0x0015f6dc in rb_vm_run (fname=0x207a100 "t.rb", node=0x207aca0, binding=0x0, inside_eval=false) at vm.cpp:3823 #6 0x000416d1 in ruby_run_node (n=0x207aca0) at eval.c:211 #7 0x00001c68 in main (argc=4, argv=0x14060f0, envp=0xbfffe980) at main.cpp:40 (gdb) }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/882#comment:2> MacRuby <http://macruby.org/>
#882: Bus error with catch / throw, Using 32bit arch. ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: ----------------------------------+----------------------------------------- Comment(by watson1978@…): I think that initialization is insufficient. {{{ #!diff diff --git a/vm.cpp b/vm.cpp index 3751fc2..acccfb5 100644 --- a/vm.cpp +++ b/vm.cpp @@ -400,6 +400,7 @@ RoxorVM::RoxorVM(void) parse_in_eval = false; has_ensure = false; return_from_block = -1; + special_exc = NULL; current_super_class = NULL; current_super_sel = 0; }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/882#comment:3> MacRuby <http://macruby.org/>
#882: Bus error with catch / throw, Using 32bit arch. ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: ----------------------------------+----------------------------------------- Comment(by lsansonetti@…): Good catch! This must be fixed :) -- Ticket URL: <http://www.macruby.org/trac/ticket/882#comment:4> MacRuby <http://macruby.org/>
#882: Bus error with catch / throw, Using 32bit arch. ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: closed Priority: blocker | Milestone: Component: MacRuby | Resolution: fixed Keywords: | ----------------------------------+----------------------------------------- Changes (by watson1978@…): * status: new => closed * resolution: => fixed Comment: Fixed with r4479. -- Ticket URL: <http://www.macruby.org/trac/ticket/882#comment:5> MacRuby <http://macruby.org/>
#882: Bus error with catch / throw, Using 32bit arch. ----------------------------------+----------------------------------------- Reporter: watson1978@… | Owner: lsansonetti@… Type: defect | Status: closed Priority: blocker | Milestone: MacRuby 0.7 Component: MacRuby | Resolution: fixed Keywords: | ----------------------------------+----------------------------------------- Changes (by watson1978@…): * milestone: => MacRuby 0.7 -- Ticket URL: <http://www.macruby.org/trac/ticket/882#comment:6> MacRuby <http://macruby.org/>
participants (1)
-
MacRuby