You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've tested this both in my own code as well as the OTA example. The crash seems to occur when calling esp_partition_erase_range inside of esp_ota_begin.
(gdb) info line *0x400d1dae
Line 55 of "/Users/dcook/Development/esp-idf/components/esp32/./task_wdt.c" starts at address 0x400d1dac <task_wdt_isr>
and ends at 0x400d1daf <task_wdt_isr+3>.
Adding the IRAM_ATTR flag to task_wdt_isr fixes the issue for me, and the docs state:
If the interrupt handler is not placed into IRAM, there is a possibility that interrupt will happen at the time when caches are disabled, which will cause an illegal instruction exception.
So this appears to be a bug.
The text was updated successfully, but these errors were encountered:
We have a fix for this in the pipeline. Actually the bug here is not due to the lack of IRAM_ATTR on the ISR handler. Because esp_intr_alloc is called without IRAM flag, task WDT interrupt should be disabled automatically whenever flash cache is disabled. However there was a bug in the function which disabled interrupts... Adding IRAM_ATTR is a reasonable workaround, but the actual fix is (surprise!) just one character.
I've tested this both in my own code as well as the OTA example. The crash seems to occur when calling
esp_partition_erase_range
inside ofesp_ota_begin
.GDB reports:
Adding the IRAM_ATTR flag to
task_wdt_isr
fixes the issue for me, and the docs state:So this appears to be a bug.
The text was updated successfully, but these errors were encountered: