记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

为何发布“玉玉玉玉”会让MAC 应用闪退

2015-08-03 22:00

以下内容引自,知乎大牛“黄嘉恒”的知乎分享,原文地址:http://www.zhihu.com/question/32263029/answer/55316230

在正文前先严肃警告:
请不要把这段文字发给你的朋友,有可能导致无法挽回的后果,如果产生任何纠纷或者被小伙伴打残,本人概不负责!
————————————
tl;dr(Too long, Don’t read. 嫌太长不想看的,你只需要知道这一节的内容就可以了):
这是 OS X 的 bug ,与 iOS 无关,iPhone / iPad 用户请不要担心受到影响。根据其它回答里反馈的情况,并不是每台设备都会发生。
这段文字导致 App 发生崩溃的条件是:在文本框中出现;Mac 微信 / QQ 的对话中出现;选中。其它零散情况我没有统计。
解决方法请直接拉到回答最后。
————————————
下面是完整答案:
我搞崩溃了一堆软件后(。。), 检查崩溃时的软件调用栈,发现是 DataDectorsCore.framework 模块出了问题。

b5ac46f950e94506a15d4952a7a31f43_b

虽然之前苹果出过几次问题都是因为 CoreText,而 CoreText 是 iOS 和 OS X 公用的组件。不过这次并不是 CoreText 的锅,所以 iOS 用户不会受到影响。

经DreamPiggy提醒,我找了一下苹果的开发文档中关于 NSSpellChecker 和 NSDataDector 的章节,发现 OS X 自带的拼写检测和特殊格式的信息(比如电话号码,时间等)匹配都会触发 DataDectorsCore.framework。

所以可能导致崩溃情况,大致可以分为下面几种:
文本编辑区域,一般都会触发拼写检测,所以基本都会崩溃;
非文本编辑区域,一般不会触发拼写检测和特殊格式的信息匹配,所以不会发生崩溃;
有些软件,如 QQ 微信等,在展示文本时也会进行特殊格式信息匹配,因此会崩溃。需要指出,Safari 虽然不会自动检测,然而在选中文本后还是会发生这个操作,所以请不要随意选中这段文字。此外,在其它软件下选中这段文字并右键点击,也可能导致崩溃。

至于问题发生的具体原因,很抱歉,虽然不是 CoreText 的锅,然而 DataDectorsCore.framework 和 AppKit 也都是闭源的,我没办法知道,只能给苹果提交一个 bug report 了 (radr://911556)。不知道还有没有人记得在13年的时候有一个类似的 bug,在 10.8 Mountain Lion 下任意位置输入”File:///”也会导致软件崩溃,我比较了一下那个 bug 的崩溃调用栈,两个问题是因为同一个模块导致的问题。

这两年苹果在文字处理模块 bug 比较多是不争的事实。不过下面评论区强行解毒的,还请好好享受输入法、聊天工具、下载工具的弹窗黄色新闻,和右下角没完没了的浮动窗口吧。

最后再次警告,请大家不要给用 Mac 的小伙伴发这个内容。拿这个整人可能会导致比较严重的结果,比如某些软件一打开就崩溃之类的,而且目前没有解决方法,除非把出问题的软件的数据删除,小心被小伙伴打死。。
————————————
那些无视我的警告的同学,我只想问你们有没有被打死?
对于已经被坑而且一打开软件就会崩溃的,比较轻松愉快的解决方案是装个 cleanmymac,在 uninstaller 里选中出问题的软件,点”Application Reset”,点下方”Reset”,问题解决。
如果没有 cleanmymac 或类似软件,可以尝试如下方法:
对于微信,删除 ~/Library/Containers/com.tencent.xinWeChat 目录下所有文件
对于 QQ,删除 ~/Library/Containers/com.tencent.qq 目录下所有文件
其它软件同理,删除 ~/Library/Containers/ 下对应软件的数据一般可以解决问题
需要注意,不管是用 cleanmymac 还是手动删除文件的方法,该软件的所有数据都会丢失,请千万慎重。
————————————
7月22日补充一个可能的完美解决方案,不会导致你丢失数据。
打开“终端”,输入下面的命令:
sudo mv -v /System/Library/PrivateFrameworks/DataDetectorsCore.framework/
Versions/A/Resources/com.apple.datadetectorscore.cache.full.asia.system /System/Library/PrivateFrameworks/DataDetectorsCore.framework/
Versions/A/Resources/com.apple.datadetectorscore.cache.full.asia.system.backup
回车后需要输入管理员密码,需要注意你输入的密码的时候是不会看到字符反馈的。输入完密码再回车,如果没有提示额外的信息那么崩溃问题应该不会再出现了。如果提示 “Operation not permitted”,那很遗憾我也没找到解决的方法。如果其他人有更好的建议欢迎评论区补充。
————————————
感谢DreamPiggy的提醒,7月17日修改答案的错误原因部分。
7月17日晚修改,补充了问题解决方案。

知识来源: www.ijiandao.com/safe/cto/15409.html

阅读:57585 | 评论:0 | 标签:技术 mac ox x 闪退

想收藏或者和大家分享这篇好文章→复制链接地址

“为何发布“玉玉玉玉”会让MAC 应用闪退”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云

本页关键词