【问题标题】:Why can't Firefox cope with a memory limit set by ulimit?为什么 Firefox 无法应对 ulimit 设置的内存限制?
【发布时间】:2026-02-05 04:30:01
【问题描述】:

当我使用以下方法为 Firefox 设置内存限制时:

$ ulimit -Sv 512000
$ ulimit -v
512000
$ firefox %u

我收到以下错误:

[4881] ###!!! ABORT: PR_CreateThread failed!: file /builddir/build/BUILD/firefox-49.0/firefox-49.0/js/xpconnect/src/XPCJSRuntime.cpp, line 1045
[4881] ###!!! ABORT: PR_CreateThread failed!: file /builddir/build/BUILD/firefox-49.0/firefox-49.0/js/xpconnect/src/XPCJSRuntime.cpp, line 1045
Segmentation fault (core dumped)

但是,如果 Firefox 已经在运行,它会打开一个新窗口而不会出现任何错误。

为 Firefox 设置 ulimit 有什么问题?

操作系统是 Fedora 24:4.7.5-200.fc24.x86_64

【问题讨论】:

  • 这是 Firefox 中的一个主要错误,现在已经 14 岁了。 Firefox 崩溃,有时会在内存不足时冻结整个操作系统。这是你永远不应该使用 Firefox 的原因之一,他们甚至不应该从事软件业务。 bugzilla.mozilla.org/show_bug.cgi?id=336807

标签: firefox memory ulimit


【解决方案1】:

Firefox 只是一个内存猪; 512M 的虚拟地址空间不足以运行它。在我的实验中,如果没有将ulimit -v 设置为至少 1.5G,我将无法启动繁忙的会话。

它在 firefox 已经运行时为您工作,因为在这种情况下,您不会启动新的 firefox 进程(它将继承 ulimit),而只是告诉已经运行的进程打开一个新窗口。

【讨论】: