diff --git a/plugins/org.eclipse.dltk.ruby.launching/src/org/eclipse/dltk/ruby/internal/launching/RubyGenericInstall.java b/plugins/org.eclipse.dltk.ruby.launching/src/org/eclipse/dltk/ruby/internal/launching/RubyGenericInstall.java
index 09b02c6..6c19668 100644
--- a/plugins/org.eclipse.dltk.ruby.launching/src/org/eclipse/dltk/ruby/internal/launching/RubyGenericInstall.java
+++ b/plugins/org.eclipse.dltk.ruby.launching/src/org/eclipse/dltk/ruby/internal/launching/RubyGenericInstall.java
@@ -52,32 +52,49 @@
 					.createInterpreterConfig(exeEnv, builderFile, builderFile
 							.getParent());
 			// config.addInterpreterArg("-KU"); //$NON-NLS-1$
-			Process process = ScriptLaunchUtil.runScriptWithInterpreter(exeEnv,
-					RubyGenericInstall.this.getInstallLocation()
+			final Process process = ScriptLaunchUtil.runScriptWithInterpreter(
+					exeEnv, RubyGenericInstall.this.getInstallLocation()
 							.getAbsolutePath(), config);
 
-			BufferedReader input = null;
-			try {
-				input = new BufferedReader(new InputStreamReader(process
-						.getInputStream()));
+			Thread readerThread = new Thread(new Runnable() {
+				public void run() {
+					BufferedReader input = null;
+					try {
+						input = new BufferedReader(new InputStreamReader(
+								process.getInputStream()));
 
-				String line = null;
-				try {
-					while ((line = input.readLine()) != null) {
-						lines.add(line);
-					}
-				} catch (IOException e) {
-					if( DLTKCore.DEBUG ) {
-						e.printStackTrace();
+						String line = null;
+						try {
+							while ((line = input.readLine()) != null) {
+								lines.add(line);
+							}
+						} catch (IOException e) {
+							if (DLTKCore.DEBUG) {
+								e.printStackTrace();
+							}
+						}
+
+					} finally {
+						if (input != null) {
+							try {
+								input.close();
+							} catch (IOException e) {
+								if (DLTKCore.DEBUG) {
+									e.printStackTrace();
+								}
+							}
+						}
 					}
 				}
-
-				return (String[]) lines.toArray(new String[lines.size()]);
-			} finally {
-				if (input != null) {
-					input.close();
+			});
+			try {
+				readerThread.join(10000);
+			} catch (InterruptedException e) {
+				if (DLTKCore.DEBUG) {
+					e.printStackTrace();
 				}
 			}
+			return (String[]) lines.toArray(new String[lines.size()]);
 		}
 
 		private void parseLines(String[] lines) {
