今早,朋友发了一个表情给我,看下面,就是这个。。
 timg2.jpg

这不是天线宝宝卖萌系列表情包么,正当我看着俩宝宝撞屁股的GIF图寻开心的时候,微信突然卡死闪退了。。然后我打开,又来了第二遍,依旧是卡死闪退。

上视频:

崩溃视频

  

于是,从PC微信端找到了天线宝宝表情文件,先扔进010 Editor。。

U8KV6[P4G$4G6]H]O`S)XR3.png

8FU3PM3CJAR}09]1@4J(VNP.png CY]EVLT}`C7(1C5OADXGU]1.png

从010 Editor的结果可以看出来,这个表情从第37-38帧中间被插入,40帧之后的文件全部被填充。

挨个排除问题

(1)图片中的什么内容触发的崩溃?

二分法挨个测试,定位 94360-943EE的数据触发了崩溃。具体数据如下:

~F8T{C@{XM%CIG_]SVTV~@W.png

然后,我们随机选取任意一个gif表情包,把这块内容插进去~

震惊!微信崩溃啦! 不删除聊天记录没法打开微信对话啦!!

timg (1).jpg

(2)崩溃是微信特有的嘛?

把这个天线宝宝的表情包扔进了浏览器、qq、微信内嵌网页,都没有产生崩溃。这崩溃是微信聊天特有的。。。

确定了触发崩溃的原因和场景,接下来我们来找找什么导致的崩溃。

崩溃原因

读取iphone的崩溃异常log。十几个测试崩溃测试的log崩溃的原因并不一样啊,整理了三种最多的崩溃原因。

1、递归锁os_unfair_lock

1.png

2.png

2、Dispatch Queue崩溃

3.png

3、KSCrash Exception崩溃

4.png

呵呵。。。分析到此,感觉可以做一串炸弹gif了~ 崩溃的具体原因,仍旧待分析。。

样本链接: https://pan.baidu.com/s/1eRDeXGY 密码: ycur

*本文原创作者:_Y