Bug 184871 - [Help] Two images leaked each time help view is opened
Summary: [Help] Two images leaked each time help view is opened
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: User Assistance (show other bugs)
Version: 3.3   Edit
Hardware: PC Windows Vista
: P3 major (vote)
Target Milestone: 3.3 M7   Edit
Assignee: Curtis d'Entremont CLA
QA Contact:
URL:
Whiteboard:
Keywords: performance
Depends on:
Blocks:
 
Reported: 2007-05-01 10:43 EDT by John Arthorne CLA
Modified: 2007-05-01 11:34 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description John Arthorne CLA 2007-05-01 10:43:33 EDT
Build: I20070501-0010

1) Capture Sleak snapshot
2) Hit F1 to open help view
3) Close help view
4) Capture Sleak diff

-> Each time this is repeated, two images are leaked.  The allocation stack traces look like this (slight variation between the two images, but top frames are the same):

java.lang.Error
	at java.lang.Throwable.<init>(Throwable.java:56)
	at org.eclipse.swt.graphics.Device.new_Object(Device.java:787)
	at org.eclipse.swt.graphics.Image.<init>(Image.java:175)
	at org.eclipse.help.ui.internal.views.SeeAlsoPart.updateBackgroundImage(SeeAlsoPart.java:111)
	at org.eclipse.help.ui.internal.views.SeeAlsoPart.access$0(SeeAlsoPart.java:102)
	at org.eclipse.help.ui.internal.views.SeeAlsoPart$1.controlResized(SeeAlsoPart.java:61)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:221)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:962)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:943)
	at org.eclipse.swt.widgets.Control.WM_SIZE(Control.java:4294)
	at org.eclipse.swt.widgets.Scrollable.WM_SIZE(Scrollable.java:333)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1347)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3735)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4342)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2252)
	at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3752)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4342)
	at org.eclipse.swt.internal.win32.OS.EndDeferWindowPos(Native Method)
	at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:729)
	at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:695)
	at org.eclipse.swt.widgets.Composite.setResizeChildren(Composite.java:901)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1362)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3735)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4342)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2252)
	at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3752)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4355)
	at org.eclipse.swt.internal.win32.OS.EndDeferWindowPos(Native Method)
	at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:729)
	at org.eclipse.swt.widgets.Composite.resizeChildren(Composite.java:695)
	at org.eclipse.swt.widgets.Composite.setResizeChildren(Composite.java:901)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1362)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3735)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4342)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2252)
	at org.eclipse.swt.widgets.Scrollable.callWindowProc(Scrollable.java:77)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3752)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4342)
	at org.eclipse.swt.internal.win32.OS.SetWindowPos(Native Method)
	at org.eclipse.swt.widgets.Widget.SetWindowPos(Widget.java:1235)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2515)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2497)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2493)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2562)
	at org.eclipse.swt.custom.ScrolledCompositeLayout.layout(ScrolledCompositeLayout.java:109)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:1025)
	at org.eclipse.swt.widgets.Composite.layout(Composite.java:551)
	at org.eclipse.swt.widgets.Composite.layout(Composite.java:509)
	at org.eclipse.ui.forms.widgets.SharedScrolledComposite.layout(SharedScrolledComposite.java:144)
	at org.eclipse.ui.forms.widgets.SharedScrolledComposite.reflow(SharedScrolledComposite.java:200)
	at org.eclipse.ui.forms.widgets.SharedScrolledComposite.scheduleReflow(SharedScrolledComposite.java:228)
	at org.eclipse.ui.forms.widgets.SharedScrolledComposite.access$1(SharedScrolledComposite.java:213)
	at org.eclipse.ui.forms.widgets.SharedScrolledComposite$1.handleEvent(SharedScrolledComposite.java:65)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:962)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:943)
	at org.eclipse.swt.widgets.Control.WM_SIZE(Control.java:4294)
	at org.eclipse.swt.widgets.Scrollable.WM_SIZE(Scrollable.java:333)
	at org.eclipse.swt.widgets.Composite.WM_SIZE(Composite.java:1347)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3735)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4342)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2252)
Comment 1 Curtis d'Entremont CLA 2007-05-01 11:18:49 EDT
Fixed both leaks. The see also part keeps swapping in new images for the background gradient when it changes (initial load and resize), but did not dispose them. Also, did not dispose the background image once the container was disposed (doesn't happen automatically).
Comment 2 Curtis d'Entremont CLA 2007-05-01 11:19:05 EDT
Marking as FIXED.