So, if the guest system has a triple-fault, and I had had my mouse grabbed, it stays grabbed, so that X has to be restarted (as far as I know).
This happens because abort() doesn't run functions registered with atexit(). Suggest use of exit() instead.