Re: [Exim] Downgrade from 4.05 to 4.04 on FreeBSD 4.6R

Startseite
Nachricht löschen
Nachricht beantworten
Autor: Philip Hazel
Datum:  
To: sharun
CC: exim-users
Betreff: Re: [Exim] Downgrade from 4.05 to 4.04 on FreeBSD 4.6R
On Tue, 16 Jul 2002 sharun@??? 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@???      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;