当前位置: 首页 > news >正文

关于ESP32 S3 IDF5.5.1版本中使用esp_websocket_client库的BUG记录。

1、现象描述:在使用ESP官方组件库提供的esp_websocket_client库时,发现一个BUG:在多线程并发访问的环境下特别是ESP32 S3的双核架构中,例如一个任务负责向服务器端发送数据,另一个默认websocket任务在ondata事件回调中读取接受数据时。如果网络出现波动延迟,导致底层网络数据接收和发送超时,则会触发erro事件。接收线程和发送线程同时报错并触发erro事件时,都会调用该组件库的同一个方法。即中断websocket连接的方法。在该方法中会断开底层Tcp连接并释放协议栈资源。但是这个方法并没有做任何保护机制(锁),导致多线程并发访问时会发生资源竞争,最终导致协议栈资源在同一个方法中重复释放,最终导致内存报错,整个程序崩溃。

解决办法:在发送线程中所调用的发送接口中,注释掉多线程并发访问可能会导致程序崩溃中断连接方法。即发送失败不做清理资源的操作,而是通过触发erro事件,并在应用层的事件回调处理中再调用断开连接的api来清理资源,并重新建立连接。直接避免接收线程和发送线程的并发访问。

2、现象描述:同样的在同时两个线程并发,一个接收数据,一个发送数据。会随机性的,不确定的导致内存访问空指针错误,而导致程序崩溃。崩溃为止在send接口底层调用ssl重新认证的方法中。

解决办法:进入menuconfig设置,关闭websocket关于SSL重新认证的配置选项即可。

http://www.gsyq.cn/news/132738.html

相关文章:

  • 【自动驾驶基础】LDM(Latent Diffusion Model) 要点总结
  • 如何解决OpenEuler报错checking for liblz4... no configure: error: Package requirements (liblz4)问题
  • 一个人能保持松弛感的来源
  • Excalidraw搜索功能实测:快速定位画布元素
  • 小批量硅胶复模,±0.1mm精度,比钢模具少40%,品质保障
  • RabbitMQ助力大数据领域的数据实时同步
  • Excalidraw备份策略建议:定期导出防丢失
  • 我的年终总结2025
  • Cordova与OpenHarmony高级搜索系统
  • 我发现LLM实时翻译方言问诊 某县医院误诊率直降30%
  • 水作业.2
  • 基于Spring Boot的流浪动物救助平台的设计与实现毕业设计
  • AOP技术
  • vim 十六进制显示模式
  • 3.3
  • CordovaOpenHarmony使用指南文档
  • 3.5
  • CF1088E Ehab and a component choosing problem
  • 如何在 Power BI 中基于多个列应用 RLS
  • 大语言模型作为游戏引擎:是炒作还是革命?
  • 3.8
  • 项目审批管理系统测评:6款助力流程化审批与规范化管理的实用方案
  • EE308FZ_Fifth Assignment_Alpha Sprint_Sprint Essay2
  • 碎片化学习:DeepSeek 定制个人技术成长计划与知识点拆解
  • 【Linux命令大全】001.文件管理之diff命令(实操篇)
  • JAVA|文件管理系统 V3.0
  • 【计算机毕业设计案例】基于springboot的养宠物指南服务平台系统的设计与实现宠物养护全周期的知识服务与社群互动设计系统(程序+文档+讲解+定制)
  • 创建目标模块 Cordova 与 OpenHarmony 混合开发实战
  • 个人财务管理工具 HomeBank v5.9.6 中文便携版
  • 进度跟踪模块 Cordova 与 OpenHarmony 混合开发实战