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.