【问题标题】:Why does spidermonkey give me a segmentation fault when i call the clear() function?为什么当我调用 clear() 函数时,spidermonkey 会给我一个分段错误?
【发布时间】:2012-04-01 23:18:22
【问题描述】:

一点帮助。我刚刚在 debian 上构建了 spidermonkey(./configure、make、make install),当我运行 js shell 并调用 clear() 函数时,我遇到了分段错误。知道为什么会这样或我可以在哪里获得帮助吗?有人遇到过这种情况吗?

$js
清除();
分段错误
$

【问题讨论】:

  • 你确实意识到 clear();清除一切?最有可能的事情是 GC'd JS Shell 需要正常运行。这是默认行为。同样的错误在我的 linux 控制台上重现。
  • 如果您可以发布 version();我的报告 185。
  • 我现在明白了。发生这种情况是因为您在全局对象上调用了 clear 。如果使用沙箱或类似的东西在一些正确编写的代码中调用它,则不会发生这种情况。沙箱将被销毁,而不是全局对象。

标签: shell segmentation-fault spidermonkey


【解决方案1】:

在不带参数的 JS Shell 中调用 clear 会删除全局对象。在交互式会话中,read-eval-print 循环将尝试访问先前已销毁的全局对象。最终结果:分段错误。而且,全局对象不再存在。

【讨论】:

  • 好的,这是默认行为吗?这可能是默认行为的原因,但我并没有真正看到它。有人会认为这种行为会比“分段错误”更复杂一点,但最好意识到这一点。
  • 我同意。但是代码在 shell 中的编写方式(这是一个 spidermonkey shell 函数)如果您不提供对象,则默认为调用者的主对象。这对于清理沙箱特别有用。里面应该有一些代码来检查你不会去 GC 全局对象,但是你不能使用 clear(); 清理你的沙箱;
  • 这可以通过参考检查来避免。您可能希望将其作为 SpiderMonkey Shell 的错误提出建议。
猜你喜欢
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多