let do_at_exit () = 
  List.iter (fun f -> f()) (List.rev !at_exit_functions)