anchor.diff:      exit(Reason);
   handle_info(stop_group_leaders, #st{gls=Gls}=St) ->
       %% Stop the remaining group leaders.
  -    [test_server_gl:stop(GL) || GL <- gb_sets:to_list(Gls)],
  -    erlang:send_after(2000, self(), kill_group_leaders),
  +    GlPids = gb_sets:to_list(Gls),
  +    [test_server_gl:stop(GL) || GL <- GlPids],
  +    timer:sleep(100),
  +    Wait = 
  +	case lists:filter(fun(GlPid) -> is_process_alive(GlPid) end, GlPids) of
  +	    [] -> 0;
  +	    _  -> 2000
  +	end,
  +    erlang:send_after(Wait, self(), kill_group_leaders),
       {noreply,St};
   handle_info(kill_group_leaders, #st{gls=Gls,stopping=From,
   				    pending_ops=Ops}=St) ->
  
positive.code: 		  end, Tags),
      GlList = gb_sets:to_list(Gls),
      [test_server_gl:stop(GL) || GL <- GlList],
      timer:sleep(2000),
      [exit(GL, kill) || GL <- GlList],
      Empty = gb_trees:empty(),
      {ok,Shared} = test_server_gl:start_link(),
      {reply,ok,#st{fds=Empty,shared_gl=Shared,gls=gb_sets:empty(),
  
negative.code: 		       end, {Fds0,Tags0}, FdTags),
      %% Give the users of the surviving group leaders some
      %% time to finish.
      erlang:send_after(1000, self(), stop_group_leaders),    
      {noreply,St#st{fds=Fds1,tags=Tags1}};
  handle_call(finish, From, St) ->
      gen_server:reply(From, ok),
  