From 2507788546f39c44598ba5b97538b960cb85f804 Mon Sep 17 00:00:00 2001 From: Marc Khouzam Date: Fri, 20 Jul 2012 08:41:19 -0400 Subject: [PATCH] Bug 365601: GUI can become unresponsive when starting a debug launch --- .../gdb/internal/ui/actions/GdbConnectCommand.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbConnectCommand.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbConnectCommand.java index 0a3effa6dae..cac4353b428 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbConnectCommand.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/actions/GdbConnectCommand.java @@ -16,6 +16,8 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; import java.util.concurrent.RejectedExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import org.eclipse.cdt.dsf.concurrent.CountingRequestMonitor; import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor; @@ -97,11 +99,18 @@ public class GdbConnectCommand implements IConnect { }; try { fExecutor.execute(canConnectQuery); - return canConnectQuery.get(); + return canConnectQuery.get(50, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { } catch (ExecutionException e) { } catch (RejectedExecutionException e) { // Can be thrown if the session is shutdown + } catch (TimeoutException e) { + // Bug 365601 + // Don't wait forever so as to not lock the UI and + // potentially create a deadlock. + // If we timeout, we just return false and disable + // the connect command. The next call to this method + // should succeed and fix this. } return false;