Lost timer or fin packet in tcp_fin

Paul Gortmaker (paul@rasty.anu.edu.au)
Sat, 23 Nov 1996 16:06:48 +1000 (EST)


I was d'loading a large file over CSLIP lately, split up into chunks
from an old ultrix box to home (running 2.0.25) and the ftp connection
mysteriously died and it burped up a printk. Note the timestamp on
the last of the chunks to make it across.

[...]
-rw------- 1 gpg109 users 512000 Nov 22 04:20 xbo
-rw------- 1 gpg109 users 512000 Nov 22 04:25 xbp
-rw------- 1 gpg109 users 512000 Nov 22 04:30 xbq
-rw------- 1 gpg109 users 512000 Nov 22 04:36 xbr

When I came to it later that morning, it had (from memory now)
the "Timeout 900s - closing connection" message, and then a bunch
of "Not connected" messages under that were associated with the mget
of the remaining chunks (xb[s-z]).

I just assumed it was the old ultrix box being kooky, and thought nothing
of it until I saw this later on.

Nov 22 04:51:08 kernel: Lost timer or fin packet in tcp_fin.

Note that 4:36 + 900s = 4:51 which is the time of the message. The CSLIP
link didn't go down or anything like that either. Machine was otherwise
idle (needless to say, given the time!) For it to time me out, the ultrix
box must have never seen the request for the "xbs" chunk.

Above the printk in net/ipv4/tcp_input.c it says:

BUG check case. We have a problem here if there
is no timer running [leads to frozen socket] or no data in the
write queue [means we sent a fin and lost it from the queue
before changing the ack properly].

Paul.