как определить библиотеки, участвующие в segfault - PullRequest
2 голосов
/ 17 января 2012

У меня nagios 3.2.3 работает на CentOS 5.7, и что-то вызывает его сбои.недавно в конфигурацию было добавлено много серверов, поэтому трудно сказать, какая дополнительная директива вызывает проблему.

Однако пакет nagios 3.2.3 поставляется из rpmforge, и многие из существующих perl-библиотек, вероятно, будут основой CentOS./ обновляет репозитории, поэтому я ожидаю, что какая-то конфликтующая библиотека вызывает это ..

Запуск двоичного файла сервера nagios под strace приводит к следующему segfault;

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 без перекомпиляции, что вызывает большое раздражение.

1 Ответ

1 голос
/ 17 января 2012

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

Это означает, что некоторый код разыменовывает указатель NULL.

Запустите /usr/bin/nagios в GDB и используйте команду where, чтобы узнать , какой код сделал это.

...