QA@IT

rvm + MacPorts の Ruby 1.9.3 で、gem がSEGV

1943 PV

ふつうに動いていたRVMを使ったRails環境で、Ruby 1.9.3-p194の bundle install が SEGVでコケるようになりました。

$ bundle install
Fetching gem metadata from https://rubygems.org/./Users/ken/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799: [BUG] Segmentation fault
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.3.0]
-- Control frame information -----------------------------------------------
 :
 :
 :
 :

http.rb:799 ということでソケットを開こうとしてタイムアウトしているようにも見えますが、処理系ごと落ちているので、何か違うような気がしつつ。

バージョン

  • Gem: 1.8.24
  • Bundler: 1.1.4
  • RVM: 1.13.8

原因や対策がお分かりの方がいましたら、教えて下さいませ。

回答

自己解決しました。これはOpenSSLをMacPortsでインストールした場合によくある問題のようで、Mac標準のOpenSSLの問題のようです。ともあれ、MacPortsのライブラリのパスを正しくオプションで渡してRubyをビルドすることで回避できます。

$ rvm reinstall ruby-1.9.3-p194 --with-opt-diir=/opt/local

私の環境では、これでもまだ debugger-linecache の拡張ライブラリのビルドにコケました。

Installing debugger-linecache (1.1.1) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/ken/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for vm_core.h... no
checking for vm_core.h... no
Makefile creation failed
 :
 :
 :

これはCRubyのヘッダの位置を指定してやればオッケーです。

$ gem install debugger-linecache -- --with-ruby-include=~/.rvm/src/ruby-1.9.3-p194/
Building native extensions.  This could take a while...
Successfully installed debugger-linecache-1.1.1
1 gem installed

参考
http://www.seqmedia.com/2012/05/08/frustrations-abound-rvm-vs-macports-and-the-bug-segmentation-fault/

編集 履歴 (2)
ウォッチ

この質問への回答やコメントをメールでお知らせします。