【发布时间】:2015-04-11 00:24:15
【问题描述】:
我有一个 Web 应用程序在 Safari 中触发了一个似乎是 iOS8 错误的问题,我正在寻找有关导致它的原因以及如何解决它的线索。
该错误的特点是在用户在 Safari 中浏览了足够长的时间后,页面顶部会出现“此网页出现问题,因此已重新加载”。看起来有什么东西在幕后崩溃了,而 Safari 只是在优雅地恢复方面做得非常好。阅读崩溃日志发现:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x00000000
Triggered by Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 JavaScriptCore 0x2d4291d4 0x2d24a000 + 1962452
1 JavaScriptCore 0x2d50e166 0x2d24a000 + 2900326
2 JavaScriptCore 0x2d2bc88c 0x2d24a000 + 469132
...
研究表明,CSS 文件中的 translate3d 和 keyframe 实例可能是罪魁祸首。虽然摆脱它们似乎使错误不太可能再次发生,但错误仍然存在。同样,减小与最有可能触发错误的页面关联的(非常、非常大的)CSS 文件的大小似乎有所帮助,但并不能让它消失。
我的公司处理了一堆针对移动优化的面向商务的网络应用程序,而这似乎是唯一一个与此错误发生冲突的应用程序;我不知道是什么让这个特殊的应用程序如此愤怒的小雪花,但我想弄清楚并纠正它。是否有人对可能触发错误的原因以及我们如何解决它有任何想法?
【问题讨论】:
-
我只能告诉你,你在 Safari 中触发了分段错误。您的崩溃日志表明它可能是 JavaScript 导致的。如果没有触发它的代码,就不可能弄清楚是什么导致它崩溃,但这绝对是 Safari 中的一个错误。
-
@AlexanderO'Mara:老实说,这是一次钓鱼探险。我们拥有的 Javascript 数量相当可观,我还没有找到任何线索表明它的任何特定部分可能是罪魁祸首。如果我能得到一些关于可能导致它的提示(是否有任何与 Javascript 相关的内存泄漏,Safari 非常容易受到影响?),这将大大有助于我确定真正导致它的原因。跨度>
-
... 假设它实际上是 JavaScript,而不是 CSS 设置的某种独特组合,它们以某种方式组合形成一个试图下载 Cthulhu 的可怕咒语,在这种情况下,Apple 团队是因优雅地处理这种情况而受到表扬。我正在认真地进行比我更喜欢的盲目猜测。不过,是的,那些“JavaScriptCore”引用似乎确实暗示了 JavaScript。
-
这似乎不太可能是导致 SegFault 的内存泄漏,但我认为这是可能的。如果可以,请尝试分析内存使用情况。 This question offers some advice.
-
@BlairHippo 您能否详细说明“研究表明 CSS 文件中的 translate3d 和关键帧实例可能是罪魁祸首”?任何指示此等的链接?我在我们的应用程序中遇到了同样的问题,该问题一直崩溃(使用开发人员工具,令人沮丧)Safari 出现此错误。
标签: javascript css safari ios8 mobile-safari