Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Strange websocket crashes at runtime (Arduino as a component) (IDFGH-12834) #13801

Open
3 tasks done
hitecSmartHome opened this issue May 17, 2024 · 3 comments
Open
3 tasks done
Assignees
Labels
Status: Opened Issue is new Type: Bug bugs in IDF

Comments

@hitecSmartHome
Copy link

hitecSmartHome commented May 17, 2024

Answers checklist.

  • I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
  • I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
  • I have searched the issue tracker for a similar issue and not found a similar issue.

IDF version.

4.4.6 2nd stage bootloader

Espressif SoC revision.

ESP-32 Wrover-E revision v3.0

Operating System used.

Windows

How did you build your project?

VS Code IDE

If you are using Windows, please specify command line type.

None

Development Kit.

ESP-32 Wrover-E

Power Supply used.

External 3.3V

What is the expected behavior?

To not crash on ws send or ws connect or ws close

What is the actual behavior?

It crashes randomly on ws send or ws connect or ws close

Steps to reproduce.

Create a ws client, connect to an external server with ssl and let it run

Debug Logs.

==================== THREAD 1 (TCB: 0x3ffcca70, name: 'loopTask') =====================
#0  0x40083170 in panic_abort (details=0x3ffcc5b0 "assert failed: 0x4008c7d6") at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\panic.c:408
#1  0x40089900 in esp_system_abort (details=0x3ffcc5b0 "assert failed: 0x4008c7d6") at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\esp_system.c:137
#2  0x4008e768 in __assert_func (file=<optimized out>, line=0, func=0x0, expr=0x0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components
ewlib\assert.c:47
#3  0x4008c7d9 in tlsf_free (tlsf=0x3f803294, ptr=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\heap_tlsf.c:964
#4  0x4008d087 in multi_heap_free_impl (p=0x3f835bb4, heap=0x3f803280) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\multi_heap.c:212
#5  multi_heap_free_impl (heap=0x3f803280, p=0x3f835bb4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\multi_heap.c:200
#6  0x40083efa in heap_caps_free (ptr=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\heap_caps.c:382
#7  0x4008e798 in free (ptr=0x3f835bb4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components
ewlib\heap.c:39
#8  0x40264dcc in esp_tls_internal_event_tracker_destroy (h=0x3f835bb4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp-tls\esp_tls_error_capture.c:46
#9  0x40264c6e in esp_tls_conn_destroy (tls=0x3f835bbc) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp-tls\esp_tls.c:111
#10 0x401f452a in base_close (t=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components cp_transport    ransport_ssl.c:270
#11 0x40275f2e in esp_transport_close (t=0x3ffe3288) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components     cp_transport    ransport.c:172
#12 0x401f4b94 in ws_close (t=0x3ffe3300) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components        cp_transport    ransport_ws.c:540
#13 0x40275f2e in esp_transport_close (t=0x3ffe3300) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components     cp_transport    ransport.c:172
#14 0x401bb9a6 in esp_websocket_client_abort_connection (client=0x3f8195c4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c:161
#15 0x401bc4fe in esp_websocket_client_send_with_opcode (client=0x3f8195c4, opcode=<optimized out>, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, len=4892, timeout=500) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c:882
#16 0x401bc52c in esp_websocket_client_send_text (client=0x3f8195c4, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, len=4892, timeout=500) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c:829
#17 0x401b4041 in WebsocketClient::send (len=4892, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, this=0x3ffb350c <serverRouter>) at lib/WebsocketClient/WebsocketClient.cpp:38
#18 WebsocketClient::send (this=0x3ffb350c <serverRouter>, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, len=4892) at lib/WebsocketClient/WebsocketClient.cpp:36
#19 0x40142904 in HsHServerRouter::sendTrigger (this=0x3ffb350c <serverRouter>, triggerType=0x3f416e25 "sysInfo", message=...) at src/HsHServerRouter/Handlers.cpp:57
#20 0x4018cba2 in <lambda(int, int)>::operator() (__closure=0x3ffcc930, prev=<optimized out>, now=<optimized out>) at src/System/SystemInfo.cpp:11
#21 std::_Function_handler<void(int, int), Sys::sendSysInfo()::<lambda(int, int)> >::_M_invoke(const std::_Any_data &, int &&, int &&) (__functor=..., __args#0=<optimized out>, __args#1=<optimized out>) at c:\users\pc\.platformio\packages       oolchain-xtensa-esp32@8.4.0+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:297
#22 0x40196ec0 in std::function<void (int, int)>::operator()(int, int) const (this=0x3ffcc930, __args#0=<optimized out>, __args#1=<optimized out>) at c:\users\pc\.platformio\packages  oolchain-xtensa-esp32@8.4.0+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:687
#23 0x40196f88 in Time::emitMinChange (now=15, prev=14, this=<optimized out>) at src/Time/TimeEvents.cpp:45
#24 Time::emitMinChange (this=<optimized out>, prev=14, now=15) at src/Time/TimeEvents.cpp:39
#25 0x4019710a in Time::monitorMinChange (this=0x3ffb3d74 <hshTime>) at src/Time/TimeEvents.cpp:154
#26 0x40197133 in Time::handleEvents (this=0x3ffb3d74 <hshTime>) at src/Time/TimeEvents.cpp:205
#27 0x40195e79 in Time::loop (this=0x3ffb3d74 <hshTime>) at src/Time/Time.cpp:211
#28 0x401a0d1b in loop () at src/main.cpp:91
#29 0x401c41f4 in loopTask (pvParameters=<optimized out>) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:50

More Information.

I have a lot of random strange crashes related to websocket client and tls ram allocation.
I have a wrapper around idf native websocket client which basically looks like this

boolean WebsocketClient::send(const char* data, size_t len) {
    if( !isConnected() ){ return false; }
    if (esp_websocket_client_send_text(client, data, len, pdMS_TO_TICKS(500)) != -1) {
        return true;
    }
    return false;
}

boolean WebsocketClient::isConnected() {
    return esp_websocket_client_is_connected(client);
}

void WebsocketClient::disconnect() {
    if (!isConnected()) {
        return;
    }
    esp_websocket_client_close(client, pdMS_TO_TICKS(100000));
}

void WebsocketClient::stop() {
    setAutoReconnect(false);
    esp_websocket_client_destroy(client);
}

void WebsocketClient::setAutoReconnect(boolean autoReconnect) {
    config.disable_auto_reconnect = !autoReconnect;
}

boolean WebsocketClient::halt() {
    disconnect();
    stop();
    client = nullptr;
    return true;
}

My application halts the ws connection every hour or so and restarts it after a couple of seconds.
Sometimes I have crashes on connect after a halt() sometimes I got crsahes on send_text

More crash:

==================== CURRENT THREAD STACK =====================
#0  0x40083170 in panic_abort (details=0x3ffcc5b0 "assert failed: 0x4008c7d6") at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\panic.c:408
#1  0x40089900 in esp_system_abort (details=0x3ffcc5b0 "assert failed: 0x4008c7d6") at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\esp_system.c:137
#2  0x4008e768 in __assert_func (file=<optimized out>, line=0, func=0x0, expr=0x0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components
ewlib\assert.c:47
#3  0x4008c7d9 in tlsf_free (tlsf=0x3f803294, ptr=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\heap_tlsf.c:964
#4  0x4008d087 in multi_heap_free_impl (p=0x3f835bb4, heap=0x3f803280) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\multi_heap.c:212
#5  multi_heap_free_impl (heap=0x3f803280, p=0x3f835bb4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\multi_heap.c:200
#6  0x40083efa in heap_caps_free (ptr=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\heap_caps.c:382
#7  0x4008e798 in free (ptr=0x3f835bb4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components
ewlib\heap.c:39
#8  0x40264dcc in esp_tls_internal_event_tracker_destroy (h=0x3f835bb4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp-tls\esp_tls_error_capture.c:46
#9  0x40264c6e in esp_tls_conn_destroy (tls=0x3f835bbc) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp-tls\esp_tls.c:111
#10 0x401f452a in base_close (t=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components cp_transport    ransport_ssl.c:270
#11 0x40275f2e in esp_transport_close (t=0x3ffe3288) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components     cp_transport    ransport.c:172
#12 0x401f4b94 in ws_close (t=0x3ffe3300) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components        cp_transport    ransport_ws.c:540
#13 0x40275f2e in esp_transport_close (t=0x3ffe3300) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components     cp_transport    ransport.c:172
#14 0x401bb9a6 in esp_websocket_client_abort_connection (client=0x3f8195c4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c:161
#15 0x401bc4fe in esp_websocket_client_send_with_opcode (client=0x3f8195c4, opcode=<optimized out>, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, len=4892, timeout=500) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c:882
#16 0x401bc52c in esp_websocket_client_send_text (client=0x3f8195c4, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, len=4892, timeout=500) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c:829
#17 0x401b4041 in WebsocketClient::send (len=4892, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, this=0x3ffb350c <serverRouter>) at lib/WebsocketClient/WebsocketClient.cpp:38
#18 WebsocketClient::send (this=0x3ffb350c <serverRouter>, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, len=4892) at lib/WebsocketClient/WebsocketClient.cpp:36
#19 0x40142904 in HsHServerRouter::sendTrigger (this=0x3ffb350c <serverRouter>, triggerType=0x3f416e25 "sysInfo", message=...) at src/HsHServerRouter/Handlers.cpp:57
#20 0x4018cba2 in <lambda(int, int)>::operator() (__closure=0x3ffcc930, prev=<optimized out>, now=<optimized out>) at src/System/SystemInfo.cpp:11
#21 std::_Function_handler<void(int, int), Sys::sendSysInfo()::<lambda(int, int)> >::_M_invoke(const std::_Any_data &, int &&, int &&) (__functor=..., __args#0=<optimized out>, __args#1=<optimized out>) at c:\users\pc\.platformio\packages       oolchain-xtensa-esp32@8.4.0+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:297
#22 0x40196ec0 in std::function<void (int, int)>::operator()(int, int) const (this=0x3ffcc930, __args#0=<optimized out>, __args#1=<optimized out>) at c:\users\pc\.platformio\packages  oolchain-xtensa-esp32@8.4.0+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:687
#23 0x40196f88 in Time::emitMinChange (now=15, prev=14, this=<optimized out>) at src/Time/TimeEvents.cpp:45
#24 Time::emitMinChange (this=<optimized out>, prev=14, now=15) at src/Time/TimeEvents.cpp:39
#25 0x4019710a in Time::monitorMinChange (this=0x3ffb3d74 <hshTime>) at src/Time/TimeEvents.cpp:154
#26 0x40197133 in Time::handleEvents (this=0x3ffb3d74 <hshTime>) at src/Time/TimeEvents.cpp:205
#27 0x40195e79 in Time::loop (this=0x3ffb3d74 <hshTime>) at src/Time/Time.cpp:211
#28 0x401a0d1b in loop () at src/main.cpp:91
#29 0x401c41f4 in loopTask (pvParameters=<optimized out>) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:50
@hitecSmartHome hitecSmartHome added the Type: Bug bugs in IDF label May 17, 2024
@hitecSmartHome hitecSmartHome changed the title Strange websocket crashes at runtime Strange websocket crashes at runtime (Arduino as a component) May 17, 2024
@hitecSmartHome
Copy link
Author

Here is the current decoded coreDump

espcoredump.py v1.11.0
===============================================================
==================== ESP32 CORE DUMP START ====================

Crashed task handle: 0x3ffcca70, name: 'loopTask', GDB name: 'process 1073531504'

================== CURRENT THREAD REGISTERS ===================
exccause       0x1d (StoreProhibitedCause)
excvaddr       0x0
epc1           0x401d6a14
epc2           0x0
epc3           0x0
epc4           0x0
epc5           0x0
epc6           0x0
eps2           0x0
eps3           0x0
eps4           0x0
eps5           0x0
eps6           0x0
pc             0x40083170          0x40083170 <panic_abort+24>
lbeg           0x4000c349          1073791817
lend           0x4000c36b          1073791851
lcount         0x0                 0
sar            0x10                16
ps             0x60723             395043
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             0x80089900          -2146920192
a1             0x3ffcc570          1073530224
a2             0x3ffcc5b0          1073530288
a3             0x3ffcc5c1          1073530305
a4             0x10                16
a5             0x0                 0
a6             0x0                 0
a7             0x1                 1
a8             0x0                 0
a9             0x1                 1
a10            0x3ffcc5c1          1073530305
a11            0x3ffcc5c1          1073530305
a12            0x3                 3
a13            0x3ffbf108          1073475848
a14            0x60f20             397088
a15            0x1                 1

==================== CURRENT THREAD STACK =====================
#0  0x40083170 in panic_abort (details=0x3ffcc5b0 "assert failed: 0x4008c7d6") at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\panic.c:408
#1  0x40089900 in esp_system_abort (details=0x3ffcc5b0 "assert failed: 0x4008c7d6") at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\esp_system.c:137
#2  0x4008e768 in __assert_func (file=<optimized out>, line=0, func=0x0, expr=0x0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components
ewlib\assert.c:47
#3  0x4008c7d9 in tlsf_free (tlsf=0x3f803294, ptr=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\heap_tlsf.c:964
#4  0x4008d087 in multi_heap_free_impl (p=0x3f835bb4, heap=0x3f803280) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\multi_heap.c:212
#5  multi_heap_free_impl (heap=0x3f803280, p=0x3f835bb4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\multi_heap.c:200
#6  0x40083efa in heap_caps_free (ptr=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\heap_caps.c:382
#7  0x4008e798 in free (ptr=0x3f835bb4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components
ewlib\heap.c:39
#8  0x40264dcc in esp_tls_internal_event_tracker_destroy (h=0x3f835bb4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp-tls\esp_tls_error_capture.c:46
#9  0x40264c6e in esp_tls_conn_destroy (tls=0x3f835bbc) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp-tls\esp_tls.c:111
#10 0x401f452a in base_close (t=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components cp_transport    ransport_ssl.c:270
#11 0x40275f2e in esp_transport_close (t=0x3ffe3288) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components     cp_transport    ransport.c:172
#12 0x401f4b94 in ws_close (t=0x3ffe3300) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components        cp_transport    ransport_ws.c:540
#13 0x40275f2e in esp_transport_close (t=0x3ffe3300) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components     cp_transport    ransport.c:172
#14 0x401bb9a6 in esp_websocket_client_abort_connection (client=0x3f8195c4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c:161
#15 0x401bc4fe in esp_websocket_client_send_with_opcode (client=0x3f8195c4, opcode=<optimized out>, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, len=4892, timeout=500) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c:882
#16 0x401bc52c in esp_websocket_client_send_text (client=0x3f8195c4, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, len=4892, timeout=500) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c:829
#17 0x401b4041 in WebsocketClient::send (len=4892, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, this=0x3ffb350c <serverRouter>) at lib/WebsocketClient/WebsocketClient.cpp:38
#18 WebsocketClient::send (this=0x3ffb350c <serverRouter>, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, len=4892) at lib/WebsocketClient/WebsocketClient.cpp:36
#19 0x40142904 in HsHServerRouter::sendTrigger (this=0x3ffb350c <serverRouter>, triggerType=0x3f416e25 "sysInfo", message=...) at src/HsHServerRouter/Handlers.cpp:57
#20 0x4018cba2 in <lambda(int, int)>::operator() (__closure=0x3ffcc930, prev=<optimized out>, now=<optimized out>) at src/System/SystemInfo.cpp:11
#21 std::_Function_handler<void(int, int), Sys::sendSysInfo()::<lambda(int, int)> >::_M_invoke(const std::_Any_data &, int &&, int &&) (__functor=..., __args#0=<optimized out>, __args#1=<optimized out>) at c:\users\pc\.platformio\packages       oolchain-xtensa-esp32@8.4.0+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:297
#22 0x40196ec0 in std::function<void (int, int)>::operator()(int, int) const (this=0x3ffcc930, __args#0=<optimized out>, __args#1=<optimized out>) at c:\users\pc\.platformio\packages  oolchain-xtensa-esp32@8.4.0+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:687
#23 0x40196f88 in Time::emitMinChange (now=15, prev=14, this=<optimized out>) at src/Time/TimeEvents.cpp:45
#24 Time::emitMinChange (this=<optimized out>, prev=14, now=15) at src/Time/TimeEvents.cpp:39
#25 0x4019710a in Time::monitorMinChange (this=0x3ffb3d74 <hshTime>) at src/Time/TimeEvents.cpp:154
#26 0x40197133 in Time::handleEvents (this=0x3ffb3d74 <hshTime>) at src/Time/TimeEvents.cpp:205
#27 0x40195e79 in Time::loop (this=0x3ffb3d74 <hshTime>) at src/Time/Time.cpp:211
#28 0x401a0d1b in loop () at src/main.cpp:91
#29 0x401c41f4 in loopTask (pvParameters=<optimized out>) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:50

======================== THREADS INFO =========================
  Id   Target Id          Frame
* 1    process 1073531504 0x40083170 in panic_abort (details=0x3ffcc5b0 "assert failed: 0x4008c7d6") at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\panic.c:408
  2    process 1073621988 0x400826a0 in esp_crosscore_int_send_yield (core_id=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
  3    process 1073479388 0x4027549a in esp_pm_impl_waiti () at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_pm\pm_impl.c:849
  4    process 1073477488 0x4027549a in esp_pm_impl_waiti () at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_pm\pm_impl.c:849
  5    process 1073514428 0x400826a0 in esp_crosscore_int_send_yield (core_id=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
  6    process 1073600548 0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
  7    process 1073607912 0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
  8    process 1073548480 0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
  9    process 1073509064 0x400826a0 in esp_crosscore_int_send_yield (core_id=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
  10   process 1073550136 0x400826a0 in esp_crosscore_int_send_yield (core_id=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
  11   process 1073498340 0x40082688 in esp_crosscore_int_send (core_id=<optimized out>, reason_mask=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:140
  12   process 1073552640 0x4000bff0 in ?? ()
  13   process 1073412044 0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
  14   process 1073481800 0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
  15   process 1073471204 0x4000bff0 in ?? ()
  16   process 1073493880 0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
  17   process 1073504704 0x400826a0 in esp_crosscore_int_send_yield (core_id=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
  18   process 1073551920 0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
  19   process 1073412692 0x400826a0 in esp_crosscore_int_send_yield (core_id=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
  20   process 1073586216 0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
  21   process 1073552280 0x400826a0 in esp_crosscore_int_send_yield (core_id=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145


       TCB             NAME PRIO C/B  STACK USED/FREE
---------- ---------------- -------- ----------------
0x3ffcca70         loopTask      5/1       1616/13732
0x3ffe2be4   ComponentsTask      4/4        384/19600
0x3ffbfedc             IDLE      0/0         384/1144
0x3ffbf770             IDLE      0/0         384/1140
0x3ffc87bc  serverRouterTas    10/10         384/4608
0x3ffdd824          OTATask    15/15         384/3648
0x3ffdf4e8  HardwareConfigT    15/15         512/6484
0x3ffd0cc0       SystemTask    10/10        384/15988
0x3ffc72c8   websocket_task      5/5         880/5108
0x3ffd1338              tiT    18/18         480/2580
0x3ffc48e4             mdns      1/1         496/3584
0x3ffd1d00          emac_rx    15/15         416/1628
0x3ffaf7cc             ipc0    24/24         416/1112
0x3ffc0848          Tmr Svc      1/1         368/1676
0x3ffbdee4        esp_timer    22/22         416/3152
0x3ffc3778  uart_event_task    24/24         448/1588
0x3ffc61c0   websocket_task      5/5         448/5540
0x3ffd1a30          sys_evt    20/20         496/1796
0x3ffafa54             ipc1    24/24         416/1112
0x3ffda028            httpd      5/5        768/19228
0x3ffd1b98   arduino_events    19/19         432/3648

==================== THREAD 1 (TCB: 0x3ffcca70, name: 'loopTask') =====================
#0  0x40083170 in panic_abort (details=0x3ffcc5b0 "assert failed: 0x4008c7d6") at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\panic.c:408
#1  0x40089900 in esp_system_abort (details=0x3ffcc5b0 "assert failed: 0x4008c7d6") at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\esp_system.c:137
#2  0x4008e768 in __assert_func (file=<optimized out>, line=0, func=0x0, expr=0x0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components
ewlib\assert.c:47
#3  0x4008c7d9 in tlsf_free (tlsf=0x3f803294, ptr=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\heap_tlsf.c:964
#4  0x4008d087 in multi_heap_free_impl (p=0x3f835bb4, heap=0x3f803280) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\multi_heap.c:212
#5  multi_heap_free_impl (heap=0x3f803280, p=0x3f835bb4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\multi_heap.c:200
#6  0x40083efa in heap_caps_free (ptr=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\heap\heap_caps.c:382
#7  0x4008e798 in free (ptr=0x3f835bb4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components
ewlib\heap.c:39
#8  0x40264dcc in esp_tls_internal_event_tracker_destroy (h=0x3f835bb4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp-tls\esp_tls_error_capture.c:46
#9  0x40264c6e in esp_tls_conn_destroy (tls=0x3f835bbc) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp-tls\esp_tls.c:111
#10 0x401f452a in base_close (t=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components cp_transport    ransport_ssl.c:270
#11 0x40275f2e in esp_transport_close (t=0x3ffe3288) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components     cp_transport    ransport.c:172
#12 0x401f4b94 in ws_close (t=0x3ffe3300) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components        cp_transport    ransport_ws.c:540
#13 0x40275f2e in esp_transport_close (t=0x3ffe3300) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components     cp_transport    ransport.c:172
#14 0x401bb9a6 in esp_websocket_client_abort_connection (client=0x3f8195c4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c:161
#15 0x401bc4fe in esp_websocket_client_send_with_opcode (client=0x3f8195c4, opcode=<optimized out>, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, len=4892, timeout=500) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c:882
#16 0x401bc52c in esp_websocket_client_send_text (client=0x3f8195c4, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, len=4892, timeout=500) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c:829
#17 0x401b4041 in WebsocketClient::send (len=4892, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, this=0x3ffb350c <serverRouter>) at lib/WebsocketClient/WebsocketClient.cpp:38
#18 WebsocketClient::send (this=0x3ffb350c <serverRouter>, data=0x3f82f408 <error: Cannot access memory at address 0x3f82f408>, len=4892) at lib/WebsocketClient/WebsocketClient.cpp:36
#19 0x40142904 in HsHServerRouter::sendTrigger (this=0x3ffb350c <serverRouter>, triggerType=0x3f416e25 "sysInfo", message=...) at src/HsHServerRouter/Handlers.cpp:57
#20 0x4018cba2 in <lambda(int, int)>::operator() (__closure=0x3ffcc930, prev=<optimized out>, now=<optimized out>) at src/System/SystemInfo.cpp:11
#21 std::_Function_handler<void(int, int), Sys::sendSysInfo()::<lambda(int, int)> >::_M_invoke(const std::_Any_data &, int &&, int &&) (__functor=..., __args#0=<optimized out>, __args#1=<optimized out>) at c:\users\pc\.platformio\packages       oolchain-xtensa-esp32@8.4.0+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:297
#22 0x40196ec0 in std::function<void (int, int)>::operator()(int, int) const (this=0x3ffcc930, __args#0=<optimized out>, __args#1=<optimized out>) at c:\users\pc\.platformio\packages  oolchain-xtensa-esp32@8.4.0+2021r2-patch5\xtensa-esp32-elf\include\c++\8.4.0\bits/std_function.h:687
#23 0x40196f88 in Time::emitMinChange (now=15, prev=14, this=<optimized out>) at src/Time/TimeEvents.cpp:45
#24 Time::emitMinChange (this=<optimized out>, prev=14, now=15) at src/Time/TimeEvents.cpp:39
#25 0x4019710a in Time::monitorMinChange (this=0x3ffb3d74 <hshTime>) at src/Time/TimeEvents.cpp:154
#26 0x40197133 in Time::handleEvents (this=0x3ffb3d74 <hshTime>) at src/Time/TimeEvents.cpp:205
#27 0x40195e79 in Time::loop (this=0x3ffb3d74 <hshTime>) at src/Time/Time.cpp:211
#28 0x401a0d1b in loop () at src/main.cpp:91
#29 0x401c41f4 in loopTask (pvParameters=<optimized out>) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:50

==================== THREAD 2 (TCB: 0x3ffe2be4, name: 'ComponentsTask') =====================
#0  0x400826a0 in esp_crosscore_int_send_yield (core_id=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
#1  0x4027bdae in vTaskDelay (xTicksToDelay=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#2  0x400dcc5c in ComponentsTask (pvParameters=<optimized out>) at src/Components/ComponentHandler.cpp:9

==================== THREAD 3 (TCB: 0x3ffbfedc, name: 'IDLE') =====================
#0  0x4027549a in esp_pm_impl_waiti () at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_pm\pm_impl.c:849
#1  0x401d47e0 in esp_vApplicationIdleHook () at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\freertos_hooks.c:63
#2  0x4027b82a in prvIdleTask (pvParameters=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\freertos    asks.c:3987

==================== THREAD 4 (TCB: 0x3ffbf770, name: 'IDLE') =====================
#0  0x4027549a in esp_pm_impl_waiti () at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_pm\pm_impl.c:849
#1  0x401d47e0 in esp_vApplicationIdleHook () at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\freertos_hooks.c:63
#2  0x4027b82a in prvIdleTask (pvParameters=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\freertos    asks.c:3987

==================== THREAD 5 (TCB: 0x3ffc87bc, name: 'serverRouterTas') =====================
#0  0x400826a0 in esp_crosscore_int_send_yield (core_id=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
#1  0x4027bdae in vTaskDelay (xTicksToDelay=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#2  0x40145bbd in serverRouterTask (pvParameters=<optimized out>) at src/HsHServerRouter/HsHServerRouter.cpp:10

==================== THREAD 6 (TCB: 0x3ffdd824, name: 'OTATask') =====================
#0  0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
#1  0x4027bdae in vTaskDelay (xTicksToDelay=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#2  0x4016c057 in OTATask (pvParameters=0x0) at src/OTA/OTA.cpp:68

==================== THREAD 7 (TCB: 0x3ffdf4e8, name: 'HardwareConfigT') =====================
#0  0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
#1  0x4027bdae in vTaskDelay (xTicksToDelay=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#2  0x40156b0e in Modbus::waitResponse (this=0x3ffb3af4 <modbus>) at src/Modbus/Utils.cpp:50
#3  0x40156b30 in Modbus::getResponse (this=0x3ffb3af4 <modbus>, response=0x3f8389a0, bufferSize=32) at src/Modbus/Utils.cpp:62
#4  0x401585e5 in Module::loop (this=0x3f838958) at src/Module/Module.cpp:557
#5  0x40139884 in HwConfig::loop (this=0x3ffb364c <hwConfig>) at src/HardwareConfig/HardwareConfig.cpp:41
#6  HwConfig::loop (this=0x3ffb364c <hwConfig>) at src/HardwareConfig/HardwareConfig.cpp:36
#7  0x401398dc in hwConfigTask (pvParameters=<optimized out>) at src/HardwareConfig/HardwareConfig.cpp:6

==================== THREAD 8 (TCB: 0x3ffd0cc0, name: 'SystemTask') =====================
#0  0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
#1  0x4027bdae in vTaskDelay (xTicksToDelay=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#2  0x4018a7a8 in systemTask (pvParameters=<optimized out>) at src/System/System.cpp:558

==================== THREAD 9 (TCB: 0x3ffc72c8, name: 'websocket_task') =====================
#0  0x400826a0 in esp_crosscore_int_send_yield (core_id=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
#1  0x4008a78c in xQueueSemaphoreTake (xQueue=0x3f817e7c, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#2  0x401eae13 in sys_arch_sem_wait (sem=0x3ffe2bb4, timeout=1000) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\lwip\port\esp32\freertos\sys_arch.c:188
#3  0x401db77c in lwip_select (maxfdp1=53, readset=0x3ffe5d08, writeset=0x0, exceptset=0x3ffe5d00, timeout=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\lwip\lwip\src\api\sockets.c:2153
#4  0x401f6581 in esp_vfs_select (nfds=53, readfds=0x3ffe5d08, writefds=0x0, errorfds=0x3ffe5d00, timeout=0x3ffe5d10) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\vfs\vfs.c:1023
#5  0x401f4859 in base_poll_read (t=0x3ffe2904, timeout_ms=1000) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components cp_transport    ransport_ssl.c:150
#6  0x40275efe in esp_transport_poll_read (t=<optimized out>, timeout_ms=1000) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components   cp_transport    ransport.c:156
#7  0x401f4b7a in ws_poll_read (t=0x3ffe2948, timeout_ms=1000) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components   cp_transport    ransport_ws.c:528
#8  0x40275efe in esp_transport_poll_read (t=<optimized out>, timeout_ms=1000) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components   cp_transport    ransport.c:156
#9  0x401bba61 in esp_websocket_client_task (pv=0x3f80dce0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c:689

==================== THREAD 10 (TCB: 0x3ffd1338, name: 'tiT') =====================
#0  0x400826a0 in esp_crosscore_int_send_yield (core_id=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
#1  0x4008a63e in xQueueReceive (xQueue=0x3f8064fc, pvBuffer=0x3ffd3670, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#2  0x401eaee9 in sys_arch_mbox_fetch (mbox=<optimized out>, msg=0x3ffd3670, timeout=171) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\lwip\port\esp32\freertos\sys_arch.c:330
#3  0x401dbc5a in tcpip_timeouts_mbox_fetch (mbox=<optimized out>, msg=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\lwip\lwip\src\api        cpip.c:110
#4  tcpip_thread (arg=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\lwip\lwip\src\api cpip.c:148

==================== THREAD 11 (TCB: 0x3ffc48e4, name: 'mdns') =====================
#0  0x40082688 in esp_crosscore_int_send (core_id=<optimized out>, reason_mask=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:140
#1  0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:144
#2  0x4008a63e in xQueueReceive (xQueue=0x3f80e924, pvBuffer=0x3ffc4828, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#3  0x401ba17e in _mdns_service_task (pvParameters=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\mdns\mdns.c:4639

==================== THREAD 12 (TCB: 0x3ffd1d00, name: 'emac_rx') =====================
#0  0x4000bff0 in ?? ()
#1  0x4008a065 in vPortClearInterruptMaskFromISR (prev_level=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\freertos\port\xtensa\include/freertos/portmacro.h:571
#2  vPortExitCritical (mux=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\freertos\port\xtensa\port.c:332
#3  0x4027bb7c in ulTaskGenericNotifyTake (uxIndexToWait=<optimized out>, xClearCountOnExit=1, xTicksToWait=4294967295) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\freertos asks.c:5401
#4  0x401cde79 in emac_esp32_rx_task (arg=0x3f806bc4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_eth\src\esp_eth_mac_esp.c:258

==================== THREAD 13 (TCB: 0x3ffaf7cc, name: 'ipc0') =====================
#0  0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
#1  0x4008a78c in xQueueSemaphoreTake (xQueue=0x3ffaf168, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#2  0x4008244b in ipc_task (arg=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_ipc\src\esp_ipc.c:54

==================== THREAD 14 (TCB: 0x3ffc0848, name: 'Tmr Svc') =====================
#0  0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
#1  0x4027c977 in prvProcessTimerOrBlockTask (xListWasEmpty=<optimized out>, xNextExpireTime=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#2  prvTimerTask (pvParameters=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\freertos imers.c:597

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

==================== THREAD 16 (TCB: 0x3ffc3778, name: 'uart_event_task') =====================
#0  0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
#1  0x4008a63e in xQueueReceive (xQueue=0x3f80e6d4, pvBuffer=0x3ffdfec0, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#2  0x401c3744 in HardwareSerial::_uartEventTask (args=0x3ffb6f1c <Serial1>) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/cores/esp32/HardwareSerial.cpp:296

==================== THREAD 17 (TCB: 0x3ffc61c0, name: 'websocket_task') =====================
#0  0x400826a0 in esp_crosscore_int_send_yield (core_id=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
#1  0x4008a78c in xQueueSemaphoreTake (xQueue=0x3f817d84, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#2  0x4027b6cc in xQueueTakeMutexRecursive (xMutex=0x3f817d84, xTicksToWait=4294967295) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\freertos\queue.c:731
#3  0x401bba31 in esp_websocket_client_task (pv=0x3f8195c4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c:602

==================== THREAD 18 (TCB: 0x3ffd1a30, name: 'sys_evt') =====================
#0  0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
#1  0x4008a63e in xQueueReceive (xQueue=0x3f80671c, pvBuffer=0x3ffd2990, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#2  0x4027a228 in esp_event_loop_run (event_loop=0x3ffd18c4, ticks_to_run=4294967295) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_event\esp_event.c:566
#3  0x4027a3a3 in esp_event_loop_run_task (args=0x3ffd18c4) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_event\esp_event.c:115

==================== THREAD 19 (TCB: 0x3ffafa54, name: 'ipc1') =====================
#0  0x400826a0 in esp_crosscore_int_send_yield (core_id=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
#1  0x4008a78c in xQueueSemaphoreTake (xQueue=0x3ffaf9f4, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#2  0x4008244b in ipc_task (arg=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_ipc\src\esp_ipc.c:54

==================== THREAD 20 (TCB: 0x3ffda028, name: 'httpd') =====================
#0  0x400826a0 in esp_crosscore_int_send_yield (core_id=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
#1  0x4008a78c in xQueueSemaphoreTake (xQueue=0x3f80aa44, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#2  0x401eae02 in sys_arch_sem_wait (sem=0x3ffda1e8, timeout=0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\lwip\port\esp32\freertos\sys_arch.c:184
#3  0x401db77c in lwip_select (maxfdp1=50, readset=0x3ffd9f90, writeset=0x0, exceptset=0x0, timeout=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\lwip\lwip\src\api\sockets.c:2153
#4  0x401f6581 in esp_vfs_select (nfds=50, readfds=0x3ffd9f90, writefds=0x0, errorfds=0x0, timeout=0x0) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\vfs\vfs.c:1023
#5  0x401cf6cc in httpd_server (hd=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_http_server\src\httpd_main.c:205
#6  httpd_thread (arg=0x3f808390) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_http_server\src\httpd_main.c:250

==================== THREAD 21 (TCB: 0x3ffd1b98, name: 'arduino_events') =====================
#0  0x400826a0 in esp_crosscore_int_send_yield (core_id=1) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\crosscore_int.c:145
#1  0x4008a63e in xQueueReceive (xQueue=0x3f80663c, pvBuffer=0x3ffd4670, xTicksToWait=<optimized out>) at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\hal\esp32\include/hal/cpu_ll.h:39
#2  0x401a3e4f in _arduino_event_task (arg=<optimized out>) at C:/Users/Pc/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFiGeneric.cpp:304


======================= 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 0x13843 R XA
.dram0.data 0x3ffb0000 0x33ec RW A
.ext_ram_noinit 0x3f800000 0x0 RW
.noinit 0x3ffb33ec 0x0 RW
.flash.appdesc 0x3f400020 0x100 R  A
.flash.rodata 0x3f400120 0x42314 RW A
.flash.text 0x400d0020 0x1ad123 R XA
.phyiram.21 0x4027d144 0x61 R XA
.phyiram.19 0x4027d1a8 0x10e R XA
.phyiram.20 0x4027d2b8 0x9e R XA
.phyiram.18 0x4027d358 0x2d7 R XA
.phyiram.0 0x4027d630 0x2b R XA
.phyiram.1 0x4027d65c 0x7d R XA
.phyiram.2 0x4027d6dc 0x21e R XA
.phyiram.3 0x4027d8fc 0x9e R XA
.phyiram.4 0x4027d99c 0x12c R XA
.phyiram.6 0x4027dac8 0x9a R XA
.phyiram.7 0x4027db64 0x223 R XA
.phyiram.8 0x4027dd88 0x183 R XA
.phyiram.9 0x4027df0c 0x8e R XA
.phyiram.12 0x4027df9c 0x188 R XA
.phyiram.14 0x4027e124 0xba R XA
.phyiram.13 0x4027e1e0 0xef R XA
.phyiram.15 0x4027e2d0 0x1cb R XA
.phyiram.17 0x4027e49c 0x72 R XA
.phyiram.11 0x4027e510 0x78 R XA
.phyiram.16 0x4027e588 0xdc R XA
.phyiram.23 0x4027e664 0x4a R XA
.phyiram.24 0x4027e6b0 0x31 R XA
.phyiram.25 0x4027e6e4 0x103 R XA
.phyiram.26 0x4027e7e8 0x87 R XA
.iram0.data 0x40093c48 0x0 RW
.iram0.bss 0x40093c48 0x0 RW
.dram0.heap_start 0x3ffb9e78 0x0 RW
.coredump.tasks.data 0x3ffcca70 0x164 RW
.coredump.tasks.data 0x3ffcc4b0 0x5b0 RW
.coredump.tasks.data 0x3ffe2be4 0x164 RW
.coredump.tasks.data 0x3fff1820 0x180 RW
.coredump.tasks.data 0x3ffbfedc 0x164 RW
.coredump.tasks.data 0x3ffbfd50 0x180 RW
.coredump.tasks.data 0x3ffbf770 0x164 RW
.coredump.tasks.data 0x3ffbf5e0 0x180 RW
.coredump.tasks.data 0x3ffc87bc 0x164 RW
.coredump.tasks.data 0x3ffc8630 0x180 RW
.coredump.tasks.data 0x3ffdd824 0x164 RW
.coredump.tasks.data 0x3ffdd690 0x180 RW
.coredump.tasks.data 0x3ffdf4e8 0x164 RW
.coredump.tasks.data 0x3ffdf2e0 0x200 RW
.coredump.tasks.data 0x3ffd0cc0 0x164 RW
.coredump.tasks.data 0x3ffd0b30 0x180 RW
.coredump.tasks.data 0x3ffc72c8 0x164 RW
.coredump.tasks.data 0x3ffe5ab0 0x370 RW
.coredump.tasks.data 0x3ffd1338 0x164 RW
.coredump.tasks.data 0x3ffd3520 0x1e0 RW
.coredump.tasks.data 0x3ffc48e4 0x164 RW
.coredump.tasks.data 0x3ffc46e0 0x1f0 RW
.coredump.tasks.data 0x3ffd1d00 0x164 RW
.coredump.tasks.data 0x3ffd4d70 0x1a0 RW
.coredump.tasks.data 0x3ffaf7cc 0x164 RW
.coredump.tasks.data 0x3ffaf620 0x1a0 RW
.coredump.tasks.data 0x3ffc0848 0x164 RW
.coredump.tasks.data 0x3ffc06d0 0x170 RW
.coredump.tasks.data 0x3ffbdee4 0x164 RW
.coredump.tasks.data 0x3ffbdd30 0x1a0 RW
.coredump.tasks.data 0x3ffc3778 0x164 RW
.coredump.tasks.data 0x3ffdfda0 0x1c0 RW
.coredump.tasks.data 0x3ffc61c0 0x164 RW
.coredump.tasks.data 0x3ffc5ff0 0x1c0 RW
.coredump.tasks.data 0x3ffd1a30 0x164 RW
.coredump.tasks.data 0x3ffd2860 0x1f0 RW
.coredump.tasks.data 0x3ffafa54 0x164 RW
.coredump.tasks.data 0x3ffba680 0x1a0 RW
.coredump.tasks.data 0x3ffda028 0x164 RW
.coredump.tasks.data 0x3ffd9d20 0x300 RW
.coredump.tasks.data 0x3ffd1b98 0x164 RW
.coredump.tasks.data 0x3ffd4550 0x1b0 RW

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

@espressif-bot espressif-bot added the Status: Opened Issue is new label May 17, 2024
@github-actions github-actions bot changed the title Strange websocket crashes at runtime (Arduino as a component) Strange websocket crashes at runtime (Arduino as a component) (IDFGH-12834) May 17, 2024
@hitecSmartHome
Copy link
Author

I have tried to guard the send with a mutex

boolean WebsocketClient::send(const char* data, size_t len) {
    if( !isConnected() || !data || !len ){ return false; }
    std::lock_guard<std::mutex> lock(sendMutex);
    if (esp_websocket_client_send_text(client, data, len, pdMS_TO_TICKS(500)) != -1) {
        return true;
    }
    return false;
}

Doesnt matter. The resulted crash is the same. It's inside esp_websocket_client_send_text

@hitecSmartHome
Copy link
Author

So it seems to me that it crashes when I reinit the websocket connection after a stop.

Sometimes my app calls this method

boolean WebsocketClient::halt() {
    if( xSemaphoreTake( sendSemaphore, pdMS_TO_TICKS(1000) ) != pdTRUE ){ return false; }
    disconnect();
    stop();
    if( xSemaphoreGive( sendSemaphore )  != pdTRUE ){ return false; }
    return true;
}

which calls these

void WebsocketClient::disconnect() {
    if (!isConnected()) {
        return;
    }
    esp_websocket_client_close(client, pdMS_TO_TICKS(1000));
}

void WebsocketClient::stop() {
    setAutoReconnect(false);
    esp_websocket_client_destroy(client);
}

void WebsocketClient::setAutoReconnect(boolean autoReconnect) {
    config.disable_auto_reconnect = !autoReconnect;
}

After it reinits with this

void WebsocketClient::init() {
    client = esp_websocket_client_init(&config);
    esp_websocket_register_events(
        client,
        WEBSOCKET_EVENT_ANY,
        reinterpret_cast<esp_event_handler_t>(eventHandler),
        static_cast<void*>(this));
    esp_websocket_client_start(client);
}

And I've got a crash

0x400839bd: panic_abort at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\panic.c line 408
0x4008a131: esp_system_abort at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_system\esp_system.c line 137
0x4008f1a5: __assert_func at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\newlib\assert.c line 47
0x4008a725: xPortEnterCriticalTimeout at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_hw_support\include/soc/spinlock.h line 75
0x4008afc6: xQueueSemaphoreTake at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\freertos\port\xtensa\include/freertos/portmacro.h line 578
0x4027b0c1: xQueueTakeMutexRecursive at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\freertos\queue.c line 731
0x401bcf96: esp_websocket_client_send_with_opcode at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c line 854
0x401bd025: esp_websocket_client_send_text at C:\Users\Pc\.platformio\packages\framework-espidf@3.40406.240122\components\esp_websocket_client\esp_websocket_client.c line 829
0x401b43af: WebsocketClient::send(char const*, unsigned int) at lib/WebsocketClient/WebsocketClient.cpp line 41
0x401428b6: HsHServerRouter::reply(ArduinoJson::V700PB2::JsonDocument, bool) at src/HsHServerRouter/Handlers.cpp line 14
0x40140fbc: HsHServerRouter::dbDownload(ArduinoJson::V700PB2::JsonDocument, ArduinoJson::V700PB2::JsonDocument) at src/HsHServerRouter/DatabaseHandlers.cpp line 30
0x401411d7: HsHServerRouter::handleDBReq(std::__cxx11::basic_string  , std::allocator  >&, ArduinoJson::V700PB2::JsonDocument, ArduinoJson::V700PB2::JsonDocument) at src/HsHServerRouter/DatabaseHandlers.cpp line 7
0x4014589d: HsHServerRouter::handleRequest(ArduinoJson::V700PB2::JsonDocument, ArduinoJson::V700PB2::JsonDocument) at src/HsHServerRouter/HsHServerRouter.cpp line 123
0x40145cc6: HsHServerRouter::handleQueue() at src/HsHServerRouter/HsHServerRouter.cpp line 99
0x40145d14: HsHServerRouter::handleQueue() at src/HsHServerRouter/HsHServerRouter.cpp line 157
0x40145d3f: HsHServerRouter::loop() at src/HsHServerRouter/HsHServerRouter.cpp line 152
0x40145d5a: serverRouterTask(void*) at src/HsHServerRouter/HsHServerRouter.cpp line 9

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Opened Issue is new Type: Bug bugs in IDF
Projects
None yet
Development

No branches or pull requests

3 participants