Closed
Bug 341872
Opened 18 years ago
Closed 18 years ago
Download manager leaks helperApps
Categories
(Toolkit :: Downloads API, defect)
Toolkit
Downloads API
Tracking
()
VERIFIED
FIXED
mozilla1.9alpha1
People
(Reporter: regis.caspar+bz, Assigned: regis.caspar+bz)
References
Details
(Keywords: memory-leak, verified1.8.1.2)
Attachments
(3 files, 2 obsolete files)
11.37 KB,
text/plain
|
Details | |
1.56 KB,
patch
|
Gavin
:
review+
dveditz
:
approval1.8.1.2+
|
Details | Diff | Splinter Review |
582 bytes,
patch
|
Details | Diff | Splinter Review |
Download manager leaks helperApps (from helperApps.js) when downloading a file and choosing "open with". Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20060617 Minefield/3.0a1 ID:2006061704 [cairo] Will attach details and patch
Assignee | ||
Comment 1•18 years ago
|
||
Assignee | ||
Comment 2•18 years ago
|
||
This nullify HelperApps when dialog (unknownContentType.xul) is unloaded.
Comment 3•18 years ago
|
||
Why is helperApps.js even included here? Do we even use it? http://bonsai.mozilla.org/cvsblame.cgi?file=mozilla/toolkit/mozapps/downloads/content/unknownContentType.xul&rev=1.12&mark=61#58
Assignee | ||
Comment 4•18 years ago
|
||
(In reply to comment #3) > Why is helperApps.js even included here? Do we even use it? That's a pretty good question and honestly I tried to understand this code (open with function of the download manager) but I don't know how this is used. It looks used (how the dialog works is a mystery for me) because unknownContentType.xul actually do something and it's the only script included (I checked with DOMi too).
Comment 5•18 years ago
|
||
After looking into this, it appears that nsHelperAppDlg.js.in does expect the unknownContentType dialog to include that file. http://bonsai.mozilla.org/cvsblame.cgi?file=mozilla/toolkit/mozapps/downloads/src/nsHelperAppDlg.js.in&rev=1.35&mark=821-824#817 Regis, you should probably request review from mconnor or Mano on this.
Assignee | ||
Comment 6•18 years ago
|
||
Comment on attachment 225997 [details] [diff] [review] patch (In reply to comment #5) > After looking into this, it appears that nsHelperAppDlg.js.in does expect the > unknownContentType dialog to include that file. > http://bonsai.mozilla.org/cvsblame.cgi?file=mozilla/toolkit/mozapps/downloads/src/nsHelperAppDlg.js.in&rev=1.35&mark=821-824#817 > > Regis, you should probably request review from mconnor or Mano on this. OK, I verified that the issue is still present, that the patch is still OK and updated my review request. Thanks Adam.
Attachment #225997 -
Flags: review? → review?(mconnor)
Comment 7•18 years ago
|
||
*** Bug 344946 has been marked as a duplicate of this bug. ***
Comment 8•18 years ago
|
||
*** Bug 345180 has been marked as a duplicate of this bug. ***
would be nice to get this patch into Firefox 2.0 beta2, its still showing the latest branch nightlies
Comment 10•18 years ago
|
||
*** Bug 345926 has been marked as a duplicate of this bug. ***
Comment 11•18 years ago
|
||
(In reply to comment #9) > would be nice to get this patch into Firefox 2.0 beta2, its still showing the > latest branch nightlies I agree. I have a Leak Monitor leak report nearly identical to the submitted 'Leak Monitor results' attachment that I got from Mozilla/5.0 (Windows;;; en-US; rv:1.8.1b1) Gecko/20060724 BonEcho/2.0b1 ID:2006072404
Assignee | ||
Updated•18 years ago
|
Whiteboard: [has patch][needs review]
Comment 12•18 years ago
|
||
such a simple one-liner patch, any reason for the delay?, can it make it into beta 2?
Comment 13•18 years ago
|
||
*** Bug 356029 has been marked as a duplicate of this bug. ***
Comment 14•18 years ago
|
||
It looks unlikely this patch will make Fx2 unless the drivers feel very generous and mconnor reviews this ASAP.
Comment 15•18 years ago
|
||
*** Bug 362004 has been marked as a duplicate of this bug. ***
Updated•18 years ago
|
Attachment #225997 -
Flags: review?(mconnor) → review+
Updated•18 years ago
|
OS: Windows XP → All
Hardware: PC → All
Whiteboard: [has patch][needs review] → [checkin needed]
Target Milestone: --- → Firefox 3 alpha1
Comment 16•18 years ago
|
||
leaked again, from a site that doesn't require login: http://www.cse.yorku.ca/~cs251010/document.pdf Leaks in window 0x8f818c8: [+] [leaked object] (96831c8) = [object Object] [+] _inner (9682c68) = [xpconnect wrapped (nsISupports, nsIRDFDataSource, nsIRDFRemoteDataSource)] [ ] AddObserver (9682c30) = function AddObserver() { [native code] } [ ] HasAssertion (9682658) = function HasAssertion() { [native code] } [ ] GetTarget (9682610) = function GetTarget() { [native code] } [ ] Change (96824d0) = function Change() { [native code] } [ ] Assert (9682300) = function Assert() { [native code] } [ ] QueryInterface (99d1930) = function QueryInterface() { [native code] } [ ] Flush (99d1918) = function Flush() { [native code] } [ ] URI = file:///home/mehmet/.mozilla/firefox/7uz3lf08.default/mimeTypes.rdf [+] GetSource (8f4f288) = function GetSource() { [native code] } [ ] prototype (8f81930) = [object Object] [+] GetSources (8f4f270) = function GetSources() { [native code] } [ ] prototype (8f81b38) = [object Object] [+] GetTargets (8f4f260) = function GetTargets() { [native code] } [ ] prototype (8f81be0) = [object Object] [+] Unassert (8f4f210) = function Unassert() { [native code] } [ ] prototype (8f81c80) = [object Object] [+] Move (8f4f1f0) = function Move() { [native code] } [ ] prototype (8f81d38) = [object Object] [+] RemoveObserver (8f4f1e0) = function RemoveObserver() { [native code] } [ ] prototype (8f81e50) = [object Object] [+] ArcLabelsIn (8f4f178) = function ArcLabelsIn() { [native code] } [ ] prototype (8f81ec0) = [object Object] [+] ArcLabelsOut (8f4f168) = function ArcLabelsOut() { [native code] } [ ] prototype (8f81f60) = [object Object] [+] GetAllResources (8f4f158) = function GetAllResources() { [native code] } [ ] prototype (8f82070) = [object Object] [+] IsCommandEnabled (8f4f140) = function IsCommandEnabled() { [native code] } [ ] prototype (8f68d20) = [object Object] [+] DoCommand (8f4f108) = function DoCommand() { [native code] } [ ] prototype (8f68d40) = [object Object] [+] GetAllCmds (8f4f0f8) = function GetAllCmds() { [native code] } [ ] prototype (8f68fc0) = [object Object] [+] hasArcIn (8f4f0e0) = function hasArcIn() { [native code] } [ ] prototype (8f69018) = [object Object] [+] hasArcOut (8f4f0c8) = function hasArcOut() { [native code] } [ ] prototype (8f69038) = [object Object] [+] beginUpdateBatch (8f4f0b0) = function beginUpdateBatch() { [native code] } [ ] prototype (8f690a8) = [object Object] [+] endUpdateBatch (8f4f058) = function endUpdateBatch() { [native code] } [ ] prototype (8f69af0) = [object Object] [ ] loaded = true [+] Init (8f4f010) = function Init() { [native code] } [ ] prototype (8f69d48) = [object Object] [+] Refresh (8f4efd0) = function Refresh() { [native code] } [ ] prototype (8f6a788) = [object Object] [+] FlushTo (8f4efc0) = function FlushTo() { [native code] } [ ] prototype (8f6a8b8) = [object Object] [+] _fileTypeArc (9682bb0) = [xpconnect wrapped nsIRDFResource] [+] QueryInterface (8f4f680) = function QueryInterface() { [native code] } [ ] prototype (96208d8) = [object Object] [+] EqualsNode (8f4f670) = function EqualsNode() { [native code] } [ ] prototype (9620930) = [object Object] [ ] Value = http://home.netscape.com/NC-rdf#FileType [ ] ValueUTF8 = http://home.netscape.com/NC-rdf#FileType [+] Init (8f4f5e8) = function Init() { [native code] } [ ] prototype (95ecf80) = [object Object] [+] EqualsString (8f4f328) = function EqualsString() { [native code] } [ ] prototype (95ed418) = [object Object] [+] GetDelegate (8f4f308) = function GetDelegate() { [native code] } [ ] prototype (95ed438) = [object Object] [+] ReleaseDelegate (8f4f300) = function ReleaseDelegate() { [native code] } [ ] prototype (95ed460) = [object Object] [+] _fileHandlerArc (9682b80) = [xpconnect wrapped nsIRDFResource] [+] QueryInterface (8f3c650) = function QueryInterface() { [native code] } [ ] prototype (9620628) = [object Object] [+] EqualsNode (8f3c638) = function EqualsNode() { [native code] } [ ] prototype (9620650) = [object Object] [ ] Value = http://home.netscape.com/NC-rdf#FileHandler [ ] ValueUTF8 = http://home.netscape.com/NC-rdf#FileHandler [+] Init (8f4fb18) = function Init() { [native code] } [ ] prototype (96206a8) = [object Object] [+] EqualsString (8f4fb08) = function EqualsString() { [native code] } [ ] prototype (96206c0) = [object Object] [+] GetDelegate (8f4fad8) = function GetDelegate() { [native code] } [ ] prototype (9620750) = [object Object] [+] ReleaseDelegate (8f4fad0) = function ReleaseDelegate() { [native code] } [ ] prototype (9620788) = [object Object] [+] _fileIconArc (9682b38) = [xpconnect wrapped nsIRDFResource] [+] QueryInterface (8d21ff0) = function QueryInterface() { [native code] } [ ] prototype (96204c8) = [object Object] [+] EqualsNode (8d21fa8) = function EqualsNode() { [native code] } [ ] prototype (96204d8) = [object Object] [ ] Value = http://home.netscape.com/NC-rdf#FileIcon [ ] ValueUTF8 = http://home.netscape.com/NC-rdf#FileIcon [+] Init (8d21f90) = function Init() { [native code] } [ ] prototype (9620508) = [object Object] [+] EqualsString (8d21f80) = function EqualsString() { [native code] } [ ] prototype (9620538) = [object Object] [+] GetDelegate (8f3cce8) = function GetDelegate() { [native code] } [ ] prototype (9620568) = [object Object] [+] ReleaseDelegate (8f3c8a0) = function ReleaseDelegate() { [native code] } [ ] prototype (9620598) = [object Object] [+] _fileExtensionArc (9682b10) = [xpconnect wrapped nsIRDFResource] [+] QueryInterface (8d22120) = function QueryInterface() { [native code] } [ ] prototype (96200c8) = [object Object] [+] EqualsNode (8d22110) = function EqualsNode() { [native code] } [ ] prototype (96203f0) = [object Object] [ ] Value = http://home.netscape.com/NC-rdf#FileExtension [ ] ValueUTF8 = http://home.netscape.com/NC-rdf#FileExtension [+] Init (8d220f0) = function Init() { [native code] } [ ] prototype (9620438) = [object Object] [+] EqualsString (8d220c0) = function EqualsString() { [native code] } [ ] prototype (9620460) = [object Object] [+] GetDelegate (8d220b8) = function GetDelegate() { [native code] } [ ] prototype (9620478) = [object Object] [+] ReleaseDelegate (8d220a8) = function ReleaseDelegate() { [native code] } [ ] prototype (9620488) = [object Object] [+] _fileExtensionsArc (9682ad0) = [xpconnect wrapped nsIRDFResource] [+] QueryInterface (8d22240) = function QueryInterface() { [native code] } [ ] prototype (961f810) = [object Object] [+] EqualsNode (8d22238) = function EqualsNode() { [native code] } [ ] prototype (961f9a0) = [object Object] [ ] Value = http://home.netscape.com/NC-rdf#FileExtensions [ ] ValueUTF8 = http://home.netscape.com/NC-rdf#FileExtensions [+] Init (8d221d0) = function Init() { [native code] } [ ] prototype (961fab0) = [object Object] [+] EqualsString (8d221c8) = function EqualsString() { [native code] } [ ] prototype (961fac0) = [object Object] [+] GetDelegate (8d221b0) = function GetDelegate() { [native code] } [ ] prototype (961fb28) = [object Object] [+] ReleaseDelegate (8d22158) = function ReleaseDelegate() { [native code] } [ ] prototype (961fb38) = [object Object] [+] _handleAutoArc (9682ab0) = [xpconnect wrapped nsIRDFResource] [+] QueryInterface (8d22338) = function QueryInterface() { [native code] } [ ] prototype (961f688) = [object Object] [+] EqualsNode (8d222e8) = function EqualsNode() { [native code] } [ ] prototype (961f6c8) = [object Object] [ ] Value = http://home.netscape.com/NC-rdf#FileHandleAuto [ ] ValueUTF8 = http://home.netscape.com/NC-rdf#FileHandleAuto [+] Init (8d222b8) = function Init() { [native code] } [ ] prototype (961f700) = [object Object] [+] EqualsString (8d222b0) = function EqualsString() { [native code] } [ ] prototype (961f750) = [object Object] [+] GetDelegate (8d222a8) = function GetDelegate() { [native code] } [ ] prototype (961f790) = [object Object] [+] ReleaseDelegate (8d22298) = function ReleaseDelegate() { [native code] } [ ] prototype (961f7b0) = [object Object] [+] _valueArc (96829d0) = [xpconnect wrapped nsIRDFResource] [+] QueryInterface (8cf6578) = function QueryInterface() { [native code] } [ ] prototype (961f560) = [object Object] [+] EqualsNode (8cf6140) = function EqualsNode() { [native code] } [ ] prototype (961f598) = [object Object] [ ] Value = http://home.netscape.com/NC-rdf#value [ ] ValueUTF8 = http://home.netscape.com/NC-rdf#value [+] Init (8cf5d10) = function Init() { [native code] } [ ] prototype (961f5b8) = [object Object] [+] EqualsString (8d223f8) = function EqualsString() { [native code] } [ ] prototype (961f5c8) = [object Object] [+] GetDelegate (8d223f0) = function GetDelegate() { [native code] } [ ] prototype (961f5f0) = [object Object] [+] ReleaseDelegate (8d223b0) = function ReleaseDelegate() { [native code] } [ ] prototype (961f600) = [object Object] [+] _handlerPropArc (96827b8) = [xpconnect wrapped nsIRDFResource] [+] QueryInterface (8cc3be0) = function QueryInterface() { [native code] } [ ] prototype (961f470) = [object Object] [+] EqualsNode (8cc3bd0) = function EqualsNode() { [native code] } [ ] prototype (961f480) = [object Object] [ ] Value = http://home.netscape.com/NC-rdf#handlerProp [ ] ValueUTF8 = http://home.netscape.com/NC-rdf#handlerProp [+] Init (8cf66a0) = function Init() { [native code] } [ ] prototype (961f4a0) = [object Object] [+] EqualsString (8cf6690) = function EqualsString() { [native code] } [ ] prototype (961f4b0) = [object Object] [+] GetDelegate (8cf6688) = function GetDelegate() { [native code] } [ ] prototype (961f4c0) = [object Object] [+] ReleaseDelegate (8cf6678) = function ReleaseDelegate() { [native code] } [ ] prototype (961f4d0) = [object Object] [+] _externalAppArc (96827a8) = [xpconnect wrapped nsIRDFResource] [+] QueryInterface (8b5dd20) = function QueryInterface() { [native code] } [ ] prototype (961f360) = [object Object] [+] EqualsNode (8b5dd00) = function EqualsNode() { [native code] } [ ] prototype (961f390) = [object Object] [ ] Value = http://home.netscape.com/NC-rdf#externalApplication [ ] ValueUTF8 = http://home.netscape.com/NC-rdf#externalApplication [+] Init (8c3aec0) = function Init() { [native code] } [ ] prototype (961f3b8) = [object Object] [+] EqualsString (8c3ae90) = function EqualsString() { [native code] } [ ] prototype (961f3c8) = [object Object] [+] GetDelegate (8c3ae50) = function GetDelegate() { [native code] } [ ] prototype (961f3f0) = [object Object] [+] ReleaseDelegate (8c3ae08) = function ReleaseDelegate() { [native code] } [ ] prototype (961f428) = [object Object] Pls let me know if this is a new bug that I should submit.
Assignee | ||
Comment 17•18 years ago
|
||
(In reply to comment #16) > leaked again, from a site that doesn't require login: > http://www.cse.yorku.ca/~cs251010/document.pdf > [...] > Pls let me know if this is a new bug that I should submit. I would say the bug you observe is this one..
Comment 18•18 years ago
|
||
(In reply to comment #17) > (In reply to comment #16) > > leaked again, from a site that doesn't require login: > > http://www.cse.yorku.ca/~cs251010/document.pdf > > [...] > > Pls let me know if this is a new bug that I should submit. > I would say the bug you observe is this one.. > Leaked again with another link (was downloading very small tar.gz package from http://www.whatwouldjesusdownload.com/christianubuntu/2006/11/ubuntu-ce-v20-edgy-downloads.html (link under "Web Content Filtering Only")). How can I make sure this is the same thing? -pls don't say "patch the source" eheh- Is there a place I should look at the Memory Leak Monitor output to identify this? thanks
Assignee | ||
Comment 19•18 years ago
|
||
(In reply to comment #18) > (In reply to comment #17) > How can I make sure this is the same thing? -pls don't say "patch the source" > eheh- Is there a place I should look at the Memory Leak Monitor output to > identify this? thanks "patch the source" ;) No, I just looked at your Leak Monitor output and compared to mine (see attachment 1 [details] [diff] [review]), function name, etc were similar.
Comment 20•18 years ago
|
||
keep getting this memory leak with many downloads... when should I expect this to be fixed with a 2.0.1 or similar release? thanks
Updated•18 years ago
|
Flags: blocking1.8.1.1?
Comment 21•18 years ago
|
||
mozilla/toolkit/mozapps/downloads/content/unknownContentType.xul 1.19
Status: ASSIGNED → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
Whiteboard: [checkin needed]
Updated•18 years ago
|
Flags: in-testsuite-
Assignee | ||
Comment 22•18 years ago
|
||
Looks VERIFIED to me (tested with comment #18 link and another link to a zip file ; Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061208 Minefield/3.0a1 ID:2006120804 [cairo])
Comment 23•18 years ago
|
||
Moving blocking request, 1.8.1.1 is done.
Flags: blocking1.8.1.1? → blocking1.8.1.2?
Updated•18 years ago
|
Flags: blocking1.8.1.2? → blocking1.8.1.2+
Comment 24•18 years ago
|
||
Comment on attachment 225997 [details] [diff] [review] patch Approved for 1.8 branch, a=jay for drivers.
Attachment #225997 -
Flags: approval1.8.1.2+
Updated•18 years ago
|
Whiteboard: [checkin needed (1.8 branch)]
Assignee | ||
Comment 25•18 years ago
|
||
Attachment #225997 -
Attachment is obsolete: true
Attachment #249680 -
Flags: review?(gavin.sharp)
Attachment #249680 -
Flags: approval1.8.1.2?
Assignee | ||
Comment 26•18 years ago
|
||
I made an error: the leak is due to HelperApps, not because of HelperApps itself, but because of a never removed observer. So, attached is patch v2, which back out v1 changes and add a "clear()" method to HelperApps. This method is then called when HelperApps is no more needed (in nsHelperAppsDlD.js). I would really appreciate some additional testing on the v2 patch -> Reopening
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Assignee | ||
Comment 27•18 years ago
|
||
*** Bug 364938 has been marked as a duplicate of this bug. ***
Comment 28•18 years ago
|
||
Patch v2 fixes the leak for me
Assignee | ||
Comment 29•18 years ago
|
||
Thanks for the testing Ryan.
Updated•18 years ago
|
Whiteboard: [checkin needed (1.8 branch)]
Comment 30•18 years ago
|
||
Gavin: Could you get this patch reviewed so we can land it soon? Thanks!
Comment 31•18 years ago
|
||
Comment on attachment 249680 [details] [diff] [review] patch v2 >Index: toolkit/mozapps/downloads/content/helperApps.js > HelperApps.prototype = { >+ clear: function () >+ { >+ if (this._inner) { >+ this._inner.RemoveObserver(this); >+ } >+ }, Can't you use the existing nearly-identical destroy()? I'm not sure why the null check is needed (none of the other methods seem to null check _inner, and _inner is never nulled out after being assigned to and then used without a null check in the constructor).
Attachment #249680 -
Flags: review?(gavin.sharp) → review-
Comment 32•18 years ago
|
||
I filed bug 366387 for other issues with this code.
Assignee | ||
Comment 33•18 years ago
|
||
(In reply to comment #31) > Can't you use the existing nearly-identical destroy()? hum? no destroy in http://lxr.mozilla.org/mozilla/source/toolkit/mozapps/downloads/src/nsHelperAppDlg.js.in > I'm not sure why the null check is needed (none of the other methods seem to null check _inner, and > _inner is never nulled out after being assigned to and then used without a null > check in the constructor). null check? like "if (dialog) dialog.onCancel();"? If yes, that's existing code (see bug 294827).
Comment 34•18 years ago
|
||
(In reply to comment #33) > (In reply to comment #31) > > Can't you use the existing nearly-identical destroy()? > hum? no destroy in > http://lxr.mozilla.org/mozilla/source/toolkit/mozapps/downloads/src/nsHelperAppDlg.js.in There is in http://lxr.mozilla.org/seamonkey/source/toolkit/mozapps/downloads/content/helperApps.js#424, though, which is where you added the function I quoted. > > I'm not sure why the null check is needed (none of the other methods seem to null check _inner, and > > _inner is never nulled out after being assigned to and then used without a null > > check in the constructor). > null check? like "if (dialog) dialog.onCancel();"? If yes, that's existing code > (see bug 294827). No, I mean the |if (this._inner)| null check in the clear() function you added. destroy() only differs from your clear in that it doesn't null check.
Assignee | ||
Comment 35•18 years ago
|
||
(In reply to comment #34) > There is in > http://lxr.mozilla.org/seamonkey/source/toolkit/mozapps/downloads/content/helperApps.js#424, > though, which is where you added the function I quoted. > No, I mean the |if (this._inner)| null check in the clear() function you > added. destroy() only differs from your clear in that it doesn't null check. OK, I didn't see this function. I just tested using destroy() and it looks good. Here's related patch (using destroy)
Attachment #249680 -
Attachment is obsolete: true
Attachment #250932 -
Flags: review?(gavin.sharp)
Attachment #249680 -
Flags: approval1.8.1.2?
Updated•18 years ago
|
Attachment #250932 -
Flags: review?(gavin.sharp) → review+
Comment 36•18 years ago
|
||
mozilla/toolkit/mozapps/downloads/content/unknownContentType.xul 1.20 mozilla/toolkit/mozapps/downloads/src/nsHelperAppDlg.js.in 1.44
Status: REOPENED → RESOLVED
Closed: 18 years ago → 18 years ago
Resolution: --- → FIXED
Updated•18 years ago
|
Attachment #250932 -
Flags: approval1.8.1.2?
Assignee | ||
Comment 37•18 years ago
|
||
Thanks for the review and cvs co Gavin
Comment 38•18 years ago
|
||
Comment on attachment 250932 [details] [diff] [review] patch v3 Approved for 1.8 branch, a=dveditz for drivers
Attachment #250932 -
Flags: approval1.8.1.2? → approval1.8.1.2+
Updated•18 years ago
|
Whiteboard: [checkin needed (1.8 branch)]
Comment 39•18 years ago
|
||
mozilla/toolkit/mozapps/downloads/src/nsHelperAppDlg.js.in 1.32.2.6
Updated•18 years ago
|
Keywords: fixed1.8.1.2
Whiteboard: [checkin needed (1.8 branch)]
Comment 40•18 years ago
|
||
verified 1.8.1.2 - tested with Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.2pre) Gecko/20070126 BonEcho/2.0.0.2pre ID:2007012603 - no mlk alert.
Status: RESOLVED → VERIFIED
Keywords: fixed1.8.1.2 → verified1.8.1.2
Updated•16 years ago
|
Product: Firefox → Toolkit
You need to log in
before you can comment on or make changes to this bug.
Description
•