For the past two days, I've been trying to set up an ESP8266WebServer to serve my static web app files from SPIFFS. But as soon as I make a call to `serveStatic`, the ESP crashes. This is the exact code I'm running: #include <FS.h> #include <ESP8266WebServer.h> ESP8266WebServer s; void setup() { Serial.begin(115200); if(!SPIFFS.begin()){ Serial.println("An Error has occurred while mounting SPIFFS"); return; } s.serveStatic("/", SPIFFS, "/static/"); s.begin(); } void loop() { s.handleClient(); } I know that this is example does not allow me to access the files in any way because I don't have WiFi configured, but this is enough for me to crash the ESP. This is the error that I keep seeing: ```SDK:2.2.2-dev(38a443e)/Core:2.6.3=20603000/lwIP:STABLE-2_1_2_RELEASE/glue:1.2-16-ge23a07e/BearSSL:89454af SPIFFSImpl: allocating 512+240+1400=2152 bytes SPIFFSImpl: mounting fs @100000, size=2fa000, block=2000, page=100 SPIFFSImpl: mount rc=0 Fatal exception 28(LoadProhibitedCause): epc1=0x4021407a, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000 Exception (28): epc1=0x4021407a epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000 >>>stack>>> ctx: cont sp: 3ffffca0 end: 3fffffc0 offset: 01a0 3ffffe40: 3ffefaf8 00000000 3ffffea0 402127b1 3ffffe50: 00000001 ffffffff 4020a9dc 00000000 3ffffe60: 3ffe8304 00000000 0000000a 40216e21 3ffffe70: 402497e1 00000000 00000000 4020b414 3ffffe80: 3ffffee0 3ffffed0 00000008 402497e3 3ffffe90: 402497e2 3ffe8304 3ffefaf8 402171ec 3ffffea0: 00000000 ffffffff 00000000 00000000 3ffffeb0: 00000001 00000041 3f302073 40212d8e 3ffffec0: 3ffffee0 3ffffed0 00000004 40209c90 3ffffed0: 3fffff10 00000000 00000017 3fff0580 3ffffee0: 00308658 3fffff20 3ffef85c 4020a3e9 3ffffef0: 000018c0 3ffee6b0 00000000 40208120 3fffff00: 3fffff60 3fffff50 00000014 00000001 3fffff10: 00000009 00000001 00000001 40207c65 3fffff20: 40100b04 00001000 00002000 3fff0580 3fffff30: 3ffe8658 402497a4 3ffe8304 40212d8e 3fffff40: 3fffff60 3fffff50 00000004 40100476 3fffff50: 3ffe8658 3ffe8658 3ffe865f 00000000 3fffff60: 00000000 00000000 3fff056c 4020ffa5 3fffff70: 3fffdad0 3ffee690 3fff056c 40201325 3fffff80: 3ffe865f feefeffe feefeffe feefeffe 3fffff90: feefeffe feefeffe feefeffe 3ffee610 3fffffa0: 3fffdad0 00000000 3ffee5d0 40206aa0 3fffffb0: feefeffe feefeffe 3ffe84f4 40101245 <<<stack<<< ets Jan 8 2013,rst cause:2, boot mode:(3,6) load 0x4010f000, len 1392, room 16 tail 0 chksum 0xd0 csum 0xd0 v3d128e5c ~ld ``` I have also analyzed the stack trace using ESP exception decoder, which didn't get me any further though. Here is the output of that tool: ``` Exception 28: LoadProhibited: A load referenced a page mapped with an attribute that does not permit loads PC: 0x4021407a: pgm_read_byte_inlined at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/sys/xtensa/sys/pgmspace.h line 72 EXCVADDR: 0x00000000 Decoding stack results 0x402127b1: _printf_i at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf_i.c line 226 0x4020a9dc: spiffs_object_find_object_index_header_by_name_v(spiffs*, spiffs_obj_id, spiffs_block_ix, int, void const*, void*) at /Users/alex/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/cores/esp8266/spiffs/spiffs_nucleus.cpp line 1664 0x40216e21: __sfputs_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf.c line 433 0x4020b414: spiffs_obj_lu_scan(spiffs*) at /Users/alex/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/cores/esp8266/spiffs/spiffs_nucleus.cpp line 439 0x402171ec: _vfprintf_r at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/nano-vfprintf.c line 667 0x40212d8e: printf at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/printf.c line 61 0x40209c90: SPIFFS_mount(spiffs*, spiffs_config*, u8_t*, u8_t*, u32_t, void*, u32_t, spiffs_check_callback) at /Users/alex/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/cores/esp8266/spiffs/spiffs_hydrogen.cpp line 138 0x4020a3e9: SPIFFS_stat(spiffs*, char const*, spiffs_stat*) at /Users/alex/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/cores/esp8266/spiffs/spiffs_hydrogen.cpp line 769 0x40208120: spiffs_impl::SPIFFSImpl::_tryMount() at /Users/alex/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/cores/esp8266/spiffs_api.h line 320 0x40207c65: spiffs_impl::SPIFFSImpl::exists(char const*) at /Users/alex/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/cores/esp8266/spiffs_api.cpp line 80 0x40100b04: get_poisoned(void*, size_t) at /Users/alex/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/cores/esp8266/umm_malloc/umm_poison.c line 112 0x40212d8e: printf at /home/earle/src/esp-quick-toolchain/repo/newlib/newlib/libc/stdio/printf.c line 61 0x40100476: pvPortMalloc(size_t, char const*, int) at /Users/alex/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/cores/esp8266/heap.cpp line 267 0x4020ffa5: fs::FS::exists(char const*) at /Users/alex/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/cores/esp8266/FS.cpp line 363 0x40201325: setup() at /Users/alex/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/libraries/ESP8266WebServer/src/detail/RequestHandlersImpl.h line 75 0x40206aa0: loop_wrapper() at /Users/alex/Library/Arduino15/packages/esp8266/hardware/esp8266/2.6.3/cores/esp8266/core_esp8266_main.cpp line 177 ``` These are my settings in the Arduino IDE: [![Sketch settings in IDE][1]][1] [1]: https://i.sstatic.net/T2XSa.jpg To flash the data to the ESP, im using the latest version of this tool for the Arduino-IDE: https://github.com/esp8266/arduino-esp8266fs-plugin I'm probably making a stupid mistake but I've been scratching my head for hours now and can't see where the issue could be. Any help would be greatly appreciated! **EDIT #1:** The data is definitely available on the ESP, since this snippet works fine: ``` #include <FS.h> #include <ESP8266WebServer.h> ESP8266WebServer s; void setup() { Serial.begin(115200); if(!SPIFFS.begin()){ Serial.println("An Error has occurred while mounting SPIFFS"); return; } /*s.serveStatic("/", SPIFFS, "/static/"); s.begin();*/ } void loop() { //s.handleClient(); delay(5000); File f = SPIFFS.open("/static/index.html", "r"); String s = f.readString(); Serial.println(s); f.close(); } ``` **EDIT #2** Serving the files by registering the function below as a handler (```server.on("/", myHandler)```works: ``` void myHandler(){ String file = "/static/index.html"; Serial.println("[INFO] requested file " + file); if(!SPIFFS.exists(file)){ server.send(404, "text/plain", "<h1>404: Not found</h1>"); return; } String contentType = "text/plain"; if(file.endsWith(".html")){ contentType = "text/html"; } else if(file.endsWith(".css")){ contentType = "text/css"; } else if(file.endsWith(".js")){ contentType = "application/javascript"; } File f = SPIFFS.open(file, "r"); server.streamFile(f, contentType); f.close(); } ```