Bug 184871

Summary: [Help] Two images leaked each time help view is opened
Product: [Eclipse Project] Platform Reporter: John Arthorne <john.arthorne>
Component: User AssistanceAssignee: Curtis d'Entremont <curtispd>
Status: RESOLVED FIXED QA Contact:
Severity: major    
Priority: P3 Keywords: performance
Version: 3.3   
Target Milestone: 3.3 M7   
Hardware: PC   
OS: Windows Vista   
Whiteboard:

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.