Linux – How to recover from desktop freeze without losing running windows

cinnamonfreezelinux-mint

Sometimes VirtualBox causes random freeze of my Mint 16 Cinnamon Desktop 64bit. I am not able to pinpoint what is actually wrong and even where to fill the bug report.

But the life goes on and I need some means of re-initializing the windowing subsystem without losing the work I've done with existing applications.

  • When I run sudo service mdm restart all the already running applications got killed brutally.

  • The cinnamon --replace -d :0 spell doesn't do anything; it just hangs. I guess it is because it need some form of co-operation with the already running cinnamon, which I guess doesn't respond to that.

  • Commands entered with Alt+F2 are ignored, as well as the "r" command used to restart the Cinnamon. The screen is not updated, and it seems that the very keystrokes are ignored.

What are my other options?


Symptoms of the freeze:

The bug manifests by just freezing the screen update of the graphic terminal; the mouse moves alright, it even changes the icon when hovering over different parts of the screen. The problem is that I can't do anything with it; besides the screen doesn't update, and the keyboard don't do anything as well. But I can switch to the text console and I can see, that the windows' processes run well. I can event interact with the applications, that supply some form of cli interactions (like VBoxManage).

To reproduce:

  1. Install the Linux Mint 16 with Cinnamon 2.0 64 bit
  2. Install a program that changes wallpaper (tested on variety, and wallch) and set it to start changing wallpaper as the background task.
  3. Wait for background to change several times. The bug doesn't kick in on the first background change, you need to wait a moment.
  4. On the .xsession.errors you will see something like that.

Edit:

I've updated the symptoms. The time went by and I was able to triage the problem a lot better. It is NOT related to VirtualBox activity in any way.

Best Answer

I don't know what the Cinnamon guys renamed gnome-shell when they forked, so you'll have to find this out. It's probably either cinnamon-shell or cinnamon or something. I'll assume it's called cinnamon.

Now, the GNOME Shell - and by extension, Cinnamon - will respond to SIGHUP by completely reinitializing. It's basically the same as typing r into the AltF2 dialog. So, the solution is easy:

  1. Switch to a virtual console by pressing CtrlAltF21.
  2. Log in.
  3. Type killall -HUP cinnamon.
  4. Switch back to whatever virtual console was running Xorg.

It may take a couple seconds for Cinnamon to reinitialize.

1: This is a good choice as some distributions run display managers on tty1, some on tty7/tty8 (depending on the DM). No one uses tty2.

Related Question