硬汉嵌入式论坛

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

[LwIP] LwIP出现了未应答队列指针指向自己,导致死循环问题

[复制链接]

1

主题

11

回帖

14

积分

新手上路

积分
14
发表于 2021-5-8 11:14:04 | 显示全部楼层 |阅读模式
测试LwIP发现,tcp_output函数中,未应答队列的指针总指向自己,导致循环不能出来。有人遇到这种情况吗?

/* useg should point to last segment on unacked queue */
  useg = pcb->unacked;
  if (useg != NULL) {
    for (; useg->next != NULL; useg = useg->next);
  }


内存分配使用内存池方式。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2021-5-9 08:27:49 | 显示全部楼层
帮顶,没遇到过。
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2024-5-24 17:08:09 | 显示全部楼层
你好,你问题解决了吗,我也遇到同样的问题,用的最新版2.1.2
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2024-5-24 17:48:05 | 显示全部楼层
【刚刚发的不知到有没有发送完成,这里再发一遍】
楼主问题我也遇到了,请问楼主解决了吗?用的最新版的2.1.2
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2024-9-10 10:21:56 | 显示全部楼层
冰凌 发表于 2024-5-24 17:48
【刚刚发的不知到有没有发送完成,这里再发一遍】
楼主问题我也遇到了,请问楼主解决了吗?用的最新版的2. ...

已经解决,我用的是2.2.0,我这边原因是在tcp_output函数执行过程中有网口中断发生,中断中又执行了tcp_output函数,导致缓存链表被破环了,导致unack指向自己,我目前解决方式是tcp_output函数执行开始加上锁,避免tcp_output重入。
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2024-12-9 16:32:43 | 显示全部楼层
出现这种问题普遍都是使用lwip RAW接口。lwip raw接口都是非线程安全的接口,所以很容易出现类似的“不可重入性问题”。使用RAW接口的时候需要注意加锁,多说一句,socket接口这么好用,为什么选择用RAW接口呢
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2024-12-14 10:33:55 | 显示全部楼层
小白一枚,遇到同样问题,请教如何加锁,谢谢
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2024-12-14 10:34:26 | 显示全部楼层
小白一枚,遇到同样问题,请教如何加锁,谢谢
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2024-12-14 10:34:49 | 显示全部楼层
冰凌 发表于 2024-9-10 10:21
已经解决,我用的是2.2.0,我这边原因是在tcp_output函数执行过程中有网口中断发生,中断中又执行了tcp_o ...

小白一枚,遇到同样问题,请教如何加锁,谢谢
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2024-12-14 10:35:19 | 显示全部楼层
鬼金羊 发表于 2024-12-9 16:32
出现这种问题普遍都是使用lwip RAW接口。lwip raw接口都是非线程安全的接口,所以很容易出现类似的“不可重 ...

不用操作系统,不能使用socket呀
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 04:34 , Processed in 0.257555 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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