10 W801 WIFI 及 MQTT 长时间链接后出现 TCP 关闭, 重连 wifi 也失败, 只能通过重启设备才能正常运行

发布于 2022-05-10 14: 06: 41

(情况补充) :
测试后找到断点 socket 读取数据显示 ERR_CLSD, 也就是 socket 关闭, 然后重启 mqtt 客户端能重新建立, 但是一读数据就秒断.
(问题)
使用 W801 的 MQTTdemo 向阿里云以及 Thingsboard 传输数据, 连接 3 个半小时后, 出现 mqtt stop 排查对应错误码为 TCP 连接断开, 测试了多次, 均出现这种情况.
具体测试情形如下:
1. 只上传数据, 不接受阿里云下行数据, 9 个小时后中断
2. 每 5s 上传数据, 每 7s 读取 packet 下行指令, 3 个小时后中断
3. 循环读取 packet 下行指令, 每 5s 上传数据, 1 个半小时后中断
(推测原因)
1. wifi 链接有问题, 长时间链接后自动关闭
2. SDK WIFI 相关某个位置内存泄漏导致堆栈溢出使得 WIFI 链接不正常 重连也失败
(问题截图)
2. png
3. png
4. png
5. png
6. png

查看更多

关注者
0
被浏览
2. 7k
2 个回答
ldd200888
ldd200888 2022-05-12
这家伙很懒, 什么也没写!

Esp32 也有这样的问题

SK2024
SK2024 2022-05-12
这家伙很懒, 什么也没写!

找到问题原因了, 使用 cJSON 库的 cJSON_Print 函数将 Json 体转化为字符串时, 会开辟内存, 使用后需要使用 cJSON_free 函数进行内存释放, 否则循环次数多了之后, 会导致内存泄漏. 我的原因是这样.

撰写答案

请登录后再发布答案, 点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览