【问题标题】:how to determine libraries involved in segfault如何确定段错误中涉及的库
【发布时间】:2012-01-17 18:01:19
【问题描述】:

我在 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. 内核已更新,服务器已重新启动。 yum -y
  2. 更新已运行,服务器已重新启动 /usr/bin/nagios -v
  3. /etc/nagios/nagios.cfg 通过飞行前检查

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

【问题讨论】:

    标签: perl gdb segmentation-fault nagios


    【解决方案1】:

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

    这意味着某些代码取消了对 NULL 指针的引用。

    在 GDB 下运行/usr/bin/nagios,并使用where 命令找出是哪个代码做到了这一点。

    【讨论】:

      猜你喜欢
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 2017-04-24
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      相关资源
      最近更新 更多