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

Bug 318651

Summary: NPE when shutting down Eclipse.
Product: [Tools] PTP Reporter: Emmanuel Geay <egeay>
Component: CoreAssignee: Greg Watson <g.watson>
Status: VERIFIED FIXED QA Contact:
Severity: major    
Priority: P3    
Version: 4.0   
Target Milestone: ---   
Hardware: PC   
OS: Mac OS X - Carbon (unsup.)   
Whiteboard:

Description Emmanuel Geay CLA 2010-07-01 18:40:48 EDT
I've done an update of PTP on trunk after 5PM (July 1st) and I get this NPE when shutting down Eclipse.

java.lang.NullPointerException
	at org.eclipse.ptp.ui.managers.MachineManager.removeNode(MachineManager.java:261)
	at org.eclipse.ptp.ui.views.ParallelMachinesView$MachineChildListener$2.run(ParallelMachinesView.java:169)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.ptp.ui.UIUtils$7.run(UIUtils.java:194)
	at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:179)
	at org.eclipse.swt.widgets.Display.syncExec(Display.java:4233)
	at org.eclipse.ptp.ui.UIUtils.safeRunSyncInUIThread(UIUtils.java:192)
	at org.eclipse.ptp.ui.views.ParallelMachinesView$MachineChildListener.handleEvent(ParallelMachinesView.java:158)
	at org.eclipse.ptp.internal.core.elements.PMachine.fireRemoveNodes(PMachine.java:281)
	at org.eclipse.ptp.internal.core.elements.PMachine.removeNodes(PMachine.java:210)
	at org.eclipse.ptp.rmsystem.AbstractResourceManager.removeMachines(AbstractResourceManager.java:1117)
	at org.eclipse.ptp.rmsystem.AbstractResourceManager.cleanUp(AbstractResourceManager.java:816)
	at org.eclipse.ptp.rmsystem.AbstractRuntimeResourceManager.handleEvent(AbstractRuntimeResourceManager.java:783)
	at org.eclipse.ptp.rtsystem.AbstractRuntimeSystem.fireRuntimeShutdownStateEvent(AbstractRuntimeSystem.java:279)
	at org.eclipse.ptp.rm.core.rtsystem.AbstractToolRuntimeSystem.shutdown(AbstractToolRuntimeSystem.java:507)
	at org.eclipse.ptp.rmsystem.AbstractRuntimeResourceManager.doShutdown(AbstractRuntimeResourceManager.java:968)
	at org.eclipse.ptp.rmsystem.AbstractResourceManager.shutdown(AbstractResourceManager.java:577)
	at org.eclipse.ptp.internal.core.ModelManager.stopResourceManagers(ModelManager.java:356)
	at org.eclipse.ptp.internal.core.ModelManager.shutdown(ModelManager.java:334)
	at org.eclipse.ptp.core.PTPCorePlugin.stop(PTPCorePlugin.java:226)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:843)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:836)
	at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:501)
	at org.eclipse.osgi.framework.internal.core.AbstractBundle.suspend(AbstractBundle.java:550)
	at org.eclipse.osgi.framework.internal.core.Framework.suspendBundle(Framework.java:1097)
	at org.eclipse.osgi.framework.internal.core.StartLevelManager.decFWSL(StartLevelManager.java:597)
	at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:257)
	at org.eclipse.osgi.framework.internal.core.StartLevelManager.shutdown(StartLevelManager.java:215)
	at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.suspend(InternalSystemBundle.java:266)
	at org.eclipse.osgi.framework.internal.core.Framework.shutdown(Framework.java:690)
	at org.eclipse.osgi.framework.internal.core.Framework.close(Framework.java:588)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.shutdown(EclipseStarter.java:415)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:198)
	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:597)
	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)
Comment 1 Greg Watson CLA 2010-07-12 09:45:51 EDT
Do you see this every time you shut down? What RM are you using?
Comment 2 Emmanuel Geay CLA 2010-07-12 11:06:19 EDT
Every time I shut down Eclipse with a resource manager that is in Running state.
I use OpenMPI at this time.
Comment 3 Greg Watson CLA 2010-07-12 12:23:23 EDT
It appears that removeNode is getting called after its corresponding machine has already been removed. I'm not sure if this is a problem, but I've added a null pointer check which should prevent the NPE. Fix applied to 4.0 and HEAD.