硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1262|回复: 6
收起左侧

[LwIP] lwip send 接口卡死

[复制链接]

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2024-10-15 14:48:05 | 显示全部楼层 |阅读模式
使用LWIP协议栈进行TCP通信时,设备作为TCP服务器运行了一段时间,发现卡死在发送接口:send(socket_num,(const void*)msg,len,0)。此外,经过反复测试,当设备通过公司内部网络与PC通信时,很容易重现(可能经过复杂的网络交换,在1小时内);如果设备直接连接到PC,则可能需要很长时间才能再现。这可能是什么原因?异常情况下的消息如下,但看不到有用信息:(192.168.1.114是服务器)


21190   153.099232  192.168.2.114   192.168.2.36    TCP 79  8080 → 11549 [PSH, ACK] Seq=38152 Ack=10695 Win=2062 Len=25 [TCP segment of a reassembled PDU]21191   153.099397  192.168.2.36    192.168.2.114   TCP 60  11549 → 8080 [PSH, ACK] Seq=10695 Ack=38177 Win=64010 Len=621192   153.105834  192.168.2.114   192.168.2.36    TCP 60  8080 → 11549 [ACK] Seq=38177 Ack=10701 Win=2056 Len=021193   153.106100  192.168.2.114   192.168.2.36    TCP 79  8080 → 11549 [PSH, ACK] Seq=38177 Ack=10701 Win=2056 Len=25 [TCP segment of a reassembled PDU]21194   153.106194  192.168.2.36    192.168.2.114   TCP 60  11549 → 8080 [PSH, ACK] Seq=10701 Ack=38202 Win=63985 Len=621201   153.319122  192.168.2.36    192.168.2.114   TCP 60  [TCP Retransmission] 11549 → 8080 [PSH, ACK] Seq=10701 Ack=38202 Win=63985 Len=621211   153.620255  192.168.2.36    192.168.2.114   TCP 60  [TCP Retransmission] 11549 → 8080 [PSH, ACK] Seq=10701 Ack=38202 Win=63985 Len=6
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2024-10-16 10:08:53 | 显示全部楼层
可以优先测试下你的移植稳定性,百万ping包,无延迟测试

https://www.armbbs.cn/forum.php?mod=viewthread&tid=99151


这个没问题了,说明你的模板基本问题不大,应该是应用代码问题


QQ20241016-100911.png
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2024-10-16 15:57:02 | 显示全部楼层
eric2013 发表于 2024-10-16 10:08
可以优先测试下你的移植稳定性,百万ping包,无延迟测试

https://www.armbbs.cn/forum.php?mod=viewthre ...

今天发现lwip send接口可以继续往下追,最终发现是卡死在“sys_lock_tcpip_core”这个锁里面了,,,,,,这块代码不是lwip自带的吗,还有问题?
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2024-10-16 17:22:21 | 显示全部楼层
leo_wang 发表于 2024-10-16 15:57
今天发现lwip send接口可以继续往下追,最终发现是卡死在“sys_lock_tcpip_core”这个锁里面了,,,,, ...

百万ping包无问题
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2024-10-17 10:19:41 | 显示全部楼层
leo_wang 发表于 2024-10-16 15:57
今天发现lwip send接口可以继续往下追,最终发现是卡死在“sys_lock_tcpip_core”这个锁里面了,,,,, ...

那看来是多任务操作有问题,你当前是仅在一个任务里面操作吧。
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2024-10-28 10:00:37 | 显示全部楼层
eric2013 发表于 2024-10-17 10:19
那看来是多任务操作有问题,你当前是仅在一个任务里面操作吧。

多任务,这个内核锁tcpip内核线程本身会循环使用,send接口是另外一个任务里面调用的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2024-10-29 09:58:24 | 显示全部楼层
leo_wang 发表于 2024-10-28 10:00
多任务,这个内核锁tcpip内核线程本身会循环使用,send接口是另外一个任务里面调用的

那确实是这个地方出问题了,多任务方式异常了,最终现象是这个多任务底层lock互斥出问题了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-10 06:37 , Processed in 0.288304 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表