anchor.diff:                             {succ, comm:erl_pid_plain()},
                              ok | timeout}].
   get_ring_data() ->
  -    DHTNodes = pid_groups:find_all(dht_node),
  -    lists:sort(
  -      fun(E1, E2) ->
  -              erlang:element(2, E1) =< erlang:element(2, E2)
  -      end,
  -      [begin
  -           comm:send_local(DhtNode,
  -                           {unittest_get_bounds_and_data, comm:this()}),
  -           receive
  -               {unittest_get_bounds_and_data_response, Bounds, Data, Pred, Succ} ->
  -                   {DhtNode, Bounds, Data,
  -                    {pred, comm:make_local(node:pidX(Pred))},
  -                    {succ, comm:make_local(node:pidX(Succ))}, ok}
  -           % note: no timeout possible - can not leave messages in queue!
  -%%            after 500 -> {DhtNode, empty, [], null, null, timeout}
  -           end
  -       end || DhtNode <- DHTNodes]).
  +    Self = self(),
  +    erlang:spawn(
  +      fun() ->
  +              DHTNodes = pid_groups:find_all(dht_node),
  +              Data =
  +                  lists:sort(
  +                    fun(E1, E2) ->
  +                            erlang:element(2, E1) =< erlang:element(2, E2)
  +                    end,
  +                    [begin
  +                         comm:send_local(DhtNode,
  +                                         {unittest_get_bounds_and_data, comm:this()}),
  +                         receive
  +                             {unittest_get_bounds_and_data_response, Bounds, Data, Pred, Succ} ->
  +                                 {DhtNode, Bounds, Data,
  +                                  {pred, comm:make_local(node:pidX(Pred))},
  +                                  {succ, comm:make_local(node:pidX(Succ))}, ok}
  +                         % we are in a separate process, any message in the
  +                         % message box should not influence the calling process
  +                             after 500 -> {DhtNode, empty, [], {pred, null}, {succ, null}, timeout}
  +                         end
  +                     end || DhtNode <- DHTNodes]),
  +              Self ! {data, Data}
  +      end),
  +    receive {data, Data} -> Data
  +    end.
   
   -spec print_ring_data() -> ok.
   print_ring_data() ->
       DataAll = get_ring_data(),
  -    ct:pal("~.0p~n", [DataAll]).
  +    ct:pal("Scalaris ring data:~n~.0p~n", [DataAll]).
   
   -include("unittest.hrl").
   
  
positive.code: %% @doc Creates a ring with the given IDs (or IDs returned by the IdFun).
  %%      Passes Options to the supervisor, e.g. to set config variables, specify
  %%      a {config, [{Key, Value},...]} option.
  -spec make_ring_with_ids([?RT:key(),...] | fun(() -> [?RT:key(),...]), Options::[tuple()]) -> pid().
  make_ring_with_ids(Ids, Options) when is_list(Ids) ->
      make_ring_with_ids(fun () -> Ids end, Options);
  make_ring_with_ids(IdsFun, Options) when is_function(IdsFun, 0) ->
  
negative.code:          start_minimal_procs/3, stop_minimal_procs/1,
           check_ring_load/1, check_ring_data/0, check_ring_data/2]).
  
  -ifdef(with_export_type_support).
  -export_type([process_info/0, kv_opts/0]).
  -endif.
  
  -include("scalaris.hrl").
  
  -type kv_opts() :: [{Key::atom(), Value::term()}].
  
  %% @doc Sets the current working directory to "../bin" if it does not end with
  %%      "/bin" yet. Assumes that the current working directory is a sub-dir of
  