infinite sleep after rtems_task_wake_after()

Joel Sherrill <joel@OARcorp.com> joel.sherrill at OARcorp.com
Mon Mar 7 17:16:54 UTC 2005


Juergen Zeller wrote:
> I have a special problem with rtems 4.0.0 on a custom i386ex based 
> board. One task invokes rtems_task_wake_after (10) and after some time 
> this task stays in DELAYED state and doesn't get CPU Time anymore. I 
> found out that in the threads Watchdog_Control data the delta_interval 
> seems to be overflowed. My question  to the specialists:
> 
> In watchdog.c -> _Watchdog_Tickle() I read the following code:
> ...
> the_watchdog->delta_interval--;
> if ( the_watchdog->delta_interval != 0 )
>  return;
> ...
> 
> How can we guarantee that the_watchdog->delta_interval is NOT zero at 
> function entry? I think this is a good place for an overflow, but I 
> can't believe that this is a bug. Please help me understand. Does 
> anybody have another idea, where and how this overflow could happen?

4.0.0 is very old and there have been some bugs fixed in regards
to the code you are near.  You want to look at the possibility
of upgrading or at least looking at the 4.6.x source and seeing what
changed.

CVS is a wonderous thing -- browse 
http://www.rtems.com/cgi-bin/cvsweb.cgi and see what changed
to the file in question.  Be warned that a lot of the core
executive functionality is now in /cpukit but the version
history was preserved.


-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel at OARcorp.com                 On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
    Support Available             (256) 722-9985




More information about the users mailing list