fix(esp_system): wait for idle after light sleep stress tasks

Self-deleted worker tasks are only freed once idle runs. A 500us
periodic esp_timer can starve that cleanup and trip Unity's leak check.
This commit is contained in:
Marius Vikhammer
2026-09-01 10:30:42 +08:00
parent 210ac40082
commit 283d7b5ebd
@@ -97,6 +97,8 @@ TEST_CASE("light sleep stress test", "[lightsleep]")
#if CONFIG_FREERTOS_NUMBER_OF_CORES == 2
xSemaphoreTake(done, portMAX_DELAY);
#endif
/* vTaskDelete() only queues TCB/stack for idle; wait for two idle passes. */
vTaskDelay(2);
vSemaphoreDelete(done);
}
@@ -123,9 +125,12 @@ TEST_CASE("light sleep stress test with periodic esp_timer", "[lightsleep]")
#if CONFIG_FREERTOS_NUMBER_OF_CORES == 2
xSemaphoreTake(done, portMAX_DELAY);
#endif
vSemaphoreDelete(done);
/* Stop the periodic timer first, otherwise it starves idle and the
* self-deleted worker looks like a leak to Unity. */
esp_timer_stop(timer);
esp_timer_delete(timer);
vTaskDelay(2);
vSemaphoreDelete(done);
}
#endif // !(CONFIG_SPIRAM) || (CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL >= 16384)