我们的引擎升级到UE5.5.4以后,在编辑器启动过程中,使用联合编译shader的时候会弹框报错,然后系统内存占满而卡死,如附图1,2。如果打开consoleVariables.ini中的r.Shaders.AllowCompilingThroughWorkers=0是能够正常编译并启动编辑器的(虽然耗时较久)。怀疑是在升级后shader代码有报错导致的这个问题,因为在升级过程中遇到过类似的问题,当时也是开启单核编译,然后在这个编译过程中会触发断点FShaderCodeResource GetFinalizedResource这个接口里的check(OptionalDataSize == -1),然后查看到有堆栈上有相关的shader报错信息。但是升级完成后现在开启单核编译就能正常进编辑器了。请问下有没有其他方式来查shader编译的报错,另外请问下单核编译的shader数量和联合编译的shader数量是否一致?
Hi,
由于信息不足,我也不太确定有什么可能,可以先合入下面的改动,看看是否有更多信息输出。单个ShaderCompileWorker占用如此大的内存看起来很不正常,可能需要更多信息才能辅助定位。
https://github.com/EpicGames/UnrealEngine/commit/4d5ee47dafcfad4ade791a771726f3123a717f2c