Skip to content

Exception #97

@InnuendoPi

Description

@InnuendoPi

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions