booherbg wrote on Thursday, April 13, 2017:
Hi all. I have an intermittant bug that I’m trying to track down. Essentially an assertion failure in line 413 of port.c – basically the first line of vPortExitCritical():
void vPortExitCritical( void )
{
configASSERT( uxCriticalNesting );
uxCriticalNesting--;
if( uxCriticalNesting == 0 )
{
portENABLE_INTERRUPTS();
}
}
I am trying to get my debugger to get trapped here so I can see a call trace. Even with a trace I fear that the actual reason for the error would be a previous call to vPortExitCritical(), as the assertion is simply that uxCriticalNesting is actually 0.
I would love any tips on where to look for how to track this down. I suspect there may be an issue with priorities, or some rogue conditional branch that may be causing this. It feels like someone is calling vPortExitCritical() from outside a critical region (thus reducing uxCriticalNesting to 0 prematurely). Does that sound like a correct guess?
I’m running FreeRTOS 8.2.3 on an Arm Cortex M7, and a Segger J-LINK debugger.
Blaine