A Day in the Life

Ruby のバイナリが prelink により毎朝4時に壊れてセグフォになる

Ruby のバイナリが prelink により毎朝4時に壊れてセグフォになる

td-agent.rpm (fluentd の rpm)はパッケージ内に自分で使う Ruby を /usr/lib64/fluent/ruby/bin/ruby にもっている。td-agent の rpm を CentOS に入れると、最初問題無くてもすこしたった後に restart をかけると Ruby が突然セグフォになり起動しなくなるという謎現象が…。yum remove td-agent; yum install td-agent すると再インストール直後は全く問題が起きない。

というわけでいつエラーになるか定期的に restart 繰り返してチェックしたら朝4時すぎると Ruby がセグフォするようになった。朝4時は /ect/cron.daily/* が実行される時間帯なので中身見たら prelink というタスクが(あやしい!)。でこのタスク実行したらすぐにめでたくセグフォするようになりました。

と同じような挙動(CentOS だし Ruby 1.9.x だし)するので、/etc/prelink.conf/d/fluentd-ruby.conf つくって

-b /usr/lib64/fluent/ruby/bin/ruby

書いたら解決した!prelink なんて存在そもそもしらなかったよママン…。

ruby + prelink でググると結構事例ありますなー。