如何确定涉及segfault的库

时间:2012-01-17 18:01:20

标签: perl gdb segmentation-fault nagios

我在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 +++

所以我尝试了一些事情;

  1. 内核是最新的,服务器已重新启动。 yum -y
  2. 已运行更新,服务器已重新启动/ usr / bin / nagios -v
  3. /etc/nagios/nagios.cfg通过了飞行前检查
  4. 无法重新编译嵌入式perl,这是一个巨大的烦恼。

1 个答案:

答案 0 :(得分:1)

  

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

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

在GDB下运行/usr/bin/nagios,并使用where命令查找哪个代码执行此操作。