Puppetをバージョン3.2.1にアップグレードしたところ、エージェントを実行すると、「不正な命令(コアダンプ)」というエラーが表示されます。詳細は次のとおりです。
マスターとエージェントの両方が同じマシンで実行されます
#cat /etc/redhat-release
CentOS release 6.2 (Final)
#uname -r
3.9.3-x86_64-linode33
#Ruby --version
Ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
インストールされているRPMは"puppet-3.2.1-1.el6.noarch.rpm"
ただし、同じバージョンのpuppetエージェントを別のホストで実行すると、すべてうまくいきます。問題は、マスターと同じマシンでエージェントを実行しているときにのみ発生します。何が起こっているのか考えていますか?
解決策は、glibc
をアップグレードすることでした。見る https://bugzilla.redhat.com/show_bug.cgi?id=752122
詳細については
Rubyインストールとその依存ライブラリが変更されていない場合、ライブラリ検索パスにバージョンと競合するライブラリがある可能性がありますRuby wasこれは、たとえば、zlibやopensslのようなライブラリを構築し、カスタムプレフィックスに入れて、プログラムにRPATH
//usr/local/lib
を設定する代わりに、LD_LIBRARY_PATH
にドロップした場合に非常に一般的です。それに対してコンパイルする必要があります。
一般に、セグメンテーション違反を診断する最良の方法は、カーネルにコアファイルをダンプさせ(ulimit
およびcore_pattern
sysctlを参照)、GDBなどのデバッガーで実行することです。それはあなたにバックトレースを与えることができ、それは他に何もないとしても、どのライブラリの関数呼び出しが原因であるかを正確に簡単に示すことができます。