[devel] [Monit] SIGSEGV ][
Michael Shigorin
=?iso-8859-1?q?mike_=CE=C1_osdn=2Eorg=2Eua?=
Чт Авг 21 16:33:15 MSD 2003
On Wed, Sep 25, 2002 at 01:45:53PM +0400, Dmitry V. Levin wrote:
> > > > > > > > У меня странная картина, monit из Сизифа валиться на пустом месте
> > > > > > > > с SIGSERV. А собранный локально нормально работает.
> > > > > Если приложение многопоточное и при этом нити используют get{host,net}by*,
> > > > > то 99% что #0001259; traceback при этом ведет в libnss_XXX.
> > > В таком случае применимы те же workaround'ы, что и для mysqld.
> glibc-nss-2.2.6-alt0.3
Так. А что делать, если локально собранный 3.2-alt1 имени Игоря
валится, причем даже при /etc/monitrc вида
---
set daemon 120
set logfile syslog
set mailserver localhost
set mail-format {
from: root на inmetex.com.ua
subject: [monit] -- $PROGRAM $EVENT on $HOST at $DATE
message:
}
check syslogd with pidfile /var/run/syslogd.pid
start program = "/etc/init.d/syslogd start"
stop program = "/etc/init.d/syslogd stop"
alert admin
group system
---
(разумеется, /var/run/syslogd.pid существует и содержит правильный PID)
Конец strace -ff выглядит так:
---
read(4, "127.0.0.1\t\tlocalhost.localdomain"..., 4096) = 43
read(4, "", 4096) = 0
close(4) = 0
munmap(0x123000, 4096) = 0
uname({sys="Linux", node="trickster.inmetex", ...}) = 0
read(3, "", 8192) = 0
ioctl(3, TCGETS or SNDCTL_TMR_TIMEBASE, 0xbffff270) = -1 ENOTTY (Inappropriate ioctl for device)
close(3) = 0
munmap(0x122000, 4096) = 0
stat64("/var/run/syslogd.pid", {st_mode=S_IFREG|0644, st_size=5, ...}) = 0
stat64("/var/run/syslogd.pid", {st_mode=S_IFREG|0644, st_size=5, ...}) = 0
open("/var/run/syslogd.pid", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=5, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x122000
read(3, "1186\n", 4096) = 5
close(3) = 0
munmap(0x122000, 4096) = 0
getpgid(0x4a2) = 1186
getuid32() = 0
stat64("/var/run/monit.pid", 0xbffff770) = -1 ENOENT (No such file or directory)
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
---
touch /var/run/monit.pid или помещение туда несуществующего PID =>
---
stat64("/var/run/monit.pid", {st_mode=S_IFREG|0644, st_size=5, ...}) = 0
stat64("/var/run/monit.pid", {st_mode=S_IFREG|0644, st_size=5, ...}) = 0
open("/var/run/monit.pid", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=5, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x122000
read(3, "2325\n", 4096) = 5
close(3) = 0
munmap(0x122000, 4096) = 0
getpgid(0x915) = -1 ESRCH (No such process)
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
---
Помещение туда PID "левого" существующего процесса приводит к отправке ему
SIGUSR1 и счастливому завершению monit:
---
stat64("/var/run/monit.pid", {st_mode=S_IFREG|0644, st_size=6, ...}) = 0
stat64("/var/run/monit.pid", {st_mode=S_IFREG|0644, st_size=6, ...}) = 0
open("/var/run/monit.pid", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=6, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x122000
read(3, "31193\n", 4096) = 6
close(3) = 0
munmap(0x122000, 4096) = 0
getpgid(0x79d9) = 31193
kill(31193, SIGUSR1) = 0
write(2, "monit daemon at 31193 awakened\n", 31monit daemon at 31193 awakened
) = 31
_exit(0) = ?
---
Для удобства:
ftp://ftp.altlinux.org/pub/people/mike/misc/monit-3.2-alt1.src.rpm
--
---- WBR, Michael Shigorin <mike на altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20030821/2061779f/attachment-0001.bin>
Подробная информация о списке рассылки Devel