ESP32 Bench
Boards: ESP32, S3, C3
Flash and monitor: Web Serial
← All errors

Task watchdog got triggered. The following tasks did not reset the watchdog in time

CrashesRecognised by the crash translator

What it looks like

E (10321) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
E (10321) task_wdt:  - IDLE0 (CPU 0)
E (10321) task_wdt: Tasks currently running:
E (10321) task_wdt: CPU 0: loopTask

What it means

A task ran for several seconds without giving the CPU back. The task named after the dash is the one that got starved: IDLE0 or IDLE1 means something on that core never yielded, so the idle task could not run.

Likely causes

  • A wait loop with no delay, such as while (!client.available()) {}.
  • A long computation or a big for loop in loop() with no delay().
  • A task pinned to core 0 that never blocks, starving Wi-Fi and the idle task.

How to fix it

  1. Put delay(1) or yield() inside every loop that waits for something.
  2. Add a timeout to wait loops so they give up instead of spinning forever.
  3. In your own tasks, block with vTaskDelay(), a queue or a semaphore instead of polling.

Paste your full log

The lines around the error usually say more. Paste everything from the reset to the backtrace and the crash translator explains each part. It runs in your browser; nothing is sent anywhere.

    From the hall of flames