bupthebroker wrote on Wednesday, March 09, 2016:
Hi,
i have a problem with my FreeRtos 8.2 in the uxListRemove function:
List_t * const pxList = ( List_t * ) pxItemToRemove->pvContainer;
the pxList is NULL which causes a crash.
I noticed that inside xQueueGenericReceive a task can add itself to a wait list TWO times. The pvContainer pointer is set to NULL upon the first removal of the same task. The second removel will then crash.
if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE )
{
…
vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );
…
}
What could cause this?
Edit, i noticed that xQueueReset was called. This does not seem to clear the pxQueue->xTasksWaitingToReceive, is that correct? After the xQueueReset pxQueue->xTasksWaitingToReceive.uxNumberOfItems is 1, and the same task will add itselt the second time, bringing the pxQueue->xTasksWaitingToReceive.uxNumberOfItems value to 2.
Regards