From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Fri, 29 Aug 2003 15:01:14 +0400 From: Igor Homyakov To: ALT Devel discussion list Subject: Re: [devel] [Monit] SIGSEGV ][ Message-ID: <20030829110114.GB18868@kadath.office.spb.ramax.ru> Mail-Followup-To: ALT Devel discussion list , ldv@altlinux.ru References: <20020923155752.GA21515@kadath.pm.ramax.spb.ru> <20020923162426.GA16046@basalt.office.altlinux.ru> <20020923161220.GA27239@kadath.pm.ramax.spb.ru> <20020923164607.GA16208@basalt.office.altlinux.ru> <20020923164831.GB27239@kadath.pm.ramax.spb.ru> <20020923171514.GA16526@basalt.office.altlinux.ru> <20020925084949.GA3517@kadath.pm.ramax.spb.ru> <20020925094553.GA30060@basalt.office.altlinux.ru> <20030821123315.GA24314@osdn.org.ua> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20030821123315.GA24314@osdn.org.ua> User-Agent: Mutt/1.4.1i Cc: ldv@altlinux.ru X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.1.2 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Aug 2003 10:55:58 -0000 Archived-At: List-Archive: List-Post: Экспериментальным путем выяснилось что этот именно резолвер. workaround: - писать полный e-mail в alert, то есть вместо alert admin хотя бы alert admin@localhost - всегда писать по какому IP проверять соединение, вместо port 22 use proto ssh писать host 10.4.1.10 port 22 use proto ssh SIGSEGV имеет весьма интересное свойство, если смотреть traceback то валиться совершенно в другом мечте (например у меня падало на вызове syslog, а при отладке казалось что память портил перед этим sprinf) вот что по этому поводу сказал Ulrich Drepper: Every program which crashes is glibc's fault. Get real. Any malloc operation after a heap corruption will cause the program to crash at the next allocation. A bug in the program before a syslog() call will cause syslog to fail but it is not the cause. танцы с glibc-nss-2.2.6-alt0.3 мне в своё время не помогли * Michael Shigorin [030821 16:32]: > 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 > ------ Linux.Kiev http://www.linux.kiev.ua/ -- Igor V. Homyakov RAMAX International System Administrator Banking Technologies Department http://www.ramax.ru