_xcsbuildd user preventing logout after running OS X Server

Having given OS X Server a trial-run, I suddenly found that I was encountering all manner of weird system issues:

  • From the Apple menu, About This Mac, Restart…, Shutdown…, and Log Out… could be selected, but did nothing;
  • Complaints when trying to restart/shutdown or when trying to perform other tasks that another user was logged-in and blocking the action;
  • Restarting from the login screen cleared the screen to grey (and still be a usable mouse-cursor) but progressed no further;
  • Graphical logins failing after a reboot as if the password was wrong, despite the same password working for SSH access – but only after a warm restart. Cold-booting still allowed login as expected;
  • Multiple un-named “Admin” accounts in System Preferences’ Users & Groups pane, one of which could not be removed.

Removing OS X Server (drag the application to trash and manually remove /Library/Preferences/com.apple.server* and /Library/Server) didn’t resolve the issue.

It turns out, though, that the problematic behaviour is due to tools which are a part of Xcode but which are invoked by OS X Server – and the fix is maddeningly simple:

To disable the Xcode Server components with:

sudo xcrun xcscontrol --shutdown # Stops Xcode Server

… in order to shutdown all of _xcsbuildd’s processes and prevent restart from being blocked.

However, if you don’t actually need Xcode Server, then running:

sudo xcrun xcscontrol --reset # Resets Xcode Server, removing all service data and stopping all services

… will totally remove all users, services, and system changes. Running this resolved all of the above problems. If only Apple had mentioned this before OS X Server enabled Xcode Server in the first place…