2

我在 CentOS 5.7 上运行了 nagios 3.2.3,但有些东西导致它出现段错误。最近许多服务器被添加到配置中,因此很难判断是什么附加指令触发了问题。

然而 nagios 3.2.3 软件包来自 rpmforge 并且许多现有的 perl 库很可能是 CentOS 基础/更新库,所以我预计某些冲突库会导致这种情况。

在 strace 下运行 nagios 服务器二进制文件会导致以下段错误;

open("/usr/bin/p1.pl", O_RDONLY)        = 4
ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fffefee6da0) = -1 ENOTTY (Inappropriate ioctl for device)
lseek(4, 0, SEEK_CUR)                   = 0
fcntl(4, F_SETFD, FD_CLOEXEC)           = 0
fstat(4, {st_mode=S_IFREG|0664, st_size=31878, ...}) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
readlink("/proc/self/exe", "/usr/bin/nagios"..., 4095) = 15
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++

所以我尝试过的一些事情;

  1. 内核是最新的,并且服务器已重新启动。好吃-y
  2. 更新已运行,服务器重新启动 /usr/bin/nagios -v
  3. /etc/nagios/nagios.cfg 通过飞行前检查

不能在不重新编译的情况下禁用嵌入式 perl,这是一个巨大的烦恼。

4

1 回答 1

1

--- SIGSEGV (Segmentation fault) @ 0 (0) ---

这意味着一些代码取消引用 NULL 指针。

/usr/bin/nagios在 GDB 下运行,并使用where命令找出执行操作的代码。

于 2012-01-17T19:16:55.820 回答