• 文库
  • 字符
  • 转换
  • 加密
  • 网络
  • 更多
    图表
    数学
    坐标
    图片
    文件
  • 文库
    字符
    转换
    加密
    网络
    更多
    图表
    数学
    坐标
    图片
    文件
logo 在线工具大全

PC GWP-ASan方案原理 | 堆破坏问题排查实践

出处: mp.weixin.qq.com 作者: 张迅、刘鹏华

众所周知,堆crash dump是最难分析的dump类型之一。此类crash最大的问题在于,造成错误的代码无法在发生堆破坏时被发现。线上采集到的minidump,仅能提供十分有限的信息。当调试工具报告了堆破坏、堆内存访问违例后,即便是有经验的开发人员也会觉得头疼。剪映专业版及其依赖的音视频编辑SDK、特效模块均采用MD的方式链接标准库,这意味着任何一个模块出现了堆损坏都会互相影响。从crash的位置回溯堆破坏的源头,是一个非常有挑战性的工作。剪映业务模块较常见的是Use-after-free,而音视频编辑SDK和特效模块这类底层算法特效模块更多的是Buffer-overflow,不同团队模块间的堆错误互相影响,导致问题难以定位。 GWP-ASan是Google主导开发的用于检测堆内存问题的调试工具。它基于经典的Electric Fence Malloc调试器原理,概率采样内存分配行为,抓取内存问题并生成上传崩溃报告。说到这里,也许你会好奇它和ASan(Address Sanitizer)的区别。

查看原文 175 技术 lddgo 分享于 2023-04-11