anchor.diff:  	    dbg_out("Checkpoint ~p (~p) started~n", [Name, self()]),
   	    proc_lib:init_ack(Cp2#checkpoint_args.supervisor, {ok, self()}),
   	    retainer_loop(Cp2)
  +    catch error:Reason -> %% system limit
  +	    Msg = "Cannot create an ets table for pending transactions",
  +	    Error = {error, {system_limit, Name, Msg, Reason}},
  +	    proc_lib:init_ack(Cp#checkpoint_args.supervisor, Error)
       end.
       
   prepare_tab(Cp, R) ->
  
positive.code: 			  pid
  			 }).
  
  %% Old record definition
  -record(checkpoint, {name,
  		     allow_remote,
  		     ram_overrides_dump,
  		     nodes,
  		     node,
  		     now,
  		     min,
  		     max,
  		     pending_tab,
  		     wait_for_old,
  		     is_activated,
  		     ignore_new,
  		     retainers,
  		     iterators,
  		     supervisor,
  		     pid
  		    }).
  
  -record(retainer, {cp_name, tab_name, store, writers = [], really_retain = true}).
  
  -record(iter, {tab_name, oid_tab, main_tab, retainer_tab, source, val, pid}).
  
negative.code:     end.
  
  args2cp(Args) when is_list(Args)->
      try lists:foldl(fun check_arg/2, #checkpoint_args{}, Args) of
  	Cp ->
  	    case check_tables(Cp) of
  		{error, Reason} ->
  