freertos: Fix crash when waking task on CPU1 with scheduler disabled
xPendingReadyList[1] was never initialised correctly, so if a task is added to this list (ie by xSemaphoreGiveFromISR() or similar) while scheduler is disabled, then it causes a null pointer dereference. Bug produces stack traces similar to: 0x40086e87: vListInsertEnd at /home/gus/esp/32/idf/components/freertos/./list.c:130 0x40084ba3: xTaskRemoveFromEventList at /home/gus/esp/32/idf/components/freertos/./tasks.c:3439 0x40083c54: xQueueGiveFromISR at /home/gus/esp/32/idf/components/freertos/./queue.c:2034 0x400f50a0: timer_group0_isr at /home/gus/esp/32/idf/components/freertos/test/./test_suspend_scheduler.c:27 0x40081d7d: _xt_lowint1 at xtensa_vectors.o:?
This commit is contained in:
parent
f40ae10a5d
commit
b9fc5ecf68
1 changed files with 4 additions and 1 deletions
|
@ -3508,7 +3508,10 @@ UBaseType_t uxPriority;
|
||||||
|
|
||||||
vListInitialise( &xDelayedTaskList1 );
|
vListInitialise( &xDelayedTaskList1 );
|
||||||
vListInitialise( &xDelayedTaskList2 );
|
vListInitialise( &xDelayedTaskList2 );
|
||||||
vListInitialise( &xPendingReadyList[ xPortGetCoreID() ] );
|
vListInitialise( &xPendingReadyList[ 0 ] );
|
||||||
|
if (portNUM_PROCESSORS == 2) {
|
||||||
|
vListInitialise( &xPendingReadyList[ 1 ] );
|
||||||
|
}
|
||||||
|
|
||||||
#if ( INCLUDE_vTaskDelete == 1 )
|
#if ( INCLUDE_vTaskDelete == 1 )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue