From owner-freebsd-bugs Mon Oct 6 19:50:05 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.7/8.8.7) id TAA19632 for bugs-outgoing; Mon, 6 Oct 1997 19:50:05 -0700 (PDT) (envelope-from owner-freebsd-bugs) Received: (from gnats@localhost) by hub.freebsd.org (8.8.7/8.8.7) id TAA19621; Mon, 6 Oct 1997 19:50:01 -0700 (PDT) (envelope-from gnats) Date: Mon, 6 Oct 1997 19:50:01 -0700 (PDT) Message-Id: <199710070250.TAA19621@hub.freebsd.org> To: freebsd-bugs Cc: From: Matt Dillon Subject: kern/4712 Reply-To: Matt Dillon Sender: owner-freebsd-bugs@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk The following reply was made to PR kern/4712; it has been noted by GNATS. From: Matt Dillon To: freebsd-gnats-submit@freebsd.org Cc: Subject: kern/4712 Date: Mon, 6 Oct 1997 19:48:59 -0700 (PDT) I also reproduced the bug with a smaller window size, which I include at the very end. See notes in section 3 below. Section I: prior to Bill Fenner's quick patch to me Section II: after Bill Fenner's quick patch to me (bug no longer exists) Section III: additional test done prior to Bill Fenner's patch. The test consisted of a 'telnet -d www.erols.com 80' and a 'GET /'. -Matt :Actually, although I didn't reproduce the hang, I did reproduce the :strangely-sized window locally and think I have a fix. Try this and :see if it fixed your hang too. : : Bill : :--- tcp_output.c.orig Mon Oct 6 18:46:03 1997 :... Matthew Dillon Engineering, BEST Internet Communications, Inc. [always include a portion of the original email in any response!] BEFORE FIX 19:36:03.170980 205.149.163.43.1025 > 205.252.116.242.80: S 10843074:10843074(0) win 65535 (DF) [tos 0x10] 19:36:03.277683 205.252.116.242.80 > 205.149.163.43.1025: S 3478916915:3478916915(0) ack 10843075 win 31744 19:36:03.282294 205.149.163.43.1025 > 205.252.116.242.80: . ack 1 win 164 (DF) [tos 0x10] 19:36:05.705198 205.149.163.43.1025 > 205.252.116.242.80: P 1:8(7) ack 1 win 164 (DF) [tos 0x10] 19:36:05.847542 205.252.116.242.80 > 205.149.163.43.1025: . 1:165(164) ack 8 win 31744 (DF) [tos 0x10] 19:36:05.982352 205.149.163.43.1025 > 205.252.116.242.80: . ack 165 win 0 (DF) [tos 0x10] 19:36:07.302774 205.252.116.242.80 > 205.149.163.43.1025: . ack 8 win 31744 [tos 0x10] 19:36:07.307393 205.149.163.43.1025 > 205.252.116.242.80: . ack 165 win 0 (DF) [tos 0x10] 19:36:09.845744 205.252.116.242.80 > 205.149.163.43.1025: . ack 8 win 31744 [tos 0x10] 19:36:09.850396 205.149.163.43.1025 > 205.252.116.242.80: . ack 165 win 0 (DF) [tos 0x10] 19:36:14.809946 205.252.116.242.80 > 205.149.163.43.1025: . ack 8 win 31744 [tos 0x10] 19:36:14.814576 205.149.163.43.1025 > 205.252.116.242.80: . ack 165 win 0 (DF) [tos 0x10] 19:36:17.329149 205.149.163.43.1025 > 205.252.116.242.80: P 8:10(2) ack 165 win 0 (DF) [tos 0x10] 19:36:17.448915 205.252.116.242.80 > 205.149.163.43.1025: R 3478917080:3478917080(0) win 0 MARK Oct 6 19:36:03 flash /kernel: 0xf201d400 SYN_SENT:output [a573c2..a573de)@0, urp=0 -> SYN_SENT Oct 6 19:36:03 flash /kernel: rcv_(nxt,wnd,up) (0,0,0) snd_(una,nxt,max) (a573c2,a573c3,a573c3) Oct 6 19:36:03 flash /kernel: snd_(wl1,wl2,wnd) (0,0,0) Oct 6 19:36:03 flash /kernel: 0xf201d400 CLOSED:user CONNECT -> SYN_SENT Oct 6 19:36:03 flash /kernel: rcv_(nxt,wnd,up) (0,0,0) snd_(una,nxt,max) (a573c2,a573c3,a573c3) Oct 6 19:36:03 flash /kernel: snd_(wl1,wl2,wnd) (0,0,0) Oct 6 19:36:03 flash /kernel: 0xf201d400 SYN_SENT:input cf5c0f33@a573c3, urp=0 -> ESTABLISHED Oct 6 19:36:03 flash /kernel: rcv_(nxt,wnd,up) (cf5c0f34,100a4,cf5c0f34) snd_(una,nxt,max) (a573c3,a573c3,a573c3) Oct 6 19:36:03 flash /kernel: snd_(wl1,wl2,wnd) (cf5c0f34,a573c3,7c00) Oct 6 19:36:03 flash /kernel: 0xf201d400 ESTABLISHED:output a573c3@cf5c0f34, urp=0 -> ESTABLISHED Oct 6 19:36:03 flash /kernel: rcv_(nxt,wnd,up) (cf5c0f34,100a4,cf5c0f34) snd_(una,nxt,max) (a573c3,a573c3,a573c3) Oct 6 19:36:03 flash /kernel: snd_(wl1,wl2,wnd) (cf5c0f34,a573c3,7c00) Oct 6 19:36:05 flash /kernel: 0xf201d400 ESTABLISHED:output [a573c3..a573ca)@cf5c0f34, urp=0 -> ESTABLISHED Oct 6 19:36:05 flash /kernel: rcv_(nxt,wnd,up) (cf5c0f34,100a4,cf5c0f34) snd_(una,nxt,max) (a573c3,a573ca,a573ca) Oct 6 19:36:05 flash /kernel: snd_(wl1,wl2,wnd) (cf5c0f34,a573c3,7c00) Oct 6 19:36:05 flash /kernel: 0xf201d400 ESTABLISHED:user SEND -> ESTABLISHED Oct 6 19:36:05 flash /kernel: rcv_(nxt,wnd,up) (cf5c0f34,100a4,cf5c0f34) snd_(una,nxt,max) (a573c3,a573ca,a573ca) Oct 6 19:36:05 flash /kernel: snd_(wl1,wl2,wnd) (cf5c0f34,a573c3,7c00) Oct 6 19:36:05 flash /kernel: 0xf201d400 ESTABLISHED:input [cf5c0f34..cf5c0fd8)@a573ca, urp=0 -> ESTABLISHED Oct 6 19:36:05 flash /kernel: rcv_(nxt,wnd,up) (cf5c0fd8,100a4,cf5c0f34) snd_(una,nxt,max) (a573ca,a573ca,a573ca) Oct 6 19:36:05 flash /kernel: snd_(wl1,wl2,wnd) (cf5c0f34,a573ca,7c00) Oct 6 19:36:05 flash /kernel: 0xf201d400 ESTABLISHED:user RCVD -> ESTABLISHED Oct 6 19:36:05 flash /kernel: rcv_(nxt,wnd,up) (cf5c0fd8,100a4,cf5c0f34) snd_(una,nxt,max) (a573ca,a573ca,a573ca) Oct 6 19:36:05 flash /kernel: snd_(wl1,wl2,wnd) (cf5c0f34,a573ca,7c00) Oct 6 19:36:05 flash /kernel: 0xf201d400 ESTABLISHED:output a573ca@cf5c0fd8, urp=0 -> ESTABLISHED Oct 6 19:36:05 flash /kernel: rcv_(nxt,wnd,up) (cf5c0fd8,100a4,cf5c0f34) snd_(una,nxt,max) (a573ca,a573ca,a573ca) Oct 6 19:36:05 flash /kernel: snd_(wl1,wl2,wnd) (cf5c0f34,a573ca,7c00) Oct 6 19:36:07 flash /kernel: 0xf201d400 ESTABLISHED:input cf5c0fd7@a573ca, urp=0 -> ESTABLISHED Oct 6 19:36:07 flash /kernel: rcv_(nxt,wnd,up) (cf5c0fd8,100a4,cf5c0fd8) snd_(una,nxt,max) (a573ca,a573ca,a573ca) Oct 6 19:36:07 flash /kernel: snd_(wl1,wl2,wnd) (cf5c0fd7,a573ca,7c00) Oct 6 19:36:07 flash /kernel: 0xf201d400 ESTABLISHED:output a573ca@cf5c0fd8, urp=0 -> ESTABLISHED Oct 6 19:36:07 flash /kernel: rcv_(nxt,wnd,up) (cf5c0fd8,100a4,cf5c0fd8) snd_(una,nxt,max) (a573ca,a573ca,a573ca) Oct 6 19:36:07 flash /kernel: snd_(wl1,wl2,wnd) (cf5c0fd7,a573ca,7c00) Oct 6 19:36:09 flash /kernel: 0xf201d400 ESTABLISHED:input cf5c0fd7@a573ca, urp=0 -> ESTABLISHED Oct 6 19:36:09 flash /kernel: rcv_(nxt,wnd,up) (cf5c0fd8,100a4,cf5c0fd8) snd_(una,nxt,max) (a573ca,a573ca,a573ca) Oct 6 19:36:09 flash /kernel: snd_(wl1,wl2,wnd) (cf5c0fd7,a573ca,7c00) Oct 6 19:36:09 flash /kernel: 0xf201d400 ESTABLISHED:output a573ca@cf5c0fd8, urp=0 -> ESTABLISHED Oct 6 19:36:09 flash /kernel: rcv_(nxt,wnd,up) (cf5c0fd8,100a4,cf5c0fd8) snd_(una,nxt,max) (a573ca,a573ca,a573ca) Oct 6 19:36:09 flash /kernel: snd_(wl1,wl2,wnd) (cf5c0fd7,a573ca,7c00) Oct 6 19:36:14 flash /kernel: 0xf201d400 ESTABLISHED:input cf5c0fd7@a573ca, urp=0 -> ESTABLISHED Oct 6 19:36:14 flash /kernel: rcv_(nxt,wnd,up) (cf5c0fd8,100a4,cf5c0fd8) snd_(una,nxt,max) (a573ca,a573ca,a573ca) Oct 6 19:36:14 flash /kernel: snd_(wl1,wl2,wnd) (cf5c0fd7,a573ca,7c00) Oct 6 19:36:14 flash /kernel: 0xf201d400 ESTABLISHED:output a573ca@cf5c0fd8, urp=0 -> ESTABLISHED Oct 6 19:36:14 flash /kernel: rcv_(nxt,wnd,up) (cf5c0fd8,100a4,cf5c0fd8) snd_(una,nxt,max) (a573ca,a573ca,a573ca) Oct 6 19:36:14 flash /kernel: snd_(wl1,wl2,wnd) (cf5c0fd7,a573ca,7c00) Oct 6 19:36:17 flash /kernel: 0xf201d400 ESTABLISHED:output [a573ca..a573cc)@cf5c0fd8, urp=0 -> ESTABLISHED (somewhere around here I hit a key that generated a sigpipe since the remote WWW server had shutdown it's input channel. Oct 6 19:36:17 flash /kernel: rcv_(nxt,wnd,up) (cf5c0fd8,100a4,cf5c0fd8) snd_(una,nxt,max) (a573ca,a573cc,a573cc) Oct 6 19:36:17 flash /kernel: snd_(wl1,wl2,wnd) (cf5c0fd7,a573ca,7c00) Oct 6 19:36:17 flash /kernel: 0xf201d400 ESTABLISHED:user SEND -> ESTABLISHED Oct 6 19:36:17 flash /kernel: rcv_(nxt,wnd,up) (cf5c0fd8,100a4,cf5c0fd8) snd_(una,nxt,max) (a573ca,a573cc,a573cc) Oct 6 19:36:17 flash /kernel: snd_(wl1,wl2,wnd) (cf5c0fd7,a573ca,7c00) Oct 6 19:36:17 flash /kernel: ???????? drop cf5c0fd8@0, urp=0 ------------------------------------------------------------------------------ AFTER FIX 19:39:54.694887 205.149.163.43.1027 > 205.252.116.242.80: S 13189984:13189984(0) win 65535 (DF) [tos 0x10] 19:39:54.846613 205.252.116.242.80 > 205.149.163.43.1027: S 447599909:447599909(0) ack 13189985 win 31744 19:39:54.851251 205.149.163.43.1027 > 205.252.116.242.80: . ack 1 win 65535 (DF) [tos 0x10] 19:39:56.047669 205.149.163.43.1027 > 205.252.116.242.80: P 1:8(7) ack 1 win 65535 (DF) [tos 0x10] 19:39:56.177840 205.252.116.242.80 > 205.149.163.43.1027: . ack 8 win 31744 (DF) [tos 0x10] 19:39:56.888723 205.252.116.242.80 > 205.149.163.43.1027: . 1:1461(1460) ack 8 win 31744 (DF) [tos 0x10] 19:39:56.906924 205.252.116.242.80 > 205.149.163.43.1027: . 1461:2921(1460) ack 8 win 31744 (DF) [tos 0x10] 19:39:56.972682 205.149.163.43.1027 > 205.252.116.242.80: . ack 2921 win 65535 (DF) [tos 0x10] 19:39:57.089630 205.252.116.242.80 > 205.149.163.43.1027: . 2921:4381(1460) ack 8 win 31744 [tos 0x10] 19:39:57.091183 205.252.116.242.80 > 205.149.163.43.1027: . 4381:5841(1460) ack 8 win 31744 [tos 0x10] 19:39:57.111032 205.149.163.43.1027 > 205.252.116.242.80: . ack 5841 win 65535 (DF) [tos 0x10] 19:39:57.240131 205.252.116.242.80 > 205.149.163.43.1027: P 7301:8193(892) ack 8 win 31744 (DF) [tos 0x10] 19:39:57.244486 205.252.116.242.80 > 205.149.163.43.1027: . 8193:9653(1460) ack 8 win 31744 [tos 0x10] 19:39:57.245430 205.149.163.43.1027 > 205.252.116.242.80: . ack 5841 win 65535 (DF) [tos 0x10] 19:39:57.250404 205.149.163.43.1027 > 205.252.116.242.80: . ack 5841 win 65535 (DF) [tos 0x10] 19:39:57.259879 205.252.116.242.80 > 205.149.163.43.1027: . 9653:11113(1460) ack 8 win 31744 [tos 0x10] 19:39:57.265192 205.149.163.43.1027 > 205.252.116.242.80: . ack 5841 win 65535 (DF) [tos 0x10] 19:39:57.384232 205.252.116.242.80 > 205.149.163.43.1027: . 5841:7301(1460) ack 8 win 31744 [tos 0x10] 19:39:57.385627 205.252.116.242.80 > 205.149.163.43.1027: . 11113:12573(1460) ack 8 win 31744 [tos 0x10] 19:39:57.389558 205.149.163.43.1027 > 205.252.116.242.80: . ack 11113 win 60428 (DF) [tos 0x10] 19:39:57.399365 205.149.163.43.1027 > 205.252.116.242.80: . ack 12573 win 62040 (DF) [tos 0x10] 19:39:57.412281 205.252.116.242.80 > 205.149.163.43.1027: . 12573:14033(1460) ack 8 win 31744 [tos 0x10] 19:39:57.414337 205.149.163.43.1027 > 205.252.116.242.80: . ack 12573 win 65112 (DF) [tos 0x10] 19:39:57.527026 205.252.116.242.80 > 205.149.163.43.1027: P 14033:14522(489) ack 8 win 31744 (DF) [tos 0x10] 19:39:57.573919 205.149.163.43.1027 > 205.252.116.242.80: . ack 14522 win 65535 (DF) [tos 0x10] 19:39:58.296191 205.252.116.242.80 > 205.149.163.43.1027: F 14522:14522(0) ack 8 win 31744 [tos 0x10] 19:39:58.300873 205.149.163.43.1027 > 205.252.116.242.80: . ack 14523 win 65535 (DF) [tos 0x10] 19:39:58.303496 205.149.163.43.1027 > 205.252.116.242.80: F 8:8(0) ack 14523 win 65535 (DF) [tos 0x10] 19:39:58.413627 205.252.116.242.80 > 205.149.163.43.1027: . ack 9 win 31744 (DF) [tos 0x10] Oct 6 19:39:57 flash /kernel.tst: rcv_(nxt,wnd,up) (1aae0bf6,100a4,1aadebf6) snd_(una,nxt,max) (c94368,c94368,c94368) Oct 6 19:39:57 flash /kernel.tst: snd_(wl1,wl2,wnd) (1aadfada,c94368,7c00) Oct 6 19:39:57 flash /kernel.tst: 0xf2021c00 ESTABLISHED:user RCVD -> ESTABLISHED Oct 6 19:39:57 flash /kernel.tst: rcv_(nxt,wnd,up) (1aae0ddf,100a4,1aadebf6) snd_(una,nxt,max) (c94368,c94368,c94368) Oct 6 19:39:57 flash /kernel.tst: snd_(wl1,wl2,wnd) (1aadfada,c94368,7c00) Oct 6 19:39:57 flash /kernel.tst: 0xf2021c00 ESTABLISHED:output c94368@1aae0ddf, urp=0 -> ESTABLISHED Oct 6 19:39:57 flash /kernel.tst: rcv_(nxt,wnd,up) (1aae0ddf,100a4,1aadebf6) snd_(una,nxt,max) (c94368,c94368,c94368) Oct 6 19:39:57 flash /kernel.tst: snd_(wl1,wl2,wnd) (1aadfada,c94368,7c00) Oct 6 19:39:58 flash /kernel.tst: 0xf2021c00 ESTABLISHED:input 1aae0ddf@c94368, urp=0 -> CLOSE_WAIT Oct 6 19:39:58 flash /kernel.tst: rcv_(nxt,wnd,up) (1aae0de0,100a4,1aae0ddf) snd_(una,nxt,max) (c94368,c94368,c94368) Oct 6 19:39:58 flash /kernel.tst: snd_(wl1,wl2,wnd) (1aae0ddf,c94368,7c00) Oct 6 19:39:58 flash /kernel.tst: 0xf2021c00 CLOSE_WAIT:output c94368@1aae0de0, urp=0 -> CLOSE_WAIT Oct 6 19:39:58 flash /kernel.tst: rcv_(nxt,wnd,up) (1aae0de0,100a4,1aae0ddf) snd_(una,nxt,max) (c94368,c94368,c94368) Oct 6 19:39:58 flash /kernel.tst: snd_(wl1,wl2,wnd) (1aae0ddf,c94368,7c00) Oct 6 19:39:58 flash /kernel.tst: 0xf2021c00 LAST_ACK:output c94368@1aae0de0, urp=0 -> LAST_ACK Oct 6 19:39:58 flash /kernel.tst: rcv_(nxt,wnd,up) (1aae0de0,100a4,1aae0ddf) snd_(una,nxt,max) (c94368,c94369,c94369) Oct 6 19:39:58 flash /kernel.tst: snd_(wl1,wl2,wnd) (1aae0ddf,c94368,7c00) Oct 6 19:39:58 flash /kernel.tst: 0xf2021c00 CLOSE_WAIT:user DISCONNECT -> LAST_ACK Oct 6 19:39:58 flash /kernel.tst: rcv_(nxt,wnd,up) (1aae0de0,100a4,1aae0ddf) snd_(una,nxt,max) (c94368,c94369,c94369) Oct 6 19:39:58 flash /kernel.tst: snd_(wl1,wl2,wnd) (1aae0ddf,c94368,7c00) Oct 6 19:39:58 flash /kernel.tst: 0xf2021c00 LAST_ACK:user DETACH -> LAST_ACK Oct 6 19:39:58 flash /kernel.tst: rcv_(nxt,wnd,up) (1aae0de0,100a4,1aae0ddf) snd_(una,nxt,max) (c94368,c94369,c94369) Oct 6 19:39:58 flash /kernel.tst: snd_(wl1,wl2,wnd) (1aae0ddf,c94368,7c00) Oct 6 19:39:58 flash /kernel.tst: ???????? drop 1aae0de0@c94369, urp=0 ------------------------------------------------------------------------------ Reproduction of bug with initial window size of 16384. However, note that the window size was original set to 65536. I then did 'route change' and sysctl's to set it back to 16384. This is WITHOUT the patch. I don't have a tcpdebug available for this. Question: Does that bug fix solve this situation too ? I believe it does. 19:15:59.200994 205.149.163.43.1031 > 205.252.116.184.80: S 63543536:63543536(0) win 16384 (DF) [tos 0x10] 19:15:59.333205 205.252.116.184.80 > 205.149.163.43.1031: S 311276215:311276215(0) ack 63543537 win 31744 19:15:59.333325 205.149.163.43.1031 > 205.252.116.184.80: . ack 311276216 win 164 (DF) [tos 0x10] 19:16:00.107882 205.149.163.43.1031 > 205.252.116.184.80: P 63543537:63543544(7) ack 311276216 win 164 (DF) [tos 0x10] 19:16:00.250022 205.252.116.184.80 > 205.149.163.43.1031: . ack 63543544 win 31744 (DF) [tos 0x10] 19:16:00.250338 205.252.116.184.80 > 205.149.163.43.1031: . 311276216:311276380(164) ack 63543544 win 31744 (DF) [tos 0x10] 19:16:00.370054 205.149.163.43.1031 > 205.252.116.184.80: . ack 311276380 win 0 (DF) [tos 0x10] 19:16:01.508746 205.252.116.184.80 > 205.149.163.43.1031: . ack 63543544 win 31744 [tos 0x10] 19:16:01.508837 205.149.163.43.1031 > 205.252.116.184.80: . ack 311276380 win 0 (DF) [tos 0x10] 19:16:03.707130 205.252.116.184.80 > 205.149.163.43.1031: . ack 63543544 win 31744 [tos 0x10] 19:16:03.707211 205.149.163.43.1031 > 205.252.116.184.80: . ack 311276380 win 0 (DF) [tos 0x10] 19:16:07.965513 205.252.116.184.80 > 205.149.163.43.1031: . ack 63543544 win 31744 [tos 0x10] 19:16:07.965597 205.149.163.43.1031 > 205.252.116.184.80: . ack 311276380 win 0 (DF) [tos 0x10] 19:16:09.718441 205.149.163.43.1031 > 205.252.116.184.80: P 63543544:63543549(5) ack 311276380 win 0 (DF) [tos 0x10] 19:16:09.831310 205.252.116.184.80 > 205.149.163.43.1031: R 311276380:311276380(0) win 0