Understanding (ESP) Stack Trace Decoder

Greetings.
I am trying to get a better grasp of what the output from the decoder is trying to tell me. As of now, my assumption is its telling to me to clean up my script, plug holes in memory leaks and learn better practices and techniques... but im an electrical engineer not a software engineer, so this C, C++ is learned on the fly, I have the retention to only learn things once, as long as i understand what, why, when, how, all that great stuff.
this project started off with X number of timers and X number of relays, my code has been dumbed down to just get it to complile and have a three timer starting point. it is nowhere near complete, but I would like to understand the errors im getting after upload better. Ive tried with multiple devices, to my surprise the supermini C3 runs the longest before error. So i will start there with C3 super mini Decoder Output > Backtrace then Wroom-32 Output>Backtrace.... and then yall can laugh at my terrible script

### Output:

* 0x4038c5e2: **spi_flash_chip_generic_wait_idle** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/spi_flash/spi_flash_chip_generic.c:393</mark>
* 0x40389eb2: **spi_flash_hal_read** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/hal/spi_flash_hal_common.inc:195</mark>
* 0x40387ce4: **xTaskResumeAll** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/FreeRTOS-Kernel/tasks.c:2707</mark>
* 0x403828e0: **esp_system_get_time** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp_timer/src/system_time.c:55</mark>
* 0x40381070: **on_spi_released** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/spi_flash/spi_flash_os_func_app.c:372</mark>
* 0x40381070: **spi1_end** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/spi_flash/spi_flash_os_func_app.c:142</mark>
* 0x4038044a: **spiflash_end_default** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/spi_flash/esp_flash_api.c:203</mark>
* 0x40380a76: **esp_flash_read** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/spi_flash/esp_flash_api.c:905</mark>
* 0x40380c1c: **esp_flash_write** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/spi_flash/esp_flash_api.c:1110</mark>
* 0x4038650a: **prvCopyDataToQueue** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/FreeRTOS-Kernel/queue.c:2415</mark>
* 0x40386a40: **xQueueGenericSend** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/FreeRTOS-Kernel/queue.c:908</mark>
* 0x4038a8fa: **multi_heap_malloc_impl** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/heap/multi_heap.c:207</mark>
* 0x4038a8fa: **multi_heap_malloc_impl** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/heap/multi_heap.c:199</mark>
* 0x4038650a: **prvCopyDataToQueue** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/FreeRTOS-Kernel/queue.c:2415</mark>
* 0x40386a40: **xQueueGenericSend** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/FreeRTOS-Kernel/queue.c:908</mark>
* 0x40386bf2: **xQueueGiveMutexRecursive** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/FreeRTOS-Kernel/queue.c:737</mark>
* 0x4038254c: **__retarget_lock_release_recursive** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/newlib/locks.c:341</mark>
* 0x40386ff6: **xQueueSemaphoreTake** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/FreeRTOS-Kernel/queue.c:1675</mark>
* 0x40386a24: **xQueueGenericSend** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/FreeRTOS-Kernel/queue.c:882</mark>
* 0x40386a06: **xQueueGenericSend** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/FreeRTOS-Kernel/queue.c:877</mark>
* 0x40386ff6: **xQueueSemaphoreTake** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/FreeRTOS-Kernel/queue.c:1675</mark>
* 0x4038a9fe: **multi_heap_free** at <mark>/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/heap/multi_heap_poisoning.c:285</mark>
Guru Meditation Error: Core  0 panic'ed (Store access fault). Exception was unhandled.

Core  0 register dump:
MEPC    : 0x420abdb2  RA      : 0x420abd8c  SP      : 0x3fc9b9e0  GP      : 0x3fc8dc00  
TP      : 0x3fc784e8  T0      : 0x00000008  T1      : 0x00000001  T2      : 0x00000009  
S0/FP   : 0x3fc9bd80  S1      : 0x00000000  A0      : 0x00000000  A1      : 0x3fc9bbe0  
A2      : 0x00000000  A3      : 0x00000001  A4      : 0xffffffc0  A5      : 0x00000001  
A6      : 0xffffff9f  A7      : 0x80000000  S2      : 0x3fc9bd88  S3      : 0x00000000  
S4      : 0x3fc9bbe2  S5      : 0xffffffff  S6      : 0x00000000  S7      : 0x3fc9bbe0  
S8      : 0x00000000  S9      : 0x00000000  S10     : 0x3fc9bd40  S11     : 0x00000400  
T3      : 0x0ccccccc  T4      : 0x00000019  T5      : 0x3fc9bff0  T6      : 0x00000001  
MSTATUS : 0x00001881  MTVEC   : 0x40380001  MCAUSE  : 0x00000007  MTVAL   : 0x00000000  
MHARTID : 0x00000000  

Stack memory:
3fc9b9e0: 0x3fc9b9d0 0x0007a121 0x3fc8f058 0x4038c5e2 0x00000100 0x3fc95000 0x3c0df190 0x3c0deaad
3fc9ba00: 0x420a7da2 0x3c0c07de 0x00000000 0x00000000 0x0000000a 0x3fc9bff0 0x00000000 0x0000015c
3fc9ba20: 0x00000000 0x00000040 0x60002000 0x40389eb2 0x00000001 0x3fc8f058 0x700000eb 0x3fc9be0c
3fc9ba40: 0x00001000 0x00000000 0x00000001 0x00000025 0x3fc95000 0x00290000 0x002943c0 0xffffffff
3fc9ba60: 0x00000000 0xffffffff 0xffffffff 0x40387ce4 0xffffffff 0xffffffff 0xffffffff 0x00000000
3fc9ba80: 0xffffffff 0xffffffff 0xffffffff 0x3fc8f000 0x00000100 0x00000100 0x3fc8f0c8 0x403828e0
3fc9baa0: 0x00000000 0x00000100 0x3fc8f0c8 0x40381070 0x00000100 0x00000100 0x00000000 0x4038044a
3fc9bac0: 0x00000000 0x00000100 0x00000000 0x40380a76 0x00000001 0x00000000 0x00000000 0x3fc8f058
3fc9bae0: 0x3fca8fe0 0x00000001 0x00000000 0x40380c1c 0x00000000 0x00000000 0x00293f31 0x00000100
3fc9bb00: 0x3fca9660 0x00000000 0x3fc9bb78 0x00000031 0x3fcaa028 0x00004300 0x00000100 0x4205408e
3fc9bb20: 0x3fc9bbce 0x3fca8fdc 0x00000001 0x00000003 0x0000003f 0x00004300 0x3fca91ec 0x42058214
3fc9bb40: 0x3fc9bbce 0x3fca8fdc 0x00000001 0x00000000 0x00000000 0x00000003 0x3fc95000 0x00000043
3fc9bb60: 0x3fc9bc0c 0x3fca91ec 0x00000000 0x4205425a 0x0000003f 0x80154300 0x3fca8d88 0x4038650a
3fc9bb80: 0x00000000 0x00000000 0x3fca8d88 0x40386a40 0x00000074 0x00000000 0x00000000 0x00000000
3fc9bba0: 0x00000000 0x00001200 0x3fca8d00 0x8485821b 0x00000000 0xffffffff 0x00000000 0x3fc9bc0c
3fc9bbc0: 0x00000003 0x3fca91ec 0x00000000 0x42054f00 0x00000000 0x3fc95000 0x00000000 0x3fca8e4c
3fc9bbe0: 0x0000312d 0x3fca9350 0x3fc9612c 0x3fc95000 0x3fca8d24 0x3fc95a38 0x3fc9bc68 0x42053cf4
3fc9bc00: 0x3fc9bc2a 0x3fca91ec 0x3fca943c 0x40380015 0x00000000 0x00430001 0x6d69742f 0xc0380000
3fc9bc20: 0x00000000 0x3fc95000 0x00060000 0x00000000 0x3fc951c0 0x00001000 0x3fc951c0 0x4038a8fa
3fc9bc40: 0x00000004 0x00000000 0x3fca943c 0x4038650a 0x00000000 0x00000000 0x3fca943c 0x40386a40
3fc9bc60: 0xc0380000 0x00001004 0x00001000 0x00000000 0x00000000 0x00000000 0x00000000 0x3fc951c0
3fc9bc80: 0x00000000 0x00000000 0x00000000 0x3fc9bff0 0x3fcab1c0 0x3fc9bf94 0x3fca943c 0x40386bf2
3fc9bca0: 0x00000000 0x00001000 0x3fc95a38 0x4038254c 0x00001800 0x00001000 0x3fc95a38 0x3fca943c
3fc9bcc0: 0x00000000 0x00001000 0x3fc95a38 0x420a5d78 0x00000000 0x00000080 0x00000000 0x420a470e
3fc9bce0: 0x00001800 0x3fca9350 0x3fc9612c 0x3c0c0774 0x3c0dda20 0x3fca9350 0x3fca943c 0x40386ff6
3fc9bd00: 0x40386a24 0x40386a06 0x3fc914ec 0x40386ff6 0x3fc784e8 0x37363534 0x7271706f 0xffffffff
3fc9bd20: 0x3fc9c0f8 0x00000000 0x00000002 0x00000000 0x00000000 0x00000004 0x00000000 0x3c0de000
3fc9bd40: 0x00000004 0x00000000 0x3fc914ec 0x3fc90000 0x3c0c0000 0x3fc95000 0x00000000 0x00000000
3fc9bd60: 0x00000000 0x00000000 0x00000000 0x3c0de000 0x3fc90000 0x3fc90000 0x3c0c07dc 0x420a5f7e
3fc9bd80: 0x7a797877 0x3fc9be08 0x3fc905ec 0x00000000 0x3fc90000 0xffff0224 0x3fc905ec 0x00000002
3fc9bda0: 0xffffffff 0x3fc95000 0x00000002 0x420a6010 0x3c0c40d4 0x00000002 0x00000000 0x00000000
3fc9bdc0: 0xffffffff 0x3fca9340 0x3fc951c0 0x4038a9fe 0x00000000 0x3fc90000 0x3fc9be50 0x3fc90000

with the Wroom, there error is consistently coming when i split a string into several (seven) arrays. I am assuming this is a terrible practice and i am sure there is a better way to do it... but i just learned about pointers today and im self taught through trial and error, so this is an error to learn from.

### Output:

* 0x401653a1: **__ssvfscanf_r** at <mark>/builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfscanf.c:1532</mark>
* 0x4008b155: **strlen** at <mark>/builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libc/machine/xtensa/strlen.S:84</mark>
* 0x4008b165: **strlen** at <mark>/builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libc/machine/xtensa/strlen.S:96</mark>
* 0x4016539e: **__ssvfscanf_r** at <mark>/builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vfscanf.c:1531</mark>
* 0x4015f0c9: **sscanf** at <mark>/builds/idf/crosstool-NG/.build/HOST-x86_64-w64-mingw32/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/sscanf.c:439</mark>
* 0x400d36ba: **setup()** at <mark>C:\Users\Default.DESKTOP-M4IVEMG\Documents\Arduino\threestagetimer\threestagetimer.ino:195</mark>
* 0x400e08d7: **loopTask(void*)** at <mark>C:\Users\Default.DESKTOP-M4IVEMG\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.1\cores\esp32\main.cpp:58</mark>
Guru Meditation Error: Core  1 panic'ed (StoreProhibited). Exception was unhandled.

Core  1 register dump:
PC      : 0x401653a1  PS      : 0x00060330  A0      : 0x8015f0cc  A1      : 0x3ffb1d50  
A2      : 0x3ffb2158  A3      : 0xffffffff  A4      : 0x00000001  A5      : 0x0000000c  
A6      : 0x3ffb1d52  A7      : 0x3ffb1d50  A8      : 0x00000018  A9      : 0x00000001  
A10     : 0x00000000  A11     : 0x3ffb1d50  A12     : 0x00000000  A13     : 0x0000000a  
A14     : 0x3ffb1d50  A15     : 0xff000000  SAR     : 0x00000011  EXCCAUSE: 0x0000001d  
EXCVADDR: 0x00000000  LBEG    : 0x4008b155  LEND    : 0x4008b165  LCOUNT  : 0xffffffff  


Backtrace: 0x4016539e:0x3ffb1d50 0x4015f0c9:0x3ffb20d0 0x400d36ba:0x3ffb2190 0x400e08d7:0x3ffb2290

and the mess i call a script, only thing redacted is wifi password

#include <Arduino.h>
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebSrv.h>
#include "time.h"
#include "esp_sntp.h"
#include <LittleFS.h>
#include "SPIFFS.h"
#define RLY1_PIN   5
#define RLY2_PIN   6
#define RLY3_PIN   7
const byte NUM_RELAYS = 3;
String rly1 = "";
String rly2 = "";
String rly3 = "";
const char *ntpServer1 = "pool.ntp.org";
const char *ntpServer2 = "time.nist.gov";
const long gmtOffset_sec = 3600;
const int daylightOffset_sec = 3600;
const char *time_zone = "PST8PDT,M3.2.0/2:00:00,M11.1.0/2:00:00";
String NAT = "";
String inputVar = "";
char tName[NUM_RELAYS];
int tState[NUM_RELAYS];
int thON[NUM_RELAYS];
int thOFF[NUM_RELAYS];
int tmON[NUM_RELAYS];
int tmOFF[NUM_RELAYS];
int tNum[NUM_RELAYS];
const char *ssid = "Pimptranet";         
const char *password = "**************";  
AsyncWebServer server(80);
IPAddress local_IP(192, 168, 1, 127);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress primaryDNS(8, 8, 8, 8);   
IPAddress secondaryDNS(8, 8, 4, 4);


void printLocalTime() {
  struct tm timeinfo;
  if (!getLocalTime(&timeinfo)) {
    Serial.println("No one available to take your call");
    return;
  }
  Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
}
void timeavailable(struct timeval *t) {
  Serial.println("wooohooo! overtime! from NTP!");
  printLocalTime();
}
void notFound(AsyncWebServerRequest *request) {
  request->send(404, "text/plain", "Not found");
}

String readFile(fs::FS &fs, const char * path){
  Serial.printf("Reading file: %s\r\n", path);
  File file = fs.open(path, "r");
  if(!file || file.isDirectory()){
    Serial.println("- empty file or failed to open file");
    return String();
  }
  Serial.println("- read from file:");
  String fileContent;
  while(file.available()){
    fileContent+=String((char)file.read());
  }
  file.close();
  Serial.println(fileContent);
  return fileContent;
}

void writeFile(fs::FS &fs, const char * path, const char * message){
  Serial.printf("Writing file: %s\r\n", path);
  File file = fs.open(path, "w");
  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();
}

String processor(const String& var){
  //Serial.println(var);
  if(var == "inputForm"){
    Serial.println("fill form data");
    String onOFF = "";
    String checked = "";
    for (int i=0; i<=3;i++){
      if (tState[i] == 0) { 
        onOFF = "OFF"; 
        } else { 
        onOFF = "ON";
        checked = " checked";
        }
        Serial.println("form for relay "+String(i)+" generated. current state is "+onOFF+"");
    inputVar += "<form action=\"/get\"><table class=\""+onOFF+"\"><tr><td colspan=2 class=\"c1\">"+String(tName[i])+"</td><td class=\"c1\"><font size=1.5><a href=\"\">rename</a></font></td><td class=\"c1\"><font size=2>manual</td></tr><tr><td class=\"r1\">ON: </td><td align=left><input placeholder=\"24H\" name=\"hourON\" id=\"hourON\" class=\"ONOFF\" value=\""+String(thON[i])+"\" maxlength=2>:<input name=\"minuteON\" id=\"minuteON\" class=\"ONOFF\" maxlength=2 value=\""+String(tmON[i])+"\"></td><td rowspan=2 class=\"c1\"><input type=hidden value=\""+String(tNum[i])+"\" name=\"tNum\" id=\"tNum\"><input type=submit value=\"save\" name=\"save\" id=\"save\"></td><td rowspan=2 class=\"c1\"><input type=checkbox name=\"manual\" value=\""+String(tState[i])+"\" id=\"manual\" class=\"manual\" onchange=\"checkboxClick(this)\" "+checked+"></td></tr><tr><td class=\"r1\">OFF: </td><td align=left><input placeholder=\"24H\" name=\"hourOFF\" id=\"hourOFF\" class=\"ONOFF\" maxlength=2 value=\""+String(thOFF[i])+"\">:<input name=\"minuteOFF\" id=\"minuteOFF\" class=\"ONOFF\" maxlength=2 value=\""+String(tmOFF[i])+"\"></td></tr></table></form>";  
    }
    }
    return inputVar;
  }

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html><head>
  <title>Timer HUB</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
<style>
  html {font-family: Arial; display: inline-block;}
  h2 {font-size: 1.0rem;}
  p {font-size: 1.0rem;}
	td {vertical-align: middle;}
	td.c1 {vertical-align: middle; align: center; font-size: 1.0rem;}
	td.r1 {vertical-align: middle; align: right; font-size: 1.0rem;}
	table.ON {background-color: PaleGreen; color: black; border: 1px solid LimeGreen; padding: 0; border-spacing: 0; border-collapse: collapse;}
	table.OFF {background-color: LightSalmon; color: black; border: 1px solid IndianRed; padding: 0; border-spacing: 0; border-collapse: collapse;}
  body {max-width: 600px; margin:0px auto; padding-bottom: 0px;}
	input.ONOFF {box-sizing: content-box; width:4ch; font-size:1.0rem; height: 20px;}
</style>
</head><body>
 %inputForm%
  <iframe style="display:none" name="hidden-form"></iframe>
</body></html>)rawliteral";




void setup() {
  Serial.begin(115200);
if (!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
    Serial.println("no configure, charlie brown");
  }

  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("johnny5 alive, load relay data from spiffs to string");
if (!SPIFFS.begin(true)) {
    Serial.println("your forces are under attack mounting SPIFFS");
    return;
  }
  File file = SPIFFS.open("/timer_1.txt", FILE_WRITE);
if (!file) {
    rly1 = "1,0,7,21,20,40,Timer_1";
    file.print(rly1);
    Serial.println("not enough supply depots");
    return;
  } else {
    rly1 = String(file.read());
  Serial.println("you got my attention on string1");
  }
  file.close();
  file = SPIFFS.open("/timer_2.txt", FILE_WRITE);
if (!file) {
    rly2 = "1,0,9,19,30,15,Timer_2";
    file.print(rly2);
    Serial.println("you require more minerals");
    return;
  } else {
    rly2 = String(file.read());
  Serial.println("fire it up on string2");
  }
  file.close();
 file = SPIFFS.open("/timer_3.txt", FILE_WRITE);
if (!file) {
    rly3 = "1,0,16,5,09,55,Timer_3";
    file.print(rly3);
    Serial.println("insufficent vespean gas");
    return;
  } else {
    rly3 = String(file.read());
     Serial.println("lets burn string3");
  }
  file.close();
  Serial.println("jobs done.");
int z1,z2,z3,z4,z5,z6;
char z7;
sscanf(rly1.c_str(),"%d,%d,%d,%d,%d,%d,%s",z1,&z2,&z3,&z4,&z5,&z6,z7);
tNum[1] = int(z1);
tState[1] = int(&z2);
thON[1] = int(&z3);
thOFF[1] = int(&z4);
tmON[1] = int(&z5);
tmOFF[1] = int(&z6);
tName[1] = z7;
 Serial.println("zug zug array[1]");
sscanf(rly2.c_str(),"%d,%d,%d,%d,%d,%d,%s",z1,&z2,&z3,&z4,&z5,&z6,z7);
tNum[2] = int(z1);
tState[2] = int(&z2);
thON[2] = int(&z3);
thOFF[2] = int(&z4);
tmON[2] = int(&z5);
tmOFF[2] = int(&z6);
tName[2] = z7;
 Serial.println("jobs finished array[2]");
sscanf(rly3.c_str(),"%d,%d,%d,%d,%d,%d,%s",z1,&z2,&z3,&z4,&z5,&z6,z7);
tNum[3] = int(z1);
tState[3] = int(&z2);
thON[3] = int(&z3);
thOFF[3] = int(&z4);
tmON[3] = int(&z5);
tmOFF[3] = int(&z6);
tName[3] = z7;
 Serial.println("evolution complete array[3]");
  Serial.println("");
  Serial.println("WiFi connected!");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  Serial.print("ESP Mac Address: ");
  Serial.println(WiFi.macAddress());
  Serial.print("Subnet Mask: ");
  Serial.println(WiFi.subnetMask());
  Serial.print("Gateway IP: ");
  Serial.println(WiFi.gatewayIP());
  Serial.print("DNS: ");
  Serial.println(WiFi.dnsIP());
  // Send web page with input fields to client
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html, processor);
  });

  // Send a GET request to <ESP_IP>/get?Param=value
  server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {
    String dataEntry;
    if (request->hasParam(String("tNum"))) {
      dataEntry = ((request->getParam(String("tNum"))->value())+",");
    }
    else if (request->hasParam(String("tState"))) {
      dataEntry += ((request->getParam(String("tState"))->value())+";");
    }
    else if (request->hasParam(String("thON"))) {
      dataEntry += ((request->getParam(String("thON"))->value())+",");
    }
    else if (request->hasParam(String("thOFF"))) {
      dataEntry += ((request->getParam(String("thOFF"))->value())+",");
    }
    else if (request->hasParam(String("tmON"))) {
      dataEntry += ((request->getParam(String("tmON"))->value())+",");
    }
    else if (request->hasParam(String("tmOFF"))) {
      dataEntry += ((request->getParam(String("tmOFF"))->value())+",");
    }
    else if (request->hasParam(String("tName"))) {
      dataEntry += ((request->getParam(String("tName"))->value())+"");
    }
    else if (request->hasParam(String("save"))) {
      NAT = "/timer_"+(request->getParam(String("tNum"))->value())+".txt";
      writeFile(LittleFS, NAT.c_str(), dataEntry.c_str());
    } else { dataEntry = "No message sent"; }
  
  Serial.println(dataEntry);
  request->send(200, "text/text", dataEntry);
}
  );
  server.onNotFound(notFound);
  server.begin();
}

void loop() {


   Serial.print("that does it, screw you guys, im going home");
   printLocalTime();

}

thanks in advance to anyone that even gets through all that. Im trying to learn but the add gets the best of me, im the kind of person thats handwriting style can change every couple lines on a page so i apologize if anything is hard to follow. and my serial outputs may not mean anything to you, but the make perfect sense in my head

The arguments of sscanf() must point to allocated storage. You need to add & to z1 and z7.

How do we get here? the back trace shows the reverse order of the calls that get to the exception. In this case the problem started with a call to sscanf() in your code.

Looking at the source code we see that you neglected to use pointers for two of the arguments. The system was not amused when you tried to use actual values instead of pointers.

The arguments of sscanf() must point to allocated storage. You need to add & to z1 and z7.

OK, i think i get that, SSCANF wants the memory address of z1-7, so, correct me if im wrong, in order to use the value of those variables down the road, i would need to use them as *z1 *z2... *z7?

No, you just use z1 - z7. The references in the sscanf() tell it were to put the result. Function calls can use values or references. In the first case a copy of the variables actual value is passed, in the second a pointer to the variable is passed and the actual variable can be changed.

For example...

in addition to & to pass the parameter addresses to scanf() as pointed out by @oldcurmudgeon

int z1,z2,z3,z4,z5,z6;
char z7;
sscanf(rly1.c_str(),"%d,%d,%d,%d,%d,%d,%s",z1,&z2,&z3,&z4,&z5,&z6,z7);

z7 is a char not a char array - use the %c conversion specification, e.g.

int z1,z2,z3,z4,z5,z6;
char z7;
sscanf(rly1.c_str(),"%d,%d,%d,%d,%d,%d,%c",&z1,&z2,&z3,&z4,&z5,&z6,&z7);

I assume rly1.c_str() contains comma seperated data

I assume rly1.c_str() contains comma seperated data

Yes, eventData a couple functions below handles timer edits, [creation], [deletion], state changes. Writes the data to comma delimited string, and writes the string to SPIFFS file timer_#.txt

While this section is/was originally, intended to be a function that pulls data from spiffs and puts it in corresponding arrays id, state, h:mON, h:mOff and timer name...
Eventually it should control 7 timers and 9 electronic value. Primary pump, spa pump, booster pump, vacuum pump, waterfall1-4 pump, waterfall3-7 spa over flow pump
And the valves that control water flow from intake and return, roof mount water heater, water slide, fountains etc.
This is my first attempt at programming anything remotely complicated, all I've done to this point are addressable LED controllers, wifi garage door openers, wifi relays, motion tracking can lights, RF IR cloners. I could do this project much faster with hardware logic and a few momentary and latching buttons, but I want a web gui and maybe touchscreen