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

pod install 时卡死,内存飙升 #11

Open
tinymind opened this issue Jun 6, 2022 · 5 comments
Open

pod install 时卡死,内存飙升 #11

tinymind opened this issue Jun 6, 2022 · 5 comments
Labels
question Further information is requested

Comments

@tinymind
Copy link

tinymind commented Jun 6, 2022

如下图,终端输出 generate method of post install hook context override 之后就一直卡住,活动监视器显示 ruby 进程所占用的内存持续飙升 11 ~ 19.95 GB,直到被系统杀死。

image

CocoaPods 版本:1.11.2
MacOS 版本:12.0.1
Ruby 版本:ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin19]
hmap 版本:1.0.4

@chenxGen
Copy link
Collaborator

我这边没有相同版本的 Mac 去还原你的环境,在其他条件相同的情况下并没有复现你说的问题,猜想这样的问题可能是多个插件间的方法交换导致的递归循环,麻烦列下你环境下安装的其他 CocoaPods 插件,因为所有的插件都会随着 CocoaPods 命令的调用一起加载到当前的 Ruby 进程,部分插件代码不需要依赖 Podfile 里面的插件声明就已经生效了,比如那些方法交换。

@chenxGen chenxGen added the question Further information is requested label Jun 23, 2022
@blastmann
Copy link

调试来看是崩溃在recursively_add_dependent_headers_to_hmap的过程中,如果pod的依赖树比较深(十几级的深度),执行递归遍历时就会遇到类似问题。

似乎缺乏合适的退出递归条件

@chenxGen
Copy link
Collaborator

@blastmann 可以提供一个 demo 吗

@blastmann
Copy link

我有空模拟创建一个看看,但从代码上看最好不要直接递归,我调整了一下代码逻辑,按照以下逻辑可以比较快地跑完:

  1. 优先一次遍历生成所有的pod hmap generator,通过字典缓存
  2. 递归合并aggregate target依赖到的pod,当遇到缓存时应该直接退出一次递归
  3. 生成hmap

@chenxGen
Copy link
Collaborator

确实这样处理可以

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

No branches or pull requests

3 participants