Macos – Unfreeze a frozen osx UI using ssh without shutting down all applications

freezemacmacossshuser interface

My mac freezes occasionally, and most often I simply restart it by holding down the power button for 5+ seconds.

Today however, I had been running a huge file scan for 14 hours when the UI froze completely, and I’d rather not wait another 14 hours!

Symptoms of the frozen UI: Nothing happens when using the keyboard (except for the caps lock light turning on/off). Naturally, force quit does not come up. Moving the mouse moves the cursor on the screen but clicking does nothing.

Using another Mac on the network, I can access the mac by SSH. I saw that the RAM was almost full, but CPU activity was modest. Things I tried to unfreeze the mac:

  1. Shut down / kill Chrome, iMovie, Photoshop and other applications that I didn't care about shutting down. Did help the RAM usage down, but did not help in unfreezing the mac.

  2. Shut down the Finder and Dock processes. No help.

  3. Activated Screen Sharing from the command line and tried connecting remotely. The password dialog comes up (indicating that screen sharing indeed is activated) but after supplying password, the progress indicator just spins for eternity and nothing happens.

  4. Tried suspending the user session from the command line:

/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend

This command just hangs in the SSH session and nothing happens. Needs to be aborted using ctrl+c. Using sudo makes the command return immediately without any effect.

Not even killing WindowServer (sudo killall -HUP WindowServer) helped, and running a graceful restart (sudo shutdown -r now) only made the computer freeze completely (no more cursor movements nor ssh access). Only the power button force shut-off worked.

Had to wait another 14 hours for the file scan to run again. Is there any other way to unfreeze a mac in this state? Would be good to know for future reference…

Best Answer

I used to deal with this type of situation occasionally, and when it's a general UI freeze, not one particular window being unresponsive, then there's nothing I've found (no process you can kill) that can deal with the problem, other than killing WindowServer. That should cause the session to be logged out.

However, in this particular case, since killing WindowServer didn't return the system to a usable state, I suspect it was doomed anyway.

With regard to the best possible recovery, one thing to note is that it may be possible to cleanly shut down individual applications from SSH:

osascript -e 'tell application "TextEdit" to quit'

Normal GUI applications will not save their files etc. when killed, but will when given this quit event. Of course, if the application pops up a dialog when you tell it to quit, this doesn't help. And if osascript itself hangs, then the Apple Event dispatch system is hung...

Related Question