Firefox hangs after simultaneously opening Chrome/Electron-based applications
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mozilla Firefox |
Fix Released
|
Medium
|
|||
firefox (Ubuntu) |
Incomplete
|
Undecided
|
Unassigned |
Bug Description
When opening Chrome/
This includes:
- VSCode: https:/
- Atom: https:/
- Chromium browser
Here's a link to a screenshot that shows Firefox with a "loading" waiting icon on the center of the tab (applies to any other open tab)
This has been happening since Ubuntu 14.04, but my previous report was quickly dismissed.
I've done fresh installs for 14.04, 16.04 and 18.04, and the problem persists ever since.
OS: Ubuntu
Release: 18.04 LTS (other 18.04-based distros such as elementaryOS exhibit the same behavior)
Firefox: 74.0.1, 64-bit (although the problem happens since 32-bit 60.x or even earlier)
Current Hardware: Lenovo ThinkPad T410s: Intel i5 540M processor, NVidia NVS3100M graphics, 8Gb RAM, 480Gb SSD
# Expected behavior
While Firefox is open, any Chrome/
# Observed behavior
While Firefox is open, any Chrome/
Note that if Firefox is loaded *after* Chrome/
summary: |
- Firefox hangs after opening any Chrome/V8-based application + Firefox hangs after opening any Chrome/Electron-based application |
summary: |
- Firefox hangs after opening any Chrome/Electron-based application + Firefox hangs after opening Chrome/Electron-based applications |
description: | updated |
description: | updated |
summary: |
- Firefox hangs after opening Chrome/Electron-based applications + Firefox hangs after simultaneously opening Chrome/Electron-based + applications |
description: | updated |
Changed in firefox: | |
importance: | Unknown → Medium |
status: | Unknown → Fix Released |
Changed in firefox (Ubuntu): | |
status: | Confirmed → Incomplete |
Sometime in the past few weeks I've noticed a regression: when I start Chromium (Ubuntu's packaged version of it) to test something, all of my Firefox content processes hang for about 2 minutes. This is pretty bad!
Today I decided to profile, and the profile at https:/ /perfht. ml/2y8pYIS showed what I expected to be the problem: FontConfig. In particular, we spend basically all of the time inside FcInitReinitialize.
I'm not sure if the thing that caused the regression is something in Chromium (e.g., a change in version 69, which I got the upgrade to on 2018-09-12, which seems plausible for when this started happening), or whether the regression is on the Firefox side.
[Tracking Requested - why for this release]:
Either way, spending this much time rescanning font directories just because I started Chromium doesn't seem acceptable, and seems likely to be problematic for any Web developers running Linux.
On the flip side, it's possible my times are particularly long because I have a lot of fonts installed. (I don't have a particularly large number of active tabs -- probably about 20-30, though I have a very large number of dormant tabs that haven't been loaded but are part of my session. If we do something once per tab, that could certainly be a problem...)
The bulk of the time (again, see the profile at https:/ /perf-html. io/public/ e0db389afe6c3fd cafc8df3db7f0ec 0447a1f432 ) is spent in stacks like this:
TT_New_Context Clear get_type handler_ disconnect emit_valist marshal_ BOOLEAN_ _BOXED_ BOXEDv notify_ by_pspec drag_context_ get_type context_ dispatch context_ dispatch context_ iteration :ProcessNextNat iveEvent( bool) :OnProcessNextE vent(nsIThreadI nternal* , bool) :OnProcessNextE vent(nsIThreadI nternal* , bool) :ProcessNextEve nt(bool, bool*) vent(nsIThread* , bool) :ipc::MessagePu mp::Run( base::MessagePu mp::Delegate* ) :Run() ocess(int, char**, XREChildData const*) ocess
FT_Load_Glyph
FcPatternFormat
FcPatternFormat
FcFreeTypeQueryFace
FcFileIsDir
FcFileIsDir
FcDirScan
FcConfigAppFont
FcConfigBuildFonts
FcInitLoadConfig
FcInitReinitialize
gtk_settings_
g_closure_invoke
g_signal_
g_signal_
g_signal_emit
g_cclosure_
g_object_
gtk_main_do_event
gdk_event_free
gdk_x11_
g_main_
g_main_
g_main_
nsAppShell:
nsBaseAppShell:
non-virtual thunk to nsBaseAppShell:
nsThread:
NS_ProcessNextE
mozilla:
MessageLoop::Run()
nsBaseAppShell:
XRE_RunAppShell()
MessageLoop::Run()
XRE_InitChildPr
XRE_InitChildPr