let do_and_update_globals action file =
  attach_detach_mode := true;
  assert (!globinits = [] && !globals = [] && !globactions = []);
  action file;
  detach_globinits file;
  detach_globals file;
  detach_globactions ();
  attach_detach_mode := false