引发微信闪退的“两位数字+15个句号”BUG的原理是怎样的?

在微信中发“两位数字+15个句号”(另外一说法是任意数字,任意15个标点符号),若是有非小米三星的安卓手机收到,就会卡死,这个BUG的原理是怎样的?
没有加号,如直接发“15。。。。。。。。。。。。。。。”就行。java

原由

有人 v2 发了如下内容:
正则表达式


没想到次日一传二,二传四,利用这个 bug 搞怪的人愈来愈多

反应

@ 空寂

哪些机型会卡死

@口贝力微信

  • 米6,OK
  • 苹果,OK
  • 苹果,OK
  • 苹果,OK
  • mate9,卡死
  • 三星,卡死
  • 360,卡死

分析

@kbkaa :华为已卡死,看了下logcattraces.txt,是这个java.util.regex.Matcher.findNextImpl(Native method)的锅,好像是正则匹配的问题,估计是把匹配操做放在UI主线程里了,处理超时致使ANR。多是字符解析超时 5s 就会崩溃。
具体分析请看:为何“15。。。”会致使微信ANR? - 掘金post

历史问题

下面这段字符为何会让手机QQ未响应?测试

Y.oo.O.oo.z.oo.yY.oo.0.oo.z.oo.0.oo.0.oo.y.oo.z.oo.Z.oo.Z.oo.Y.oo.O.oo.Y.oo.Y.oo.Z.oo.y.oo.O.oo.o.oo.Y.oo.z.oo.y.oo.Y.oo.y.oo.y.oo.Y.oo.o.oo.0.oo.Z.oo.O.oo.o.oo.Y.oo.0.oo.0.oo.y.oo.O.oo.0.oo.Z.oo.z.oo.Y.oo.Y.oo.y.oo.Y.oo.Y.oo.z.oo.Y.oo.Y.oo.Y.oo.0.oo.O.oo.z.oo.y.oo.O.oo.O.oo.0.oo.Y.oo.Y.oo.0.oo.0.oo.o.oo.Z.oo.yY.oo.y.oo.0.oo.o.oo.yY.oo.y.oo.z.oo.0.oo.o.oo.Z.oo.yY.oo.0.oo.yY.oo.yY.oo.o.oo.Y.oo.Y.oo.0.oo.0.oo.Y.oo.z.oo.z.oo.o.oo.yY.oo.o.oo.o.oo.Y.oo.0.oo.z.oo.0.oo.o.oo.Y.oo.O.oo.0.oo.0.oo.y.oo.0.oo.Y.oo.Y.oo.Z.oo.0.oo.0.oo.z.oo.yY.oo.O.oo.o.oo.Y.oo.o.oo.Y.oo.Z.oo.z.oo.y.oo.yY.oo.0.oo.O.oo.Y.oo.O.oo.y.oo.o.oo.yY.oo.Y.oo.o.oo.Z.oo.O.oo.Z.oo.z.oo.Y.oo.y.oo.yY.oo.yY.oo.Y.oo.z.oo.o.oo.yY.oo.O.oo.Y.oo.O.oo.O.oo.O.oo.O.oo.Y.oo. url

(篇幅有限,测试时能够将这段字符多复制几遍)
——————————————
手机QQ上显示到有这段字符的消息时会卡死并致使程序崩溃,Android版和iOS版QQ都会受到影响。 线程

解答

这串代码形成手机QQ卡死的缘由是是判断 url 的正则表达式执行时间过长致使的,安卓和苹果都会卡顿一段时间。code

回顾

  1. 微信在5月份也有一次发动图就会让 iPhone 闪退的bug。
  2. 再以前发泰国或者阿拉伯文字卡死

解决办法

临时解决办法cdn

  1. 过一下子从新进入微信,而后删除聊天记录。
  2. 或者你们顶过去那条消息

目测是微信官方人员.....
blog

有人说已经修复完成,不知道有没有挂的人了.....微信的热修复仍是牛逼啊!(可是不断有人反馈挂了,等微信官方发布吧)

补充

在微信群发相关内容被屏蔽

小米:20。。。。。。。。。。。。。。。。。。。。 仍是会炸...(小米6不会)
魅族:仍是挂...

插播新闻:微信启动图片将换成我国卫星成像图

今天17:00起,手机微信开启时显示的地球图片将从之前的美国卫星成像图换成风云四号的成像图。9月25日至9月28日期间,用户在微信启动时,能够欣赏到由我国新一代静止轨道气象卫星“风云四号”从太空拍摄的祖国全景。这是6年来微信启动页面首次发生变化,启动页背景中的地球图片也由非洲大陆上空视角,变化为了咱们的祖国上空。

相关文章
相关标签/搜索