Re: [bug] stuck localhost TCP connections, v2.6.26-rc3+

Håkon Løvdal
2008-05-31T14:26:00Z

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=UTF-8, Size: 3039 bytes --]

2008/5/28 Peter Zijlstra <peterz@infradead.org>:> Just a quick note to say, me too!!>> same scenario: distcc on localhost.
Me too, however with a completely different scenario; my hung connectionsare not related to distcc at all. The output from /proc/net/tcp that Ingoposted a few days ago are somewhat different from mine, however I believethis is the same problem or at least related. Just as Ingo experienced,netstat -p only shows PID/program as '-' for the hung connections whilefor other connections it shows the expected results.
I have recently bought a new PC and have started the process of copyingstuff from my old PC to the new PC. During this I have experienced thishang several times. I started copying by using tar on both ends over a sshpipe but in order to eliminate possible ssh problems I also have tried tarover a ttcp connection which also fails. There is no obvious pattern ofwhen this happens, I have experienced failures after transferring 1.15GB,51.4GB and 23.6GB.
Here is the output from netstat -n -o filtered for port 22 and slightlyedited. All the lines started with Proto == tcp and Recv-Q == 0.
Send-Q Local Addr Foreign Addr State Timer 0 old_pc:22 new_pc:52667 ESTABLISHED keepalive (3513.93/0/0) 0 old_pc:22 new_pc:43825 ESTABLISHED keepalive (5467.38/0/0) 2896 old_pc:22 new_pc:58601 ESTABLISHED on (21020884.65/0/0) 4344 old_pc:22 new_pc:54105 ESTABLISHED on (21017016.33/0/0) 2896 old_pc:22 new_pc:34149 ESTABLISHED on (20986889.24/0/0)
The first two connections are ongoing, working, interactive sshconnections. The other three connections died days ago on my new PC.
One thing that caught my eyes was these very high timer values.Checking the netstat source reveals that the value printed is "(double)time_len / HZ" and that time_len is extracted from /proc/net/tcp. Whilemy CONFIG_HZ is 1000, I assume netstat has picked up HZ as 100 from/usr/include/asm/param.h, and then things really seems to imply thatthere is some integer overflow since 2^31 = 2147483648.
Looking into get_tcp4_sock in net/ipv4/tcp_ipv4.c I see that timer_expiresis initialized with icsk->icsk_timeout for the troublesome cases. Buthere my competence to trace this further stops, so I have no idea ofhow icsk->icsk_timeout gets such high values.
My old PC is currently still running with these stalled connectionspresent so let me know if there is something I should try to investigatefurther. I can post output from /proc/net/tcp and my .config if you wantto have a look. My old PC is 32 bit/Celeron single core, kernel 2.6.24,while my new is 64 bit/Q9300 quad core, kernel 2.6.25.3. The ethernetcards are the following:
02:0d.0 Ethernet controller: Realtek Semiconductor Co., Ltd.RTL-8139/8139C/8139C+ (rev 10)02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8056PCI-E Gigabit Ethernet Controller (rev 12)
BR HÃ¥kon LÃ¸vdalÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éÝ¶\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dÊ‡Ú™ë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥