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) over 13 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) over 13 years ago
- Parent task set to #5076
Updated by naruse (Yui NARUSE) over 13 years ago
- Status changed from Open to Rejected
fiber だと llvm-gcc だからでしょうね。
gcc-4.2 でも再現したら reopen してください。
Updated by shyouhei (Shyouhei Urabe) over 13 years ago
- Status changed from Rejected to Third Party's Issue
Updated by mrkn (Kenta Murata) over 13 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 の最適化を抑制していただくかですね。