Open AlexMeng1986 opened 2 months ago
断言错误直接原因是类FClassRegistry中两个TMap数据成员Classes和Name2Classes缓存的内容出现了不一致,游戏运行过程中执行GC销毁某些UClass会调用UClassRegistry的NotifyUObjectDeleted函数,但该函数并没有因该UClass的销毁而去移除Classes和Name2Classes中对应元素,这就导致Classes和Name2Class缓存了已经析构掉的、数据败坏的UClass,所以当引擎重用上述UClass内存的时候会导致Name2Classes中没有,而Classes中有,就发生了断言错误导致的崩溃。请问应该如何解决该类问题呢?
这个问题在Release2.3.6 出现很频繁(打包后),但是用git拉最新的master会好些,因为后续有个修改https://github.com/Tencent/UnLua/commit/dd4d7cce98b69b7a83bc01953911a601eeac7970 改了一部分,但是问题好像还是会出现,然后DelegateRegistry也会有类似的问题
断言错误直接原因是类FClassRegistry中两个TMap数据成员Classes和Name2Classes缓存的内容出现了不一致,游戏运行过程中执行GC销毁某些UClass会调用UClassRegistry的NotifyUObjectDeleted函数,但该函数并没有因该UClass的销毁而去移除Classes和Name2Classes中对应元素,这就导致Classes和Name2Class缓存了已经析构掉的、数据败坏的UClass,所以当引擎重用上述UClass内存的时候会导致Name2Classes中没有,而Classes中有,就发生了断言错误导致的崩溃。请问应该如何解决该类问题呢?