我们在开启ASAN对PC包的内存进行分析,启动游戏的时候,报告了如下问题,想知道EPIC是否在更高版本解决了此类问题,有没有相关P4 CL号或者GITHUB Commit能够提供,让我们尝试修复。
时间线分析:
- 线程 T131(异步加载线程)创建了材质对象(0x11f7d4208580)
- 线程 T0(主线程)在垃圾回收时释放了该对象
- 线程 T68(渲染线程)尝试访问已被释放的材质对象
具体调用栈:
释放栈(T0 - 主线程):
- 垃圾回收过程中调用
IncrementalPurgeGarbage - 最终在
FAsyncPurge::TickDestroyGameThreadObjects中释放对象
使用栈(T68 - 渲染线程):
- 在场景渲染更新时调用
FScene::Update - 通过材质代理更新延迟缓存的 uniform 表达式
- 最终在
FDefaultMaterialInstance::GetMaterialNoFallback访问已释放内存
<br/>