Bug #5201
closedBug #5076: Mac OS X Lion Support
Ruby 1.9.2p290 [x86_64-darwin11.0.0] Fiber.yieldでSEGV
Description
=begin
ビルド/実行環境はMac OS X Lion (10.7)、Xcode 4.1.1です。
llvm-gccをgccに置き換えるなどの変更は特に行っていません。
処理系はソースコードからconfigure & make & make installしました。
以下のようなコードでSEGVしました。
require 'fiber'
task = Fiber.new do
Fiber.yield 1
Fiber.yield 2
end
puts task.resume
puts task.resume
以下が実行結果です。
1
/Users/h_morita/fiber_bug.rb:4: [BUG] Segmentation fault
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.0.0]
-- control frame ----------
c:0004 p:---- s:0009 b:0009 l:000008 d:000008 CFUNC  :yield
c:0003 p:0017 s:0005 b:0005 l:001458 d:000004 BLOCK  /Users/h_morita/fiber_bug.rb:4
c:0002 p:---- s:0003 b:0003 l:000002 d:000002 FINISH
c:0001 p:---- s:0001 b:-001 l:000000 d:000000 ------¶
-- Ruby level backtrace information ----------------------------------------
/Users/h_morita/fiber_bug.rb:4:in block in <main>' /Users/h_morita/fiber_bug.rb:4:in yield'
-- C level backtrace information -------------------------------------------
[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
zsh: abort ./bin/ruby ~/fiber_bug.rb
2回目のresumeで、yieldに戻るタイミングあたりでSEGVします。
=end
        
           Updated by kosaki (Motohiro KOSAKI) about 14 years ago
          Updated by kosaki (Motohiro KOSAKI) about 14 years ago
          
          
        
        
      
      ビルド/実行環境はMac OS X Lion (10.7)、Xcode 4.1.1です。 llvm-gccをgccに置き換えるなどの変更は特に行っていません。
この場合 llvm-gcc が使われてしまうので、
http://redmine.ruby-lang.org/issues/5082
と同じじゃないですかね? 1.9.3-preview1でも再現しますか?
        
           Updated by kosaki (Motohiro KOSAKI) about 14 years ago
          Updated by kosaki (Motohiro KOSAKI) about 14 years ago
          
          
        
        
      
      - Parent task set to #5076
        
           Updated by naruse (Yui NARUSE) about 14 years ago
          Updated by naruse (Yui NARUSE) about 14 years ago
          
          
        
        
      
      - Status changed from Open to Rejected
fiber だと llvm-gcc だからでしょうね。
gcc-4.2 でも再現したら reopen してください。
        
           Updated by shyouhei (Shyouhei Urabe) about 14 years ago
          Updated by shyouhei (Shyouhei Urabe) about 14 years ago
          
          
        
        
      
      - Status changed from Rejected to Third Party's Issue
        
           Updated by mrkn (Kenta Murata) about 14 years ago
          Updated by mrkn (Kenta Murata) about 14 years ago
          
          
        
        
      
      試してみました。Xcode のバージョンは 4.1 (Build 4B110) です。
1.9.3 HEAD を、
gcc-4.2 -O3 -march=core2 -mtune=core2 でビルドした結果: 問題なし
gcc -O3 -march=core2 -mtune=core2 でビルドした結果: 問題なし
1.9.2 に http://redmine.ruby-lang.org/issues/5074 がバックポートされた場合は、
gcc-4.2 -O3 -march=core2 -mtune=core2 でビルドした結果: 問題なし
gcc -O0 -march=core2 -mtune=core2 でビルドした結果: 問題なし
gcc -O3 -march=core2 -mtune=core2 でビルドした結果: Bus Error
という結果ですので、パッチがバックポートされるまでは gcc-4.2 を使っていただくか、
もしくは gcc の最適化を抑制していただくかですね。