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

loadfile加载pb文件后好像没释放资源导致崩溃 #271

Open
chenzhangkuang opened this issue Sep 14, 2024 · 8 comments
Open

loadfile加载pb文件后好像没释放资源导致崩溃 #271

chenzhangkuang opened this issue Sep 14, 2024 · 8 comments

Comments

@chenzhangkuang
Copy link

lua 5.3.4
ubuntu 22
下载代码并生成pb.so,我服务器的skynet的agent服务,lua代码加载pb模块,然后pb去loadfile XXX.pb文件后能解析protobuf协议,但是agent退出时导致主进程崩溃,屏蔽了loadfile之后,agent退出就没问题,这个pb是不是需要释放资源?

@hanxi
Copy link

hanxi commented Sep 14, 2024

可以看看这个 https://github.com/cloudfreexiao/lua-protobuf

@chenzhangkuang
Copy link
Author

可以看看这个 https://github.com/cloudfreexiao/lua-protobuf

请教下,我不太明白,那问题的关键是从哪里入手处理呢

@hanxi
Copy link

hanxi commented Sep 15, 2024

可以看看这个 https://github.com/cloudfreexiao/lua-protobuf

请教下,我不太明白,那问题的关键是从哪里入手处理呢

你diff一下,没改多少。

@starwing
Copy link
Owner

可以看看这个 https://github.com/cloudfreexiao/lua-protobuf

请教下,我不太明白,那问题的关键是从哪里入手处理呢

你diff一下,没改多少。

提一个pr?

@starwing
Copy link
Owner

lua 5.3.4

ubuntu 22

下载代码并生成pb.so,我服务器的skynet的agent服务,lua代码加载pb模块,然后pb去loadfile XXX.pb文件后能解析protobuf协议,但是agent退出时导致主进程崩溃,屏蔽了loadfile之后,agent退出就没问题,这个pb是不是需要释放资源?

另外能给一个崩溃的堆栈吗?理论上这个库应该单线程使用,如果有多个Lua状态也是可以的,但是如果你多线程使用了同一个状态那可能的确会有点问题,具体情况要看堆栈。不过多线程其实也能用,你要看看unsafe模块,它提供了“多个状态共享载入数据”的功能。

@hanxi
Copy link

hanxi commented Sep 15, 2024

@cloudfreexiao 你来提个pr?

@cloudfreexiao
Copy link

cloudfreexiao commented Sep 18, 2024

没用过 unsafe 相关的 接口 目前的做法是让整个进程只加载一次的同时再标记成共享保证只有一个的lua state
改完之后相关的 test_unsafe 测试用例会不通过

https://github.com/cloudfreexiao/lua-protobuf/tree/pr

@JavenLaw
Copy link

lua 5.3.4 ubuntu 22 下载代码并生成pb.so,我服务器的skynet的agent服务,lua代码加载pb模块,然后pb去loadfile XXX.pb文件后能解析protobuf协议,但是agent退出时导致主进程崩溃,屏蔽了loadfile之后,agent退出就没问题,这个pb是不是需要释放资源?

可以贴一下你的代码吗?我想实验一下

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

5 participants