我正在尝试将我的 Rails 应用程序部署到使用 Debian 运行的新 VPS。我使用 Nginx 和 Phusion Passenger 作为我的服务器。
我已安装 Node.js 作为 JavaScript 运行时。遗憾的是我看到以下错误消息:
Fatal error in v8::V8::AddGCPrologueCallback()
V8 is no longer usable
编辑:
现在已经修复了。显然 gr 安全性导致了错误。
最佳答案
该问题发生在具有 grsecurity 和某些限制性规则的内核上。
Node.js 需要在某些内存区域执行代码,而服务器不喜欢在这些区域执行代码。
您似乎需要为“节点”二进制文件切换两个标志。
另外,您可能需要将它们切换为您的 ruby 二进制文件。
打开 SEGMEXEC
paxctl -S `which node` && paxctl -S `which ruby`
关闭 MPROTECT
paxctl -m `which node` && paxctl -m `which ruby`
测试节点现在是否工作
node -e "console.log(1+1);"
有趣的事实是,我现在可以关闭 SEGMEXEC 并且节点仍然可以工作:S...但是打开它似乎最初为我修复了它。 如果它不起作用,请使用标志并尝试节点 -e
祝你好运!
小发明更多
关于javascript - V8 中的 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12017570/