TCF Debugger: fixed: the Debug view briefly shows bogus stack frame during rapid stepping
diff --git a/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/remote/StackTraceProxy.java b/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/remote/StackTraceProxy.java
index 95286d4..6129d67 100644
--- a/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/remote/StackTraceProxy.java
+++ b/plugins/org.eclipse.tcf.core/src/org/eclipse/tcf/internal/services/remote/StackTraceProxy.java
@@ -11,7 +11,6 @@
 package org.eclipse.tcf.internal.services.remote;
 
 import java.util.Collection;
-import java.util.HashMap;
 import java.util.Map;
 
 import org.eclipse.tcf.core.Command;
@@ -31,7 +30,6 @@
         private final Map<String,Object> props;
 
         Context(Map<String,Object> props) {
-            if (props == null) props = new HashMap<String,Object>();
             this.props = props;
         }
 
@@ -144,7 +142,9 @@
         Collection<Map<String,Object>> c = (Collection<Map<String,Object>>)o;
         int n = 0;
         StackTraceContext[] ctx = new StackTraceContext[c.size()];
-        for (Map<String,Object> m : c) ctx[n++] = new Context(m);
+        for (Map<String,Object> m : c) {
+            ctx[n++] = m != null ? new Context(m) : null;
+        }
         return ctx;
     }
 
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 2e9c126..15c29a6 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
@@ -358,7 +358,7 @@
                     set(null, state.getError(), null);
                     return true;
                 }
-                if (s.suspend_pc == null) {
+                if (!s.is_suspended || s.suspend_pc == null) {
                     set(null, null, null);
                     return true;
                 }
diff --git a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeStackFrame.java b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeStackFrame.java
index ba22967..ef89ece 100644
--- a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeStackFrame.java
+++ b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFNodeStackFrame.java
@@ -149,12 +149,6 @@
         func_info = new TCFData<TCFFunctionRef>(channel) {
             @Override
             protected boolean startDataRetrieval() {
-                if (!address.validate(this)) return false;
-                BigInteger n = address.getData();
-                if (n == null) {
-                    set(null, address.getError(), null);
-                    return true;
-                }
                 if (!stack_trace_context.validate(this)) return false;
                 IStackTrace.StackTraceContext ctx = stack_trace_context.getData();
                 if (ctx == null) {
@@ -181,12 +175,17 @@
                         ref.context_id = mem_ctx_data.getID();
                         ref.address_size = mem_ctx_data.getAddressSize();
                     }
-                    ref.address = n;
                     ref.symbol_id = func_id;
                     set(null, null, ref);
                 }
                 else {
                     assert parent.getStackTrace().isValid();
+                    if (!address.validate(this)) return false;
+                    BigInteger n = address.getData();
+                    if (n == null) {
+                        set(null, address.getError(), null);
+                        return true;
+                    }
                     if (frame_no > 0) n = n.subtract(BigInteger.valueOf(1));
                     TCFDataCache<TCFFunctionRef> info_cache = mem_node.getFuncInfo(n);
                     if (info_cache == null) {