UniformBuffer悬空指针崩溃

目前遇到了这样的一个崩溃,崩溃栈如下 [Image Removed]

<br/>

目前我确定是访问了一个被释放的UniformBuffer触发的崩溃,我尝试了将相关的UniformBuffer新增引用计数可以规避这个问题,另外我也确定和CacheMeshDrawCommand机制有关,我尝试了r.MeshDrawCommands.UseCachedCommands 0也能规避这个问题。

<br/>

我注意到目前有这样一个提交,可能这类问题是目前已知https://github.com/EpicGames/UnrealEngine/commit/53071436de51dfbc42bf0faf7e170ebdb1b1b23b

<br/>

我想知道这个崩溃目前有新的fix吗?

[Attachment Removed]

Hi,

你好,据我所知我们没有修复过这个问题,有几个问题想先确认一下:

  1. 是否有明确的复现方式?
  2. 你的修复具体是修了哪里?
  3. 能否定位到是哪个UB被释放了,但仍然被GPU使用?是否能从原理上解释一下,我可以根据代码定位一下是否有这个问题。
    [Attachment Removed]
  1. 目前有明确的复现方式,大概是进游戏传送到特点点位,然后在附近来回移动就会触发, 但是目前还没准备好复现工程,我可以帮忙验证
  2. ​具体修复见workspace.patch.txt
    [Attachment Removed]

目前定位到是MaterialParameterCollectionInstanceResource, 因为在修复中这样修改了一下,也还是能修复, 崩溃的原因目前和AI做一些验证和猜测,可以参考分析.txt [Image Removed]

[Attachment Removed]

Hi,

非常感谢提供信息,我想先问一下,这个问题是发生在编辑器的使用过程中,还是打包版本?

[Attachment Removed]

Hi,

感谢回复,是在打包版本中,编辑器下无法复现。目前我们刚刚定位到和MaterialParameterCollection GUID冲突有关,可能是在游戏中加载了相同GUID但是路径不同的MPC,导致MPC被错误释放导致的

[Attachment Removed]

根据线下交流,“是相同的mpc拷贝导致的 删掉冗余的保留一份就好了”。感谢提供信息,问题解决了就好。

[Attachment Removed]