Closed Bug 3730 Opened 26 years ago Closed 25 years ago

[DOGFOOD]MLK: 1424 bytes leaked XP Observer list for Image Requests leaking.

Categories

(Core :: Graphics: ImageLib, defect, P3)

Sun
Solaris
defect

Tracking

()

VERIFIED FIXED

People

(Reporter: bruce, Assigned: pnunn)

References

Details

(Whiteboard: [PDT-])

A comment in ImageRequestImpl::~ImageRequestImpl() indicates that image lib is
supposed to manage the destruction of the observer list.  However, that doesn't
appear to be happening.

MLK: 1424 bytes leaked in 89 blocks
  * This memory was allocated from:
        malloc         [rtlib.o]
        PR_Malloc      [prmem.c:38]
        XP_AddObserver [obs.c:159]
        ImageRequestImpl::Init(void*,const char*,nsIImageRequestObserver*,const
unsigned int*,unsigned int,unsigned int,unsigned int,ilINetContext*)
[nsImageRequest.cpp:86]
        ImageGroupImpl::GetImage(const char*,nsIImageRequestObserver*,const
unsigned int*,unsigned int,unsigned int,unsigned int) [nsImageGroup.cpp:233]
        nsFrameImageLoader::Init(nsIPresContext*,nsIImageGroup*,const
nsString&,const unsigned int*,nsIFrame*,const nsSize&,unsigned
int(*)(nsIPresContext&,nsIFrame*,int),int,int) [nsFrameImageLoader.cpp:156]
        nsPresContext::StartLoadImage(const nsString&,const unsigned
int*,nsIFrame*,const nsSize&,unsigned
int(*)(nsIPresContext&,nsIFrame*,int),int,int,nsIFrameImageLoader**)
[nsPresContext.cpp:734]
        nsHTMLImageLoader::StartLoadImage(nsIPresContext*,nsIFrame*,unsigned
int(*)(nsIPresContext&,nsIFrame*,int),int,int&) [nsImageFrame.cpp:197]
        nsHTMLImageLoader::GetDesiredSize(nsIPresContext*,const
nsHTMLReflowState&,nsIFrame*,unsigned
int(*)(nsIPresContext&,nsIFrame*,int),nsHTMLReflowMetrics&)
[nsImageFrame.cpp:270]
        nsImageFrame::GetDesiredSize(nsIPresContext*,const
nsHTMLReflowState&,nsHTMLReflowMetrics&) [nsImageFrame.cpp:502]
        nsImageFrame::Reflow(nsIPresContext&,nsHTMLReflowMetrics&,const
nsHTMLReflowState&,unsigned int&) [nsImageFrame.cpp:530]
        nsInlineReflow::ReflowFrame(nsIFrame*,int,unsigned int&)
[nsInlineReflow.cpp:316]

nsBlockFrame::ReflowInlineFrame(nsBlockReflowState&,nsLineBox*,nsIFrame*,int*)
[nsBlockFrame.cpp:2650]
        nsBlockFrame::ReflowLine(nsBlockReflowState&,nsLineBox*,int*)
[nsBlockFrame.cpp:1816]
        nsBlockFrame::ReflowDirtyLines(nsBlockReflowState&)
[nsBlockFrame.cpp:1564]
        nsBlockFrame::Reflow(nsIPresContext&,nsHTMLReflowMetrics&,const
nsHTMLReflowState&,unsigned int&) [nsBlockFrame.cpp:984]
        nsAreaFrame::Reflow(nsIPresContext&,nsHTMLReflowMetrics&,const
nsHTMLReflowState&,unsigned int&) [nsAreaFrame.cpp:509]

nsContainerFrame::ReflowChild(nsIFrame*,nsIPresContext&,nsHTMLReflowMetrics&,con
st nsHTMLReflowState&,unsigned int&) [nsContainerFrame.cpp:371]
        nsTableCellFrame::Reflow(nsIPresContext&,nsHTMLReflowMetrics&,const
nsHTMLReflowState&,unsigned int&) [nsTableCellFrame.cpp:501]

nsContainerFrame::ReflowChild(nsIFrame*,nsIPresContext&,nsHTMLReflowMetrics&,con
st nsHTMLReflowState&,unsigned int&) [nsContainerFrame.cpp:371]

nsTableRowFrame::InitialReflow(nsIPresContext&,nsHTMLReflowMetrics&,RowReflowSta
te&,unsigned int&,nsTableCellFrame*,int) [nsTableRowFrame.cpp:808]
        nsTableRowFrame::Reflow(nsIPresContext&,nsHTMLReflowMetrics&,const
nsHTMLReflowState&,unsigned int&) [nsTableRowFrame.cpp:1418]

nsContainerFrame::ReflowChild(nsIFrame*,nsIPresContext&,nsHTMLReflowMetrics&,con
st nsHTMLReflowState&,unsigned int&) [nsContainerFrame.cpp:371]

nsTableRowGroupFrame::ReflowMappedChildren(nsIPresContext&,nsHTMLReflowMetrics&,
RowGroupReflowState&,unsigned int&,nsTableRowFrame*,nsReflowReason,int)
[nsTableRowGroupFrame.cpp:420]
        nsTableRowGroupFrame::Reflow(nsIPresContext&,nsHTMLReflowMetrics&,const
nsHTMLReflowState&,unsigned int&) [nsTableRowGroupFrame.cpp:948]

nsContainerFrame::ReflowChild(nsIFrame*,nsIPresContext&,nsHTMLReflowMetrics&,con
st nsHTMLReflowState&,unsigned int&) [nsContainerFrame.cpp:371]

nsTableFrame::ResizeReflowPass1(nsIPresContext&,nsHTMLReflowMetrics&,const
nsHTMLReflowState&,unsigned int&,nsTableRowGroupFrame*,nsReflowReason,int)
[nsTableFrame.cpp:2599]
        nsTableFrame::Reflow(nsIPresContext&,nsHTMLReflowMetrics&,const
nsHTMLReflowState&,unsigned int&) [nsTableFrame.cpp:2455]

nsContainerFrame::ReflowChild(nsIFrame*,nsIPresContext&,nsHTMLReflowMetrics&,con
st nsHTMLReflowState&,unsigned int&) [nsContainerFrame.cpp:371]
        nsTableOuterFrame::Reflow(nsIPresContext&,nsHTMLReflowMetrics&,const
nsHTMLReflowState&,unsigned int&) [nsTableOuterFrame.cpp:958]
  * Block of 16 bytes (89 times); last block at 0xc1beb0
Status: NEW → ASSIGNED
thanks for the report on this.
I'll track it down.
-pn
Status: ASSIGNED → RESOLVED
Closed: 26 years ago
Resolution: --- → FIXED
thanks for the report on this.
I'll track it down.
-pn
thanks for the report on this.
I'll track it down.
-pn
Arrrgggh.
I mistakenly closed this bug when I was
accepting it. All attempts to remedy the
situation resulted in "comment stutter".
This bug is reopened because it never should
have been closed.
arrrghhhg.
-pnunn
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Target Milestone: M5
if.cpp:    il_image_destroyed_notify()
if.cpp:  IL_DestroyGroupContext()
 destroys the image observerlist.

But this appears to be about the image REQUEST observer in
mozilla/gfx/src/nsImageRequest.cpp. Kipp has been working
with this code. The status of this bug may have changed.
Anyone have Purify?
Target Milestone: M5 → M6
Status: REOPENED → ASSIGNED
Target Milestone: M6 → M7
I need more time on this one.
It looks to me like things are freed properly, but obviously, they
aren't.
pushing to M7.
-pn
Bruce:
I'm having trouble tracking this down.
If you run across any additional info,
it would be great.
thnx. -pn
Target Milestone: M7 → M8
Target Milestone: M8 → M9
I need more time. Gotta push it to M9.
-> m10
Target Milestone: M10 → M11
Summary: MLK: XP Observer list for Image Requests leaking. → MLK: 1424 bytes leaked XP Observer list for Image Requests leaking.
Blocks: 14516
Summary: MLK: 1424 bytes leaked XP Observer list for Image Requests leaking. → [DOGFOOD]MLK: 1424 bytes leaked XP Observer list for Image Requests leaking.
Is this a Solaris only issue?
Does this have big cumulative effect?
The PDT asked that I ask....
Whiteboard: [PDT-]
No comments, setting to [PDT-]
Blocks: 17432
Target Milestone: M11 → M12
I think my checkin today will take care
of this leak. I haven't checked it with
purify yet, but it looks fine with bloaty.
-pn
Status: ASSIGNED → RESOLVED
Closed: 26 years ago25 years ago
Resolution: --- → FIXED
bruce,
would you verify?
-pn
I haven't done a build in a long time (and don't have the time to do one for
some time yet).  Would it be possible to do this with the other tools that exist
for non-Bruce people?
Bruce:
I'm running purify on NT today.
I'll double check the fix.
-pn
Thanks, Pam!
[nagged pnunn by e-mail re: verifying this bug.]
QA Contact: elig → pnunn
No feedback received from pnunn after several nags over a 5 week timeframe;
therefore, QA assigning to pnunn.
I just checked my purify on this and the
leak is gone....so count it verified.
-P
Status: RESOLVED → VERIFIED
QA Contact: pnunn → elig
No longer blocks: 17432
You need to log in before you can comment on or make changes to this bug.