From 543af63e1d2e2c2c487eb8dc6686401623692bbf Mon Sep 17 00:00:00 2001 From: Erhan Kurubas Date: Thu, 2 Jul 2026 22:52:36 +0200 Subject: [PATCH 1/3] fix(esp_coredump): fix unused-but-set-variable warnings --- components/espcoredump/src/core_dump_elf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/espcoredump/src/core_dump_elf.c b/components/espcoredump/src/core_dump_elf.c index 18e24f10946..f0667a52229 100644 --- a/components/espcoredump/src/core_dump_elf.c +++ b/components/espcoredump/src/core_dump_elf.c @@ -498,7 +498,7 @@ static int elf_process_task_data(core_dump_elf_t *self) core_dump_mem_seg_header_t interrupted_stack = { 0 }; TaskIterator_t task_iter; uint16_t tasks_num = 0; - uint16_t bad_tasks_num = 0; + uint16_t __attribute__((unused)) bad_tasks_num = 0; ESP_COREDUMP_LOG_PROCESS("================ Processing task data ================"); @@ -797,7 +797,7 @@ esp_err_t esp_core_dump_write_elf(void) core_dump_elf_t self = { 0 }; core_dump_header_t dump_hdr = { 0 }; int tot_len = sizeof(dump_hdr); - int write_len = sizeof(dump_hdr); + int __attribute__((unused)) write_len = sizeof(dump_hdr); esp_err_t err = esp_core_dump_write_init(); if (err != ESP_OK) { From 6ee2fd716c24a3173d21a3c0d9e0f68e9faa0b24 Mon Sep 17 00:00:00 2001 From: Erhan Kurubas Date: Thu, 25 Jun 2026 01:27:24 +0200 Subject: [PATCH 2/3] test(espcoredump): run test_tcb_corrupted with custom stack --- .../test_apps/system/panic/coredump/pytest_panic_coredump.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/test_apps/system/panic/coredump/pytest_panic_coredump.py b/tools/test_apps/system/panic/coredump/pytest_panic_coredump.py index 615f7280fb9..5fa49d7e514 100644 --- a/tools/test_apps/system/panic/coredump/pytest_panic_coredump.py +++ b/tools/test_apps/system/panic/coredump/pytest_panic_coredump.py @@ -61,7 +61,10 @@ CONFIG_COREDUMP_SUMMARY_FLASH_ENCRYPTED = panic_tests.configs_for_app( COREDUMP_APP, ['coredump_flash_encrypted', 'coredump_flash_encrypted_coredump_plain'] ) CONFIG_GDBSTUB_COREDUMP = panic_tests.configs_for_app(COREDUMP_APP, ['gdbstub_coredump']) -CONFIG_TCB_CORRUPTED = panic_tests.configs_for_app(COREDUMP_APP, ['coredump_flash_default']) +# Uses the dedicated coredump stack (CONFIG_ESP_COREDUMP_STACK_SIZE) on purpose: this test +# faults in idle-task context, whose small stack overflows the FreeRTOS end-of-stack watchpoint +# if the coredump runs in place, causing a double panic. Do not switch back to coredump_flash_default. +CONFIG_TCB_CORRUPTED = panic_tests.configs_for_app(COREDUMP_APP, ['coredump_flash_custom_stack']) @pytest.mark.generic From b8fbf278c7b1fdf916e6985607803df22849762f Mon Sep 17 00:00:00 2001 From: Erhan Kurubas Date: Thu, 2 Jul 2026 23:48:37 +0200 Subject: [PATCH 3/3] fix(esp_coredump): count only written tasks against MAX_TASKS_NUM limit --- components/espcoredump/src/core_dump_elf.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/components/espcoredump/src/core_dump_elf.c b/components/espcoredump/src/core_dump_elf.c index f0667a52229..b6548c9dc68 100644 --- a/components/espcoredump/src/core_dump_elf.c +++ b/components/espcoredump/src/core_dump_elf.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2015-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -497,7 +497,7 @@ static int elf_process_task_data(core_dump_elf_t *self) core_dump_task_header_t task_hdr = { 0 }; core_dump_mem_seg_header_t interrupted_stack = { 0 }; TaskIterator_t task_iter; - uint16_t tasks_num = 0; + uint16_t written_task_num = 0; uint16_t __attribute__((unused)) bad_tasks_num = 0; ESP_COREDUMP_LOG_PROCESS("================ Processing task data ================"); @@ -516,7 +516,7 @@ static int elf_process_task_data(core_dump_elf_t *self) if (ret > 0) { elf_len += ret; } - tasks_num++; + written_task_num++; } esp_core_dump_task_iterator_init(&task_iter); @@ -525,12 +525,11 @@ static int elf_process_task_data(core_dump_elf_t *self) if (!task_iter.pxTaskHandle || task_iter.pxTaskHandle == current_task) { continue; } - if (tasks_num > CONFIG_ESP_COREDUMP_MAX_TASKS_NUM) { + if (written_task_num > CONFIG_ESP_COREDUMP_MAX_TASKS_NUM) { ESP_COREDUMP_LOG_PROCESS("Reached maximum number of tasks (%d), stopping task data processing", CONFIG_ESP_COREDUMP_MAX_TASKS_NUM); break; } - tasks_num++; if (!esp_core_dump_get_task_snapshot(task_iter.pxTaskHandle, &task_hdr, NULL)) { bad_tasks_num++; continue; @@ -539,8 +538,9 @@ static int elf_process_task_data(core_dump_elf_t *self) ELF_CHECK_ERR((ret > 0), ret, "Task %x, TCB write failed, return (%d).", task_iter.pxTaskHandle, ret); elf_len += ret; + written_task_num++; } - ESP_COREDUMP_LOG_PROCESS("Found %d bad task out of %d", bad_tasks_num, tasks_num); + ESP_COREDUMP_LOG_PROCESS("Found %d bad task out of %d", bad_tasks_num, bad_tasks_num + written_task_num); return elf_len; }