Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

xfrp项目内存泄漏 #66

Open
workmengxue opened this issue Nov 1, 2024 · 5 comments
Open

xfrp项目内存泄漏 #66

workmengxue opened this issue Nov 1, 2024 · 5 comments

Comments

@workmengxue
Copy link

workmengxue commented Nov 1, 2024

运行xfrp项目在小内存设备上,观测available内存,每次tcp连接后会泄漏408字节。

@liudf0716
Copy link
Owner

@workmengxue 谢谢反馈。请问是什么版本测试发现的呢?

@workmengxue
Copy link
Author

workmengxue commented Nov 1, 2024 via email

@liudf0716
Copy link
Owner

@workmengxue 好的,我自己验证一下,再次感谢反馈!

@lawishere
Copy link

config.c 里面涉及的 strdup 要回收
clear_main_control() 里面有个 tcp_mux 这里似乎作者想把状态机恢复到一个初始状态,没实现完,这里有泄漏,我认为做一个 delstream 行为会合理一点。
handle_control_work() 里面
case TypeNewProxyResp 对 npr 操作不能使用 FREE,不像 JAVA 的对象聚合性,要把 proxy 里面的内容都 FREE,类似的还有 handle_login_response() 里面的 lres
case TypeStartWorkConn 漏了 sr 释放,有一个泄漏

下面有些泄漏,但是没有太大所谓。
init_login() 考虑完整性也要回收,不过如果是单例使用也没所谓。
msg.c 里面的 login_resp_unmarshal() 涉及的内存分配要回收
msg.c 里面的 new_proxy_resp_unmarshal() 涉及的内存分配要回收

开源不易,难得作者那么好的开源,略尽绵力。

@liudf0716
Copy link
Owner

liudf0716 commented Nov 4, 2024

@lawishere 能具体说什么地方有内存泄露吗?

config.c 里面涉及的 strdup 要回收

config.c里面strdup的内容生命周期跟进程是一样的,这部分进程推出后自然就会释放,所以这部分就没有特意对其进行释放

clear_main_control() 里面有个 tcp_mux 这里似乎作者想把状态机恢复到一个初始状态,没实现完,这里有泄漏,我认为做一个 delstream 行为会合理一点。

stream 不是指针,这部分没有泄露点

handle_control_work() 里面 case TypeNewProxyResp 对 npr 操作不能使用 FREE,不像 JAVA 的对象聚合性,要把 proxy 里面的内容都 FREE,类似的还有 handle_login_response() 里面的 lres case TypeStartWorkConn 漏了 sr 释放,有一个泄漏

npr如果不释放就内存泄露了, new_proxy_resp_unmarshal函数里面calloc了这个对象

下面有些泄漏,但是没有太大所谓。 init_login() 考虑完整性也要回收,不过如果是单例使用也没所谓。 msg.c 里面的 login_resp_unmarshal() 涉及的内存分配要回收 msg.c 里面的 new_proxy_resp_unmarshal() 涉及的内存分配要回收

需要具体分析一下问题,这个描述有点太笼统了

开源不易,难得作者那么好的开源,略尽绵力。

谢谢支持!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants