iOS异常流量消耗及大面积应用闪退问题的分析

Frank发布

Click here for English version/点击这里前往英文版

这是我遇见的第三个Apple设备上的疑难杂症。

大概是今年的6月底,我的iPhone(运行iOS11.4)一夜之间跑掉了将近10个G流量。经检查Shadowrocket日志发现,iPhone在以约200kb/s的速度持续从 gateway.icloud.com下载不明数据。(根据其他受害者反映,如果没有安装Surge一类的软件,这些不明流量会在流量统计中显示为“文稿与同步”)我原来的iCloud使用的是日区账号,换成国区账号之后好了一段时间(一天多一点)之后,问题再次出现。由于我当时正被考试周搞得焦头烂额,将 gateway.icloud.comReject掉之后就没有再管他,也不影响日常使用。

之后查找相关资料发现,也有网友遇到类似问题(22楼):https://www.v2ex.com/t/459452。但是他提出的登出macOS设备上的iCloud的方案,我试了之后并没有成功。

但是事情并没有结束,从那之后没多久,我的iPhone和iPad都出现了时不时发生应用大面积闪退的问题,频率基本维持在一周2-3次。当问题发生时,点开大多数应用都会卡在Splash Screen大约10秒后闪退。会闪退的应用包括但不限于知乎,TIM,Notability及所有Google应用。微信和苹果自带应用基本不受影响。此时手机会发热,并且进入iCloud界面时大概率会卡死。我的iPhone运行的iOS版本为11.4和12 Public Beta,iPad的iOS版本为11.4和12 Developer Beta。

尝试

我尝试了重启,强行重启,重新安装出现问题的应用,升级iOS及登出并重新登录iCloud,均没有效果。临时的处理方法是关闭并打开iCloud Drive开关,有一定几率暂时修复这个问题。(可能只是巧合)但是此时进入iCloud界面有大概率会卡死,所以需要多试几次才行。如果不进行任何处理,一段时间以后也会自行恢复。

分析

由于这个问题十分隐蔽,导致每个人的描述都不太一样,因而很难在网上搜索到。我整理了所有出现类似问题的贴子合集:
https://www.v2ex.com/t/460089
https://www.v2ex.com/t/471491
https://cn0xroot.com/2018/07/17/2018-07-16/
https://www.v2ex.com/t/459452
https://discussionschinese.apple.com/thread/140132632
https://www.reddit.com/r/jailbreak/comments/8sf4u3/help_this_block_of_text_is_being_spammed_in_my/
https://forums.developer.apple.com/thread/105722
https://forums.macrumors.com/threads/excessive-data-consumption-for-documents-sync-and-constantly-high-cpu-load-on-iphone-and-ipad.2127349/

这个问题出现的时间很随机,我目前还没有找到其触发条件,难以手动复现。因为重新开关iCloud Drive有几率临时修复这个问题,我初步定位问题与iCloud有关。至于此前曾经出现过的iCloud持续下载数据问题,我猜测两者之间也有关联。

检查Console发现,在应用启动并闪退时,会出现 Provision violated for watchdog scene-create信息。经搜索得知,这个报错是由于应用启动时间过长而被系统强行杀死。

与此同时,当问题出现期间,会出现大量下列日志,每秒钟多达数十条。(日志很长,请向右滑)

通过日志中的 com.apple.ProtectedCloudStorage字样,初步锁定问题出现在Keychain。至于其中出现的 Manatee,经查找并没有查询到有价值的信息。

我通过搜索日志中的内容查到了Reddit上面的一个帖子: https://www.reddit.com/r/jailbreak/comments/8sf4u3/help_this_block_of_text_is_being_spammed_in_my/。这位楼主nhcoil和我遇到了几乎一样的问题。我发送私信询问后得到了如下的回复:

Never found the solution. Brought my phone in multiple times and nothing, even got a replacement device and the issue persisted. The problem was something in my iCloud. I don’t know what, didn’t have anything in there at all.
Holy solution was creating a new iCloud account and not carrying anything over and manually putting everything like contacts etc.
I’m sorry I can’t be much help, I spoke with Apple live chat about the issue and gave everything I could to isolate and help with the problem.
If you do find a solution other than a new iCloud account, then that’s amazing but for now I think that’s all that can be done.
Regards,
Micheal

研究上述日志和nhcoil提供的信息,猜测该问题的起因在于iCloud中的数据出现了某些问题,导致预料之外的同步出错,并且问题大概率出现在Keychain中。

接着,我又搜索到了这篇帖子https://forums.developer.apple.com/thread/105722。文中提供了更多的信息:

This process will continue writing around 30000 lines to the database, and during this time, secd uses 100%+ of a CPU. Once that’s finished, I can manually edit the database using an Sqlite editor, which brings the database down to around 10-15MB, and Safari passwords will resume working. Eventually the database will grow again and Keychain stops working.

Signing all devices out of iCloud Keychain does not clear this problem. Computers running 10.11.6 and 10.12.6 work normally, so the problem seems to stem from some new feature in iOS 11 and macOS 10.13.

我前往MacBook上的本地Keychain数据库,果然发现了大量含有 Manatee的数据,多达上万行,并且,这些数据不会显示在Keychain Access中。
我相信在我的iCloud Keychain中同样存在这些数据,但是我没有任何途经去查看或删除它。

继续搜索,我又找到了MacRumors上的一个帖子:https://forums.macrumors.com/threads/excessive-data-consumption-for-documents-sync-and-constantly-high-cpu-load-on-iphone-and-ipad.2127349/。通过文中提供的信息,我们足以确定问题确实出在Keychain中。
并且,这两篇文中都提到,当两步验证关闭时,问题就不会再发生,可以视为一个相对可行的解决方案。

解决方案

已经被我或遇到相同问题的网友确认无效的方案

  • 登出并重新登录iCloud账户
  • 将macOS设备登出iCloud账户
  • 清空iOS设备上的Safari密码
  • 使用类似Surge的网络调试工具Reject掉形如 p**-*.icloud.com的网址,以阻止iCloud进行同步。
  • 关闭iOS设备上的iCloud Keychain

下面的方案目前还无法确认有效,但是值得尝试

  • 从macOS设备的Keychain Access中重置Keychain数据库
  • 关闭iCloud账户的两步验证

或者也可以采用nhcoil所说的方法:创建一个全新的iCloud账户,并手动迁移旧账户中的数据。

参考资料

https://forums.developer.apple.com/thread/105722
https://forums.macrumors.com/threads/excessive-data-consumption-for-documents-sync-and-constantly-high-cpu-load-on-iphone-and-ipad.2127349/
https://arstechnica.com/civis/viewtopic.php?f=19&t=1433841
https://www.reddit.com/r/jailbroke2/comments/8sgj2n/help_this_block_of_text_is_being_spammed_in_my/
https://www.v2ex.com/t/459452

https://forums.developer.apple.com/thread/104020
https://stackoverflow.com/questions/26827809/app-rejection-crash-report-says-failed-to-scene-create-in-time-badf00d-what
https://hitcon.org/2017/CMT/slide-files/d1_s2_r2.pdf

分类: 原创文章

24 条评论

QIYOOO · 2018 年 8 月 4 日 下午 10:09

Safari 10.0 Safari 10.0 iPhone iOS 10.3.2 iPhone iOS 10.3.2

具一位不愿意透露姓名的伪内部人士透露
苹果:我们已经可以检测用户内心的喜爱程度实现对手机系统流畅度的改变。
比如:谷歌粉把苹果自带应用删除,安上谷歌的应用。用苹果想流畅是不可能的,怎么可能不卡,我们也不需要所有人都用苹果。

具体方案:检测苹果自带应用的卸载率,谷歌应用的安装率,以及当用户从心爱的谷歌应用切换到不得不用不能卸载的苹果的自带应用,比如短信电话,前置摄像头会检测用户面部表情的细微变化。从而判断该用户是喜欢苹果还是谷歌。以实现对手机处理器的降频等削弱用户体验的操作。

    Frank  Mod · 2018 年 8 月 4 日 下午 10:11

    Google Chrome 69.0.3493.3 Google Chrome 69.0.3493.3 Mac OS X  10.13.6 Mac OS X 10.13.6

    小学生

      QIYOOO · 2018 年 8 月 4 日 下午 10:13

      Safari 10.0 Safari 10.0 iPhone iOS 10.3.2 iPhone iOS 10.3.2

      你看看
      Google Chrome 后面写的Mac OS

lyphix · 2018 年 8 月 5 日 下午 10:15

Google Chrome 68.0.3440.84 Google Chrome 68.0.3440.84 Windows 10 x64 Edition Windows 10 x64 Edition

印度猴子不靠谱,换回安卓吧

dbsquirrel · 2018 年 8 月 9 日 下午 8:47

Google Chrome 68.0.3440.106 Google Chrome 68.0.3440.106 Windows 10 x64 Edition Windows 10 x64 Edition

从apple社区看到了你的回复 感谢
我也有一样的问题
https://www.v2ex.com/t/460089
https://www.v2ex.com/t/471491?p=1#r_5909047
之前ios11 ios12登录美区id时 频繁的卡死和闪退 发热严重
我是退出美区id 之后就完全正常使用了……………………

    Frank  Mod · 2018 年 8 月 9 日 下午 9:08

    Google Chrome 70.0.3514.2 Google Chrome 70.0.3514.2 Mac OS X  10.13.6 Mac OS X 10.13.6

    不客气,解决了就好。

Inighty · 2018 年 8 月 10 日 下午 11:28

Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Windows 7 x64 Edition Windows 7 x64 Edition

妈耶 我被这个问题困扰了好几天了! 而且是我换了电池之后出现的 搞的我还找客服说电池的问题!!感谢博主,了解了原因。 我的原因应该也是icloud原因,我用的美区icloud

    Frank  Mod · 2018 年 8 月 10 日 下午 11:40

    Google Chrome 70.0.3514.2 Google Chrome 70.0.3514.2 Mac OS X  10.13.6 Mac OS X 10.13.6

    不客气。我发现出现这个问题的似乎都是外区Apple ID,很诡异。

      Inighty · 2018 年 8 月 11 日 上午 12:42

      Google Chrome 67.0.3396.99 Google Chrome 67.0.3396.99 Windows 7 x64 Edition Windows 7 x64 Edition

      博主 用的什么方法解决的最后 难道只能关闭双重验证么 好像ios12关不了 我关了钥匙串好像还是一样的,确实退出了icloud账号就不发烫了 也不卡了

        Frank  Mod · 2018 年 8 月 11 日 上午 1:54

        Chrome 68.0.3440.83 Chrome 68.0.3440.83 iPhone iOS 12.0 iPhone iOS 12.0

        应该是需要关闭双重验证。双重验证只能从网页上关闭。

loopback · 2018 年 8 月 11 日 下午 10:59

Firefox 61.0 Firefox 61.0 Windows 10 x64 Edition Windows 10 x64 Edition

我也遇到了类似的问题,而且是毫无征兆没有做任何特殊操作的情况下突然就发生了,楼主总结的无效方案也都试过,结果也是无效。联系apple,各种收集log至今也无解决方案。通过抓包,发现每隔5-6分钟就从apple的一个IP地址上下载数据,大概每次25-30M。由于数据ssl加密,所以无法解码。我的分析与楼主类似,也是怀疑iCloud上的文件有什么碎片或者什么hash不一致,造成反复尝试下载。
不知楼主是否解决问题了,是否需要重置KeyChain和关闭双重验证要同时进行才能解决问题呢?

    Frank  Mod · 2018 年 8 月 11 日 下午 11:02

    Google Chrome 70.0.3514.2 Google Chrome 70.0.3514.2 Mac OS X  10.13.6 Mac OS X 10.13.6

    我关掉了双重验证,目前为止问题没有重现。如果你有Mac设备,可以尝试重置Keychain。

      loopback · 2018 年 8 月 12 日 下午 4:44

      Firefox 61.0 Firefox 61.0 Windows 10 x64 Edition Windows 10 x64 Edition

      尝试重置keychain,故障依旧。本打算关掉双重验证,结果登录到iCloud发现根本关闭不了。apple说iOS 10.3以上部分双重验证是无法关闭的。

        Frank  Mod · 2018 年 8 月 12 日 下午 4:48

        Google Chrome 70.0.3514.2 Google Chrome 70.0.3514.2 Mac OS X  10.14.0 Mac OS X 10.14.0

        我是在https://appleid.apple.com/上关掉的。

          loopback · 2018 年 8 月 12 日 下午 4:56

          Firefox 61.0 Firefox 61.0 Windows 10 x64 Edition Windows 10 x64 Edition

          我也是在这里准备关闭,但apple明确说明“对于在 iOS 10.3 或 macOS Sierra 10.12.4 及更高版本中创建的某些帐户,您无法关闭双重认证。”,界面上压根就没有关闭的链接,这下悲催了。

            Frank  Mod · 2018 年 8 月 12 日 下午 5:00

            Google Chrome 70.0.3514.2 Google Chrome 70.0.3514.2 Mac OS X  10.14.0 Mac OS X 10.14.0

            那么可以试试联系Apple支持,看有没有别的方法能关掉双重验证。如果不行的话,就只能新建一个Apple ID了。

              loopback · 2018 年 8 月 12 日 下午 5:02

              Firefox 61.0 Firefox 61.0 Windows 10 x64 Edition Windows 10 x64 Edition

              也只有等Apple解决了,5月份就联系过Apple,前前后后多次电话,始终没有解决问题,看来只有等iOS12试试了。

                Frank  Mod · 2018 年 8 月 12 日 下午 5:04

                Google Chrome 70.0.3514.2 Google Chrome 70.0.3514.2 Mac OS X  10.14.0 Mac OS X 10.14.0

                这个问题在iOS 12 Public Beta3里是仍然存在的,后两个版本我不确定。

                  loopback · 2018 年 8 月 12 日 下午 5:17

                  Firefox 61.0 Firefox 61.0 Windows 10 x64 Edition Windows 10 x64 Edition

                  看来Apple是不打算解决这个问题了。其实网上一搜,这种问题还真不少。
                  我发现好像并不是所有版本的iOS都有这个问题,我现在用的iPhone5,iOS10.3.3就没有这个问题。

                    Frank  Mod · 2018 年 8 月 12 日 下午 5:21

                    Google Chrome 70.0.3514.2 Google Chrome 70.0.3514.2 Mac OS X  10.14.0 Mac OS X 10.14.0

                    上面的帖子里提到 Computers running 10.11.6 and 10.12.6 work normally, so the problem seems to stem from some new feature in iOS 11 and macOS 10.13. 应该是只有iOS11及以上的设备会受影响。
                    这个问题的影响范围似乎比我预想的要大很多。我试着给Apple提反馈,但是Feedback只能提交一小段的说明而且没法附加任何附件。Bug Report又需要有开发者账号。

                    loopback · 2018 年 8 月 12 日 下午 5:28

                    Firefox 61.0 Firefox 61.0 Windows 10 x64 Edition Windows 10 x64 Edition

                    我自打5月份电话联系Apple反映这个问题,就配合Apple远程屏幕、安装描述文件收集log,其实Apple应该有非常详细的日志信息了。当时我自己还抓了网络包的,不过是SSL加密所以我解不了,问Apple是否需要,对方似乎已经有充分的故障信息了,也不需要这个抓包文件。

                    Frank  Mod · 2018 年 8 月 12 日 下午 5:32

                    Google Chrome 70.0.3514.2 Google Chrome 70.0.3514.2 Mac OS X  10.14.0 Mac OS X 10.14.0

                    那就只能用临时方案先撑着然后等更新了。我之前遇到过iOS一个更冷门的bug(https://blog.nyan.im/posts/1890.html),足足等了半年才修复。

                    loopback · 2018 年 8 月 12 日 下午 5:35

                    Firefox 61.0 Firefox 61.0 Windows 10 x64 Edition Windows 10 x64 Edition

                    这bug也够奇葩的了。

                    loopback · 2018 年 8 月 13 日 下午 10:11

                    Safari 11.1.1 Safari 11.1.1 Mac OS X  10.13.5 Mac OS X 10.13.5

                    最终还是通过reject gateway.icloud.com来避免跑流量,目前还未发现闪退情况,但发现reject后备忘录无法同步了。估计备忘录同步需先访问gateway.icloud.com

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Captcha *

%d 博主赞过: