-
Notifications
You must be signed in to change notification settings - Fork 35
Description
IDE / Tooling
Arduino (IDE/CLI)
What happened?
my pioarduino settings:
platform = https://github.com/pioarduino/platform-espressif32.git#develop
framework = arduino
...
lib_compat_mode = strict
lib_ldf_mode = chain
lib_deps =
...
ESP32Async/AsyncTCP
ESP32Async/ESPAsyncWebServer
board = wemos_d1_mini32
build_flags =
...
-DCONFIG_ASYNC_TCP_MAX_ACK_TIME=5000
-DCONFIG_ASYNC_TCP_PRIORITY=10
-DCONFIG_ASYNC_TCP_QUEUE_SIZE=128
-DCONFIG_ASYNC_TCP_RUNNING_CORE=1
-DCONFIG_ASYNC_TCP_STACK_SIZE=8192
xtensa-esp32-elf-addr2line:
.pio/libdeps/ESP32_IDF5dev/AsyncTCP/src/AsyncTCP.cpp:1173
.pio/libdeps/ESP32_IDF5dev/ESPAsyncWebServer/src/AsyncEventSource.cpp:186
.pio/libdeps/ESP32_IDF5dev/ESPAsyncWebServer/src/AsyncEventSource.cpp:491 (discriminator 1)
.pio/libdeps/ESP32_IDF5dev/ESPAsyncWebServer/src/WebRequest.cpp:241
.pio/libdeps/ESP32_IDF5dev/ESPAsyncWebServer/src/WebRequest.cpp:46
.platformio/packages/toolchain-xtensa-esp-elf/xtensa-esp-elf/include/c++/14.2.0/bits/std_function.h:591
.pio/libdeps/ESP32_IDF5dev/AsyncTCP/src/AsyncTCP.cpp:300
.pio/libdeps/ESP32_IDF5dev/AsyncTCP/src/AsyncTCP.cpp:328
addr2line points me to AsyncClient::write in case where _pcb == nullptr or_pcb->state are invalid (maybe from a stale client) tcp_write() seems to raise the exception. i cannot always reproduce the exception. it is "sometimes" ... hope this helps, tho
Stack Trace
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x401e5a0f PS : 0x00060730 A0 : 0x800dbe93 A1 : 0x3ffdf9d0
A2 : 0x00000000 A3 : 0x00000001 A4 : 0x00000000 A5 : 0x3ffe3528
A6 : 0x3ffe351c A7 : 0x3ffe3528 A8 : 0x801cf29c A9 : 0x3ffdf9b0
A10 : 0x3ffe3478 A11 : 0x00000001 A12 : 0x00000004 A13 : 0x3ffe355c
A14 : 0x3ffe351c A15 : 0x00000000 SAR : 0x0000001e EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000000 LBEG : 0x40089bf0 LEND : 0x40089bfb LCOUNT : 0xffffffff
Backtrace: 0x401e5a0c:0x3ffdf9d0 0x400dbe90:0x3ffdf9f0 0x400dbec5:0x3ffdfa30 0x400de0c6:0x3ffdfa50 0x400de0f9:0x3ffdfa70 0x400d74af:0x3ffdfa90 0x400d7b47:0x3ffdfac0 0x400d7bd1:0x3ffdfae0 0x4008fa99:0x3ffdfb10
Minimal Reproductible Example (MRE)
size_t jsonSize = measureJson(tempDoc);
String jsonValue;
jsonValue.reserve(jsonSize + 2);
serializeJson(tempDoc, jsonValue);
for (uint8_t i = 0; i < SSE_MAX_CHANNELS; i++)
{
AsyncEventSource *es = eventChannels[i];
bool active = channelActive[i];
if (!active || es == nullptr) continue;
if (es->count() == 0) continue; // no clients?
es->send(jsonValue, eventName, millis());
}
I confirm that:
- I have read the documentation.
- I have searched for similar discussions.
- I have searched for similar issues.
- I have looked at the examples.
- I have upgraded to the lasted version of AsyncTCP.