How to troubleshoot suspend and hibernate in Ubuntu

Some tips are at https://wiki.ubuntu.com/DebuggingKernelSuspendHibernateResume

Fails to suspend/hibernate

$ dmesg|less

There is usually an entry what application caused the suspension to fail:

[32467.560058] Freezing of tasks failed after 20.01 seconds (1 tasks refusing to freeze, wq_busy=0):
[32467.560115] plasma-desktop D 0000000000000000 0 2065 1 0x00800004
...

The stack trace often tells you where the problem might lie:

[32467.560155] [<ffffffff81087f00>] ? autoremove_wake_function+0x0/0x40
[32467.560163] [<ffffffffa016e523>] SendReceive+0x1a3/0x3b0 [cifs]
[32467.560169] [<ffffffffa0153c79>] CIFSSMBUnixQPathInfo+0x139/0x2b0 [cifs]
[32467.560176] [<ffffffffa016853d>] cifs_get_inode_info_unix+0x7d/0x1a0
  • here it is the CIFS (samba) mounts.

Fail to resume

Make sure the swap partition is correctly set, see https://help.ubuntu.com/community/SwapFaq


I used to have Ubuntu hibernation issue on laptop as well as desktops. Then I read somewhere, and which made sense, was that the swap space must be big enough to store the current memory contents. So a good rule of thumb is to have a swap space slightly bigger than the physical memory the laptop has.

So I used 1.6GB of swap for 1GB memory in the next Ubuntu release installation (I am now on Ubuntu 10.04) and I can hibernate the laptop without any issue.

Another way to make it work is to use swap file and not swap partition. Below link has more details:

Hybernate without partition


Depends on what exactly the issue is. I would start by carefully examining the pm-suspend.log

I found the page on Debian website more helpful than the one on the Ubuntu site as far as suspend troubleshooting goes: https://wiki.debian.org/Suspend

In my case 1 out of every few suspends causes the system to freeze (not going in suspend). From the pm-suspend.log, I found that the issue has to do with the video card driver:

Successful suspend message:

Running hook /usr/lib/pm-utils/sleep.d/99video suspend suspend:
kernel.acpi_video_flags = 0
/usr/lib/pm-utils/sleep.d/99video suspend suspend: success.

Failed suspend messages:

Running hook /usr/lib/pm-utils/sleep.d/99video suspend suspend:

And then nothing, this is where it hangs.

The next step is to enable debugging by inserting line export PM_DEBUG=true into the beginning of file /usr/lib/pm-utils/pm-functions. After I did this, I found that it hung at chvt 63 and I found a bug report that eventually made me install the Proprietary video driver from the manufacturer.