diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchUtils.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchUtils.java index 88c10f4cfb0..29d2a1b911a 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchUtils.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/LaunchUtils.java @@ -314,6 +314,10 @@ public class LaunchUtils { } catch (IOException e) { throw new DebugException(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, DebugException.REQUEST_FAILED, "Error reading GDB STDOUT after sending: " + cmd, e.getCause()));//$NON-NLS-1$ + } finally { + // Cleanup to avoid leaking pipes + // Bug 345164 + process.destroy(); } return getGDBVersionFromText(cmdOutput.toString()); diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBackend.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBackend.java index 9fb36202af2..4c8659aaa52 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBackend.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/service/GDBBackend.java @@ -712,6 +712,7 @@ public class GDBBackend extends AbstractDsfService implements IGDBBackend { getExecutor().submit( new DsfRunnable() { public void run() { + destroy(); fBackendState = State.TERMINATED; getSession().dispatchEvent( new BackendStateChangedEvent(getSession().getId(), getId(), State.TERMINATED),