[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