【问题标题】:Browser crashes on heavy single page pplication浏览器在繁重的单页应用程序上崩溃
【发布时间】:2014-06-11 10:08:29
【问题描述】:

我们有一个大的单页应用程序,它时不时地开始崩溃。我们现在尝试调试它一段时间,但不幸的是,仍然没有结果。我们使用了传统的调试工具,但它们并不是很有用——可能没有正确使用。

该应用似乎在 Safari 上最常崩溃,但在 Chrome 中并没有那么频繁地崩溃,但它仍然如此,所以我不能排除浏览器的问题。

我设法得到了这个崩溃报告,你可以在这个问题的结尾找到它,不幸的是我不知道在里面寻找什么。我知道它很大,我只是把它扔给你说“在这里,找到一个错误”,但你能不能看一下它并给我一些提示可能有什么问题或者我应该在报告中关注什么?

这是崩溃报告http://pastebin.com/bNxpuS6T

谢谢

【问题讨论】:

  • 您是否考虑过修复您的页面? IE。不要让它变得巨大。或者最好不要让它成为单页?还有页面的链接是什么?
  • 是的,这是不可能的。对它的要求是SPA,它有很多功能,所以它是巨大的。该页面目前无法向公众开放,因此很遗憾,我无法为您提供任何链接
  • 它是如何崩溃的?你做了哪些事情来让它崩溃?
  • 奇怪的是,只要标签处于空闲状态,当我没有专注于它时,它就会崩溃。当我使用它时,它不会崩溃(或者比它空闲时很少崩溃)

标签: javascript crash single-page-application crash-reports


【解决方案1】:

从崩溃报告和源代码中我可以看到,您的 JavaScript 代码试图破坏一些 DOM 对象,同时仍在迭代这些对象,这就是崩溃的原因。

我猜您可能想检查与空闲选项卡关联的任何计时器是否仍处于活动状态。

详情: WebKit 崩溃了

  1   com.apple.WebCore   0x00007fff83cace2d WebCore::ScriptExecutionContext::willDestroyActiveDOMObject(WebCore::ActiveDOMObject*) + 45

源代码在哪里 (click here)

void ScriptExecutionContext::willDestroyActiveDOMObject(ActiveDOMObject* object)
{
    ASSERT(object);
    if (m_iteratingActiveDOMObjects)
        CRASH();
    m_activeDOMObjects.remove(object);
}

【讨论】:

  • 谢谢!经过这么长时间,我没想到会有任何答案,而这个确实有帮助。但是,我不确定时间 - 您是指与空闲选项卡相关的哪种计时器?你说的是javascript计时器吗?
  • @user1680977 计时器,我的意思是“setTimeout(function(){...}, 3000);”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多