diff --git a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/DsfServicesTracker.java b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/DsfServicesTracker.java index 88844c754ec..8ba4ba45e40 100644 --- a/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/DsfServicesTracker.java +++ b/dsf/org.eclipse.cdt.dsf/src/org/eclipse/cdt/dsf/service/DsfServicesTracker.java @@ -265,9 +265,13 @@ public class DsfServicesTracker { } private void doDispose() { - fBundleContext.removeServiceListener(fListner); - for (Iterator itr = fServices.keySet().iterator(); itr.hasNext();) { - fBundleContext.ungetService(itr.next()); + try { + fBundleContext.removeServiceListener(fListner); + for (Iterator itr = fServices.keySet().iterator(); itr.hasNext();) { + fBundleContext.ungetService(itr.next()); + } + } catch (IllegalStateException e) { + // May be thrown during shutdown (bug 293049). } fServices.clear(); fServiceReferences.clear();