From 87aaefcc1893305c3f23457dfb845c57db8cae9e Mon Sep 17 00:00:00 2001 From: Jonah Graham Date: Tue, 10 Feb 2026 15:08:38 -0500 Subject: [PATCH] Avoid hanging on Linux when launch xpm Fix this by avoiding spawner in this case Workaround https://github.com/eclipse-cdt/cdt/issues/1151 Fixes https://github.com/eclipse-embed-cdt/eclipse-plugins/issues/626 --- .../core/processes/ConditionalRunCommandUi.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/org.eclipse.embedcdt.ui/src/org/eclipse/embedcdt/ui/templates/core/processes/ConditionalRunCommandUi.java b/plugins/org.eclipse.embedcdt.ui/src/org/eclipse/embedcdt/ui/templates/core/processes/ConditionalRunCommandUi.java index b39b5beab..e2c1c4046 100644 --- a/plugins/org.eclipse.embedcdt.ui/src/org/eclipse/embedcdt/ui/templates/core/processes/ConditionalRunCommandUi.java +++ b/plugins/org.eclipse.embedcdt.ui/src/org/eclipse/embedcdt/ui/templates/core/processes/ConditionalRunCommandUi.java @@ -6,6 +6,7 @@ import java.io.InputStreamReader; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -13,7 +14,6 @@ import org.eclipse.cdt.core.templateengine.process.ProcessArgument; import org.eclipse.cdt.core.templateengine.process.ProcessFailureException; import org.eclipse.cdt.core.templateengine.process.ProcessRunner; -import org.eclipse.cdt.utils.spawner.ProcessFactory; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; @@ -117,9 +117,6 @@ public void process(TemplateCore template, ProcessArgument[] args, String proces } } - // Inherit from parent process. - String envp[] = null; - String substitutedCwd = EclipseUtils.performStringSubstitution(cwd); if (substitutedCwd == null) { // If substitution fails, revert to the original string, to alert @@ -150,7 +147,10 @@ public void run(IProgressMonitor pm) throws InterruptedException { try { BufferedReader reader = null; pm.worked(1); - Process process = ProcessFactory.getFactory().exec(cmdArray, envp, dir); + ProcessBuilder processBuilder = new ProcessBuilder(Arrays.asList(cmdArray)); + processBuilder.directory(dir); + + Process process = processBuilder.start(); pm.worked(1); reader = new BufferedReader(new InputStreamReader(process.getInputStream()));