skreyer wrote on Thursday, March 21, 2019:
Hi,
when xTaskResumeAll is called, I get a problem with the following code:
…
while( listLIST_IS_EMPTY( &xPendingReadyList ) == pdFALSE )
{
pxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingReadyList ) ); /*lint !e9079 void * is used as this macro is used with timers and co-routines too. Alignment is known to be fine as the type of the pointer stored and retrieved is the same. */
( void ) uxListRemove( &( pxTCB->xEventListItem ) );
( void ) uxListRemove( &( pxTCB->xStateListItem ) );
pxTCB = listGET_OWNER_OF_HEAD_ENTRY( ( &xPendingReadyList ) );
The problem is that xPendingReadyList->xListEnd->pxNext->pvOwner at this point in time has the value 1 => my application crashes.
Now my question is, is it normal that the pvOwner member of a tasklist item can have a value of 1?Because I noticed that somehow it contain an arbitrary type of object? And if yes what could lead to a condition that at the point of time the above code gets executed, there is a wrong listitem in the readypendinglist?
Any hints on this issue are very appreciated. If you need more info please let me know.
Thanks in advance,
Steve