AwCookieManager.nativeGetCookie crash 排查

本文详细分析了一类在Android平台常见的Native Crash问题,特别是在调用CookieManager.getCookie时发生的崩溃。通过对GURL源码的深入研究,发现了线程安全问题,并提出了有效的解决方案。

背景

Android 平台上长期存在一类发生在 app 调用 CookieManager.getCookie(String url) 过程中的 native crash,困扰着很多研发,也严重影响了用户体验。此类问题 Android 4.1-9.0 均有覆盖,基本都发生在启动阶段。西瓜视频上此类问题长期占据 Top 3 榜单之一,存在时间已相当久远。在 Top 10 的 native crash 中占比超过 40%,Native crash 整体占比>30%,影响用户比例>1‰(此类 crash 的用户占比);主要集中在 Android 4.2.2、4.4.2、8.1、9.0 等版本上,其他 Android 版本上也均大量此类问题。最为严重的是此类 crash 基本都发生在启动 2s 以内,严重影响西瓜视频 app 的用户体验。其典型堆栈截图如下:

Native 堆栈

Java 堆栈(有>50%的 crash 没有 Java 堆栈)

排查思路

此类 crash 堆栈中只有 so 及偏移地址信息,没有相应的函数名,又不是必现问题,很难直接定位到问题原因。所以排查的关键是先找到有明确函数名的堆栈,有了详细的函数信息,才能进一步通过相关的函数名对照 AOSP 源码分析定位出原因。

初步调查

出现问题的 Android 版本和机型虽分布极广(Android 4.x - 9.0),但绝大部分堆栈几乎没有任何 Crash 相关的核心函数信息。幸运的是通过梳理所有相关的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值