Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 320320

Summary: NPE after resetting a perspective and then detaching a view
Product: [Eclipse Project] e4 Reporter: Susan McCourt <susan>
Component: UIAssignee: Eric Moffatt <emoffatt>
Status: CLOSED DUPLICATE QA Contact:
Severity: normal    
Priority: P3 CC: bokowski
Version: 1.0   
Target Milestone: 1.0 RC3   
Hardware: PC   
OS: Windows 7   
Whiteboard:
Attachments:
Description Flags
log none

Description Susan McCourt CLA 2010-07-19 16:23:05 EDT
Win7, Build id: I20100718-2237
I was trying the steps in bug 317466 to see where we are at on that bug.
So I had done something like:

1. Open a file.
2. Drag the 'Problems' view to the 'Outline' view's stack.
3. Detach the 'Problems' view.
4. Detach the 'Outline' view to the 'Problems' view's stack.
5. Minimize that stack.
6. Restore it.

The current behavior is different than what the bug says, so I decided to reset the (Java) perspective and try some simpler steps in order to annotate that bug.

After resetting the perspective, I tried to detach the outline view (I think) and got an NPE.  At that point, nothing seemed to work (show view, etc.) and I got an NPE when closing the workbench.

Note that things seemed better when I opened the workbench again (I don't think I was permanently hosed by the problem).

I'm not sure these are the precise steps but it was something close to this.  I'll attach the log.
Comment 1 Susan McCourt CLA 2010-07-19 16:23:35 EDT
Created attachment 174671 [details]
log
Comment 2 Susan McCourt CLA 2010-07-19 17:06:40 EDT
after playing around with some different drag/drop scenarios, detach, etc...
I'm pretty sure that resetting the perspective is what starts to cause the trouble.  I was resetting from the perspective switcher.
Comment 3 Susan McCourt CLA 2010-07-20 17:21:10 EDT
From HEAD (with the fix for bug 320306.)

I can still get into problems after resetting a perspective.
Again, my steps are sketchy, because I had reset the java perspective while in the middle of a bunch of drag and drop experiments.

I can confirm that I had only one perspective open (Java).
I had run into some trouble with empty detached windows and decided to reset the perspective.

When I tried to exit the workbench, I got this error:

!ENTRY org.eclipse.ui.workbench 4 2 2010-07-20 14:16:26.612
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.ui.workbench".
!STACK 0
org.eclipse.e4.core.di.InjectionException: org.eclipse.swt.SWTException: Widget is disposed
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:54)
	at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:795)
	at org.eclipse.e4.core.internal.di.InjectorImpl.uninject(InjectorImpl.java:163)
	at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:326)
	at org.eclipse.e4.core.internal.di.Requestor.disposed(Requestor.java:112)
	at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:59)
	at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:90)
	at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.doHandleInvalid(TrackableComputationExt.java:53)
	at org.eclipse.e4.core.internal.contexts.Computation.handleInvalid(Computation.java:59)
	at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:196)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.clearContext(PartRenderingEngine.java:604)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:545)
	at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1431)
	at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:1132)
	at org.eclipse.ui.internal.WorkbenchWindow.access$9(WorkbenchWindow.java:1111)
	at org.eclipse.ui.internal.WorkbenchWindow$6.run(WorkbenchWindow.java:1158)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1156)
	at org.eclipse.ui.internal.Workbench$13.run(Workbench.java:1023)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1017)
	at org.eclipse.ui.internal.Workbench.access$11(Workbench.java:951)
	at org.eclipse.ui.internal.Workbench$14.run(Workbench.java:1093)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1091)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1064)
	at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:1129)
	at org.eclipse.ui.internal.WorkbenchWindow.access$9(WorkbenchWindow.java:1111)
	at org.eclipse.ui.internal.WorkbenchWindow$6.run(WorkbenchWindow.java:1158)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1156)
	at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:1172)
	at org.eclipse.ui.internal.WorkbenchWindow$4.close(WorkbenchWindow.java:427)
	at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer$8.shellClosed(WBWRenderer.java:420)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:98)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
	at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:308)
	at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1665)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4162)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2454)
	at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:497)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4251)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2454)
	at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:497)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4251)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)
	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2459)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3655)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:713)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:633)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:106)
	at org.eclipse.ui.internal.Workbench$3.run(Workbench.java:541)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:525)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Caused by: org.eclipse.swt.SWTException: Widget is disposed
	at org.eclipse.swt.SWT.error(SWT.java:4083)
	at org.eclipse.swt.SWT.error(SWT.java:3998)
	at org.eclipse.swt.SWT.error(SWT.java:3969)
	at org.eclipse.swt.widgets.Widget.error(Widget.java:468)
	at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:340)
	at org.eclipse.swt.widgets.Control.getShell(Control.java:1432)
	at org.eclipse.e4.ui.workbench.addons.minmax.TrimStack.getShellClientComposite(TrimStack.java:385)
	at org.eclipse.e4.ui.workbench.addons.minmax.TrimStack.showStack(TrimStack.java:366)
	at org.eclipse.e4.ui.workbench.addons.minmax.TrimStack.cleanUp(TrimStack.java:218)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:47)
	... 86 more
Comment 4 Boris Bokowski CLA 2010-07-21 18:31:04 EDT

*** This bug has been marked as a duplicate of bug 319847 ***