Closed Bug 1331963 Opened 4 years ago Closed 4 years ago

browser.xul leaks (possibly from an addon)

Categories

(Firefox :: Untriaged, defect)

51 Branch
defect
Not set
normal

Tracking

()

RESOLVED INCOMPLETE

People

(Reporter: joerg, Unassigned, NeedInfo)

Details

User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0
Build ID: 20161201031821

Steps to reproduce:

Over time, Firefox memory usages grows and Firefox hangs. When typing or using the mouse it doesn't respond, i.e. the characters don't show up. Such an outage can take up to 5 or more seconds when Firefox uses 6GB or more. But I never saw Firefox going over 7,5GB. There seems to be a limit where the GC cleans up.

On firefox-dev Nicholas Nethercote suspected an add-on, because a diff between the memory usage after start and when the memory usage is excessive, shows a memory grow in window(chrome://browser/content/browser.xul)

2,656.57 MB (100.0%) -- explicit
├────838.60 MB (31.57%) -- window-objects
│    ├──640.89 MB (24.12%) -- top(none)
│    │  ├──632.46 MB (23.81%) -- detached
│    │  │  ├──629.46 MB (23.69%) -- window(chrome://browser/content/browser.xul)
│    │  │  │  ├──373.99 MB (14.08%) -- js-compartment([System Principal], about:blank)
│    │  │  │  │  ├──202.46 MB (07.62%) ++ classes
│    │  │  │  │  ├──117.49 MB (04.42%) ++ scripts
Discussion on firefox-dev https://mail.mozilla.org/pipermail/firefox-dev/2017-January/004949.html

Is it possible to inspect the memory of this window? My hope is to find some strings or class names I can search for in the source of add-ons. How can I find the code line that leaks memory? Does Firefox have a recording tool for memory allocation like valgrind?
Thanks for filing the bug. Odds are, the browser.xul leak happens when you close a browser window. An addon is probably keeping a reference to it. Maybe GreaseMonkey? We've seen issues with that a few times. You could try disabling that and see if the leaks still show up.

The hangs are probably because the cycle collector takes a long time to run when windows are leaking, and you are leaking a lot of windows.

As for getting a log, if you go to about:memory and click on "save concise" then you will get some logs showing what memory contains. These logs contain basically every string in Javascript, so they may contain private data. I have some Python scripts for analyzing these logs: https://github.com/amccreight/heapgraph Unfortunately there is not very good documentation yet.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Summary: Firefox hangs when memory above 4GB → browser.xul leaks (possibly from an addon)
Did the above comment help with this issue?
Flags: needinfo?(joerg)
I've disabled GreaseMonkey and Firefox doesn't consume so much memory. But it's still increasing, while slowly. Currently, it's heading 5GB where the hanging started to become noticeable.

I didn't took a look on the "save concise" logs so far, but I hope a find the time in the next days.
Is there any update on this issue? Is it still happening?
Closing this issue due to a lack of response by the reporter. Please reopen if this issue still persists.
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → INCOMPLETE
You need to log in before you can comment on or make changes to this bug.