[En-Nut-Discussion] Thread stops executing after some time.

Don Ingram don at led.com.au
Sun Apr 6 11:24:29 CEST 2008


Bravo!

I have had a similar problem with a serial port task which waits on a 
char in using the timeout value.  I count the no. of times per minute in 
which the task runs, normally a low value such as 100..120. The reports 
are sent out very few minutes via syslog over the ethernet port.

After a few hours ( about 4 ) the serial port stops responding and the 
task rate goes to 10000 or more. Rest of the system is OK just a dead 
serial port.

The fault is consistent across the 16 units in service but still could 
be my dodgy code ;-)

Any possibility that the serial port timeout routines may suffer from 
the same problem?

Cheers

Don



Harald Kipp wrote:
> Henrik Maier wrote:
>   
>> Erik, I suggest to change in the Nut/OS file net\tcpout.c (around line 336) the statement:
>>             sock->so_retran_time = (u_short) NutGetMillis();
>> to
>>             sock->so_retran_time = (u_short) NutGetMillis();
>>             if (sock->so_retran_time == 0) 
>>                sock->so_retran_time = 1; // so_retran_time must not be 0 which is a magic value!
>>     
>
> Excellent, Henrik.
>
> Here is what I did:
>
> Added some extra code in ethin.c, which discards every 7th packet.
>
> Added some extra code in ipout.c, which creates a bad checksum for each 
> 13th packet.
>
> Masked out the lower 17 bits of the NutGetMillis result at two locations 
> in tcpsm.c (near lines 500 and 940) and one location in tcpout.c (near 
> line 340). This way so_retran_time becomes zero more likely.
>
> Created a Nut/OS and Windows application to test transfers in both 
> direction. The Nut/OS application continuously prints the current result 
> of NutGetMillis.
>
> Here are the results:
>
> Without further modification the transfer stopped after some minutes.
>
> Then I changed all three locations to
> sock->so_retran_time = (u_short) NutGetMillis() | 1;
>
> After 12 hours the connections are still running. I'll update 4.4 as 
> well as CVS HEAD.
>
> Harald
> _______________________________________________
> http://lists.egnite.de/mailman/listinfo/en-nut-discussion
>
>   




More information about the En-Nut-Discussion mailing list