Dear support,
our code is getting stuck in vListInsert loop.
The list is timers queue. It contains two items, uxNumberOfItems is 5 and the second item points to itself instead of the last item.
I know there are possible reasons described in the loop comment.
But I hope based on previous description, You could explain the reason/ reduce possible reasons.
Because it is very hard to achieve the issue.
Seems like an issue that would happen because of incorrectly configured interrupt priorities - but if you have define configASSERT, it should be caught. Can you try to narrow down the problematic part by stopping your application interrupts? You can also try to update to the latest version.
Hello aggarg,
I am afraid I cannot stop interrupts.
I have asked the question to narrow down the issue from “the lower level”, i.e. if described list status implies that the same item was added multiple times and how could this happen.
Hello and thank You for remarks.
Timer task has the highest priority (configTIMER_TASK_PRIORITY = 5).
We seem not to call Timer APIs from ISRs.
But when checking our code I have found a few violations of rule:
“timer callback function must not call vTaskDelay(), vTaskDelayUntil(), or specify a non zero block time when accessing a queue or a semaphore” (FreeRTOS timers documentation)
or
" Do not use a block time if calling a timer API function from a timer callback function, as doing so could cause a deadlock! " (Code comment in library)
Could it be the explanation of the issue?
Could You please describe how the deadlock is made?