PC GWP-ASan 方案原理 | 堆破坏问题排查实践
Source :
mp.weixin.qq.com
Author :
张迅、刘鹏华
众所周知,堆 crash dump 是最难分析的 dump 类型之一。此类 crash 最大的问题在于,造成错误的代码无法在发生堆破坏时被发现。线上采集到的 minidump,仅能提供十分有限的信息。当调试工具报告了堆破坏、堆内存访问违例后,即便是有经验的开发人员也会觉得头疼。剪映专业版及其依赖的音视频编辑 SDK、特效模块均采用 MD 的方式链接标准库,这意味着任何一个模块出现了堆损坏都会互相影响。从 crash 的位置回溯堆破坏的源头,是一个非常有挑战性的工作。剪映业务模块较常见的是Use-after-free,而音视频编辑 SDK和特效模块这类底层算法特效模块更多的是Buffer-overflow,不同团队模块间的堆错误互相影响,导致问题难以定位。