启动Chromium时,Firefox以100%CPU使用率冻结30秒


22

最近,我开始观察到这非常令人困惑和烦恼,更不用说在打开Firefox然后启动Chromium时令人担忧的行为了:

在大约30秒内,Firefox的子进程将消耗所有可用的CPU资源,从而导致网站停止渲染(已显示的页面冻结,新页面显示带有灰色旋转圆圈的白色页面),而整个窗口仍处于响应状态(菜单,页面滚动) ,切换标签,甚至内部页面(例如about:config或about:preferences都可以使用...)。铬本身没有任何症状。在Firefox旋转时,立即再次终止Chromium不会更快地阻止该行为。

我的常规Firefox配置文件,没有任何附加组件等的全新,未经修改的Firefox配置文件也是如此,Firefox在禁用附加组件的安全模式下启动,而Firefox在私有模式下启动。与Chromium类似,我可以使用常规个人资料,隐身模式或临时个人资料启动它,始终生成相同的结果。

当Chromium运行并打开Firefox时,没有发生任何奇怪的事情。

从终端启动Firefox时,有时我在旋转时退出它会收到类似这样的消息(请注意管道错误行中提到了一些铬ipc ...):

ExceptionHandler::GenerateDump cloned child 32165
ExceptionHandler::SendContinueSignalToChild sent continue signal to child
ExceptionHandler::WaitForContinueSignal waiting for continue signal...
[Parent 26520, Gecko_IOThread] WARNING: pipe error (52): Connection reset by peer: file /build/firefox-8oo9jx/firefox-62.0+build2/ipc/chromium/src/chrome/common/ipc_channel_posix.cc, line 353
ExceptionHandler::GenerateDump cloned child 32274
ExceptionHandler::WaitForContinueSignal waiting for continue signal...
ExceptionHandler::SendContinueSignalToChild sent continue signal to child

奇怪的是,我无法在来宾帐户或新创建的常规(管理员)帐户中重现该行为。

一些系统规格(已更新):

  • Ubuntu 16.04(64位)
  • 火狐浏览器 62.0+内部版本2-0ubuntu0.16.04.5 63.0 + build2-0ubuntu0.16.04.2
  • 69.0.3497.81-0ubuntu0.16.04.1 70.0.3538.77-0ubuntu0.16.04.1
  • fontconfig 2.11.94-0ubuntu1.1
  • 图形硬件:Intel SkyLake集成图形(i5-6200U)+ Nvidia GeForce 940M
    当前,我已经nvidia-410安装了驱动程序,但是切换到了Intel主要配置文件。如何进一步排除故障并解决此问题?

我使用Gecko Profiler扩展程序创建了性能配置文件,并在我的常规Ubuntu帐户上安装了全新的Firefox配置文件。可以在这里找到:https : //perfht.ml/2zpTWsh-CPU使用率为100%的无响应时间范围应大致对应于Content Proc时间轴上突出显示的区域,大约为18s-56s。

我为此问题创建了Mozilla错误报告:https : //bugzilla.mozilla.org/show_bug.cgi?id=1504461

重要更新:显然我的错误报告是https://bugzilla.mozilla.org/show_bug.cgi?id=1495900的重复,指出fontconfig是罪魁祸首。似乎启动Chromium正在以某种方式更改字体配置,从而触发Firefox中的完全重新加载。这符合性能分析报告,也符合以前对字体包的更新如何触发相同的冻结。

有什么想法可以使这三个(Firefox,Chromium,fontconfig)相互配合?


我在ipc_channel_posix.cc的第353行找到的只是一个return true语句。当然,由同伴致命的连接休息永远不会好转。可悲的是,我无法重现此问题。希望我能提供更多帮助。
年长者极客'18

我在Ubuntu上也遇到了一些零散的问题,但CPU占用率很高,但是我无法说出是什么原因导致的,或者无法解决。我正在跟踪与CPU使用率高有关的许多未解决问题,因此,我会升级并寄希望于。目前,我没有任何问题(或者,如果有的话,这是一个特定的选项卡;因此,重新启动浏览器或关闭该选项卡即可解决此问题)。是否可以从16.04升级到18.10(因为16.04从4/2016开始,而18.10从8/2018开始)...?而且,我也改用了kubuntu,这似乎使我头疼一些。(如果可能,请从USB引导并使用两个实验启动)
。–迈克尔(Michael

有时我运行了Firefox,然后打开了Chrome(我知道它有些不同),却没有发现CPU使用率过高。从8个虚拟CPU的18%CPU到30%CPU可能需要5秒的峰值。
WinEunuuchs2Unix

Answers:


17

TL; DR:这是fontconfig2.13版之前的问题。可以通过将软件包升级到2.13或更高版本来解决(尽管我找不到合适的提供程序)。或者,检查主目录中所有与字体相关的文件夹和配置文件,并测试是否删除其中的任何一个都可以解决您的问题。对我来说,重命名~/.fonts就可以了。


在了解了错误报告之后,https: //bugzilla.mozilla.org/show_bug.cgi?id = 1495900 https://bugzilla.mozilla.org/show_bug.cgi?id=1411338之后,我们可以很清楚地看到问题一定是由引起的fontconfig

Chromium启动时会以某种方式触发字体数据库(???)的更改,这会导致Firefox(如果当前正在运行)以某种方式重新扫描文件系统中的字体,从而导致CPU使用率和暂时冻结。

显然更新 fontconfig软件包从2.11版本到2.13(例如Ubuntu 18.10中附带的版本)应该可以解决此问题,但是我发现没有简便的方法可以在16.04上获得该版本,而又不会破坏我已经安装的许多其他软件包的依赖性。

因此,由于该问题仅限于我的用户帐户,因此我检查了用户的本地字体配置和文件夹。有不同的字体相关的目录的挺乱的,说实话,包括~/.fonts~/.local/share/fonts~/.local/share-font-manager~/.config/font-manager~/.cache/font-manager~/.cache/fontconfig和几个配置文件和应用程序特定的字体的东西。

我首先删除(重新命名)~/.fonts文件夹,因为它似乎并没有包含任何有用的内容,并且touch ~/.fonts/Library/在此之前很简单就触发了Firefox的不良行为。该文件夹消失后,启动Chromium时的问题也消失了。\ o /


很有意义,因为我没有~/.fonts目录。所有字体都在系统范围内的目录中。
WinEunuuchs2Unix

显然,也可以通过启动根终端窗口在18.04上触发类似甚至相同的错误。strace表示有关字体文件的一些严重的文件I / O。有趣的是,这不仅是单独使用firefox的问题,还包括其他xorg应用程序的问题,因此我也认为xorg中存在问题。不幸的是,删除有问题的目录没有帮助。
stefanct

1
但是,从cosmic / 18.10 升级fontconfig2.13.0-5ubuntu3确实解决了AFAICT问题。这是一段时间以来最怪异的错误……感谢您的指点。
stefanct

@stefanct如何安装它而又不破坏任何东西,我尝试强制使用fontconfig和libfontconfig1 2.13并希望删除我的整个DE,运行18.04
GM-Script-Writer-62850 '18

@ GM-Script-Writer-62850我没有libfontconfig1特别处理的记忆。总的来说,我已经将仿生镜添加到apt的列表中,并使用apt pinning来避免安装其任何软件包而没有特别说明。然后,我简单地使用apt-t选项,如下所示:apt install fontconfig -tcosmic。我使用的是DE的mate…可能无法与其他DE一起使用。
stefanct

3

背景

有人提出此Firefox错误1492360:在chrome / chromium之前打开firefox时,CPU使用率很高。这是Bug 1495900的重复:启动Chrome使Firefox内容进程挂起大约两分钟,这是由于FontConfig字体重新扫描(FcInitReinitialize)所致

但是我也使用Firefox:

Firefox版本

当我打开Chrome时:

Chrome version.png

我看不到CPU有任何性能下降。

这可能违反您的道德,但也许您可以尝试google-chrome-stable像我一样安装。然后再次进行测试。如果CPU使用率没有达到100%,则可能会在Chromium和Chrome之间提交错误报告。

我在Ubuntu 16.04.5 LTS上。尽管内核当前4.14.78 LTS链,但我认为这与它没有任何关系,因为我也没有注意到先前内核的CPU命中率。

我唯一一次看到所有CPU处于100%状态是在期间update-initramfs


fontconfig Verson

在错误报告中显示:

$ dpkg -l 'fontconfig*' | grep "^ii"
ii  fontconfig        2.12.6-0ubuntu2 amd64        generic font configuration library - support binaries
ii  fontconfig-config 2.12.6-0ubuntu2 all          generic font configuration library - configuration

在我的非越野车版本中(虽然可能是因为没有本地字体):

$ dpkg -l 'fontconfig*' | grep "^ii"
ii  fontconfig        2.11.94-0ubuntu1.1 amd64        generic font configuration library - support binaries
ii  fontconfig-config 2.11.94-0ubuntu1.1 all          generic font configuration library - configuration

我的2.11.94版本早于错误报告的2.12版本。在错误报告中,2.13建议升级到解决方案,但注释中提到的OP是不可能的。因此2.11.94 可能是一种选择。


恩,不,我不打算安装Chrome。但是,我发现罪魁祸首是fontconfig现在。您的用户帐户中可能安装了其他(或没有)本地字体。我找到了删除(重新命名)~/.fonts文件夹的解决方法,从而解决了该问题。显然,也可以升级到fontconfig> = 2.13版本来修复它,但是我无法在16.04上做到这一点。
字节指挥官

是的,我安装的唯一字体是ttf用于文字处理器/电子表格中的条形码(第3个代码,共9个)。不幸的是,您不得不解决自己的赏金问题,但如果有什么安慰,过去我也是如此。
WinEunuuchs2Unix

我添加了降级fontconfig作为与我的版本匹配的选项,但这是一个“微弱的希望”,因为您可能来自那里。如果您有安装本地字体的链接,我将尝试确认/拒绝旧fontconfig版本的效果。
WinEunuuchs2Unix

我的版本fontconfig也是2.11.94-0ubuntu1.1如此,那个版本并非没有错误。我想,它必须是已安装的字体,自定义字体配置和黑魔法的组合。检查我的答案。:)
字节指挥官

1

从日志来看,由于某种原因,Firefox似乎正在使用同步IPC(进程间通信)。Firefox中有一些标志可以显式打开同步IPC(例如:network.cookie.ipc.sync)。其中之一可能已启用。您可以从 about:config中页面

然后,延迟将是Firefox等待响应的结果。由于Chromium完成启动或未积极运行时没有负载,因此会立即做出响应。

相关:https : //bugzilla.mozilla.org/show_bug.cgi?id=1331680


我将此network.cookie.ipc.sync配置的值从false 切换为true,然后再返回,每次更改后都重新启动Firefox,但仍然是相同的行为:(我仍然不明白为什么Firefox和Chromium甚至会首先进行通信,他们应该自己考虑每个业务。
字节指挥官

1
因为您发现实际原因无关,所以我已删除了此文件,但我想我应该将此留在这里作为可能的原因吗?
Aswin B

0

不知道以下建议是否有效。你可以试试看。尝试使用Synaptic Package Manager完全去除铬和Firefox(当然要保留.deb文件)。之后,检查是否有任何损坏的依赖关系。使用突触(如果有)修复它们。现在检查CPU使用率(我使用Powertop)。最后重新安装浏览器。

注意:这些事情通常是我在发生特定异常情况下要做的事情。我记得一年前也遇到过类似的问题。这样就解决了。


不会,清除并重新安装所有firefox *和Chrome *软件包都没有任何改变。
字节指挥官

启动Chrome时,powertop的空闲状态和频率状态小部件是否显示100%使用率?
希拉克(Hirak)'18

是的,它显示空闲状态下每个内核上的“ C0活动”状态大约为112%,而频率状态报告最大频率(2.7GHz)和每个内核上的空闲状态为0%。概述选项卡在列表顶部显示所有Firefox进程,每个进程的大约600-900ms / s的计算时间,但零事件/秒。
字节指挥官

0

在Ubuntu 16.04上,删除空文件夹可以~/.local/share/fonts解决我的情况。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.