2

CentOS 5.7 で nagios 3.2.3 を実行していますが、何らかの原因でセグメンテーション違反が発生しています。最近、多くのサーバーが構成に追加されたため、追加のディレクティブが問題を引き起こしているかどうかを判断するのは困難です。

ただし、nagios 3.2.3 パッケージは rpmforge から提供されており、既存の perl ライブラリの多くは CentOS ベース/更新リポジトリである可能性が高いため、競合するライブラリが原因であると予想しています..

strace で nagios サーバー バイナリを実行すると、次のような 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 を無効にすることはできません。これは非常に面倒なことです。

4

1 に答える 1

1

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

これは、一部のコードが NULL ポインターを逆参照したことを意味します。

/usr/bin/nagiosGDB で実行し、コマンドを使用して、これを実行しコードwhereを見つけます。

于 2012-01-17T19:16:55.820 に答える