[En-Nut-Discussion] TCP stops working after some time

Harald Kipp harald.kipp at egnite.de
Mon Jan 3 10:00:03 CET 2005


Finally I succeeded in reproducing the TCP stack halts
by running four TCP server threads concurrently exchanging
data with four clients running on a Win PC.

Simpy protecting the calls to NutEventPostAsync() doesn't
help, btw. During the implementation of round trip time
calculation Oliver changed these original NutEventPost()
calls for good reasons. If application threads are running
at higher priority than the state machine, they may take
over. But in most situations the socket's status hasn't
been fully updated at that point. So I moved the event
posting (using NutEventPost() again) to the end of the
state processing.

In the buggy version the test application failed within
one or two hours. After applying the fixes mentioned
above it has been running now for several hours without
any problem. I just committed the changes to CVS HEAD.
Before releasing 3.9.3 we will run a few more tests.

Harald

At 09:14 22.12.2004 +0100, I wrote:

>We still haven't been successful with reproducing the
>TCP halt. Using four server threads plus read time out
>doesn't help. However, the test concentrates on connect
>and disconnect. Thus, we will now use larger data
>transfers, exchanging about 20k bytes in both directions
>during each session. This will trigger more NutEventPostAsync()
>calls. Most of them are located in data and ACK handling.




More information about the En-Nut-Discussion mailing list