[comp.mail.sendmail] sendmail 5-65+/IDA under SunOS4.1 dumps core with frozen .cf

michael@uni-paderborn.de (Michael Schmidt) (12/01/90)

sendmail dumps core if it is started with frozen config file. In
"getservbyname"!! (Yes, I used the ../uiuc/malloc.c) Without .fc all
is fine, besides the warning messages in the log files.

	Any idea?
	Michael
--
      Michael Schmidt, FB 17, Uni-GH Paderborn, Warburgerstr. 100,
                     D-4790 Paderborn, West Germany
Mail:   michael@pbinfo.UUCP         or          michael@uni-paderborn.de

cudcv@warwick.ac.uk (Rob McMahon) (12/12/90)

In article <MICHAEL.90Nov30222935@pbinfo.uni-paderborn.de> michael@uni-paderborn.de (Michael Schmidt) writes:
>sendmail dumps core if it is started with frozen config file. In
>"getservbyname"!! (Yes, I used the ../uiuc/malloc.c)

Has anyone got a fix for this ?  Note that I haven't got NAMED_BIND defined.
The stack trace I get is

#0  0x24d10 in _yp_dobind_soft ()
#1  0x24c1c in _yp_dobind ()
#2  0x25d80 in yp_first ()
#3  0x23c1c in getservent ()
#4  0x239a0 in getservbyname ()
#5  0x4d70 in getrequests ()
#6  0xc210 in main ()

I'm convinced it's some sort of state being kept by the Yellow Pages (oops,
sorry BT, NIS).  I imagine the change that's provoked this is moving some YP
access to before the freeze stage.  I tried a quick

*** /tmp/,RCSt1a02053	Wed Dec 12 12:02:59 1990
--- main.c	Mon Oct 29 17:19:14 1990
***************
*** 954,959 ****
--- 954,967 ----
  	if (freezefile == NULL)
  		return;
  
+ #if YP
+ 	{
+ 		char *domain;
+ 		if (yp_get_default_domain(&domain) == 0)
+ 			yp_unbind(domain);
+ 	}
+ #endif YP
+ 
  	/* try to open the freeze file */
  	f = creat(freezefile, FileMode);
  	if (f < 0)

to reset the NIS before dumping.  This gets it past a `-bv -v' test, but it
still dumps core when invoked with `-bd'.

Cheers,

Rob
--
UUCP:   ...!mcsun!ukc!warwick!cudcv	PHONE:  +44 203 523037
JANET:  cudcv@uk.ac.warwick             INET:   cudcv@warwick.ac.uk
Rob McMahon, Computing Services, Warwick University, Coventry CV4 7AL, England

cudcv@warwick.ac.uk (Rob McMahon) (12/12/90)

Ugh.  Having been provoked into looking into this again, I find that if you
use dynamic linking, sendmail runs in daemon mode, but doesn't accept mail
properly.  The client side gets as far as

	DATA
	...
	.

but never sees an `Ok'.  The server-side process shows `HELO clover'.  This is
with GCC.  With CC and no -Bstatic all seems well.  I'm stopping here ... "if
it works, don't fix it".  Curiouser and curiouser said Alice ....

Rob
--
UUCP:   ...!mcsun!ukc!warwick!cudcv	PHONE:  +44 203 523037
JANET:  cudcv@uk.ac.warwick             INET:   cudcv@warwick.ac.uk
Rob McMahon, Computing Services, Warwick University, Coventry CV4 7AL, England

rdr@cl4.alliant.com (Roger Roles) (12/14/90)

In article <1990Dec12.143759.20693@warwick.ac.uk> cudcv@warwick.ac.uk (Rob McMahon) writes:
>access to before the freeze stage.  I tried a quick
>
	<code to do yp_unbind before freeze>
> 
>to reset the NIS before dumping.  This gets it past a `-bv -v' test, but it

Try inserting an identical piece of code before the read of the freeze file
in the "thaw" routine. While fixing a similar problem in a different version
of sendmail, I discovered that in addition to the saving of the state
used by the NIS in the freeze, the readback of the freeze file destroyed
similar information, causing strange results later due to the unexpected
closing of a file descriptor by a piece of code using a stale copy.
Roger D. Roles		rdr@Alliant.COM, alliant!rdr
Alliant Computer Systems Corporation	508-486-1211