bblanchon/ArduinoJson

File deserialization crash

Closed this issue · 1 comments

Describe the bug
I have a method which deserializes a file from LittleFS into a passed JsonDocument. When this happens ( rarely ) I got a crash indicating ArduinoJson functions.

Environment

  • Microcontroller: ESP-32_Wrover-E
  • Core/runtime: Arduino V3 and IDF 5.3.0
  • IDE: PlatformIO

Sketch

int FileSystem::read(const char* path, JsonDocument& doc) {
    if (xSemaphoreTake(fileMutex, FILE_SEM_WAIT) == pdTRUE) {
        File file = userFS.open(path);
        if (!file) {
            xSemaphoreGive(fileMutex);
            return -1;
        }
        DeserializationError error = deserializeJson(doc, file);
        file.close();
        if (error) {
            xSemaphoreGive(fileMutex);
            return -1;
        }
        xSemaphoreGive(fileMutex);
        return measureJson(doc);
    }
    return -1;
}

boolean Graphs::get(const char* type, std::string id, JsonArray& graphData) {
    if( id.empty() ){ return false; }
    JsonDocument graphs;

    int size = db.read(GRAPHS_PATH,graphs);
    if( size <= 0 ){ return false; }
    
    JsonArray graphsArray = graphs[type].as<JsonArray>();
    for(JsonObject graph : graphsArray ){
        if( graph["id"].as<std::string>() == id ){
            JsonArray savedData = graph["data"].as<JsonArray>();
            return graphData.set(savedData);
        }
    }
    return false;
}

CoreDump

===============================================================
==================== ESP32 CORE DUMP START ====================

Crashed task handle: 0x3ffdfc74, name: 'ComponentsTask', GDB name: 'process 1073609844'

================== CURRENT THREAD REGISTERS ===================
exccause       0x1c (LoadProhibitedCause)
excvaddr       0x5c
epc1           0x401d1f68
epc2           0x0
epc3           0x0
epc4           0x4008a277
epc5           0x0
epc6           0x0
eps2           0x0
eps3           0x0
eps4           0x50021
eps5           0x0
eps6           0x0
pc             0x401a1313          0x401a1313 <vfs_littlefs_fstat+67>
lbeg           0x4000c46c          1073792108
lend           0x4000c477          1073792119
lcount         0x0                 0
sar            0x1b                27
ps             0x60c20             396320
threadptr      <unavailable>
br             <unavailable>
scompare1      <unavailable>
acclo          <unavailable>
acchi          <unavailable>
m0             <unavailable>
m1             <unavailable>
m2             <unavailable>
m3             <unavailable>
expstate       <unavailable>
f64r_lo        <unavailable>
f64r_hi        <unavailable>
f64s           <unavailable>
fcr            <unavailable>
fsr            <unavailable>
a0             0x801eede0          -2145456672
a1             0x3ffc4950          1073498448
a2             0x3ffbd738          1073469240
a3             0x0                 0
a4             0x3ffc4ac0          1073498816
a5             0x4                 4
a6             0xff0000            16711680
a7             0x3                 3
a8             0x3ffbd924          1073469732
a9             0x3ffc4930          1073498416
a10            0x3ffbd81c          1073469468
a11            0x0                 0
a12            0x3c                60
a13            0x3ffc4afc          1073498876
a14            0x60220             393760
a15            0x3                 3

==================== CURRENT THREAD STACK =====================
#0  0x401a1313 in vfs_littlefs_fstat (ctx=0x3ffbd738, fd=<optimized out>, st=0x3ffc4ac0) at .pio/libdeps/esp-wrover-kit/esp_littlefs/src/esp_littlefs.c:1813
#1  0x401eede0 in esp_vfs_fstat (r=<optimized out>, fd=0, st=0x3ffc4ac0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\vfs\vfs.c:521
#2  0x4000bce0 in ?? ()
#3  0x40059143 in ?? ()
#4  0x400594ad in ?? ()
#5  0x40259941 in _fread_r (ptr=0x3ffdfce0, buf=<optimized out>, size=1, count=1, fp=0x3f830998) at /builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/fread.c:228
#6  0x402599d4 in fread (buf=0x3ffc4c00, size=1, count=1, fp=0x3f830998) at /builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/fread.c:266
#7  0x401c0d5a in VFSFileImpl::read (this=0x3ffdfb94, buf=0x3ffc4c00 "M\025\034\200@L\374?\234L\374?\244L\374?", size=1) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/vfs_api.cpp:408
#8  0x401a7ebe in fs::File::read (this=<optimized out>, buf=0x3ffc4c00 "M\025\034\200@L\374?\234L\374?\244L\374?", size=1) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FS.cpp:82
#9  0x401a7ed0 in fs::File::readBytes (this=0x3ffc4d10, buffer=0x3ffc4c00 "M\025\034\200@L\374?\234L\374?\244L\374?", length=1) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FS.h:63
#10 0x40262b59 in ArduinoJson::V704PB22::detail::Reader<fs::File, void>::read (this=0x3ffc4c90) at lib/ArduinoJson-7.x/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp:16
#11 ArduinoJson::V704PB22::detail::Latch<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::load (this=0x3ffc4c90) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/Latch.hpp:38
#12 ArduinoJson::V704PB22::detail::Latch<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::current (this=0x3ffc4c90) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/Latch.hpp:30
#13 ArduinoJson::V704PB22::detail::JsonDeserializer<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::current (this=0x3ffc4c80) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:47
#14 0x401352b9 in ArduinoJson::V704PB22::detail::JsonDeserializer<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::skipSpacesAndComments (this=0x3ffc4c80) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:581
#15 0x401355a9 in ArduinoJson::V704PB22::detail::JsonDeserializer<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::skipSpacesAndComments (this=0x3ffc4c80) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:579
#16 ArduinoJson::V704PB22::detail::JsonDeserializer<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::parseVariant<ArduinoJson::V704PB22::detail::AllowAllFilter> (this=0x3ffc4c80, variant=..., filter=..., nestingLimit=...) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:67
#17 0x4013580b in ArduinoJson::V704PB22::detail::JsonDeserializer<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::parse<ArduinoJson::V704PB22::detail::AllowAllFilter> (nestingLimit=..., variant=..., this=0x3ffc4c80, filter=...) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:31
#18 ArduinoJson::V704PB22::detail::doDeserialize<ArduinoJson::V704PB22::detail::JsonDeserializer, ArduinoJson::V704PB22::JsonDocument&, ArduinoJson::V704PB22::detail::Reader<fs::File, void>, ArduinoJson::V704PB22::detail::DeserializationOptions<ArduinoJson::V704PB22::detail::AllowAllFilter> > (dst=..., reader=..., options=...) at lib/ArduinoJson-7.x/src/ArduinoJson/Deserialization/deserialize.hpp:56
#19 0x40135a28 in ArduinoJson::V704PB22::detail::deserialize<ArduinoJson::V704PB22::detail::JsonDeserializer, ArduinoJson::V704PB22::JsonDocument&, fs::File&, , void>(ArduinoJson::V704PB22::JsonDocument&, fs::File&) (input=..., dst=...) at lib/ArduinoJson-7.x/src/ArduinoJson/Deserialization/deserialize.hpp:68
#20 ArduinoJson::V704PB22::deserializeJson<ArduinoJson::V704PB22::JsonDocument&, fs::File&> (dst=...) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:678
#21 FileSystem::read (this=0x3ffb5150 <db>, path=0x3f401abc "/graphs.json", doc=...) at src/FileSystem/FileSystemReads.cpp:158
#22 0x400e55a9 in Graphs::get (this=<optimized out>, type=0x3f404ec8 "shader", id=..., graphData=...) at src/Components/Graph/Graph.cpp:9
#23 0x40107691 in Shader::handleGraph (this=0x3f86334c, detail=...) at src/Components/Shader/GraphHandler.cpp:22
#24 0x4010780c in Shader::checkGraph (this=0x3f86334c) at src/Components/Shader/GraphHandler.cpp:13
#25 0x40109ff3 in Shader::checkOnMinChange (this=0x3f86334c) at src/Components/Shader/Shader.cpp:25
#26 Shader::checkOnMinChange (this=0x3f86334c) at src/Components/Shader/Shader.cpp:21
#27 0x4010a5a0 in Shader::loop (this=0x3f86334c) at src/Components/Shader/Shader.cpp:88
#28 0x400dcb80 in ComponentHandler::loop (this=0x3ffb3848 <componentHandler>) at src/Components/ComponentHandler.cpp:98
#29 ComponentHandler::loop (this=0x3ffb3848 <componentHandler>) at src/Components/ComponentHandler.cpp:94
#30 0x400dcbb7 in ComponentsTask (pvParameters=<optimized out>) at src/Components/ComponentHandler.cpp:9

======================== THREADS INFO =========================
  Id   Target Id          Frame
* 1    process 1073609844 0x401a1313 in vfs_littlefs_fstat (ctx=0x3ffbd738, fd=<optimized out>, st=0x3ffc4ac0) at .pio/libdeps/esp-wrover-kit/esp_littlefs/src/esp_littlefs.c:1813
  2    process 1073527596 Factory::check (this=0x3ffb52cc <factory>) at src/Factory/Factory.cpp:50
  3    process 1073597380 0x4000d018 in ?? ()
  4    process 1073590016 0x4008ca12 in vTaskDelay (xTicksToDelay=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos asks.c:1601
  5    process 1073470136 0x4008ca12 in vTaskDelay (xTicksToDelay=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos asks.c:1601
  6    process 1073608992 0x00000000 in ?? ()
  7    process 1073475776 0x40265d9e in esp_pm_impl_waiti () at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\esp_pm\pm_impl.c:855
  8    process 1073473876 0x40265d9e in esp_pm_impl_waiti () at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\esp_pm\pm_impl.c:855
  9    process 1073542248 0x4008b22a in xQueueReceive (xQueue=0x3f823ba4, pvBuffer=0x3ffcf3d0, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1487
  10   process 1073552476 0x4000bff0 in ?? ()
  11   process 1073467592 0x4000bff0 in ?? ()
  12   process 1073411220 0x4008b374 in xQueueSemaphoreTake (xQueue=0x3ffaee30, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1687
  13   process 1073602584 0x4008b22a in xQueueReceive (xQueue=0x3ffdd1bc, pvBuffer=0x3ffddf70, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1487
  14   process 1073413408 0x4008b374 in xQueueSemaphoreTake (xQueue=0x3ffaf6bc, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1687
  15   process 1073478188 0x4008d5ac in prvProcessTimerOrBlockTask (xListWasEmpty=<optimized out>, xNextExpireTime=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\hal\esp32\include/hal/cpu_ll.h:39
  16   process 1073574372 0x4008b374 in xQueueSemaphoreTake (xQueue=0x3ffd7484, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1687
  17   process 1073545152 0x4008b22a in xQueueReceive (xQueue=0x3f823d64, pvBuffer=0x3ffcfef0, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1487
  18   process 1073607176 0x4008b22a in xQueueReceive (xQueue=0x3f8308ec, pvBuffer=0x3ffdf158, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1487
  19   process 1073549612 0x4008b22a in xQueueReceive (xQueue=0x3f823c84, pvBuffer=0x3ffd1090, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1487


       TCB             NAME PRIO C/B  STACK USED/FREE
---------- ---------------- -------- ----------------
0x3ffdfc74   ComponentsTask      1/1        2128/7860
0x3ffcbb2c         loopTask      1/1        384/14968
0x3ffdcbc4  HardwareConfigT      1/1         512/6472
0x3ffdaf00          OTATask      1/1         352/3684
0x3ffbdab8       systemTask      1/1         352/9644
0x3ffdf920        HsHWsTask      1/1         912/4080
0x3ffbf0c0            IDLE1      0/0         384/1140
0x3ffbe954            IDLE0      0/0         384/1136
0x3ffcf468              tiT    18/18         448/2620
0x3ffd1c5c          emac_rx    15/15         416/1624
0x3ffbd0c8        esp_timer    22/22         416/3164
0x3ffaf494             ipc0    24/24         384/1136
0x3ffde018  uart_event_task    24/24         416/1628
0x3ffafd20             ipc1    24/24         384/1140
0x3ffbfa2c          Tmr Svc      1/1         336/1704
0x3ffd71e4            httpd      5/5        736/19248
0x3ffcffc0          sys_evt    20/20         464/1828
0x3ffdf208             mdns      1/1         432/3660
0x3ffd112c   arduino_events    19/19         400/3688

==================== THREAD 1 (TCB: 0x3ffdfc74, name: 'ComponentsTask') =====================
#0  0x401a1313 in vfs_littlefs_fstat (ctx=0x3ffbd738, fd=<optimized out>, st=0x3ffc4ac0) at .pio/libdeps/esp-wrover-kit/esp_littlefs/src/esp_littlefs.c:1813
#1  0x401eede0 in esp_vfs_fstat (r=<optimized out>, fd=0, st=0x3ffc4ac0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\vfs\vfs.c:521
#2  0x4000bce0 in ?? ()
#3  0x40059143 in ?? ()
#4  0x400594ad in ?? ()
#5  0x40259941 in _fread_r (ptr=0x3ffdfce0, buf=<optimized out>, size=1, count=1, fp=0x3f830998) at /builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/fread.c:228
#6  0x402599d4 in fread (buf=0x3ffc4c00, size=1, count=1, fp=0x3f830998) at /builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/fread.c:266
#7  0x401c0d5a in VFSFileImpl::read (this=0x3ffdfb94, buf=0x3ffc4c00 "M\025\034\200@L\374?\234L\374?\244L\374?", size=1) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/vfs_api.cpp:408
#8  0x401a7ebe in fs::File::read (this=<optimized out>, buf=0x3ffc4c00 "M\025\034\200@L\374?\234L\374?\244L\374?", size=1) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FS.cpp:82
#9  0x401a7ed0 in fs::File::readBytes (this=0x3ffc4d10, buffer=0x3ffc4c00 "M\025\034\200@L\374?\234L\374?\244L\374?", length=1) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FS.h:63
#10 0x40262b59 in ArduinoJson::V704PB22::detail::Reader<fs::File, void>::read (this=0x3ffc4c90) at lib/ArduinoJson-7.x/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp:16
#11 ArduinoJson::V704PB22::detail::Latch<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::load (this=0x3ffc4c90) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/Latch.hpp:38
#12 ArduinoJson::V704PB22::detail::Latch<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::current (this=0x3ffc4c90) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/Latch.hpp:30
#13 ArduinoJson::V704PB22::detail::JsonDeserializer<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::current (this=0x3ffc4c80) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:47
#14 0x401352b9 in ArduinoJson::V704PB22::detail::JsonDeserializer<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::skipSpacesAndComments (this=0x3ffc4c80) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:581
#15 0x401355a9 in ArduinoJson::V704PB22::detail::JsonDeserializer<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::skipSpacesAndComments (this=0x3ffc4c80) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:579
#16 ArduinoJson::V704PB22::detail::JsonDeserializer<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::parseVariant<ArduinoJson::V704PB22::detail::AllowAllFilter> (this=0x3ffc4c80, variant=..., filter=..., nestingLimit=...) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:67
#17 0x4013580b in ArduinoJson::V704PB22::detail::JsonDeserializer<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::parse<ArduinoJson::V704PB22::detail::AllowAllFilter> (nestingLimit=..., variant=..., this=0x3ffc4c80, filter=...) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:31
#18 ArduinoJson::V704PB22::detail::doDeserialize<ArduinoJson::V704PB22::detail::JsonDeserializer, ArduinoJson::V704PB22::JsonDocument&, ArduinoJson::V704PB22::detail::Reader<fs::File, void>, ArduinoJson::V704PB22::detail::DeserializationOptions<ArduinoJson::V704PB22::detail::AllowAllFilter> > (dst=..., reader=..., options=...) at lib/ArduinoJson-7.x/src/ArduinoJson/Deserialization/deserialize.hpp:56
#19 0x40135a28 in ArduinoJson::V704PB22::detail::deserialize<ArduinoJson::V704PB22::detail::JsonDeserializer, ArduinoJson::V704PB22::JsonDocument&, fs::File&, , void>(ArduinoJson::V704PB22::JsonDocument&, fs::File&) (input=..., dst=...) at lib/ArduinoJson-7.x/src/ArduinoJson/Deserialization/deserialize.hpp:68
#20 ArduinoJson::V704PB22::deserializeJson<ArduinoJson::V704PB22::JsonDocument&, fs::File&> (dst=...) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:678
#21 FileSystem::read (this=0x3ffb5150 <db>, path=0x3f401abc "/graphs.json", doc=...) at src/FileSystem/FileSystemReads.cpp:158
#22 0x400e55a9 in Graphs::get (this=<optimized out>, type=0x3f404ec8 "shader", id=..., graphData=...) at src/Components/Graph/Graph.cpp:9
#23 0x40107691 in Shader::handleGraph (this=0x3f86334c, detail=...) at src/Components/Shader/GraphHandler.cpp:22
#24 0x4010780c in Shader::checkGraph (this=0x3f86334c) at src/Components/Shader/GraphHandler.cpp:13
#25 0x40109ff3 in Shader::checkOnMinChange (this=0x3f86334c) at src/Components/Shader/Shader.cpp:25
#26 Shader::checkOnMinChange (this=0x3f86334c) at src/Components/Shader/Shader.cpp:21
#27 0x4010a5a0 in Shader::loop (this=0x3f86334c) at src/Components/Shader/Shader.cpp:88
#28 0x400dcb80 in ComponentHandler::loop (this=0x3ffb3848 <componentHandler>) at src/Components/ComponentHandler.cpp:98
#29 ComponentHandler::loop (this=0x3ffb3848 <componentHandler>) at src/Components/ComponentHandler.cpp:94
#30 0x400dcbb7 in ComponentsTask (pvParameters=<optimized out>) at src/Components/ComponentHandler.cpp:9

==================== THREAD 2 (TCB: 0x3ffcbb2c, name: 'loopTask') =====================
#0  Factory::check (this=0x3ffb52cc <factory>) at src/Factory/Factory.cpp:50
#1  0x4019f1d6 in loop () at src/main.cpp:97
#2  0x401bf9a8 in loopTask (pvParameters=<optimized out>) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:50

==================== THREAD 3 (TCB: 0x3ffdcbc4, name: 'HardwareConfigT') =====================
#0  0x4000d018 in ?? ()
#1  0x401bdfd5 in millis () at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-misc.c:173
#2  0x4015abfd in Modbus::waitResponse (this=0x3ffb4868 <modbus>) at src/Modbus/Utils.cpp:47
#3  0x4015ac24 in Modbus::getResponse (this=0x3ffb4868 <modbus>, response=0x3f82a28e, bufferSize=128) at src/Modbus/Utils.cpp:62
#4  0x4015c6a1 in Module::loop (this=0x3f82a240) at src/Module/Module.cpp:726
#5  0x40139395 in HwConfig::loop (this=0x3ffb44d4 <hwConfig>) at src/HardwareConfig/HardwareConfig.cpp:56
#6  HwConfig::loop (this=0x3ffb44d4 <hwConfig>) at src/HardwareConfig/HardwareConfig.cpp:49
#7  0x4013951c in hwConfigTask (pvParameters=<optimized out>) at src/HardwareConfig/HardwareConfig.cpp:8

==================== THREAD 4 (TCB: 0x3ffdaf00, name: 'OTATask') =====================
#0  0x4008ca12 in vTaskDelay (xTicksToDelay=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos       asks.c:1601
#1  0x4016e5f8 in OTATask (pvParameters=<optimized out>) at src/OTA/OTA.cpp:95

==================== THREAD 5 (TCB: 0x3ffbdab8, name: 'systemTask') =====================
#0  0x4008ca12 in vTaskDelay (xTicksToDelay=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos       asks.c:1601
#1  0x4018a3d8 in systemTask (pvParameters=<optimized out>) at src/System/System.cpp:571

==================== THREAD 6 (TCB: 0x3ffdf920, name: 'HsHWsTask') =====================
#0  0x00000000 in ?? ()
Backtrace stopped: Cannot access memory at address 0x0

==================== THREAD 7 (TCB: 0x3ffbf0c0, name: 'IDLE1') =====================
#0  0x40265d9e in esp_pm_impl_waiti () at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\esp_pm\pm_impl.c:855
#1  0x401cfe70 in esp_vApplicationIdleHook () at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\esp_system\freertos_hooks.c:63
#2  0x4008b73f in prvIdleTask (pvParameters=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos asks.c:4099

==================== THREAD 8 (TCB: 0x3ffbe954, name: 'IDLE0') =====================
#0  0x40265d9e in esp_pm_impl_waiti () at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\esp_pm\pm_impl.c:855
#1  0x401cfe70 in esp_vApplicationIdleHook () at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\esp_system\freertos_hooks.c:63
#2  0x4008b73f in prvIdleTask (pvParameters=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos asks.c:4099

==================== THREAD 9 (TCB: 0x3ffcf468, name: 'tiT') =====================
#0  0x4008b22a in xQueueReceive (xQueue=0x3f823ba4, pvBuffer=0x3ffcf3d0, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1487
#1  0x401e5c35 in sys_arch_mbox_fetch (mbox=<optimized out>, msg=0x3ffcf3d0, timeout=592) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\lwip\port\esp32\freertos\sys_arch.c:330
#2  0x401d7a72 in tcpip_timeouts_mbox_fetch (mbox=<optimized out>, msg=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\lwip\lwip\src\api   cpip.c:110
#3  tcpip_thread (arg=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\lwip\lwip\src\api      cpip.c:148

==================== THREAD 10 (TCB: 0x3ffd1c5c, name: 'emac_rx') =====================
#0  0x4000bff0 in ?? ()
#1  0x4008a132 in vPortClearInterruptMaskFromISR (prev_level=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\port\xtensa\include/freertos/portmacro.h:571
#2  vPortExitCritical (mux=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\port\xtensa\port.c:332
#3  0x4008cf15 in ulTaskGenericNotifyTake (uxIndexToWait=<optimized out>, xClearCountOnExit=1, xTicksToWait=4294967295) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos    asks.c:5513
#4  0x401c6c5d in emac_esp32_rx_task (arg=0x3f8240ec) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\esp_eth\src\esp_eth_mac_esp.c:257

==================== THREAD 11 (TCB: 0x3ffbd0c8, name: 'esp_timer') =====================
#0  0x4000bff0 in ?? ()
#1  0x4008a132 in vPortClearInterruptMaskFromISR (prev_level=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\port\xtensa\include/freertos/portmacro.h:571
#2  vPortExitCritical (mux=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\port\xtensa\port.c:332
#3  0x4008cf15 in ulTaskGenericNotifyTake (uxIndexToWait=<optimized out>, xClearCountOnExit=1, xTicksToWait=4294967295) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos    asks.c:5513
#4  0x401d08f1 in timer_task (arg=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\esp_timer\src\esp_timer.c:420

==================== THREAD 12 (TCB: 0x3ffaf494, name: 'ipc0') =====================
#0  0x4008b374 in xQueueSemaphoreTake (xQueue=0x3ffaee30, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1687
#1  0x40082b0b in ipc_task (arg=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\esp_ipc\src\esp_ipc.c:54

==================== THREAD 13 (TCB: 0x3ffde018, name: 'uart_event_task') =====================
#0  0x4008b22a in xQueueReceive (xQueue=0x3ffdd1bc, pvBuffer=0x3ffddf70, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1487
#1  0x401bf0d9 in HardwareSerial::_uartEventTask (args=0x3ffb7d10 <Serial1>) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/cores/esp32/HardwareSerial.cpp:230

==================== THREAD 14 (TCB: 0x3ffafd20, name: 'ipc1') =====================
#0  0x4008b374 in xQueueSemaphoreTake (xQueue=0x3ffaf6bc, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1687
#1  0x40082b0b in ipc_task (arg=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\esp_ipc\src\esp_ipc.c:54

==================== THREAD 15 (TCB: 0x3ffbfa2c, name: 'Tmr Svc') =====================
#0  0x4008d5ac in prvProcessTimerOrBlockTask (xListWasEmpty=<optimized out>, xNextExpireTime=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\hal\esp32\include/hal/cpu_ll.h:39
#1  prvTimerTask (pvParameters=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos      imers.c:597

==================== THREAD 16 (TCB: 0x3ffd71e4, name: 'httpd') =====================
#0  0x4008b374 in xQueueSemaphoreTake (xQueue=0x3ffd7484, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1687
#1  0x401e5b5a in sys_arch_sem_wait (sem=0x3f826640, timeout=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\lwip\port\esp32\freertos\sys_arch.c:184
#2  0x401d7685 in lwip_select (maxfdp1=50, readset=0x3ffd7140, writeset=0x0, exceptset=0x0, timeout=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\lwip\lwip\src\api\sockets.c:2153
#3  0x401ef469 in esp_vfs_select (nfds=50, readfds=0x3ffd7140, writefds=0x0, errorfds=0x0, timeout=0x0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\vfs\vfs.c:1023
#4  0x401c8d84 in httpd_server (hd=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\esp_http_server\src\httpd_main.c:205
#5  httpd_thread (arg=0x3f824260) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\esp_http_server\src\httpd_main.c:250

==================== THREAD 17 (TCB: 0x3ffcffc0, name: 'sys_evt') =====================
#0  0x4008b22a in xQueueReceive (xQueue=0x3f823d64, pvBuffer=0x3ffcfef0, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1487
#1  0x401c8608 in esp_event_loop_run (event_loop=0x3ffbb0d0, ticks_to_run=4294967295) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\esp_event\esp_event.c:566
#2  0x401c8779 in esp_event_loop_run_task (args=0x3ffbb0d0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\esp_event\esp_event.c:115

==================== THREAD 18 (TCB: 0x3ffdf208, name: 'mdns') =====================
#0  0x4008b22a in xQueueReceive (xQueue=0x3f8308ec, pvBuffer=0x3ffdf158, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1487
#1  0x401bbe25 in _mdns_service_task (pvParameters=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\mdns\mdns.c:4639

==================== THREAD 19 (TCB: 0x3ffd112c, name: 'arduino_events') =====================
#0  0x4008b22a in xQueueReceive (xQueue=0x3f823c84, pvBuffer=0x3ffd1090, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\freertos\queue.c:1487
#1  0x401a7594 in _arduino_event_task (arg=<optimized out>) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFiGeneric.cpp:305


======================= ALL MEMORY REGIONS ========================
Name   Address   Size   Attrs
.rtc.text 0x400c0000 0x0 RW
.rtc.dummy 0x3ff80000 0x0 RW
.rtc.force_fast 0x3ff80000 0x0 RW
.rtc.force_slow 0x50000010 0x0 RW
.iram0.vectors 0x40080000 0x403 R XA
.iram0.text 0x40080404 0x14d33 R XA
.dram0.data 0x3ffb0000 0x3778 RW A
.ext_ram_noinit 0x3f800000 0x0 RW
.noinit 0x3ffb3778 0x0 RW
.flash.appdesc 0x3f400020 0x100 R  A
.flash.rodata 0x3f400120 0x39828 RW A
.flash.text 0x400d0020 0x19a5df R XA
.phyiram.0 0x4026a600 0x2b R XA
.phyiram.1 0x4026a62c 0x7d R XA
.phyiram.2 0x4026a6ac 0x21e R XA
.phyiram.3 0x4026a8cc 0xb2 R XA
.phyiram.6 0x4026a980 0xde R XA
.phyiram.4 0x4026aa60 0xea R XA
.phyiram.7 0x4026ab4c 0xe4 R XA
.phyiram.8 0x4026ac30 0x223 R XA
.phyiram.9 0x4026ae54 0x183 R XA
.phyiram.10 0x4026afd8 0x8e R XA
.phyiram.13 0x4026b068 0x188 R XA
.phyiram.15 0x4026b1f0 0xba R XA
.phyiram.14 0x4026b2ac 0xef R XA
.phyiram.16 0x4026b39c 0x1cb R XA
.phyiram.18 0x4026b568 0x72 R XA
.phyiram.12 0x4026b5dc 0x78 R XA
.phyiram.17 0x4026b654 0xee R XA
.phyiram.24 0x4026b744 0x4a R XA
.phyiram.25 0x4026b790 0x31 R XA
.phyiram.26 0x4026b7c4 0x103 R XA
.phyiram.27 0x4026b8c8 0x87 R XA
.phyiram.22 0x4026b950 0x61 R XA
.phyiram.20 0x4026b9b4 0x10e R XA
.phyiram.21 0x4026bac4 0x9e R XA
.phyiram.19 0x4026bb64 0x2df R XA
.iram0.data 0x40095138 0x0 RW
.iram0.bss 0x40095138 0x0 RW
.dram0.heap_start 0x3ffbac28 0x0 RW
.coredump.tasks.data 0x3ffcbb2c 0x164 RW
.coredump.tasks.data 0x3ffcb9a0 0x180 RW
.coredump.tasks.data 0x3ffdcbc4 0x164 RW
.coredump.tasks.data 0x3ffdc9b0 0x200 RW
.coredump.tasks.data 0x3ffdaf00 0x164 RW
.coredump.tasks.data 0x3ffdad90 0x160 RW
.coredump.tasks.data 0x3ffbdab8 0x164 RW
.coredump.tasks.data 0x3ffce2a0 0x160 RW
.coredump.tasks.data 0x3ffdf920 0x164 RW
.coredump.tasks.data 0x3ffc6060 0x390 RW
.coredump.tasks.data 0x3ffdfc74 0x164 RW
.coredump.tasks.data 0x3ffc4890 0x7d0 RW
.coredump.tasks.data 0x3ffbf0c0 0x164 RW
.coredump.tasks.data 0x3ffbef30 0x180 RW
.coredump.tasks.data 0x3ffbe954 0x164 RW
.coredump.tasks.data 0x3ffbe7c0 0x180 RW
.coredump.tasks.data 0x3ffcf468 0x164 RW
.coredump.tasks.data 0x3ffcf2a0 0x1c0 RW
.coredump.tasks.data 0x3ffd1c5c 0x164 RW
.coredump.tasks.data 0x3ffd1ab0 0x1a0 RW
.coredump.tasks.data 0x3ffbd0c8 0x164 RW
.coredump.tasks.data 0x3ffbcf20 0x1a0 RW
.coredump.tasks.data 0x3ffaf494 0x164 RW
.coredump.tasks.data 0x3ffaf300 0x180 RW
.coredump.tasks.data 0x3ffde018 0x164 RW
.coredump.tasks.data 0x3ffdde70 0x1a0 RW
.coredump.tasks.data 0x3ffafd20 0x164 RW
.coredump.tasks.data 0x3ffafb90 0x180 RW
.coredump.tasks.data 0x3ffbfa2c 0x164 RW
.coredump.tasks.data 0x3ffbf8d0 0x150 RW
.coredump.tasks.data 0x3ffd71e4 0x164 RW
.coredump.tasks.data 0x3ffd6ef0 0x2e0 RW
.coredump.tasks.data 0x3ffcffc0 0x164 RW
.coredump.tasks.data 0x3ffcfde0 0x1d0 RW
.coredump.tasks.data 0x3ffdf208 0x164 RW
.coredump.tasks.data 0x3ffdf050 0x1b0 RW
.coredump.tasks.data 0x3ffd112c 0x164 RW
.coredump.tasks.data 0x3ffd0f90 0x190 RW

===================== ESP32 CORE DUMP END =====================
===============================================================

The relevant part is here

==================== CURRENT THREAD STACK =====================
#0  0x401a1313 in vfs_littlefs_fstat (ctx=0x3ffbd738, fd=<optimized out>, st=0x3ffc4ac0) at .pio/libdeps/esp-wrover-kit/esp_littlefs/src/esp_littlefs.c:1813
#1  0x401eede0 in esp_vfs_fstat (r=<optimized out>, fd=0, st=0x3ffc4ac0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40407.0\components\vfs\vfs.c:521
#2  0x4000bce0 in ?? ()
#3  0x40059143 in ?? ()
#4  0x400594ad in ?? ()
#5  0x40259941 in _fread_r (ptr=0x3ffdfce0, buf=<optimized out>, size=1, count=1, fp=0x3f830998) at /builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/fread.c:228
#6  0x402599d4 in fread (buf=0x3ffc4c00, size=1, count=1, fp=0x3f830998) at /builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/fread.c:266
#7  0x401c0d5a in VFSFileImpl::read (this=0x3ffdfb94, buf=0x3ffc4c00 "M\025\034\200@L\374?\234L\374?\244L\374?", size=1) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/vfs_api.cpp:408
#8  0x401a7ebe in fs::File::read (this=<optimized out>, buf=0x3ffc4c00 "M\025\034\200@L\374?\234L\374?\244L\374?", size=1) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FS.cpp:82
#9  0x401a7ed0 in fs::File::readBytes (this=0x3ffc4d10, buffer=0x3ffc4c00 "M\025\034\200@L\374?\234L\374?\244L\374?", length=1) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FS.h:63
#10 0x40262b59 in ArduinoJson::V704PB22::detail::Reader<fs::File, void>::read (this=0x3ffc4c90) at lib/ArduinoJson-7.x/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp:16
#11 ArduinoJson::V704PB22::detail::Latch<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::load (this=0x3ffc4c90) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/Latch.hpp:38
#12 ArduinoJson::V704PB22::detail::Latch<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::current (this=0x3ffc4c90) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/Latch.hpp:30
#13 ArduinoJson::V704PB22::detail::JsonDeserializer<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::current (this=0x3ffc4c80) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:47
#14 0x401352b9 in ArduinoJson::V704PB22::detail::JsonDeserializer<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::skipSpacesAndComments (this=0x3ffc4c80) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:581
#15 0x401355a9 in ArduinoJson::V704PB22::detail::JsonDeserializer<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::skipSpacesAndComments (this=0x3ffc4c80) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:579
#16 ArduinoJson::V704PB22::detail::JsonDeserializer<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::parseVariant<ArduinoJson::V704PB22::detail::AllowAllFilter> (this=0x3ffc4c80, variant=..., filter=..., nestingLimit=...) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:67
#17 0x4013580b in ArduinoJson::V704PB22::detail::JsonDeserializer<ArduinoJson::V704PB22::detail::Reader<fs::File, void> >::parse<ArduinoJson::V704PB22::detail::AllowAllFilter> (nestingLimit=..., variant=..., this=0x3ffc4c80, filter=...) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:31
#18 ArduinoJson::V704PB22::detail::doDeserialize<ArduinoJson::V704PB22::detail::JsonDeserializer, ArduinoJson::V704PB22::JsonDocument&, ArduinoJson::V704PB22::detail::Reader<fs::File, void>, ArduinoJson::V704PB22::detail::DeserializationOptions<ArduinoJson::V704PB22::detail::AllowAllFilter> > (dst=..., reader=..., options=...) at lib/ArduinoJson-7.x/src/ArduinoJson/Deserialization/deserialize.hpp:56
#19 0x40135a28 in ArduinoJson::V704PB22::detail::deserialize<ArduinoJson::V704PB22::detail::JsonDeserializer, ArduinoJson::V704PB22::JsonDocument&, fs::File&, , void>(ArduinoJson::V704PB22::JsonDocument&, fs::File&) (input=..., dst=...) at lib/ArduinoJson-7.x/src/ArduinoJson/Deserialization/deserialize.hpp:68
#20 ArduinoJson::V704PB22::deserializeJson<ArduinoJson::V704PB22::JsonDocument&, fs::File&> (dst=...) at lib/ArduinoJson-7.x/src/ArduinoJson/Json/JsonDeserializer.hpp:678
#21 FileSystem::read (this=0x3ffb5150 <db>, path=0x3f401abc "/graphs.json", doc=...) at src/FileSystem/FileSystemReads.cpp:158
#22 0x400e55a9 in Graphs::get (this=<optimized out>, type=0x3f404ec8 "shader", id=..., graphData=...) at src/Components/Graph/Graph.cpp:9
#23 0x40107691 in Shader::handleGraph (this=0x3f86334c, detail=...) at src/Components/Shader/GraphHandler.cpp:22
#24 0x4010780c in Shader::checkGraph (this=0x3f86334c) at src/Components/Shader/GraphHandler.cpp:13
#25 0x40109ff3 in Shader::checkOnMinChange (this=0x3f86334c) at src/Components/Shader/Shader.cpp:25
#26 Shader::checkOnMinChange (this=0x3f86334c) at src/Components/Shader/Shader.cpp:21
#27 0x4010a5a0 in Shader::loop (this=0x3f86334c) at src/Components/Shader/Shader.cpp:88
#28 0x400dcb80 in ComponentHandler::loop (this=0x3ffb3848 <componentHandler>) at src/Components/ComponentHandler.cpp:98
#29 ComponentHandler::loop (this=0x3ffb3848 <componentHandler>) at src/Components/ComponentHandler.cpp:94
#30 0x400dcbb7 in ComponentsTask (pvParameters=<optimized out>) at src/Components/ComponentHandler.cpp:9

When read is called, ArduinoJson starts to deserialize the file and crashes.
DeserializationError error = deserializeJson(doc, file);

The JSON file looks something like this

{
   "heating":[
       {
         "id": "",
         "data": [],
       }
    ],
   "shader": [
       {
         "id": "",
         "data": [],
       }
    ],
}

Sorry. It is probably a LittleFS bug and not an ArduinoJson bug