FreeRTOS, uxNumberOfItems of pxReadyTasksLists[ uxTopPriority ] becomes "0" randomly

tarun-patel wrote on Thursday, December 18, 2014:

Hi,

First of all, as an embedded developer, I want thank FreeRTOS to make my life easier.


I am using FreeRTOS V8.1.2 on custom board using STM32L151 uC. My applications run smooth most of the time. however, sometimes within 1 minute after power ON or sometimes after few hours, freeRTOS calls configASSERT function and execution get stopped (as I have written configASSERT function to stop execution).

In configASSERT function, debugger shows error is in “tasks.c” file and line number which cause error is “2160”.

After some debugging, I found that uxNumberOfItems of pxReadyTasksLists[ uxTopPriority ] becomes “0” due to that configASSERT been called.

I am using configUSE_PORT_OPTIMISED_TASK_SELECTION. However, I have tried with disabling “port optimized task selection” with no luck.

I have provided more than sufficient stack to every tasks and set every interrupt priority to configLIBRARY_LOWEST_INTERRUPT_PRIORITY. Yes, I am using “FromISR” functions from ISR.

I have also called “NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);” in main after system initialization.

I have tried hard to solve this issue but till data not find any solution.

I am requesting you all to help me to get rid on this issue.

Thanks in Advance.
Tarun

rtel wrote on Thursday, December 18, 2014:

It sounds like you are doing all the right things. Do you also have stack overflow and malloc failed hook functions defined? (http://www.freertos.org/a00016.html).

Is it possible you are experiencing a simple data corruption somewhere, for example, writing off the end of a buffer, or using a pointer that has become corrupt?

We have had an idea for a while to add some [optional] ‘check values’ into the code that place known values at the start and end of structures to make it easier to see if a structure has simply been over written by something that should not have done.

Regards.

tarun-patel wrote on Thursday, December 18, 2014:

Thanks for quick response.

Yes, both stack overflow and malloc failed hook functions defined. I am not getting any call of both function. So that should not be a issue.

BTW, I like your idea about ‘check values’. I will implement it in my code.

However, if you find any other solution, please post it to me.

Thanks,
Tarun