开启PSOFileCache后连接Insights因Breadcrumb崩溃

[Image Removed]

在PreCompilePSO时,5.5版本增加了Breadcrumb数据给Insights。

Insights开启Auto-Connect,也就是PC包启动就会连接上Insights,此时如果触发了来自FileCache的PSO预编译,因为没有AddDispatchPrerequisite,所以它引用的Breadcrumb数据会提前由FRHIBreadcrumbAllocator给Free掉,导致后续PSO异步编译完成,进行WalkOut时非法访问内存0xddddddddd:

#if WITH_RHI_BREADCRUMBS if (PSOCompilationDebugData.BreadcrumbNode) { FRHIBreadcrumbNode::WalkOut(PSOCompilationDebugData.BreadcrumbNode); } #endif // WITH_RHI_BREADCRUMBS​​

​看了PipelineStateCache.cpp文件的修改记录,是在5.5时,重构了​Breadcrumb,并且在PreCompilePSO时新增Breadumb数据给Insights。

请帮忙看看,谢谢。​

重现步骤
1、开启PipelineCache:r.ShaderPipelineCache.Enabled,r.ShaderPipelineCache.LogPSO,r.ShaderPipelineCache.SaveUserCache

2、打包Win64

3、启动Insights,勾选Auto-Connect

4、启动PC包,运行。当FileCachePSO比较多,异步耗时比较长的时候,才容易触发。(使用第三人称简单场景,我没有复现该问题)

您好,

感谢您报告这个问题。这个问题此前已经被报告过:

[Content removed]

这里是相关问题的追踪链接:

如果您有更多疑问,请随时联系我们。

您好,

我们可以关闭这个工单吗?如果您后续对这个问题需要任何帮助,可以随时重新开启这个工单。

可以关闭,谢谢