Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Jul 1997 17:35:04 -0700
From:      Julian Elischer <julian@whistle.com>
To:        hackers@freebsd.org
Subject:   TCP bug in 2.2 
Message-ID:  <33C6D138.7D55368C@whistle.com>

next in thread | raw e-mail | index | archive | help
If I could borrow the ear of someone with more knowledge of TCP
states than me..

We see the following in a kernel dated from around March 4
and from the logs it looks as if it's present in 2.2.2+

finger, (after a lot of iterations of the test)
goes into a permanent wait reading from a socket.

the socket is seen to be in FIN_WAIT_2 state
after the finger proces is killed the socket STAYS in FIN_WAIT_2
state forever.

from what I've read in tcp_input.c etc. This shouldn't happen.

2 problems:
1/ why doesn't finger wake up and return EOF?
2/ why doesn't the close() ofthe socket start
 the 2MSL timer?


THere is obviosly a hole..

obviously (so->so_state & SS_CANTRCVMORE) is not true when
tp->t_state = TCPS_FIN_WAIT_2;
 is executed, (tcp_input.c line 1414 in 2.2.2)

and either tcp_usrclosed() is not being called
during the socket closure for some reason,
or the timer is being continually reset by something else.



does any of you TCP sleuths have an idea of what migh tbe happenning?
I will continue to research anyhow...

julian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?33C6D138.7D55368C>