[comp.bugs.4bsd] BIND TCP problem solved

tinguely@plains.UUCP (Mark Tinguely) (02/12/90)

Murphy was working against me again. I worked to a point of desperation, posted
a question to the net and found the solution a few hours later.

The bogus file descriptors and hash structure trashing were related,
if a resolution does a forward and queues the qstream structure on a
linked qinfo structure, and then before the forward can timeout out the TCP
connection is severed (detected by ns_main and initiates the removal of the
qstream in sqrm).  Eventually, the timer associated with the forward tries
to use the now released qstream havoc will follow with the error in the write
to a now bogus (and even if it was not bogus, it is at lease a closed) socket.
(this is not too serious).

The ns_forw code also writes on the old qstream space -- overwriting some
unfortunate structure that has since allocated that space. This is a critical
write when the new structure in this space is a hashbuf structure, causing
a bus or seqmentation error on the first occurrance of the structure.

I solved the problem, here, by checking and removing all qinfo entries
that refer to the qstream being deleted in sqrm(). I will provived the patches
to those that are interested, but this problem is for TCP CONNECTIONS ONLY,
and the symptom of this problem is FREQUENT coring of the name server.

-- 
Mark Tinguely           North Dakota State University,  Fargo, ND  58105
  UUCP:       		...!uunet!plains!tinguely
  BITNET:      		tinguely@plains.bitnet
  INTERNET:   		tinguely@plains.NoDak.edu