我刚把puppet升级到3.2.1版本,运行代理的时候出现“Illegal instruction(core dumped)”错误。 以下是一些细节:
master和agent都在同一台机器上运行
#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 agent时,一切都很顺利。 问题只是在与主服务器在同一台机器上运行代理程序时。 任何想法是怎么回事?
解决scheme是升级glibc 。 有关详细信息,请参阅https://bugzilla.redhat.com/show_bug.cgi?id=752122
如果您的Ruby安装及其相关库未经修改,那么很有可能您的库searchpath中有一个与Ruby编译版本相冲突的库。 例如,如果您已经构build了诸如zlib或openssl之类的库并将其放到/usr/local/lib而不是将其放入自定义前缀中,并为需要编译的程序设置RPATH / LD_LIBRARY_PATH它。
通常,诊断段错误的最好方法是让内核转储一个核心文件(参见: ulimit和core_pattern sysctl),然后通过像GDB这样的debugging器来运行它。 它可以给你一个回溯,如果没有别的,可以很容易地指出你究竟是哪个库的函数调用是责备。