微信无响应怎么办_微信两位数字+15个句号卡顿BUG原理分析?
微信无响应怎么办?最近有网友表示找到了微信两位数字+15个句号卡顿BUG,而且还有相关的代码哦!下面就为大家带来了微信两位数字+15个句号卡顿BUG原理分析,大家一起来看看吧!
最近微信似乎出现了一个Bug,比如发一个“15。。。。。。。。。。。。。。。”(不带引号)的符号,就会让对方的手机卡死。
如果只是朋友之间互开玩笑,那倒也没什么关系,要是抱着好玩的态度,发到同事的微信群里,给人家造成了困扰,岂不是开了玩笑不成反被责怪?
据一位Android应用开发者说,这个问题的出现,是java.util.regex.Matcher.findNextImpl(Native method)模块的锅,开发人员似乎是忽视了正则匹配的问题,把匹配操作放在UI主线程里了,处理超时导致ANR。
原来,类似的问题,在QQ上也曾经出现过,据说当时在手机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.的消息,就会让手机QQ突然崩溃,也是因为正则匹配的问题,造成的主线程/UI线程发生阻塞。
由此推断,上述两个让微信/QQ突然卡死的原因,可能与长消息解析、正则匹配中的问题有关。
这从一定程度上说明了为什么类似的字符(如:OO00.oo、。。。。。。。。。。)也会产生同样的效果,以及为什么这类字符长度达到一定数量才会产生效果。
以下是调试错误的代码,想深入了解的,可以好好参考一下:
09-25 14:41:23.755 597-1157/? I/logserver: ANR, proc_name:com.tencent.mm, f1_name: at java.util.regex.Matcher.findNextImpl(Native method), topcpu_proc:com.tencent.mm 09-25 14:41:23.755 597-1157/? I/logserver: ANR, total_cpu_rate:2800, iowait_cpu_rate:40, app_version:unknown
main" prio=5 tid=1 Runnable
| group="main" sCount=0 dsCount=0 obj=0x77106578 self=0xee984f00
| sysTid=19995 nice=0 cgrp=default sched=0/0 handle=0xf173e534 | state=R schedstat=( 12367079176 38333854 4748 ) utm=1177 stm=59 core=5 HZ=100 | stack=0xff13c000-0xff13e000 stackSize=8MB | held mutexes= "mutator lock"(shared held) at java.util.regex.Matcher.findNextImpl(Native method) at java.util.regex.Matcher.find(Matcher.java:437) - locked <0x0c241390> (a java.util.regex.Matcher) at com.tencent.mm.ui.widget.celltextview.g.a.o(SourceFile:96) at com.tencent.mm.ui.widget.celltextview.g.a.dc(SourceFile:55) at com.tencent.mm.ui.widget.celltextview.f.b.a(SourceFile:76) at com.tencent.mm.ui.widget.celltextview.d.a.Cw(SourceFile:467) at com.tencent.mm.ui.widget.celltextview.d.a.Cp(SourceFile:92)