CentOS 等に入っている prelink (共有ライブラリのリンク情報を予め付与するもの)が悪さをして、ruby 等が動作しなくなっている事がある。
例えば、以下のようなケース
$ rails c
:29: [BUG] Segmentation fault
ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-linux]
-- control frame ----------
c:0005 p:---- s:0016 b:0016 l:000015 d:000015 CFUNC :require
c:0004 p:0013 s:0012 b:0012 l:000011 d:000011 METHOD :29
c:0003 p:0011 s:0007 b:0007 l:000a28 d:002150 EVAL /usr/bin/rails:9
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:000a28 d:000a28 TOP
---------------------------
-- Ruby level backtrace information ----------------------------------------
/usr/bin/rails:9:in `'
:29:in `require'
:29:in `require'
$ gem -v
/usr/bin/ruby: failed to allocate memory (NoMemoryError)
対処法としては、prelink を外す。
# prelink-u /usr/bin/ruby
もしくは、元のファイルがある場合は、コピーする。
CentOS5のデフォルトでは、prelink は、cron (/etc/cron.daily/prelink) で定期的に実行される設定になっているので、
設定ファイル(/etc/prelink.conf)で ruby を対象外に指定しておく
-b /usr/bin/ruby