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

技术 作者:站内编辑 2015-08-03 05:59:06
以下内容引自,知乎大牛“黄嘉恒”的知乎分享,原文地址: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日晚修改,补充了问题解决方案。

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接