From: Jurij Smakov Date: 2011-10-22T08:04:24+09:00 Subject: [ruby-core:40265] [Ruby 1.9 - Bug #5244] Continuation causes Bus Error on Debian sparc Issue #5244 has been updated by Jurij Smakov. Sorry, but this is not a proper fix. While it will fix the immediate problem for Debian, other systems will still be affected. Out of curiosity I tried building the latest svn snapshot (including this fix) on a freebsd/sparc64 system, and, sure enough, it still crashes there: $ uname -a FreeBSD free.wooyd.org 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Thu Feb 17 06:57:44 UTC 2011 root@araz.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC sparc64 $ export RUBYLIB=/usr/home/jurij/snapshot:/usr/home/jurij/snapshot/.ext/common:/usr/home/jurij/snapshot/.ext/sparc64-freebsd8.2:/usr/home/jurij/snapshot/lib $ ./ruby -rcontinuation -e 'callcc { |c| c.call }' -e:1: [BUG] Segmentation fault ruby 2.0.0dev (2011-10-22 trunk 33503) [sparc64-freebsd8.2] -- Control frame information ----------------------------------------------- c:0004 p:---- s:0009 b:0009 l:000008 d:000008 CFUNC :callcc c:0003 p:0009 s:0006 b:0006 l:0007f8 d:000fb8 EVAL -e:1 c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH c:0001 p:0000 s:0002 b:0002 l:0007f8 d:0007f8 TOP -- Ruby level backtrace information ---------------------------------------- -e:1:in `
' -e:1:in `callcc' -- Other runtime information ----------------------------------------------- * Loaded script: -e * Loaded features: 0 enumerator.so 1 /usr/home/jurij/snapshot/.ext/sparc64-freebsd8.2/enc/encdb.so 2 /usr/home/jurij/snapshot/.ext/sparc64-freebsd8.2/enc/trans/transdb.so 3 /usr/home/jurij/snapshot/lib/rubygems/defaults.rb 4 /usr/home/jurij/snapshot/rbconfig.rb 5 /usr/home/jurij/snapshot/lib/rubygems/deprecate.rb 6 /usr/home/jurij/snapshot/lib/rubygems/exceptions.rb 7 /usr/home/jurij/snapshot/lib/rubygems/custom_require.rb 8 /usr/home/jurij/snapshot/lib/rubygems.rb 9 /usr/home/jurij/snapshot/.ext/sparc64-freebsd8.2/continuation.so [NOTE] You may have encountered a bug in the Ruby interpreter or extension libraries. Bug reports are welcome. For details: http://www.ruby-lang.org/bugreport.html Abort trap (core dumped) $ gdb GNU gdb 6.1.1 [FreeBSD] 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 "sparc64-marcel-freebsd". (gdb) file ./ruby Reading symbols from ./ruby...done. (gdb) run -rcontinuation -e 'callcc { |c| c.call }' Starting program: /usr/home/jurij/snapshot/ruby -rcontinuation -e 'callcc { |c| c.call }' Program received signal SIGSEGV, Segmentation fault. 0x0000000040a41368 in __sparc_utrap_install () from /lib/libc.so.7 (gdb) bt #0 0x0000000040a41368 in __sparc_utrap_install () from /lib/libc.so.7 #1 0x0000000040a4148c in __sparc_utrap_install () from /lib/libc.so.7 #2 0x0000000040a41730 in __sparc_utrap_install () from /lib/libc.so.7 #3 0x0000000040a40f6c in __sparc_utrap_install () from /lib/libc.so.7 #4 0x00000000002489b4 in cont_capture (stat=Error accessing memory address 0x882: Bad address. ) at cont.c:440 Previous frame inner to this frame (corrupt stack?) (gdb) The program is running. Exit anyway? (y or n) y $ Unfortunately, using 'ta 0x03' instead of 'flushw' is not an option, as it causes an illegal instruction trap. ---------------------------------------- Bug #5244: Continuation causes Bus Error on Debian sparc http://redmine.ruby-lang.org/issues/5244 Author: Lucas Nussbaum Status: Closed Priority: Normal Assignee: Naohisa Goto Category: Target version: ruby -v: - Hi, $ ./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -rcontinuation -e 'callcc { |c| c.call }' -e:1: [BUG] Bus Error ruby 1.9.3dev (2011-08-26) [sparc-linux] -- Control frame information ----------------------------------------------- c:0004 p:---- s:0009 b:0009 l:000008 d:000008 CFUNC :callcc c:0003 p:0009 s:0006 b:0006 l:000fcc d:001d74 EVAL -e:1 c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH c:0001 p:0000 s:0002 b:0002 l:000fcc d:000fcc TOP -- Ruby level backtrace information ---------------------------------------- -e:1:in `
' -e:1:in `callcc' -- C level backtrace information ------------------------------------------- Bus error gdb says: (gdb) run -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -rcontinuation -e 'callcc { |c| c.call }' Starting program: /home/lucas/ruby1.9.1-1.9.3~preview1+svn33077/miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -rcontinuation -e 'callcc { |c| c.call }' [Thread debugging using libthread_db enabled] [New Thread 0xf7fc7b70 (LWP 31418)] [Thread 0xf7fc7b70 (LWP 31418) exited] process 31417 is executing new program: /home/lucas/ruby1.9.1-1.9.3~preview1+svn33077/ruby1.9.1 [Thread debugging using libthread_db enabled] [New Thread 0xf79e5b70 (LWP 31419)] Program received signal SIGBUS, Bus error. 0xf7f4d304 in cont_capture (stat=Cannot access memory at address 0x49 ) at cont.c:439 439 if (ruby_setjmp(cont->jmpbuf)) { (gdb) print cont Cannot access memory at address 0xfffffff9 -- http://redmine.ruby-lang.org