This is a multi-part message in MIME format.
--
--
Reply-To: Piotr Roszatycki <Piotr_Roszatycki@???>,
222068@???
Resent-From: Piotr Roszatycki <Piotr_Roszatycki@???>
Resent-To: debian-bugs-dist@???
Resent-CC: Mark Baker <mbaker@???>
Resent-Date: Tue, 25 Nov 2003 14:03:01 UTC
Resent-Message-ID: <handler.222068.B.106976825825601@???>
Date: Tue, 25 Nov 2003 14:49:23 +0100
From: Piotr Roszatycki <Piotr_Roszatycki@???>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031105 Thunderbird/0.3
To: submit@???
Delivered-To: submit@???
Resent-Sender: Debian BTS <debbugs@???>
Resent-Date: Tue, 25 Nov 2003 14:55:36 +0000
Subject: Bug#222068: exim: application bug: exim(429) has SIGCHLD set to SIG_IGN but calls wait().
This is a multi-part message in MIME format.
--
Package: exim
Version: 3.35-1woody2
Severity: important
Tags: patch
Exim produces a lot of messages. I.e.:
Nov 25 13:35:12 szafir kernel: application bug: exim(24490) has SIGCHLD
set to SIG_IGN but calls wa
it().
Nov 25 13:35:13 szafir kernel: (see the NOTES section of 'man 2 wait').
Workaround activated.
Nov 25 13:36:15 szafir kernel: application bug: exim(25506) has SIGCHLD
set to SIG_IGN but calls wa
it().
Nov 25 13:36:15 szafir kernel: (see the NOTES section of 'man 2 wait').
Workaround activated.
This is because exim sets SIG_IGN on SIGCHLD signal and this is error
for Linux kernel.
The attached patch tries to fix the bug.
See also:
http://www.exim.org/pipermail/exim-users/Week-of-Mon-20030414/052632.html
-- System Information
Debian Release: 3.0
Architecture: i386
Kernel: Linux granat 2.4.22pre1-redhat-4.0.1.el-pentiumiii-smp #1 SMP
Tue Nov 18 12:37:43 CET 2003 i686
Locale: LANG=pl_PL, LC_CTYPE=pl_PL
Versions of packages exim depends on:
ii cron 3.0pl1-72 management of regular
background p
ii libc6 2.2.5-11.5 GNU C Library: Shared
libraries an
ii libdb2 2:2.7.7.0-7 The Berkeley database
routines (ru
ii libident 0.22-2 simple RFC1413 client
library - ru
ii libldap2 2.0.23-6.3 OpenLDAP libraries.
ii libpam0g 0.72-35 Pluggable Authentication
Modules l
ii libpcre3 3.4-1.1 Philip Hazel's Perl
Compatible Reg
--
Piotr Roszatycki, Netia Telekom S.A. .''`.
mailto:Piotr_Roszatycki@netia.net.pl : :' :
mailto:dexter@debian.org `. `'
`-
--
--- exim-3.35.orig/src/daemon.c
+++ exim-3.35/src/daemon.c
@@ -274,7 +274,9 @@
want to wait for them as they are doing independent deliveries. */
for (i = 0; i < listen_socket_count; i++) close(listen_sockets[i]);
+#ifdef CAN_IGNORE_SIGCHLD
signal(SIGCHLD, SIG_IGN);
+#endif
/* Attempt to get an id from the sending machine via the RFC 1413
protocol. We do this in the sub-process in order not to hold up the
--- exim-3.35.orig/src/exim.c
+++ exim-3.35/src/exim.c
@@ -3141,7 +3186,9 @@
in the non-synchronous delivery case. However, it seems that on some OS, this
doesn't work, so the loop below contains a waitpid() just in case. */
+#ifdef CAN_IGNORE_SIGCHLD
if (!synchronous_delivery) signal(SIGCHLD, SIG_IGN);
+#endif
/* Save the current store pool point, for resetting at the start of
each message, and save the real sender address, if any. */
--- exim-3.35.orig/src/smtp_in.c
+++ exim-3.35/src/smtp_in.c
@@ -3497,7 +3496,9 @@
forking. It should be set that way anyway for external incoming SMTP,
but we save and restore to be tidy. */
+#ifdef CAN_IGNORE_SIGCHLD
oldsignal = signal(SIGCHLD, SIG_IGN);
+#endif
if ((pid = fork()) == 0)
{
@@ -3520,7 +3521,9 @@
_exit(EXIT_FAILURE); /* paranoia */
}
+#ifdef CAN_IGNORE_SIGCHLD
signal(SIGCHLD, oldsignal); /* restore */
+#endif
}
if (pid < 0)
--
--