irb(main):003:0> ^Dgauss:stackfull brian$ gdb --args vm/vm
GNU gdb 6.3.50-20050815 (Apple version gdb-962) (Sat Jul 26 08:14:40 UTC 2008)
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 "i386-apple-darwin"...Reading symbols for shared libraries .... done
(gdb) r
Starting program: /Users/brian/devel/stackfull/vm/vm
Reading symbols for shared libraries +++. done
Running young garbage collector: 0x4001c0
Running young garbage collector: 0x4001c0
Running young garbage collector: 0x4001c0
Running young garbage collector: 0x4001c0
Running young garbage collector: 0x4001c0
Running young garbage collector: 0x4001c0
Running young garbage collector: 0x4001c0
Running mature garbage collector: 0x4001c0
Running young garbage collector: 0x4001c0
Running young garbage collector: 0x4001c0
Running mature garbage collector: 0x4001c0
Running young garbage collector: 0x4001c0
Running young garbage collector: 0x4001c0
Running young garbage collector: 0x4001c0
Reading symbols for shared libraries ... done
Running young garbage collector: 0x4001c0
irb(main):001:0> require 'timeout'
Running young garbage collector: 0x4001c0
Running mature garbage collector: 0x4001c0
=> true
irb(main):002:0> timeout(5) { puts "tt" }
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000008
0x00098a07 in rubinius::VM::wakeup (this=0x1edfa30) at vm/vm.cpp:393
393 waiter_->wakeup();
(gdb) bt 10
#0 0x00098a07 in rubinius::VM::wakeup (this=0x1edfa30) at vm/vm.cpp:393
#1 0x000c5afc in rubinius::Thread::wakeup (this=0x7955a8, state=0x4001c0) at vm/builtin/thread.cpp:102
#2 0x00070bc5 in rubinius::Primitives::thread_wakeup (state=0x4001c0, call_frame=0xbffcfb00, msg=@0xbffce424) at primitives_glue.gen.cpp:7482
#3 0x000c1434 in rubinius::performer::basic_performer (state=0x4001c0, call_frame=0xbffcfb00, msg=@0xbffce424) at vm/builtin/sendsite.cpp:82
#4 0x0011c2b8 in rubinius::VMMethod::interpreter (state=0x4001c0, vmm=0x1ee7e40, call_frame=0xbffcfb00) at vm/gen/instructions.cpp:2657
#5 0x000a0487 in rubinius::VMMethod::run_interpreter (state=0x4001c0, vmm=0x1ee7e40, call_frame=0xbffcfb00) at vm/vmmethod.cpp:688
#6 0x000a39e3 in rubinius::VMMethod::execute_specialized<rubinius::TwoArguments> (state=0x4001c0, previous=0xbffd1660, msg=@0xbffcff84) at vm/vmmethod.cpp:503
#7 0x000c1434 in rubinius::performer::basic_performer (state=0x4001c0, call_frame=0xbffd1660, msg=@0xbffcff84) at vm/builtin/sendsite.cpp:82
#8 0x0011c46f in rubinius::VMMethod::interpreter (state=0x4001c0, vmm=0x1ee8de0, call_frame=0xbffd1660) at vm/gen/instructions.cpp:2681
#9 0x000a0487 in rubinius::VMMethod::run_interpreter (state=0x4001c0, vmm=0x1ee8de0, call_frame=0xbffd1660) at vm/vmmethod.cpp:688
(More stack frames follow...)
(gdb) p waiter_
$1 = (class rubinius::Waiter *) 0x2020202
(gdb)