Safari中的网页触发EXC_BAD_ACCESS/KERN_INVALID_ADDRESS崩溃

Bla*_*ppo 10 javascript css safari mobile-safari ios8

我有一个网络应用程序触发了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
...
Run Code Online (Sandbox Code Playgroud)

研究暗示的实例translate3d,并keyframe在CSS文件可能是罪魁祸首.虽然摆脱它们似乎使虫子不太可能复发,但虫子仍然存在.同样,减少与最有可能触发错误的页面相关联的(非常非常大的)CSS文件的大小似乎有所帮助,但不会让它消失.

我的公司处理了一堆针对移动优化的面向商务的Web应用程序,这是唯一一个似乎与这个bug相冲突的应用程序; 我不知道是什么让这个特殊的应用程序如此愤怒的小特殊雪花,但我想弄清楚并纠正它.有没有人对可能触发错误的内容以及我们如何解决它有任何想法?

Joh*_*hnH 2

检查适用的 JavaScript 和 CSS 行是否存在可能的语法违规。一个好的 IDE 编辑器应该突出显示潜在的问题,以简化这项工作。还要检查生成的 HTML 页面源是否存在格式错误的页面。页面格式问题可能会给某些浏览器带来不稳定的行为,但对于其他浏览器则不会出现任何问题。

另一个可以尝试的诊断过程是禁用或注释掉 JavaScript 代码和/或 CSS 行的不同部分,以尝试隔离问题的位置。尽可能删除大的部分,以获得不会产生错误的功能页面。然后,启用或取消注释行,直到错误返回。重复此过程,直到问题区域被隔离以进行纠正。

还要考虑更改在“非常非常大”的 CSS 文件中进行 CSS 定义的顺序。这可能会在页面上产生不同的行为,可以纠正问题或帮助显示问题的原因。

  • 是否有任何 JavaScript 或 CSS 错误不会记录到控制台?因为我们在那里没有看到任何可疑的东西。在不使网站无法运行的情况下删除大块 CSS 或 JavaScript 是很困难的。不过我想我可以进去并尝试通过外科手术尽可能地删除所有可以删除的内容,以查看该错误是否归因于某些演示文稿的绒毛或核心功能。尽管如此,我还是厌倦了盲目地胡思乱想,并且至少想对我正在寻找的东西有一个理论。 (2认同)