Bug 4265

Summary: UI Freeze and error closing type hierarchy perspective (1GKQ77O)
Product: [Eclipse Project] JDT Reporter: John Arthorne <john.arthorne>
Component: UIAssignee: Kai-Uwe Maetzel <kai-uwe_maetzel>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3    
Version: 2.0   
Target Milestone: ---   
Hardware: All   
OS: Windows NT   
Whiteboard:

Description John Arthorne CLA 2001-10-10 23:08:49 EDT
I had a workbench open, with the following perspectives open in the following order:
	team, java, java type hierarchy, debug

I closed and reopened the workbench in the "java" perspective

In the perspective bar on the left hand side of the screen, I right-clicked on the type
hierarchy perspective, and selected "Close".  Note that I had not yet used that 
perspective in the current invocation of the workbench.

Immediately after clicking close, I clicked in the content outline in my current
perspective.  The UI froze completely for about 30 seconds.  Using TaskManager
I saw that CPU usage was very low during that time (maybe 1%).  The UI didn't even
repaint during this time.

After awhile, the UI came back with a generic "internal error" dialog.  The log file contained
the following stack trace:

org.eclipse.jface.util.Assert$AssertionFailedException: null argument;
	at org.eclipse.jface.util.Assert.isNotNull(Assert.java:133)
	at org.eclipse.jface.util.Assert.isNotNull(Assert.java(Compiled Code))
	at org.eclipse.jface.util.ListenerList.remove(ListenerList.java:131)
	at org.eclipse.jdt.internal.ui.viewsupport.ProblemMarkerManager.removeListener(ProblemMarkerManager.java:184)
	at org.eclipse.jdt.internal.ui.typehierarchy.TypeHierarchyViewPart.dispose(TypeHierarchyViewPart.java:366)
	at org.eclipse.ui.internal.WorkbenchPage.dispose(WorkbenchPage.java:500)
	at org.eclipse.ui.internal.WorkbenchWindow.closePage(WorkbenchWindow.java:353)
	at org.eclipse.ui.internal.WorkbenchWindow$6.widgetSelected(WorkbenchWindow.java:917)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:85)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java(Compiled Code))
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:646)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java(Compiled Code))
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1160)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:675)
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:658)
	at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:820)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:285)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:151)
	at org.eclipse.core.launcher.Main.run(Main.java:502)
	at org.eclipse.core.launcher.Main.main(Main.java:362)

NOTES:

JohnA (9/27/2001 3:09:31 PM)
	I have not yet reproduced this, but I will record more details if they become available...

JohnA (9/27/2001 4:01:42 PM)
	I can consistently reproduce the internal error, but the freeze is intermittent.
	It's important that the type hierarchy perspective has never been opened during that 
	invocation of the workbench.

EG (10/1/2001 12:00:10 AM)
	Given the current workbench APIs the code cannot assume that createPartControl
	is called before dispose. When a part never becomes visible then createPartControl
	isn't called. Therefore the code in dispose cannot assume that variables like the
	viewer field are set when calling dispose.
	We have to review all our ViewParts: TypeHierarchy, PackagesView, SearchResults, Outliner.

EG (10/1/2001 12:03:16 AM)
	MA pls check type hierarchy and then forward the PR to the owners of the other parts.

MA (01.10.2001 11:30:29)
	for TypeHierarchy, fixed in 202

DM (10/1/01 4:07:32 PM)
	Fixed for Search view > 0.202a
Comment 1 Kai-Uwe Maetzel CLA 2002-02-06 04:26:02 EST
Checked remaining parts.