Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEugene Tarassov2016-04-02 19:33:16 +0000
committerEugene Tarassov2016-04-02 19:33:16 +0000
commit3d77e375e2cb90e661e58273dbff16f1591d2dcd (patch)
tree07c8adaf857487a04b18b8c5929f7ac17ebd4cbe /plugins
parent07bfe246b3c83dfe415c750390caf0a7fb0def37 (diff)
downloadorg.eclipse.tcf-3d77e375e2cb90e661e58273dbff16f1591d2dcd.tar.gz
org.eclipse.tcf-3d77e375e2cb90e661e58273dbff16f1591d2dcd.tar.xz
org.eclipse.tcf-3d77e375e2cb90e661e58273dbff16f1591d2dcd.zip
Bug 490874 - Eclipse can't handle signals > 31
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/remote/ProcessesProxy.java54
-rw-r--r--plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/services/IProcesses.java45
-rw-r--r--plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/commands/SignalsDialog.java51
-rw-r--r--plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeExecContext.java15
-rw-r--r--plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/launch/TCFLaunchDelegate.java47
-rw-r--r--plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/model/TCFLaunch.java16
6 files changed, 192 insertions, 36 deletions
diff --git a/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/remote/ProcessesProxy.java b/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/remote/ProcessesProxy.java
index ab4c7ab2c..76607936d 100644
--- a/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/remote/ProcessesProxy.java
+++ b/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/remote/ProcessesProxy.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2012 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007, 2016 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -13,7 +13,9 @@ package org.eclipse.tcf.internal.services.remote;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import org.eclipse.tcf.core.Command;
import org.eclipse.tcf.protocol.IChannel;
@@ -249,6 +251,26 @@ public class ProcessesProxy implements IProcesses {
}.token;
}
+ public IToken getSignalMask(String context_id, final DoneGetSignalMaskSets done) {
+ return new Command(channel, ProcessesProxy.this,
+ "getSignalMask", new Object[]{ context_id }) {
+ @Override
+ public void done(Exception error, Object[] args) {
+ Set<Integer> dont_stop = null;
+ Set<Integer> dont_pass = null;
+ Set<Integer> pending = null;
+ if (error == null) {
+ assert args.length == 4;
+ error = toError(args[0]);
+ dont_stop = toSigSet(args[1]);
+ dont_pass = toSigSet(args[2]);
+ pending = toSigSet(args[3]);
+ }
+ done.doneGetSignalMask(token, error, dont_stop, dont_pass, pending);
+ }
+ }.token;
+ }
+
public IToken setSignalMask(String context_id, int dont_stop, int dont_pass, final DoneCommand done) {
return new Command(channel, ProcessesProxy.this,
"setSignalMask", new Object[]{ context_id, dont_stop, dont_pass }) {
@@ -263,6 +285,20 @@ public class ProcessesProxy implements IProcesses {
}.token;
}
+ public IToken setSignalMask(String context_id, Set<Integer> dont_stop, Set<Integer> dont_pass, final DoneCommand done) {
+ return new Command(channel, ProcessesProxy.this,
+ "setSignalMask", new Object[]{ context_id, dont_stop, dont_pass }) {
+ @Override
+ public void done(Exception error, Object[] args) {
+ if (error == null) {
+ assert args.length == 1;
+ error = toError(args[0]);
+ }
+ done.doneCommand(token, error);
+ }
+ }.token;
+ }
+
public IToken signal(String context_id, long signal, final DoneCommand done) {
return new Command(channel, ProcessesProxy.this,
"signal", new Object[]{ context_id, signal }) {
@@ -312,4 +348,20 @@ public class ProcessesProxy implements IProcesses {
if (o == null) return null;
return (Collection<Map<String,Object>>)o;
}
+
+ @SuppressWarnings("unchecked")
+ private static Set<Integer> toSigSet(Object o) {
+ Set<Integer> set = new HashSet<Integer>();
+ if (o instanceof Number) {
+ long n = ((Number)o).longValue();
+ for (int i = 0; i < 64; i++) {
+ if ((n & (1l << i)) != 0) set.add(i);
+ }
+ }
+ else if (o != null) {
+ Collection<Number> c = (Collection<Number>)o;
+ for (Number n : c) set.add(n.intValue());
+ }
+ return set;
+ }
}
diff --git a/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/services/IProcesses.java b/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/services/IProcesses.java
index 87c4cd0bc..d096c865f 100644
--- a/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/services/IProcesses.java
+++ b/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/services/IProcesses.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2013 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007, 2016 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -12,6 +12,7 @@ package org.eclipse.tcf.services;
import java.util.Collection;
import java.util.Map;
+import java.util.Set;
import org.eclipse.tcf.protocol.IService;
import org.eclipse.tcf.protocol.IToken;
@@ -221,11 +222,13 @@ public interface IProcesses extends IService {
* If context is not attached the command will return an error.
* @param done - call back interface called when operation is completed.
* @return pending command handle, can be used to cancel the command.
+ * TODO: deprecated - cannot support more than 32 signals
*/
IToken getSignalMask(String context_id, DoneGetSignalMask done);
/**
* Call-back interface to be called when "getSignalMask" command is complete.
+ * TODO: deprecated - cannot support more than 32 signals
*/
interface DoneGetSignalMask {
/**
@@ -239,6 +242,32 @@ public interface IProcesses extends IService {
}
/**
+ * Get process or thread signal mask.
+ * Signal indices in the mask control how signals should be handled by debug agent.
+ * When new context is created it inherits the mask from its parent.
+ * If context is not attached the command will return an error.
+ * @param done - call back interface called when operation is completed.
+ * @return pending command handle, can be used to cancel the command.
+ * @since 1.4
+ */
+ IToken getSignalMask(String context_id, DoneGetSignalMaskSets done);
+
+ /**
+ * Call-back interface to be called when "getSignalMask" command is complete.
+ * @since 1.4
+ */
+ interface DoneGetSignalMaskSets {
+ /**
+ * @param token - command handle.
+ * @param dont_stop - set of signals that should suspend execution of the context.
+ * @param dont_pass - set of signals that should not be delivered to the context.
+ * @param pending - set of signals that are generated but not delivered yet.
+ * Note: "pending" is meaningful only if the context is suspended.
+ */
+ void doneGetSignalMask(IToken token, Exception error, Set<Integer> dont_stop, Set<Integer> dont_pass, Set<Integer> pending);
+ }
+
+ /**
* Set process or thread signal mask.
* Bits in the mask control how signals should be handled by debug agent.
* If context is not attached the command will return an error.
@@ -247,10 +276,24 @@ public interface IProcesses extends IService {
* @param dont_pass - bit-set of signals that should not be delivered to the context.
* @param done - call back interface called when operation is completed.
* @return pending command handle, can be used to cancel the command.
+ * TODO: deprecated - cannot support more than 32 signals
*/
IToken setSignalMask(String context_id, int dont_stop, int dont_pass, DoneCommand done);
/**
+ * Set process or thread signal mask.
+ * Signal indices in the mask control how signals should be handled by debug agent.
+ * If context is not attached the command will return an error.
+ * @param dont_stop - set of signals that should not suspend execution of the context.
+ * By default, debugger suspends a context before it receives a signal.
+ * @param dont_pass - set of signals that should not be delivered to the context.
+ * @param done - call back interface called when operation is completed.
+ * @return pending command handle, can be used to cancel the command.
+ * @since 1.4
+ */
+ IToken setSignalMask(String context_id, Set<Integer> dont_stop, Set<Integer> dont_pass, DoneCommand done);
+
+ /**
* Send a signal to a process or thread.
* @param context_id - context ID.
* @param signal - signal code.
diff --git a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/commands/SignalsDialog.java b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/commands/SignalsDialog.java
index a33c0465d..26841059e 100644
--- a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/commands/SignalsDialog.java
+++ b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/commands/SignalsDialog.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2012 Wind River Systems, Inc. and others.
+ * Copyright (c) 2009, 2016 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -15,11 +15,13 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Map;
+import java.util.Set;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
@@ -56,6 +58,8 @@ import org.eclipse.tcf.util.TCFTask;
class SignalsDialog extends Dialog {
+ private static final String SETTINGS_SECTION = SignalsDialog.class.getCanonicalName();
+
private static final int
SIZING_TABLE_WIDTH = 800,
SIZING_TABLE_HEIGHT = 300;
@@ -144,7 +148,7 @@ class SignalsDialog extends Dialog {
switch (column) {
case 0:
long n = s.getCode().longValue();
- if (n < 32) return Long.toString(n);
+ if (n < 256) return Long.toString(n);
String q = Long.toHexString(n);
if (q.length() < 8) q = "00000000".substring(q.length()) + q;
return "0x" + q;
@@ -169,6 +173,19 @@ class SignalsDialog extends Dialog {
}
@Override
+ protected boolean isResizable() {
+ return true;
+ }
+
+ @Override
+ protected IDialogSettings getDialogBoundsSettings() {
+ IDialogSettings settings = Activator.getDefault().getDialogSettings();
+ IDialogSettings section = settings.getSection(SETTINGS_SECTION);
+ if (section != null) return section;
+ return settings.addNewSection(SETTINGS_SECTION);
+ }
+
+ @Override
protected void configureShell(Shell shell) {
super.configureShell(shell);
shell.setText("Signals");
@@ -291,15 +308,13 @@ class SignalsDialog extends Dialog {
}
else {
int i = 0;
- int no_stop = 0;
- int no_pass = 0;
+ Set<Integer> no_stop = new HashSet<Integer>();
+ Set<Integer> no_pass = new HashSet<Integer>();
Signal[] arr = new Signal[sigs.size()];
try {
ILaunchConfiguration cfg = launch.getLaunchConfiguration();
- String dont_stop = cfg.getAttribute(TCFLaunchDelegate.ATTR_SIGNALS_DONT_STOP, "");
- String dont_pass = cfg.getAttribute(TCFLaunchDelegate.ATTR_SIGNALS_DONT_PASS, "");
- if (dont_stop.length() > 0) no_stop = Integer.parseInt(dont_stop, 16);
- if (dont_pass.length() > 0) no_pass = Integer.parseInt(dont_pass, 16);
+ no_stop = TCFLaunchDelegate.readSigSet(cfg.getAttribute(TCFLaunchDelegate.ATTR_SIGNALS_DONT_STOP, ""));
+ no_pass = TCFLaunchDelegate.readSigSet(cfg.getAttribute(TCFLaunchDelegate.ATTR_SIGNALS_DONT_PASS, ""));
}
catch (Exception x) {
Activator.log("Invalid launch cofiguration attribute", x);
@@ -308,8 +323,8 @@ class SignalsDialog extends Dialog {
Signal s = arr[i++] = new Signal(m);
Number num = s.getIndex();
int j = num == null ? 0 : 1 << num.intValue();
- s.setDontStop((no_stop & j) != 0);
- s.setDontPass((no_pass & j) != 0);
+ s.setDontStop(no_stop.contains(j));
+ s.setDontPass(no_pass.contains(j));
}
done(arr);
}
@@ -344,25 +359,25 @@ class SignalsDialog extends Dialog {
protected void okPressed() {
try {
boolean set_mask = false;
- int dont_stop_set = 0;
- int dont_pass_set = 0;
+ Set<Integer> dont_stop_set = new HashSet<Integer>();
+ Set<Integer> dont_pass_set = new HashSet<Integer>();
final LinkedList<Number> send_list = new LinkedList<Number>();
for (Signal s : cur_signals) {
Number index = s.getIndex();
Signal x = org_signals.get(index);
if (!set_mask) set_mask = x == null || x.isDontStop() != s.isDontStop() || x.isDontPass() != s.isDontPass();
- if (s.isDontStop()) dont_stop_set |= 1 << index.intValue();
- if (s.isDontPass()) dont_pass_set |= 1 << index.intValue();
+ if (s.isDontStop()) dont_stop_set.add(index.intValue());
+ if (s.isDontPass()) dont_pass_set.add(index.intValue());
if ((x == null || !x.isPending()) && s.isPending()) send_list.add(s.getCode());
}
if (set_mask) {
TCFLaunch launch = model.getLaunch();
ILaunchConfigurationWorkingCopy cfg = launch.getLaunchConfiguration().getWorkingCopy();
- cfg.setAttribute(TCFLaunchDelegate.ATTR_SIGNALS_DONT_STOP, Integer.toHexString(dont_stop_set));
- cfg.setAttribute(TCFLaunchDelegate.ATTR_SIGNALS_DONT_PASS, Integer.toHexString(dont_pass_set));
+ cfg.setAttribute(TCFLaunchDelegate.ATTR_SIGNALS_DONT_STOP, TCFLaunchDelegate.writeSigSet(dont_stop_set));
+ cfg.setAttribute(TCFLaunchDelegate.ATTR_SIGNALS_DONT_PASS, TCFLaunchDelegate.writeSigSet(dont_pass_set));
cfg.doSave();
- final int dont_stop = dont_stop_set;
- final int dont_pass = dont_pass_set;
+ final Set<Integer> dont_stop = dont_stop_set;
+ final Set<Integer> dont_pass = dont_pass_set;
new TCFTask<Boolean>(channel) {
final HashSet<IToken> cmds = new HashSet<IToken>();
final LinkedList<TCFNodeExecContext> nodes = new LinkedList<TCFNodeExecContext>();
diff --git a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeExecContext.java b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeExecContext.java
index cc59d41b5..34370d65a 100644
--- a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeExecContext.java
+++ b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeExecContext.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2015 Wind River Systems, Inc. and others.
+ * Copyright (c) 2007, 2016 Wind River Systems, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -392,17 +392,18 @@ public class TCFNodeExecContext extends TCFNode implements ISymbolOwner, ITCFExe
set(null, signal_list.getError(), null);
return true;
}
- command = prs.getSignalMask(id, new IProcesses.DoneGetSignalMask() {
- public void doneGetSignalMask(IToken token, Exception error, int dont_stop, int dont_pass, int pending) {
+ command = prs.getSignalMask(id, new IProcesses.DoneGetSignalMaskSets() {
+ public void doneGetSignalMask(IToken token, Exception error,
+ Set<Integer> dont_stop, Set<Integer> dont_pass, Set<Integer> pending) {
int n = 0;
SignalMask[] list = new SignalMask[sigs.size()];
for (Map<String,Object> m : sigs) {
SignalMask s = list[n++] = new SignalMask();
s.props = m;
- int mask = 1 << s.getIndex().intValue();
- s.dont_stop = (dont_stop & mask) != 0;
- s.dont_pass = (dont_pass & mask) != 0;
- s.pending = (pending & mask) != 0;
+ int i = s.getIndex().intValue();
+ s.dont_stop = dont_stop.contains(i);
+ s.dont_pass = dont_pass.contains(i);
+ s.pending = pending.contains(i);
}
set(token, error, list);
}
diff --git a/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/launch/TCFLaunchDelegate.java b/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/launch/TCFLaunchDelegate.java
index ec4da2bb4..70df6dad2 100644
--- a/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/launch/TCFLaunchDelegate.java
+++ b/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/launch/TCFLaunchDelegate.java
@@ -14,8 +14,10 @@ import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
+import java.util.Set;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
@@ -339,6 +341,51 @@ public class TCFLaunchDelegate extends LaunchConfigurationDelegate {
return program_path.toOSString();
}
+ /**
+ * Utility function for parsing ATTR_SIGNALS_DONT_STOP and ATTR_SIGNALS_DONT_PASS
+ */
+ public static Set<Integer> readSigSet(String s) {
+ Set<Integer> set = new HashSet<Integer>();
+ int l = s.length();
+ int i = 0;
+ while (i < l && s.charAt(i) == ' ') i++;
+ if (i < l && s.charAt(i) == '[') {
+ for (;;) {
+ i++;
+ int n = 0;
+ while (i < l && s.charAt(i) == ' ') i++;
+ if (i >= l || s.charAt(i) < '0' || s.charAt(i) > '9') break;
+ while (i < l && s.charAt(i) >= '0' && s.charAt(i) <= '9') {
+ n = n * 10 + (s.charAt(i++) - '0');
+ }
+ set.add(n);
+ while (i < l && s.charAt(i) == ' ') i++;
+ if (i >= l || s.charAt(i) != ',') break;
+ }
+ }
+ else if (i < l) {
+ int n = Integer.parseInt(s, 16);
+ for (int m = 0; m < 31; m++) {
+ if ((n & (1 << m)) != 0) set.add(m);
+ }
+ }
+ return set;
+ }
+
+ /**
+ * Utility function for setting ATTR_SIGNALS_DONT_STOP and ATTR_SIGNALS_DONT_PASS
+ */
+ public static String writeSigSet(Set<Integer> s) {
+ StringBuffer buf = new StringBuffer();
+ buf.append('[');
+ for (int n : s) {
+ if (buf.length() > 1) buf.append(',');
+ buf.append(n);
+ }
+ buf.append(']');
+ return buf.toString();
+ }
+
@Override
protected IProject[] getBuildOrder(ILaunchConfiguration configuration, String mode) throws CoreException {
ITCFLaunchProjectBuilder builder = TCFLaunchProjectBuilder.getLaunchProjectBuilder(configuration);
diff --git a/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/model/TCFLaunch.java b/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/model/TCFLaunch.java
index 4c833776d..fd5dae2fb 100644
--- a/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/model/TCFLaunch.java
+++ b/plugins/org.eclipse.tcf.debug/src/org/eclipse/tcf/internal/debug/model/TCFLaunch.java
@@ -813,10 +813,8 @@ public class TCFLaunch extends Launch {
final boolean stop_at_entry = cfg.getAttribute(TCFLaunchDelegate.ATTR_STOP_AT_ENTRY, true);
final boolean stop_at_main = cfg.getAttribute(TCFLaunchDelegate.ATTR_STOP_AT_MAIN, true);
final boolean use_terminal = cfg.getAttribute(TCFLaunchDelegate.ATTR_USE_TERMINAL, true);
- final String dont_stop = cfg.getAttribute(TCFLaunchDelegate.ATTR_SIGNALS_DONT_STOP, "");
- final String dont_pass = cfg.getAttribute(TCFLaunchDelegate.ATTR_SIGNALS_DONT_PASS, "");
- final int no_stop = dont_stop.length() > 0 ? Integer.parseInt(dont_stop, 16) : 0;
- final int no_pass = dont_pass.length() > 0 ? Integer.parseInt(dont_pass, 16) : 0;
+ final Set<Integer> dont_stop = TCFLaunchDelegate.readSigSet(cfg.getAttribute(TCFLaunchDelegate.ATTR_SIGNALS_DONT_STOP, ""));
+ final Set<Integer> dont_pass = TCFLaunchDelegate.readSigSet(cfg.getAttribute(TCFLaunchDelegate.ATTR_SIGNALS_DONT_PASS, ""));
final IProcessesV1 ps_v1 = channel.getRemoteService(IProcessesV1.class);
// Start the process
new LaunchStep() {
@@ -868,8 +866,8 @@ public class TCFLaunch extends Launch {
params.put(IProcessesV1.START_ATTACH_CHILDREN, attach_children);
params.put(IProcessesV1.START_STOP_AT_ENTRY, stop_at_entry);
params.put(IProcessesV1.START_STOP_AT_MAIN, stop_at_main);
- if (dont_stop.length() > 0) params.put(IProcessesV1.START_SIG_DONT_STOP, no_stop);
- if (dont_pass.length() > 0) params.put(IProcessesV1.START_SIG_DONT_PASS, no_pass);
+ if (dont_stop.size() > 0) params.put(IProcessesV1.START_SIG_DONT_STOP, dont_stop);
+ if (dont_pass.size() > 0) params.put(IProcessesV1.START_SIG_DONT_PASS, dont_pass);
}
if (use_terminal) params.put(IProcessesV1.START_USE_TERMINAL, true);
ps_v1.start(dir, file, args_arr, process_env, params, done);
@@ -897,7 +895,7 @@ public class TCFLaunch extends Launch {
}
};
// Set process signal masks
- if (ps_v1 == null && (no_stop != 0 || no_pass != 0)) {
+ if (ps_v1 == null && (dont_stop.size() > 0 || dont_pass.size() > 0)) {
new LaunchStep() {
@Override
void start() {
@@ -909,14 +907,14 @@ public class TCFLaunch extends Launch {
else if (cmds.size() == 0) done();
}
};
- cmds.add(ps.setSignalMask(process.getID(), no_stop, no_pass, done_set_mask));
+ cmds.add(ps.setSignalMask(process.getID(), dont_stop, dont_pass, done_set_mask));
final IRunControl rc = channel.getRemoteService(IRunControl.class);
if (rc != null) {
final IRunControl.DoneGetChildren done_get_children = new IRunControl.DoneGetChildren() {
public void doneGetChildren(IToken token, Exception error, String[] context_ids) {
if (context_ids != null) {
for (String id : context_ids) {
- cmds.add(ps.setSignalMask(id, no_stop, no_pass, done_set_mask));
+ cmds.add(ps.setSignalMask(id, dont_stop, dont_pass, done_set_mask));
cmds.add(rc.getChildren(id, this));
}
}

Back to the top