From a426ae386d1e9ae814c9bb1e483bf9f80110957b Mon Sep 17 00:00:00 2001 From: ruv Date: Mon, 20 Apr 2026 10:48:21 -0400 Subject: [PATCH] Fix ADR-081 Timer Svc stack overflow on ESP32-S3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit emit_feature_state() runs inside the FreeRTOS Timer Svc task via the fast loop callback; it memsets an rv_feature_state_t, queries vitals/ radio, and sends via stream_sender (lwIP sendto). Default Timer Svc stack is 2 KiB, which overflows and panics ~1 s after boot: ***ERROR*** A stack overflow in task Tmr Svc has been detected. Bump CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH to 8 KiB across the three sdkconfig defaults files (default, template, 4mb). Matches the main task stack size already in use. Found during on-device validation on ESP32-S3 (MAC 3c:0f:02:e9:b5:f8) after flashing the post-merge v0.6.1 build — firmware boots, connects WiFi, emits one medium tick, then crashes on the fast tick that calls emit_feature_state(). Follow-up: consider moving emit_feature_state + network I/O out of the timer daemon into a dedicated worker task (open issue). Co-Authored-By: claude-flow --- firmware/esp32-csi-node/sdkconfig.defaults | 4 ++++ firmware/esp32-csi-node/sdkconfig.defaults.4mb | 4 ++++ firmware/esp32-csi-node/sdkconfig.defaults.template | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/firmware/esp32-csi-node/sdkconfig.defaults b/firmware/esp32-csi-node/sdkconfig.defaults index 49c4177a..a7732c19 100644 --- a/firmware/esp32-csi-node/sdkconfig.defaults +++ b/firmware/esp32-csi-node/sdkconfig.defaults @@ -31,3 +31,7 @@ CONFIG_LWIP_SO_RCVBUF=y # FreeRTOS: increase task stack for CSI processing CONFIG_ESP_MAIN_TASK_STACK_SIZE=8192 + +# ADR-081: adaptive_controller runs emit_feature_state + stream_sender +# network I/O inside Timer Svc callbacks, exceeding the 2 KiB default. +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=8192 diff --git a/firmware/esp32-csi-node/sdkconfig.defaults.4mb b/firmware/esp32-csi-node/sdkconfig.defaults.4mb index 3a0d1d60..0ef6d26a 100644 --- a/firmware/esp32-csi-node/sdkconfig.defaults.4mb +++ b/firmware/esp32-csi-node/sdkconfig.defaults.4mb @@ -27,3 +27,7 @@ CONFIG_LOG_DEFAULT_LEVEL_INFO=y CONFIG_LWIP_SO_RCVBUF=y CONFIG_ESP_MAIN_TASK_STACK_SIZE=8192 + +# ADR-081: adaptive_controller runs emit_feature_state + stream_sender +# network I/O inside Timer Svc callbacks, exceeding the 2 KiB default. +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=8192 diff --git a/firmware/esp32-csi-node/sdkconfig.defaults.template b/firmware/esp32-csi-node/sdkconfig.defaults.template index 49c4177a..a7732c19 100644 --- a/firmware/esp32-csi-node/sdkconfig.defaults.template +++ b/firmware/esp32-csi-node/sdkconfig.defaults.template @@ -31,3 +31,7 @@ CONFIG_LWIP_SO_RCVBUF=y # FreeRTOS: increase task stack for CSI processing CONFIG_ESP_MAIN_TASK_STACK_SIZE=8192 + +# ADR-081: adaptive_controller runs emit_feature_state + stream_sender +# network I/O inside Timer Svc callbacks, exceeding the 2 KiB default. +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=8192