Skip to content

SPIFFS Mounting Causing Error #10547

@alogusAdam

Description

@alogusAdam

Board

ESP32 Dev Module

Device Description

DevKitC (4MB)

Hardware Configuration

No Connections

Version

latest master (checkout manually)

IDE Name

Arduino IDE

Operating System

Windows 11

Flash frequency

80MHz

PSRAM enabled

no

Upload speed

921600

Description

Copied from my old issue #10499 that I marked as closed: Whenever I attempt to mount SPIFFS with SPIFFS.begin(true);, the following message prints over and over again in the serial monitor:

E (1030) task_wdt: esp_task_wdt_reset(763): task not found
E (1030) task_wdt: esp_task_wdt_reset(763): task not found
E (1062) task_wdt: esp_task_wdt_reset(763): task not found
E (1063) task_wdt: esp_task_wdt_reset(763): task not found
E (1064) task_wdt: esp_task_wdt_reset(763): task not found
E (1066) task_wdt: esp_task_wdt_reset(763): task not found
E (1102) task_wdt: esp_task_wdt_reset(763): task not found
E (1103) task_wdt: esp_task_wdt_reset(763): task not found
E (1103) task_wdt: esp_task_wdt_reset(763): task not found
E (1134) task_wdt: esp_task_wdt_reset(763): task not found
E (1135) task_wdt: esp_task_wdt_reset(763): task not found
E (1136) task_wdt: esp_task_wdt_reset(763): task not found
E (1138) task_wdt: esp_task_wdt_reset(763): task not found
E (1175) task_wdt: esp_task_wdt_reset(763): task not found

and the SPIFFS mount fails. I am running into this issue with all sorts of firmware that uses SPIFFS and used to work without any problems. To simplify things, I am running the SPIFFS_Test.ino example and running into the same issue. I have tried this on multiple boards, updated Arduino IDE to the latest version, and updated the ESP32 board package to the latest version, none of which resolve the issue. When SPIFFS.begin(false); is run, the error does not print, but SPIFFS mount fails.

Why I'm reopening this issue:
I closed the last issue with "Not exactly sure what the issue was here, but it ran fine when compiled and uploaded from another computer. I deleted the folder at "C:/Users//AppData/Roaming/arduino-ide", and this seems to have resolved the issue."

Since then, I have run into the issue again--seemingly out of nowhere. I tried uploading from another computer again--no issue. So, I thought something was wrong with my Arduino IDE. I uninstalled, deleted the ".arduinoIDE" folder under C:/Users/Owner along with local and roaming Arduino IDE data in C:/Users/Owner/AppData, restarted my computer, and reinstalled a fresh copy of Arduino IDE. Uploading to the same board that was previously experiencing issues (but most recently uploaded from another computer where it ran fine), I encountered no issue. I now am realizing this is likely because SPIFFS was already mounted from the code uploaded from another computer. After erasing flash and reuploading, I ran into the same issue.

So, I tried uninstalling Arduino IDE, reinstalling, etc., and nothing worked. I went to the computer that was able to upload successfully, and after uploading from that computer, I am still getting this task_wdt error! Nothing changed. Was this board "infected" somehow? I tried with a board that had never been used before--same issue. I tried an ESP32-S3--same issue.

I downgraded to board package release 2.0.17, and SPIFFS seems to mount no problem. I've looked through the migration guide and can't find anything that I should have changed. And I'd at least expect the example code to work fine here. Happy to include any other information I can.

Sketch

#include "FS.h"
#include "SPIFFS.h"

/* You only need to format SPIFFS the first time you run a
   test or else use the SPIFFS plugin to create a partition
   https://github.com/me-no-dev/arduino-esp32fs-plugin */
#define FORMAT_SPIFFS_IF_FAILED true

void listDir(fs::FS &fs, const char *dirname, uint8_t levels) {
  Serial.printf("Listing directory: %s\r\n", dirname);

  File root = fs.open(dirname);
  if (!root) {
    Serial.println("- failed to open directory");
    return;
  }
  if (!root.isDirectory()) {
    Serial.println(" - not a directory");
    return;
  }

  File file = root.openNextFile();
  while (file) {
    if (file.isDirectory()) {
      Serial.print("  DIR : ");
      Serial.println(file.name());
      if (levels) {
        listDir(fs, file.path(), levels - 1);
      }
    } else {
      Serial.print("  FILE: ");
      Serial.print(file.name());
      Serial.print("\tSIZE: ");
      Serial.println(file.size());
    }
    file = root.openNextFile();
  }
}

void readFile(fs::FS &fs, const char *path) {
  Serial.printf("Reading file: %s\r\n", path);

  File file = fs.open(path);
  if (!file || file.isDirectory()) {
    Serial.println("- failed to open file for reading");
    return;
  }

  Serial.println("- read from file:");
  while (file.available()) {
    Serial.write(file.read());
  }
  file.close();
}

void writeFile(fs::FS &fs, const char *path, const char *message) {
  Serial.printf("Writing file: %s\r\n", path);

  File file = fs.open(path, FILE_WRITE);
  if (!file) {
    Serial.println("- failed to open file for writing");
    return;
  }
  if (file.print(message)) {
    Serial.println("- file written");
  } else {
    Serial.println("- write failed");
  }
  file.close();
}

void appendFile(fs::FS &fs, const char *path, const char *message) {
  Serial.printf("Appending to file: %s\r\n", path);

  File file = fs.open(path, FILE_APPEND);
  if (!file) {
    Serial.println("- failed to open file for appending");
    return;
  }
  if (file.print(message)) {
    Serial.println("- message appended");
  } else {
    Serial.println("- append failed");
  }
  file.close();
}

void renameFile(fs::FS &fs, const char *path1, const char *path2) {
  Serial.printf("Renaming file %s to %s\r\n", path1, path2);
  if (fs.rename(path1, path2)) {
    Serial.println("- file renamed");
  } else {
    Serial.println("- rename failed");
  }
}

void deleteFile(fs::FS &fs, const char *path) {
  Serial.printf("Deleting file: %s\r\n", path);
  if (fs.remove(path)) {
    Serial.println("- file deleted");
  } else {
    Serial.println("- delete failed");
  }
}

void testFileIO(fs::FS &fs, const char *path) {
  Serial.printf("Testing file I/O with %s\r\n", path);

  static uint8_t buf[512];
  size_t len = 0;
  File file = fs.open(path, FILE_WRITE);
  if (!file) {
    Serial.println("- failed to open file for writing");
    return;
  }

  size_t i;
  Serial.print("- writing");
  uint32_t start = millis();
  for (i = 0; i < 2048; i++) {
    if ((i & 0x001F) == 0x001F) {
      Serial.print(".");
    }
    file.write(buf, 512);
  }
  Serial.println("");
  uint32_t end = millis() - start;
  Serial.printf(" - %u bytes written in %lu ms\r\n", 2048 * 512, end);
  file.close();

  file = fs.open(path);
  start = millis();
  end = start;
  i = 0;
  if (file && !file.isDirectory()) {
    len = file.size();
    size_t flen = len;
    start = millis();
    Serial.print("- reading");
    while (len) {
      size_t toRead = len;
      if (toRead > 512) {
        toRead = 512;
      }
      file.read(buf, toRead);
      if ((i++ & 0x001F) == 0x001F) {
        Serial.print(".");
      }
      len -= toRead;
    }
    Serial.println("");
    end = millis() - start;
    Serial.printf("- %u bytes read in %lu ms\r\n", flen, end);
    file.close();
  } else {
    Serial.println("- failed to open file for reading");
  }
}

void setup() {
  Serial.begin(115200);
  if (!SPIFFS.begin(FORMAT_SPIFFS_IF_FAILED)) {
    Serial.println("SPIFFS Mount Failed");
    return;
  }

  listDir(SPIFFS, "/", 0);
  writeFile(SPIFFS, "/hello.txt", "Hello ");
  appendFile(SPIFFS, "/hello.txt", "World!\r\n");
  readFile(SPIFFS, "/hello.txt");
  renameFile(SPIFFS, "/hello.txt", "/foo.txt");
  readFile(SPIFFS, "/foo.txt");
  deleteFile(SPIFFS, "/foo.txt");
  testFileIO(SPIFFS, "/test.txt");
  deleteFile(SPIFFS, "/test.txt");
  Serial.println("Test complete");
}

void loop() {}

Debug Message

E (1184) task_wdt: esp_task_wdt_reset(763): task not found
E (1185) task_wdt: esp_task_wdt_reset(763): task not found
E (1186) task_wdt: esp_task_wdt_reset(763): task not found
E (1188) task_wdt: esp_task_wdt_reset(763): task not found
E (1224) task_wdt: esp_task_wdt_reset(763): task not found
E (1225) task_wdt: esp_task_wdt_reset(763): task not found
E (1225) task_wdt: esp_task_wdt_reset(763): task not found
E (1257) task_wdt: esp_task_wdt_reset(763): task not found
E (1258) task_wdt: esp_task_wdt_reset(763): task not found
E (1259) task_wdt: esp_task_wdt_reset(763): task not found
E (1261) task_wdt: esp_task_wdt_reset(763): task not found
E (1296) task_wdt: esp_task_wdt_reset(763): task not found
E (1297) task_wdt: esp_task_wdt_reset(763): task not found
E (1297) task_wdt: esp_task_wdt_reset(763): task not found
E (1329) task_wdt: esp_task_wdt_reset(763): task not found

Other Steps to Reproduce

The following settings were used in Arduino IDE:
Board: "ESP32 Dev Module"
CPU Frequency: "240MHz (WiFi/BT)"
Core Debug Level: "None" Tried setting this to verbose with no additional info gained
Erase All Flash Before Sketch Upload: "Disabled" Tried setting to true and got the same results
Events Run On: "Core 1"
Flash Frequency: "80MHz"
Flash Mode: "QIO"
Flash Size: "4MB (32Mb)"
JTAG Adapter: "Disabled"
Arduino Runs On: "Core 1"
Partition Scheme: "Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)"
PSRAM: "Disabled"
Upload Speed: "921600"
Zigbee Mode: "Disabled"

I have checked existing issues, online documentation and the Troubleshooting Guide

  • I confirm I have checked existing issues, online documentation and Troubleshooting guide.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions