anchor.diff:              ?PRINT2("TC runner start acknowledged~n"),
               ok
       after 10000 ->
  -            erlang:demonitor(MRef, [flush]),
  +            trap_exit(OldFlag),
  +            unlink_and_flush_exit(Runner),
               RunnerInfo = process_info(Runner),
               ?EPRINT2("TC runner start timeout: "
                        "~n   ~p", [RunnerInfo]),
  
positive.code:                     "~n   Rn:  ~p"
                      "~n   Loc: ~p"
                      "~n", [Rn, Loc]),
  	    put(test_server_loc, Loc),
  	    exit(Rn);
  	{tc_runner_done, Runner, Ret, _Zed} -> 
  	    ?DBG("call -> done:"
  		 "~n   Ret: ~p"
  		 "~n   Zed: ~p", [Ret, _Zed]),
              erlang:demonitor(MRef, [flush]),
  	    case Ret of
  		{error, Reason} ->
  		    exit(Reason);
  
negative.code:                    get()]),
      case net_adm:ping(N) of
          pong ->
              ?PRINT2("tc_try -> ~p still running - start runner~n", [N]),
              OldFlag = trap_exit(true), % Make sure we catch it
              Runner  = spawn_link(N, ?MODULE, tc_wait, [self(), get(), M, F, A]),
              await_tc_runner_started(Runner, OldFlag),
              await_tc_runner_done(Runner, OldFlag);
          pang ->
              ?EPRINT2("tc_try -> ~p *not* running~n", [N]),
              exit({node_not_running, N})
      end.
  
  await_tc_runner_started(Runner, OldFlag) ->
      ?PRINT2("await tc-runner (~p) start ack~n", [Runner]),
      receive
          {'EXIT', Runner, Reason} ->
              ?EPRINT2("TC runner start failed: "
                       "~n   ~p~n", [Reason]),
              exit({tx_runner_start_failed, Reason});
  