Closed trumpfounder closed 3 years ago
另外调试过程中还发现一个现象,不知道是否与此相关。
就是若在tcp_callback_export.go
中的tcpRecvFn
函数中输出log,会看到core/tcp_conn.go
在调用tcpConn.Close()
后,会收到大量重复包,持续发送10~20s,内容类似:
[23 3 3 0 34 108 127 214 67 52 169 3 90 67 0 42 50 137 212 2 84 210 168 174 236 94 37 134 175 166 92 75 169 212 118 225 233 94 234]
在tcpRecvFn
函数中会走入switch的LWIP_ERR_CLSD
分支,但即便LWIP_ERR_CLSD
分支里调用了C.tcp_shutdown
关闭了rx侧还是会持续收到。
为何仅在close之后才会发送?是否有办法通知lwIP侧在入口处彻底不再接收这些包?感觉也是会消耗性能的
是否有内存泄漏我觉得你可以在桌面端测试,没必要在 IOS 上做。
leaf 使用的 lwip 跟 go-tun2socks 的在配置上不太一样,前者 lwip 配置了固定大小的 heap,后者没有使用上限,我之前测试 leaf speedtest 上传是很稳定的,go-tun2socks 必崩。
我个人已经基本不用 go-tun2socks,所以不会再去优化它,go-tun2socks 在内存和性能两方面都有缺陷,都是因为用了 Go 的关系没有简单解决办法。根据我自己的经验,我建议你不要浪费时间去把 go-tun2socks 跑在 IOS 上,因为有个 15MB 内存限制,以及 Go 的应用本来就很难控制内存使用。
非常感谢回复。
那我也将方向转向leaf和rust吧(虽然之前也花了不少时间研究有点可惜~_~),如果有问题我再回复。
最后想请教一下,我想研究一下lwIP(在使用层面),但不知道会不会是个坑?有什么建议吗?
This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days
Hello,我基于 go-tun2socks 项目构建了自己的 Trojan for iOS 客户端,平时使用开网页、TG、油管都没有大问题,但连续使用数小时后会容易断开,为此我做了一些测试。
我的测试思路是:先完成一次UDP和TCP连接,观察内存情况记为A,之后无论如何折腾,内存都应该恢复到A的水平。
操作流程如下:
以上猜测有memory leak。
然后我又进行了以下操作:
runtime.MemProfileRate = 1024
(再小导出时很容易崩了),会多占2M左右内存以上猜测有Go以外的memory leak,有可能是在通过Go调用lwIP时刻有未处理到位的地方(没有释放、或是上传时没有处理到?)。
以上纯属个人猜测,请各位大佬指正。
另外近期我注意到 go-tun2socks 上有说新的项目 https://github.com/eycorsican/leaf ,我按照指示安装了TestFlight,使用SpeedTest上传时遇到了相同的问题。(由于是Rust的,我还没来得及细读源码以及编译使用,也就没能用Xcode进行内存使用跟踪)