运行 Puppet 代理(版本 3.2.1)时出现错误“非法指令(核心转储)”

运行 Puppet 代理(版本 3.2.1)时出现错误“非法指令(核心转储)”

我刚刚将 puppet 升级到 3.2.1 版本,在运行代理时,出现错误“非法指令(核心转储)”。以下是一些详细信息:

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 代理时,一切正常。问题仅在与主服务器相同的机器上运行代理时出现。知道发生了什么吗?

答案1

解决方案是升级glibchttps://bugzilla.redhat.com/show_bug.cgi?id=752122详情请参阅

答案2

如果您的 Ruby 安装及其依赖库未经过修改,则很有可能库搜索路径中的库与 Ruby 编译所针对的版本相冲突。例如,如果您构建了一个库(如 zlib 或 openssl),并将其放入而/usr/local/lib不是将其放入自定义前缀中并为需要针对其编译的程序设置RPATH/ ,这种情况很常见LD_LIBRARY_PATH

一般来说,诊断段错误的最佳方法是让内核转储核心文件(参见:ulimitcore_patternsysctl),然后通过 GDB 等调试器运行它。它可以为您提供回溯,如果没有其他方法,它可以很容易地指出到底是哪个库的函数调用导致了错误。

相关内容