Closed Bug 411186 Opened 17 years ago Closed 13 years ago

Firefox leaks nsGenericElements with Microsummaries Generator installed

Categories

(Firefox Graveyard :: Microsummaries, defect, P4)

defect

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: cbook, Assigned: sayrer)

References

Details

(Keywords: memory-leak, Whiteboard: [microsummaries-feature-removal])

Attachments

(5 files)

Attached file leak log
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9b3pre) Gecko/2008010710 Minefield/3.0b3pre

Launch Firefox with a new Profile

Follow the steps in https://litmus.mozilla.org/show_test.cgi?id=4230
After the Microsummaries Generator is installed - Firefox leaks

WARNING: Leaking the RDF Service.: file /opt/debug/mozilla/rdf/build/nsRDFModule.cpp, line 236
nsTraceRefcntImpl::DumpStatistics: 798 entries
nsDOMNodeAllocator leaked 2904 bytes 
nsStringStats
 => mAllocCount:          38866
 => mReallocCount:         8333
 => mFreeCount:           38094  --  LEAKED 772 !!!
 => mShareCount:          46033
 => mAdoptCount:           4953
 => mAdoptFreeCount:       4950  --  LEAKED 3 !!!
Flags: blocking1.9?
Attached file leak log 2
Also leaks after the Microsummary Generator is installed in later sessions. See the leaklog
Attachment #295819 - Attachment mime type: application/octet-stream → text/plain
Summary: Firefox leaks with Microsummaries Generator installed → Firefox leaks nsGlobalWindows with Microsummaries Generator installed
Just to clarify, it is enough to just add the microsummary generator from http://people.mozilla.com/~myk/microsummaries/tests/generated-microsummary-updates.html
After that starting and closing FF leaks. No need to browse to any page.
Component: General → Microsummaries
Flags: blocking1.9?
Product: Core → Firefox
QA Contact: general → microsummaries
Flags: blocking-firefox3?
This appears to have been caused by swapping out the microsummary service's module for XPCOMUtil's generateModule().
Blocks: 381254
OS: Linux → All
Hardware: PC → All
(In reply to comment #3)
> This appears to have been caused by swapping out the microsummary service's
> module for XPCOMUtil's generateModule().
Is that perhaps something which may cause leaks also with other modules?
(In reply to comment #4)
> (In reply to comment #3)
> > This appears to have been caused by swapping out the microsummary service's
> > module for XPCOMUtil's generateModule().
> Is that perhaps something which may cause leaks also with other modules?
> 

It can add some edges to the graph. It doesn't "cause" leaks.
Hmm.. generally switching to XPCOMUtils has helped with leaks since it avoids some bad patterns. So it's bad if that causes leaks.

Robert, some things are known to cause leaks due to the order we shut things down. Is this code by any chance causing cycles through the global scope or something like that? The global scope currently is shut down after the last cycle collection.
Assignee: nobody → sayrer
Flags: blocking-firefox3? → blocking-firefox3+
Priority: -- → P3
Attached file new leak log
new Leak Log with a debug build (Mozilla/5.0 (Windows; U; Windows NT 5.1;
en-US; rv:1.9b3pre) Gecko/2008012113 Minefield/3.0b3pre) including the fix from Bug 412491
Attached file leak log
new leak log per jonas request
So we're leaking much less now with the latest round of fixes, but it's still leaking.

Robert, do you have the cycles to look into this?
Summary: Firefox leaks nsGlobalWindows with Microsummaries Generator installed → Firefox leaks nsGenericElements with Microsummaries Generator installed
Ryan, did you investigate this some more? Was there some particular
change in bug 381254, which caused this?
Priority: P3 → P4
This nsXMLDocument is sticking around because of the this._content reference in JS:

2058     if (request.responseXML) {
2059       this._isXML = true;
2060       // XXX Figure out the parsererror format and log a specific error.
2061       if (request.responseXML.documentElement.nodeName == "parsererror") {
2062         this._handleError(event);
2063         return;
2064       }
2065       this._content = request.responseXML;
2066       this._contentType = request.channel.contentType;
2067       this._loadCallback(this);
2068     }
 617 nsTimerImpl     748        1 (   84.16 +/-    33.26)

There's one nsTimer left, but it's from the gfxTextRun stuff that's leaking.
And the nsBindingManager is being kept alive by the XML document.

1       nsXMLHttpRequest::OnStartRequest(nsIRequest*, nsISupports*)
  1       nsContentUtils::CreateDocument(...
    1       NS_NewDOMDocument(nsIDOMDocument**,..
      1       nsXMLDocument::Init() (nsUnicharUtils.cpp:)
        1       nsDocument::Init() (nsUnicharUtils.cpp:)
          1       nsBindingManager::AddRef() (nsUnicharUtils.cpp:)
Not blocking on this bug for final ship. Would take a safe enough patch if one comes through.
Flags: wanted-firefox3+
Flags: blocking-firefox3-
Flags: blocking-firefox3+
- BUGSPAM -
Wontfixing all Microsummaries bugs, since the feature has been removed from the core product and previous versions won't get further fixes for it.
If interested in supporting Microsummaries in your add-on, you're free to use our old microsummaries code and to search all previously open bugs by looking for [microsummaries-feature-removal] in the status whiteboard field.
Status: NEW → RESOLVED
Closed: 13 years ago
Resolution: --- → WONTFIX
Whiteboard: [microsummaries-feature-removal]
Product: Firefox → Firefox Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: