Fri 05 Mar 2010 03:42:41 PM UTC, original submission:
Hello,
I've met two strange bugs inside the tcp while sending a large file (cca 4MB) from pc (192.168.3.53) to the device with lwip (192.168.23.2).
-----
(1) In periodic intervals tcp sends burst of duplicate acks. See attached document (packets 124, 693,1283, 1897, 2505, 3168, 3787).
-----
(2) After upgrading to 1.3.2, lwip stack crashes on following assert during sending this file:
tcp_in.c:
1278: pcb->rcv_nxt += TCP_TCPLEN(cseg);
1279: LWIP_ASSERT("tcp_receive: ooseq tcplen > rcv_wnd\n",
1280: pcb->rcv_wnd >= TCP_TCPLEN(cseg));
1281: pcb->rcv_wnd -= TCP_TCPLEN(cseg);
It happens very often when I switch ethernet to 10Mbps and is very rare when ethernet is 100Mbps.
When I switch off out of order queue (by setting TCP_QUEUE_OOSEQ to 0) everything is ok.
Maybe there's some ralation between this two bugs.
I have tested it with 1.3.2 and also with head, the result is the same. I can provide complete wireshark trace. Text version of the trace and lwip configuration file is attached.
Please help. Now I am going to dig inside the code TCP_QUEUE_OOSEQ.
|