Mailing List Archive

Downgrade from 4.05 to 4.04 on FreeBSD 4.6R
% zcat /var/log/maillog.0.gz | grep -c ' crashed with signal 11 while delivering'
620

Downgrading to 4.04 fix these problem.
(Average message rate about 250,000 per day)

--
VVS56-RIPE
Re: Downgrade from 4.05 to 4.04 on FreeBSD 4.6R [ In reply to ]
On Tue, 16 Jul 2002 sharun@ukr.net wrote:

> % zcat /var/log/maillog.0.gz | grep -c ' crashed with signal 11 while delivering'
> 620
>
> Downgrading to 4.04 fix these problem.
> (Average message rate about 250,000 per day)

A week or so ago somebody flattered me by saying "MTA writers are gods".
If that's true, I must be a pretty minor god, because I'm unable to fix
a problem on the basis of such a small amount of information as "there
was a crash".

If you want me to investigate this, you'll have to send me a lot more
information. Preferably log extracts, and even better, debug output from
a delivery that crashes.

On the other hand, perhaps I can exhibit a little god-like omniscience
by asking "Does your configuration or filter file make any references to
headers such as $h_to:?" If so, the following fix, which is in the
forthcoming 4.10 release, may be relevant:

11. A reference to any header line that contains addresses (e.g. $h_to:) caused
a crash if the header was empty. Change 46 for 4.05 introduced this bug.

There is a patch for 4.05. I can't remember if I posted it before, but
as it's pretty small, I'll repost it below.

--
Philip Hazel University of Cambridge Computing Service,
ph10@cus.cam.ac.uk Cambridge, England. Phone: +44 1223 334714.


*** exim-4.05/src/expand.c Thu Jun 13 10:32:04 2002
--- expand.c Mon Jul 1 10:09:01 2002
***************
*** 640,646 ****
}
Ustrncpy(ptr, t, ilen);
ptr += ilen;
! if (comma != 0)
{
ptr[-1] = ',';
*ptr++ = '\n';
--- 640,646 ----
}
Ustrncpy(ptr, t, ilen);
ptr += ilen;
! if (comma != 0 && ilen > 0)
{
ptr[-1] = ',';
*ptr++ = '\n';
***************
*** 665,671 ****
/* Remove trailing white space (includes newlines) and a redundant added comma
if present. */

! if (comma != 0) ptr -= 2;
while (ptr > yield && isspace(ptr[-1])) ptr--;
*ptr = 0;
return yield;
--- 665,671 ----
/* Remove trailing white space (includes newlines) and a redundant added comma
if present. */

! if (comma != 0 && ptr > yield) ptr -= 2;
while (ptr > yield && isspace(ptr[-1])) ptr--;
*ptr = 0;
return yield;