diff --git a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/AbstractDebugVMAdapter.java b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/AbstractDebugVMAdapter.java index 11b0d1bd09d..49658a98dae 100644 --- a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/AbstractDebugVMAdapter.java +++ b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/internal/provisional/ui/viewmodel/AbstractDebugVMAdapter.java @@ -60,11 +60,13 @@ public class AbstractDebugVMAdapter extends AbstractDMVMAdapter @Override public void dispose() { - fController.getExecutor().execute(new DsfRunnable() { - public void run() { - fController.removeSteppingControlParticipant(AbstractDebugVMAdapter.this); - } - }); + if (!fController.getExecutor().isShutdown()) { + fController.getExecutor().execute(new DsfRunnable() { + public void run() { + fController.removeSteppingControlParticipant(AbstractDebugVMAdapter.this); + } + }); + } super.dispose(); } } diff --git a/plugins/org.eclipse.dd.examples.pda.ui/src/org/eclipse/dd/examples/pda/ui/PDAAdapterFactory.java b/plugins/org.eclipse.dd.examples.pda.ui/src/org/eclipse/dd/examples/pda/ui/PDAAdapterFactory.java index 9316f2511d7..679ccec448d 100644 --- a/plugins/org.eclipse.dd.examples.pda.ui/src/org/eclipse/dd/examples/pda/ui/PDAAdapterFactory.java +++ b/plugins/org.eclipse.dd.examples.pda.ui/src/org/eclipse/dd/examples/pda/ui/PDAAdapterFactory.java @@ -187,6 +187,10 @@ public class PDAAdapterFactory implements IAdapterFactory, ILaunchesListener2 PDALaunch launch = (PDALaunch)adaptableObject; + // check for valid session + DsfSession session = launch.getSession(); + if (session == null || !session.isActive()) return null; + // Find the correct set of adapters based on the launch. If not found // it means that we have a new launch, and we have to create a // new set of adapters. diff --git a/plugins/org.eclipse.dd.gdb.ui/src/org/eclipse/dd/gdb/internal/ui/GdbAdapterFactory.java b/plugins/org.eclipse.dd.gdb.ui/src/org/eclipse/dd/gdb/internal/ui/GdbAdapterFactory.java index 8a7abde4890..6645cb09f79 100644 --- a/plugins/org.eclipse.dd.gdb.ui/src/org/eclipse/dd/gdb/internal/ui/GdbAdapterFactory.java +++ b/plugins/org.eclipse.dd.gdb.ui/src/org/eclipse/dd/gdb/internal/ui/GdbAdapterFactory.java @@ -208,11 +208,13 @@ public class GdbAdapterFactory GdbLaunch launch = (GdbLaunch)adaptableObject; + // check for valid session + DsfSession session = launch.getSession(); + if (session == null || !session.isActive()) return null; + // Find the correct set of adapters based on the launch session-ID. If not found // it means that we have a new launch and new session, and we have to create a // new set of adapters. - DsfSession session = launch.getSession(); - if (session == null) return null; SessionAdapterSet adapterSet; synchronized(fgLaunchAdapterSets) {