[comp.mail.sendmail] Sendmail barfing on long :include: aliases

jordan@zooks.ads.com (Jordan Hayes) (08/01/88)

anybody have a fix for this problem?  sendmail gets to delivering a
bunch of the messages and then dumps core.  the core doesn't tell you
much, since the stack gets all trashed.  chris torek claims it's a
setlmp/longjmp problem and that a timer goes off and restores the wrong
context, thus sending it off into never-never land.  something with
confusion between the two timeouts (each copy vs. the whole message).
of course, the lock files aren't removed and the q files aren't
updated, so it results in multiple copies of messages when the lock
files get removed ... i see this a lot on mailing lists that are long,
including the BIND mailing list on ucbarpa.Berkeley.EDU (which is a
VAX, so it's probably inherent to 5.59 generally).

/jordan

nowicki%rose@Sun.COM (Bill Nowicki) (08/02/88)

In article <5033@zodiac.UUCP>, jordan@zooks.ads.com (Jordan Hayes) writes:
> anybody have a fix for this problem?  sendmail gets to delivering a
> bunch of the messages and then dumps core.  the core doesn't tell you
> much, since the stack gets all trashed.  

Let me put in my (obviously biased) plug for the standard SunOS sendmail.
The one in our last release (SunOS 4.0) was essentially 5.59 with dozens
of bugs like this one fixed.

	-- WIN

jordan@zooks.ads.com (Jordan Hayes) (08/02/88)

Bill Nowicki <nowicki%rose@Sun.COM writes:

	Let me put in my (obviously biased) plug for the standard SunOS
	sendmail.

I'll take it if you can give me source.

You won't?  Oh.

I guess it's not a "fix" then.

How about a hint as to how you fixed it?  :-)

/jordan

ehrlich@blitz (Dan Ehrlich) (08/02/88)

In article <62267@sun.uucp> nowicki%rose@Sun.COM (Bill Nowicki) writes:
>In article <5033@zodiac.UUCP>, jordan@zooks.ads.com (Jordan Hayes) writes:
>> anybody have a fix for this problem?  sendmail gets to delivering a
>> bunch of the messages and then dumps core.  the core doesn't tell you
>> much, since the stack gets all trashed.  
>
>Let me put in my (obviously biased) plug for the standard SunOS sendmail.
>The one in our last release (SunOS 4.0) was essentially 5.59 with dozens
>of bugs like this one fixed.
>
>	-- WIN
  

Great news!!  How do I get a copy of the source to run on my VAX?  I
can't afford to buy a Sun just to get a binary copy of sendmail. ;-)


Dan Ehrlich <ehrlich@blitz.cs.psu.edu> | Disclaimer: The opinions expressed are
The Pennsylvania State University      | my own, and should not be attributed
Department of Computer Science         | to anyone else, living or dead.
University Park, PA   16802            |

pst@comdesign.uucp (Paul Traina) (08/03/88)

From article <62267@sun.uucp>, by nowicki%rose@Sun.COM (Bill Nowicki):
- In article <5033@zodiac.UUCP>, jordan@zooks.ads.com (Jordan Hayes) writes:
-> anybody have a fix for this problem?  sendmail gets to delivering a
-> bunch of the messages and then dumps core.  the core doesn't tell you
-> much, since the stack gets all trashed.  
- 
- Let me put in my (obviously biased) plug for the standard SunOS sendmail.
- The one in our last release (SunOS 4.0) was essentially 5.59 with dozens
- of bugs like this one fixed.
- 
- 	-- WIN

Feh!  Yah, tell me about it when stuff stops breaking under SunOS 4.0.
For now we're stuck with 3.5, and you still don't provide SOURCE CODE.

Until then,  keep your plugs to yourself.
-- 
Paul Traina	- {uunet|pyramid}!comdesign!pst - comdesign!pst@pyramid.com

To believe that what is true for you in your private heart is true for all
men,  that is genius.

nowicki%rose@Sun.COM (Bill Nowicki) (08/05/88)

Sigh, I seem to be reminded every few months why I should never
post to Usenet.

In article <5049@zodiac.UUCP>, jordan@zooks.ads.com (Jordan Hayes) writes:
> I'll take it if you can give me source.

Contrary to the rumors flying around, Sun ships its source code as soon
as humanly possible.  Sure, from time to time some parts might be
missing from the tape by accident, and it takes some time to do the
testing, documentation, and release of such a huge amount of software.
Anyone who tells you otherwise is lying. Please, no flames about the
AT&T licensing terms! I don't like them either.

Full source to SunOS sendmail is also available through our "Open
Network Computing" package, which includes NFS.  About a hundred
vendors and countless Universities have already gotten this software.
So yes, it DOES run on a VAX!  All in source code!

By the way, it was pointed out that SunOS 4.0 sendmail is actually
based on the Berkeley 5.54 release, NOT 5.59, so it does have MX
support but does not do the search path for MX records.  I should fix
this shortly now that someone brought it to my attention.  Generally
I put fixing bugs at a higher priority than adding new features.

> How about a hint as to how you fixed it?  :-)

What? Put some information into Usenet instead of just flaming? :-)

The fix is to get rid of the setjmp() call totally, and just save and
restore the timeout variable.  It simplifies the code somewhat as well.

------- usersmtp.c -------
16c16
< SCCSID(%Z%%M% %I% %E% SMI (no SMTP)); /* from UCB 5.7 4/2/86 */
---
> SCCSID(@(#)usersmtp.c 1.20 87/09/03 SMI (no SMTP)); /* from UCB 5.7 4/2/86 */
43d42
< #define SMTP_TIMEDOUT 3               /* never got greeting */
62a62,63
> jmp_buf       CtxGreeting;
> 
70c71
<       time_t tempTimeout;
---
>       extern greettimeout();
138,141c139,140
<       **      This should appear spontaneously.  Give it less time to
<       **      happen than the normal read timeout since it is more
<       **      common, and we have less to lose since we have not started
<       **      the SMTP conversation yet.
---
>       **      This should appear spontaneously.  Give it five minutes to
>       **      happen.
143a143,145
>       if (setjmp(CtxGreeting) != 0)
>               goto tempfail;
>       gte = setevent((time_t) 300, greettimeout, 0);
145,146d146
<       tempTimeout = ReadTimeout;
<       ReadTimeout = (time_t) 120;
148,150c148,149
<       ReadTimeout = tempTimeout;
<       if (r < 0 || REPLYTYPE(r) != 2) {
<               SmtpState = SMTP_TIMEDOUT;
---
>       clrevent(gte);
>       if (r < 0 || REPLYTYPE(r) != 2)
152d150
<       }
227a226,233
> }
> 
> 
> static
> greettimeout()
> {
>       /* timeout reading the greeting message */
>       longjmp(CtxGreeting, 1);


Your line numbers may vary.  These may not be anybody's official policy.

	Bill Nowicki
	Sun Microsystems