Epic的专家们好,我们这边遇到一例 仅在IOS 18.4上大量出现的,疑似MallocBinned相关的crash 【后附crash栈截图】,目前判断的直接原因是从mem pool中取出的Pool info已不合法(TableIndex = 0), 怀疑有内存越界覆写。
我们已用ASAN + ANSI的组合大量跑测,未能复现。如果有上层逻辑的越界行为存在,应该能被ASAN捕获,暂时没有更多线索。
用ASAN + Binned 的组合同样跑测则能够复现(但是未触发ASAN错误),且观察到在开了比较多后台应用的时候,更容易触发这个crash。这个crash的另一特征是触发一次crash后则容易在接下来的一段时间高频继续触发,然后再过一段时间又无法触发了。
我们注意到有一些ue官方在MallocBinned上有一些问题修复的提交【后附相关链接】,尤其是关于在IOS 上使用Nano Malloc的相关逻辑。综上我们目前怀疑这个crash和ios系统内存状态高度相关,不知官方是否能提供更多信息。
crash栈截图:
[Image Removed]
[Image Removed]
crash点位代码:
[Image Removed]
官方相关提交:
https://github.com/EpicGames/UnrealEngine/commit/ed9fa68e850cd658227dce1878e234a7b40b63f2
https://github.com/EpicGames/UnrealEngine/commit/55c0325532164da6639fef5ad986960700546e57
还有个raw dump file, 文本格式,也一并转发吧,不知道能否解读出更多信息