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

Bug 73359

Summary: [Workbench] NPE WorkbenchWindow.firePerspectiveChanged
Product: [Eclipse Project] Platform Reporter: Dani Megert <daniel_megert>
Component: UIAssignee: Stefan Xenos <sxenos>
Status: VERIFIED FIXED QA Contact:
Severity: major    
Priority: P3 CC: cturner, Darin_Swanson, frederic_fusier, grant_gayed, Olivier_Thomann, sdavids
Version: 3.0   
Target Milestone: 3.1 M2   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Dani Megert CLA 2004-09-07 06:42:48 EDT
Got NPE during exit.

!SESSION Sep 07, 2004 12:36:38.805 ---------------------------------------------
eclipse.buildId=I200409011200
java.version=1.4.2_05
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_CH
Command-line arguments: -update -keyring c:\eclipse\.keyring -application
org.eclipse.ui.ide.workbench -showlocation

!ENTRY org.eclipse.ui 4 4 Sep 07, 2004 12:36:38.805
!MESSAGE Unhandled event loop exception

!ENTRY org.eclipse.ui 4 0 Sep 07, 2004 12:36:38.815
!MESSAGE java.lang.NullPointerException
!STACK 0
java.lang.NullPointerException
	at
org.eclipse.ui.internal.WorkbenchWindow.firePerspectiveChanged(WorkbenchWindow.java:894)
	at org.eclipse.ui.internal.WorkbenchPage.closeEditors(WorkbenchPage.java:948)
	at org.eclipse.ui.internal.WorkbenchPage.closeAllEditors(WorkbenchPage.java:880)
	at org.eclipse.ui.internal.WorkbenchPage.dispose(WorkbenchPage.java:1253)
	at org.eclipse.ui.internal.WorkbenchWindow.closePage(WorkbenchWindow.java:644)
	at org.eclipse.ui.internal.WorkbenchPage$3.run(WorkbenchPage.java:848)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
	at org.eclipse.ui.internal.WorkbenchPage.close(WorkbenchPage.java:846)
	at
org.eclipse.ui.internal.WorkbenchPage.closeAllPerspectives(WorkbenchPage.java:1123)
	at
org.eclipse.ui.internal.PerspectiveSwitcher$10.widgetSelected(PerspectiveSwitcher.java:840)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:89)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2783)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2442)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1435)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1406)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:263)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:144)
	at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:102)
	at
org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:335)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:129)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:324)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:185)
	at org.eclipse.core.launcher.Main.run(Main.java:684)
	at org.eclipse.core.launcher.Main.main(Main.java:668)
Comment 1 Dani Megert CLA 2004-09-07 06:47:54 EDT
Test Case: Perspective icon > context menu > Close All
Comment 2 Billy Biggs CLA 2004-09-08 15:02:00 EDT
*** Bug 73412 has been marked as a duplicate of this bug. ***
Comment 3 Sebastian Davids CLA 2004-09-18 10:59:20 EDT
It is caused by the creation of the debug string in
WorkbenchWindow#firePerspectiveChanged

It will be supplied with a "null" IPerspectiveDescriptor because the perspective
has been closed concurrently.

A fix would be to check for null before invoking it:

line 948 in WorkbenchPage#closeEditors:

// Notify interested listeners after the close
IPerspectiveDescriptor descriptor = getPerspective();
if (descriptor != null)
        window.firePerspectiveChanged(this, descriptor,
                CHANGE_EDITOR_CLOSE);
Comment 4 Michael Van Meekeren CLA 2004-09-20 10:51:52 EDT
this is also related to an NPE mentioned in bug 73715, we need to fix this for M2
Comment 5 Stefan Xenos CLA 2004-09-20 11:51:59 EDT
Fixed in HEAD.
Comment 6 Billy Biggs CLA 2004-09-20 12:33:34 EDT
*** Bug 72825 has been marked as a duplicate of this bug. ***
Comment 7 Billy Biggs CLA 2004-09-20 12:34:16 EDT
*** Bug 73746 has been marked as a duplicate of this bug. ***
Comment 8 Billy Biggs CLA 2004-09-20 12:34:48 EDT
*** Bug 73640 has been marked as a duplicate of this bug. ***
Comment 9 Billy Biggs CLA 2004-09-20 15:15:54 EDT
*** Bug 74349 has been marked as a duplicate of this bug. ***
Comment 10 Stefan Xenos CLA 2004-09-23 12:22:52 EDT
I200409230800 verified on Windows XP, multimonitor