我在CentOS 5.7上运行nagios 3.2.3,导致它出现段错误。最近很多服务器被添加到配置中,因此很难分辨哪个附加指令触发了这个问题。
然而,nagios 3.2.3软件包来自rpmforge,许多现有的perl库很可能是CentOS base / updates repos,所以我期待一些冲突的库导致这个...
在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 +++
所以我尝试了一些事情;
无法重新编译嵌入式perl,这是一个巨大的烦恼。
答案 0 :(得分:1)
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
这意味着一些代码取消引用了一个NULL指针。
在GDB下运行/usr/bin/nagios
,并使用where
命令查找哪个代码执行此操作。