Last Comment Bug 835010 - Roboform 7.8.6.5 memory leak on closing windows and also after being disabled
: Roboform 7.8.6.5 memory leak on closing windows and also after being disabled
Status: RESOLVED FIXED
[MemShrink:P2]
:
Product: Tech Evangelism
Classification: Other
Component: Add-ons (show other bugs)
: unspecified
: x86 Windows XP
: -- normal (vote)
: ---
Assigned To: Nobody; OK to take it and work on it
:
Mentors:
Depends on:
Blocks: LeakyAddons ZombieCompartments
  Show dependency treegraph
 
Reported: 2013-01-25 22:15 PST by Michael Kraft [:morac]
Modified: 2013-03-01 07:56 PST (History)
5 users (show)
See Also:
Crash Signature:
(edit)
QA Whiteboard:
Iteration: ---
Points: ---


Attachments
Add-on to test memory leaks (generates about 50 to 75 MB per window) (1.32 KB, application/octet-stream)
2013-01-25 22:15 PST, Michael Kraft [:morac]
no flags Details

Description Michael Kraft [:morac] 2013-01-25 22:15:10 PST
Created attachment 706745 [details]
Add-on to test memory leaks (generates about 50 to 75 MB per window)

Reported to developer as ticket 614090.


I've found that with Roboform installed and enabled, chrome windows are leaking memory when closed in Firefox 18.0.1 and up. They aren't becoming "Ghost Windows", but the memory used by objects added to the windows aren't being released.

In addition, disabling Roboform does not release the memory used by Roboform resulting in a zombie compartment (likely because it throws an exception). Only a restart of Firefox clears up the memory for Roboform.

First off with Roboform installed, memory is not released when closing Firefox windows. This is easy to see when you install the attached "Memory Leak Tester" Firefox add-on. It simply creates a large string (about 75 MB in Firefox 18) and attaches it to the Chrome window. Normally when the window is closed, this would be garbage collected, but with Roboform installed and enabled, it is not.

Steps to reproduce running Firefox 18.0.1 for Windows:
1. Install Roboform 7.8.6.5
2. Install the attached Leak Test add-on in a new Firefox profile (with Roboform already installed) and restart the browser.
3. Go to about:memory in the browser and you should see something similar to the following:

│ ├───80.09 MB (37.28%) -- top(chrome://browser/content/browser.xul, id=5)/active
│ │ ├──80.04 MB (37.26%) -- window(chrome://browser/content/browser.xul)
│ │ │ ├──78.58 MB (36.58%) -- js/compartment([System Principal], about:blank)
│ │ │ │ ├──77.57 MB (36.11%) -- gc-heap
│ │ │ │ │ ├──76.29 MB (35.52%) ── strings
│ │ │ │ │ └───1.27 MB (00.59%) ++ (6 tiny)
│ │ │ │ └───1.01 MB (00.47%) ++ (6 tiny)
│ │ │ └───1.46 MB (00.68%) ++ (4 tiny)
│ │ └───0.05 MB (00.02%) ++ window(about:blank)

4. Open a new browser window and close it. If you refresh the about:memory page, you should see the memory usage has increased by about 75 MB and the following will appear on the page:

│ ├───78.27 MB (36.44%) -- top(none)/detached/window([system])
│ │ ├──78.25 MB (36.43%) -- js/compartment([System Principal], about:blank)
│ │ │ ├──77.39 MB (36.03%) -- gc-heap
│ │ │ │ ├──76.29 MB (35.52%) ── strings
│ │ │ │ └───1.10 MB (00.51%) ++ (6 tiny)
│ │ │ └───0.86 MB (00.40%) ++ (5 tiny)
│ │ └───0.02 MB (00.01%) ++ dom

5. Click the "Minimize memory usage" button at the bottom of the page a few times.

Expected result: The "top(none)/detached/window([system])" data should be garbage collected.

Actual result: It is not garbage collected and instead leaks.

6. Disable Roboform in the Firefox Add-on Manager. Note that this throws an exception which displays in the Firefox debug console window (if enabled using the -console startup option in Firefox) and add-on logging is enabled (see https://developer.mozilla.org/en-US/docs/Setting_up_extension_development_environment#Development_preferences):

*** WARN addons.xpi: Exception running bootstrap method shutdown on {22119944-ED35-4ab1-910B-E619EA06A115}:
[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIConsoleService.unregisterListener]"
nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: resource://gre/modules/XPIProvider.jsm ->
file:///C:/Program%20Files/Siber%20Systems/AI%20RoboForm/Firefox/bootstrap.js -> resource://roboform/content/roboform.js :: zds :: line 615" data: no]

7. Note at this point the add-on says it is disabled and it's toolbar disaappears, but it is still "active" in Firefox. If you go to "about:compartments" in the browser window and search for "Roboform", its bootstrap.js file is still loaded which is wrong. Bootstrap addons should be completely removed from memory when they are disabled.

8. Restart since Roboform is still not releasing memory and repeat the steps 3 through 5 above.

Results: The "top(none)/detached/window([system])" data is garbage collected when Roboform is disabled (or not installed)
Comment 1 Justin Lebar (not reading bugmail) 2013-02-06 14:23:59 PST
I'm not sure there's much we can do here, but this is a really good bug report.  :)
Comment 2 Nicholas Nethercote [:njn] (on vacation until July 11) 2013-02-06 14:25:01 PST
I think Roboform isn't on AMO.  Kris, do you have a contact for Roboform?
Comment 3 Michael Kraft [:morac] 2013-02-06 15:44:24 PST
I submitted a ticket with Roboform and they said this should be fixed in their next release.
Comment 4 Kris Maglione [:kmag] 2013-02-06 15:50:53 PST
RoboForm isn't on AMO, but RoboForm Lite is. Michael, do you know of this also occurs with that add-on? https://addons.mozilla.org/editors/review/roboform-online-password-manag

Also, thanks for filing RoboForm ticket. Can you provide a link?
Comment 5 Michael Kraft [:morac] 2013-02-06 16:38:36 PST
I don't know if Roboform Lite has this problem as I didn't test it.  The Lite version doesn't use a DLL component though. 

Unfortunately Siber Systems ticket system is private so any link I provided wouldn't work.
Comment 6 Kris Maglione [:kmag] 2013-02-07 11:55:59 PST
I can't reproduce this with RoboForm Lite.

I'm going to leave this bug open for tracking purposes. Please keep us updated with the progress on your ticket.
Comment 7 Michael Kraft [:morac] 2013-03-01 07:56:07 PST
This appears to be fixed in Roboform version 7.8.7.5.

Note You need to log in before you can comment on or make changes to this bug.