tgt@cblpf.ATT.COM (Tim Thompson) (09/20/89)
We're running a variant of NNTP 1.5.6 - it's been modified to run on DKHOST, which is the "least common denominator" within Bell Labs for network connectivity. We are using this variant of NNTP strictly for netnews reading at the moment, and have encountered a fairly nasty bug. When a user finishs an NNTP session on the client, the corresponding NNTP process on the server sometimes remains, tying up that port from other use. Ultimately, when enough of these zombie NNTP processes are left hanging around on the NNTP server, no one can get in, and the NNTP processes have to be killed off by hand, or the machine has to be rebooted. Has anyone had any experience with this type of behaviour? It's not reliably reproducible, and the code seems fairly straightforward in the closing stages of the NNTP process, making it fairly hard to track down. One thing I did notice in the 1.5.6 code which was different than the 1.5.4 code (what we baselined from to do the DKHOST changes) was in the file server/serve.c. The 1.5.6 code reads: printf("%d %s closing connection. Goodbye.\r\n", OK_GOODBYE, host); (void) fflush(stdout); (void) fflush(stdout); The code from 1.5.4 simply had a single fflush(stdout). Why the double in 1.5.6? Will this serve any purpose? Could this be along the lines of something that is leaving the process around on the NNTP server - that is, not flushing/closing something? Any and all comments are welcome via e-mail. Any help anyone might give me in tracking down this problem would also be appreciated. Tim Thompson Netnews Administrator, AT&T Bell Labs tim.g.thompson@att.com