Closed
Bug 631421
Opened 14 years ago
Closed 14 years ago
Leak nsDocument with two image-document iframes
Categories
(Core :: DOM: Core & HTML, defect)
Core
DOM: Core & HTML
Tracking
()
RESOLVED
FIXED
mozilla2.0b12
People
(Reporter: jruderman, Assigned: khuey)
References
Details
(Keywords: memory-leak, regression, testcase, Whiteboard: [hardblocker])
Attachments
(2 files)
(deleted),
text/html
|
Details | |
(deleted),
patch
|
jst
:
review+
|
Details | Diff | Splinter Review |
According to trace-refcnt, each time the testcase runs, 1 nsDocument leaks.
Related to bug 614149?
Comment 1•14 years ago
|
||
I guess the testcase needs to be changed a bit so that it points to some
valid image.
Reporter | ||
Comment 2•14 years ago
|
||
Yes. Changing it to a data URL makes the bug go away.
Assignee | ||
Comment 3•14 years ago
|
||
I can't reproduce this on Linux, even with the src being a valid image at a file:// address.
Reporter | ||
Comment 4•14 years ago
|
||
Still leaks for me on Mac (rev 5a4ab9b3fd2f).
Assignee | ||
Comment 5•14 years ago
|
||
Ok, I can reproduce this now on Linux.
OS: Mac OS X → All
Hardware: x86 → All
Assignee | ||
Comment 6•14 years ago
|
||
I think the bug here is that the check at http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsImageLoadingContent.cpp#454 fails and the observer ref is never released.
Nomming for blocking since this is a recent regression and looks like it would be easy for web content to hit.
Assignee: nobody → khuey
Blocks: 604262
Status: NEW → ASSIGNED
blocking2.0: --- → ?
Keywords: regression
Assignee | ||
Comment 7•14 years ago
|
||
The stack for the failing RemoveObserver call is
#0 nsImageLoadingContent::RemoveObserver (this=0x17601f8, aObserver=
0x1ba9ce8)
at /home/khuey/dev/mozilla-central3/content/base/src/nsImageLoadingContent.c
pp:454
#1 0x00007ffff4fcc8b7 in nsImageDocument::Destroy (this=0x1ba9710)
at /home/khuey/dev/mozilla-central3/content/html/document/src/nsImageDocumen
t.cpp:343
#2 0x00007ffff4a58e36 in DocumentViewerImpl::Destroy (this=0x1baace0)
at /home/khuey/dev/mozilla-central3/layout/base/nsDocumentViewer.cpp:1647
#3 0x00007ffff578eab9 in nsDocShell::Destroy (this=0x1b523b0)
at /home/khuey/dev/mozilla-central3/docshell/base/nsDocShell.cpp:4565
#4 0x00007ffff4dc1a45 in nsFrameLoader::Finalize (this=0x1b521a0)
at /home/khuey/dev/mozilla-central3/content/base/src/nsFrameLoader.cpp:578
#5 0x00007ffff4d9cf89 in nsDocument::MaybeInitializeFinalizeFrameLoaders (
this=0xd82220)
at /home/khuey/dev/mozilla-central3/content/base/src/nsDocument.cpp:5497
#6 0x00007ffff4d97219 in nsDocument::EndUpdate (this=0xd82220, aUpdateType=1)
at /home/khuey/dev/mozilla-central3/content/base/src/nsDocument.cpp:4005
#7 0x00007ffff4fc368a in nsHTMLDocument::EndUpdate (this=0xd82220,
aUpdateType=1)
at /home/khuey/dev/mozilla-central3/content/html/document/src/nsHTMLDocument
.cpp:2950
#8 0x00007ffff4b3d001 in mozAutoDocUpdate::~mozAutoDocUpdate (this=
0x7fffffffa7c0, __in_chrg=<value optimized out>)
at /home/khuey/dev/mozilla-central3/layout/generic/../../content/base/src/mo
zAutoDocUpdate.h:66
#9 0x00007ffff4ddfb33 in nsINode::doRemoveChildAt (this=0x1af9030, aIndex=2,
aNotify=1, aKid=0x1b410b0, aChildArray=..., aMutationEvent=1)
at /home/khuey/dev/mozilla-central3/content/base/src/nsGenericElement.cpp:37
11
#10 0x00007ffff4ddf757 in nsGenericElement::RemoveChildAt (this=0x1af9030,
aIndex=2, aNotify=1, aMutationEvent=1)
at /home/khuey/dev/mozilla-central3/content/base/src/nsGenericElement.cpp:36
51
#11 0x00007ffff4de7c2f in nsINode::RemoveChild (this=0x1af9030, aOldChild=
0x1b410b0) at ../../../dist/include/nsINode.h:485
#12 0x00007ffff56d9fa9 in nsIDOMNode_RemoveChild (cx=0x153bb60, argc=1, vp=
0x7fffe85630c8) at dom_quickstubs.cpp:6192
...
Assignee | ||
Comment 8•14 years ago
|
||
Assignee | ||
Comment 9•14 years ago
|
||
Comment on attachment 513860 [details] [diff] [review]
Teach nsImageDocument to say the magic password to nsImageLoadingContent::RemoveObserver.
A possible fix is simple enough, but I can't help but fear that we're going to play wack-a-mole with this type of bug.
Attachment #513860 -
Flags: review?(jst)
Comment 10•14 years ago
|
||
What's the potential size of this leak? I'd like to fix it, but am having trouble deciding if it's bad enough to block. My instincts say "yes, hard blocking final+" - other drivers agree?
Assignee | ||
Comment 11•14 years ago
|
||
About half a MB per iframe destroyed. I'd agree with hardblocking final.
Assignee | ||
Comment 12•14 years ago
|
||
Well, actually, it's about half a MB for the first one, a smaller amount afterwards (because a lot of the leak is various singletons).
Comment 13•14 years ago
|
||
Comment on attachment 513860 [details] [diff] [review]
Teach nsImageDocument to say the magic password to nsImageLoadingContent::RemoveObserver.
Yeah, this is what I was afraid of... I don't see a better way out here though :(
r=jst, this fix is safe, even if it's a whacked mole.
Attachment #513860 -
Flags: review?(jst) → review+
Comment 14•14 years ago
|
||
I agree with beltzner, final+ hardblocker.
blocking2.0: ? → final+
Whiteboard: [hardblocker]
Assignee | ||
Comment 15•14 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 14 years ago
Flags: in-testsuite+
Resolution: --- → FIXED
Target Milestone: --- → mozilla2.0b12
Comment 16•14 years ago
|
||
status1.9.2:
--- → .17-fixed
Updated•6 years ago
|
Component: DOM → DOM: Core & HTML
You need to log in
before you can comment on or make changes to this bug.
Description
•