espressif / esp-idf

Espressif IoT Development Framework. Official development framework for Espressif SoCs.
Apache License 2.0
13.61k stars 7.27k forks source link

new crashes in esp_websocket_client with tls (IDFGH-8951) #10363

Closed 0xFEEDC0DE64 closed 1 year ago

0xFEEDC0DE64 commented 1 year ago

Hi,

I just upgraded the esp-idf to latest master in our firmware project and I experience a lot crashes every time the websocket connection drops to the server, I don't know where to start debugging in this case.

Is there some memory corruption going on while mbedtls trying to free its resources?

E (39606) transport_ws transport_ws.c:266 _ws_write(): Error transport_poll_write                               
E (39606) WEBSOCKET_CLIENT esp_websocket_client.c:1076 esp_websocket_client_send_with_opcode(): esp_transport_write() returned 0, last_error=ESP_OK, tls_error_code=0, tls_flags=0, errno=0                                                                                                                                  
E (39616) WEBSOCKET_CLIENT esp_websocket_client.c:241 esp_websocket_client_error(): esp_transport_write() returned 0, last_error=ESP_OK, tls_error_code=0, tls_flags=0, errno=0
W (39636) ESPOCPP OcppSocket.cpp:122 websocketClientEventHandler(): WEBSOCKET_EVENTS event_id=WEBSOCKET_EVENT_ERROR esp_transport_write() returned 0, last_error=ESP_OK, tls_error_code=0, tls_flags=0, errno=0
E (39656) transport_base transport_ssl.c:169 base_poll_read(): poll_read select error 0, errno = Success, fd = 58                                             
E (39666) WEBSOCKET_CLIENT esp_websocket_client.c:867 esp_websocket_client_task(): esp_transport_poll_read() returned -1, last_error=ESP_OK, tls_error_code=0, tls_flags=0, errno=119                                                                                                                                        
E (39676) WEBSOCKET_CLIENT esp_websocket_client.c:241 esp_websocket_client_error(): esp_transport_poll_read() returned -1, last_error=ESP_OK, tls_error_code=0, tls_flags=0, errno=119
W (39696) ESPOCPP OcppSocket.cpp:122 websocketClientEventHandler(): WEBSOCKET_EVENTS event_id=WEBSOCKET_EVENT_ERROR esp_transport_poll_read() returned -1, last_error=ESP_OK, tls_error_code=0, tls_flags=0, errno=119
I (39716) WEBSOCKET_CLIENT esp_websocket_client.c:212 esp_websocket_client_abort_connection(): Reconnect after 10000 ms                                       
W (39726) ESPOCPP OcppSocket.cpp:136 websocketClientEventHandler(): WEBSOCKET_EVENTS event_id=WEBSOCKET_EVENT_DISCONNECTED

assert failed: heap_caps_free heap_caps.c:351 (heap != NULL && "free() target pointer is outside heap areas")

Backtrace: 0x40081b56:0x3ffc4420 0x4008a5f5:0x3ffc4440 0x400929ba:0x3ffc4460 0x4008239f:0x3ffc4580 0x40092a15:0x3ffc45a0 0x4025dcb5:0x3ffc45c0 0x4025da83:0x3ffc45e0 0x4025ee79:0x3ffc4600 0x402f9297:0x3ffc4620 0x4025f655:0x3ffc4640 0x402f9297:0x3ffc4660 0x4021fc91:0x3ffc4680 0x4022108e:0x3ffc46c0 0x402210bd:0x3ffc4710 0x4011c9d7:0x3ffc4730 0x401c7505:0x3ffc47e0 0x401c5390:0x3ffc48a0 0x4011bcf6:0x3ffc4900 0x40119ee0:0x3ffc4940 0x401177f1:0x3ffc4980 0x4021f4e4:0x3ffc4a50 0x400d8493:0x3ffc4ac0 0x402fe827:0x3ffc4b50 0x4008d0fd:0x3ffc4b90

0x40081b56: panic_abort at <firmware-dir>/esp-idf/components/esp_system/panic.c:427
0x4008a5f5: esp_system_abort at <firmware-dir>/esp-idf/components/esp_system/port/esp_system_chip.c:68
0x400929ba: __assert_func at <firmware-dir>/esp-idf/components/newlib/assert.c:78
0x4008239f: heap_caps_free at <firmware-dir>/esp-idf/components/heap/heap_caps.c:351
0x40092a15: free at <firmware-dir>/esp-idf/components/newlib/heap.c:39
0x4025dcb5: esp_tls_internal_event_tracker_destroy at <firmware-dir>/esp-idf/components/esp-tls/esp_tls_error_capture.c:46
0x4025da83: esp_tls_conn_destroy at <firmware-dir>/esp-idf/components/esp-tls/esp_tls.c:119
0x4025ee79: base_close at <firmware-dir>/esp-idf/components/tcp_transport/transport_ssl.c:312
0x402f9297: esp_transport_close at <firmware-dir>/esp-idf/components/tcp_transport/transport.c:172
0x4025f655: ws_close at <firmware-dir>/esp-idf/components/tcp_transport/transport_ws.c:549
0x402f9297: esp_transport_close at <firmware-dir>/esp-idf/components/tcp_transport/transport.c:172
0x4021fc91: esp_websocket_client_abort_connection at <firmware-dir>/esp-protocols/components/esp_websocket_client/esp_websocket_client.c:208
0x4022108e: esp_websocket_client_send_with_opcode at <firmware-dir>/esp-protocols/components/esp_websocket_client/esp_websocket_client.c:1088
0x402210bd: esp_websocket_client_send_text at <firmware-dir>/esp-protocols/components/esp_websocket_client/esp_websocket_client.c:1021
0x4011c9d7: espcpputils::websocket_client::send_text(std::basic_string_view<char, std::char_traits<char> >, unsigned long) at <firmware-dir>/components/espcpputils/src/wrappers/websocket_client.h:42
 (inlined by) GoeOcpp::OcppClientSocket::sendTXT(std::basic_string_view<char, std::char_traits<char> >) at <firmware-dir>/components/mobile-esp-firmware/src/GoeOcpp/Core/OcppSocket.cpp:73
0x401c7505: GoeOcpp::OcppOperation::sendReq(GoeOcpp::OcppSocket&) at <firmware-dir>/components/mobile-esp-firmware/src/GoeOcpp/Core/OcppOperation.cpp:157
0x401c5390: GoeOcpp::OcppConnection::loop() at <firmware-dir>/components/mobile-esp-firmware/src/GoeOcpp/Core/OcppConnection.cpp:51
0x4011bcf6: GoeOcpp::ocppEngine_loop() at <firmware-dir>/components/mobile-esp-firmware/src/GoeOcpp/Core/OcppEngine.cpp:92
0x40119ee0: GoeOcpp::OCPP_loop() at <firmware-dir>/components/mobile-esp-firmware/src/GoeOcpp/GoeOcpp.cpp:187
0x401177f1: goe::ocpp_update() at <firmware-dir>/components/mobile-esp-firmware/src/ocpp_goe.cpp:119
0x4021f4e4: espcpputils::SchedulerTask::loop() at <firmware-dir>/components/espcpputils/src/schedulertask.cpp:44
0x400d8493: app_main at <firmware-dir>/components/mobile-esp-firmware/src/main.cpp:284 (discriminator 3)
0x402fe827: main_task at <firmware-dir>/esp-idf/components/freertos/app_startup.c:204 (discriminator 13)
0x4008d0fd: vPortTaskWrapper at <firmware-dir>/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/port.c:150
0xFEEDC0DE64 commented 1 year ago

This seems to be a problem fixable in esp-protocols, I might do a pull request there soon