1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

把这段文字发给我身边用苹果电脑的朋友,然后他跟我绝交了

本帖由 漂亮的石头2015-07-23 发布。版面名称:知乎日报

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    486,304
    赞:
    46
    下面这段文字为什么会让 Mac 上的多个软件闪退?


    问题补充说明:

    玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉[王]玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉玉

    备注:为减少悲剧,已对上述字符串稍加修改(将原文本中的「王」字加了方括号。实际使用中,只要删去括号,就会引发崩溃)。

    这段文字的特点是:

    1. 几乎全都是「玉」字。
    2. 有一个「王」字。
    3. 顺序确定,更改顺序则失去效果。

    Mac 出现的问题有:

    1. QQ、微信、Spotlight 文本框中只要出现这段文字就闪退。
    2. Chrome,在知乎上看到这段文字没事,编辑文本框只要有这段文字 Chrome 就会闪退。
    3. Chrome,任何一个文本框中输入这段文字,Chrome 闪退。
    [​IMG] 黄嘉恒,生科搬砖民工 / 3天 swift 开发经验

    在正文前先严肃警告:

    请不要把这段文字发给你的朋友,有可能导致无法挽回的后果,如果产生任何纠纷或者被小伙伴打残,本人概不负责!



    tl;dr

    这是 OS X 的 bug ,与 iOS 无关,iPhone / iPad 用户请不要担心受到影响。根据其它回答里反馈的情况,并不是每台设备都会发生。

    这段文字导致 App 发生崩溃的条件是:在文本框中出现;Mac 微信 / QQ 的对话中出现;选中。其它零散情况我没有统计。

    下面是完整答案:

    我搞崩溃了一堆软件后(。。), 检查崩溃时的软件调用栈,发现是 DataDectorsCore.framework 模块出了问题。

    [​IMG]

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

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

    所以可能导致崩溃情况,大致可以分为下面几种:

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

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

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

    最后再次警告,请大家不要给用 Mac 的小伙伴发这个内容。拿这个整人可能会导致比较严重的结果,比如某些软件一打开就崩溃之类的,而且目前没有解决方法,除非把出问题的软件的数据删除,小心被小伙伴打死。。



    那些无视我的警告的同学,我只想问你们有没有被打死?

    [​IMG]

    对于已经被坑而且一打开软件就会崩溃的,比较轻松愉快的解决方案是装个 cleanmymac,在 uninstaller 里选中出问题的软件,点"Application Reset",点下方"Reset",问题解决。

    如果没有 cleanmymac 或类似软件,可以尝试如下方法:

    1. 对于微信,删除 ~/Library/Containers/com.tencent.xinWeChat 目录下所有文件
    2. 对于 QQ,删除 ~/Library/Containers/com.tencent.qq 目录下所有文件
    3. 其它软件同理,删除 ~/Library/Containers/ 下对应软件的数据一般可以解决问题

    需要注意,不管是用 cleanmymac 还是手动删除文件的方法,该软件的所有数据都会丢失,请千万慎重。

    查看知乎原文
     
正在加载...