On Fri, 29 Aug 2003, Andrew Lewis wrote:
> Aug 29 11:59:27 askariupgd kernel: application bug: exim(12099) has
> SIGCHLD set
> to SIG_IGN but calls wait().
> Aug 29 11:59:27 askariupgd kernel: (see the NOTES section of 'man 2
> wait'). Workaround activated.
>
> What is happening?
A change to the kernel causes this error when somebody is using "belt
and braces" programming. This caught out Exim some time ago. This is the
entry in Exim's ChangeLog:
65. When Exim is receiving multiple messages on a single connection, and
spinning off delivery processess, it sets the SIGCHLD signal handling to
SIG_IGN, because it doesn't want to wait for these processes. However,
because on some OS this didn't work, it also has a paranoid call to
waitpid() in the loop to reap any children that have finished. Some
versions of Linux now complain (to the system log) about this "illogical"
call to waitpid(). I have therefore put it inside a conditional
compilation, and arranged for it to be omitted for Linux.
I'm pretty sure I caught all the places in Exim where this happened.
However, there are still occasional reports of this error. I have not
heard of any resolutions, but my current belief is that they are caused
by something that Exim calls falling foul of the same check.
And you are calling exiscan and fsav...
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.
Get the Exim 4 book: http://www.uit.co.uk/exim-book