Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

When I restore from hibernate the screen is often corrupted. I suspect the graphics memory is not being saved. Suspend-to-ram works fine otherwise.

It also looks like the font-cache is corrupted, as all letters are corrupted consistently. The effect seems to target a font at a specific size. E.g. if my terminal window is hit, changing the font and/or the font size will fix it, unless that font with that size is already damaged.

If the font is used elsewhere (other apps, window manager, etc.), then the problem is there as well. Sometimes the font used for the window titles is hit, then all window titles show the same letters corrupted.

Logging out and back in again fixes it, but I don't want to have to do that. I have been logging-out then hibernating, but this is more effort and eliminates most of the benefit of hibernate.

Is there another way to refresh the X11 display? The Ctrl+Alt+F1… does not fix it either. It switches terminal but does not redraw anything: It just shows the old corrupted screen.

I am using Debian 6.

In this occasion the window title is bad: window title font deranged

Terminal content bad, but title is (still) okay: text is distorted systematically, but only some fonts affected

share|improve this question
1  
What graphics chip / driver are you using? Distro? –  Caleb Jun 6 '11 at 13:46
1  
Debian 6, acer aspire 5338 integrated graphics. I have had it working in Ubuntu, and suspend to ram works excellent. I suspect it us just not saving graphics ram to disk. –  richard Jun 6 '11 at 15:19
1  
That doesn't quite answer the question since that model seems to have been shipped with Intel, Nvidia, and ATI video card options. By "integrated" do you mean yours has the Intel GMA video card? –  Caleb Jun 6 '11 at 15:47
    
It's not clear from what you said - have you tried doing ctrl-alt-F1 before hibernating (i.e. hibernating from text mode, and only switching back to X11 after resuming) ? you may need to find out the command to hibernate from the command line. –  Random832 Sep 9 '11 at 16:47
1  
I have updated to debian7, it now works. @terdon the screen shots added to question, look similar to what I had. –  richard Feb 22 at 22:55

11 Answers 11

I had a similar situation with my laptop. The screen would often remain black when it woke from suspend. My solution was to use xrandr to reset my displays. You need to find the xrandr command that sets up your layout and run that. For example, on my system, I had two screens and this set it up as I wanted it:

xrandr --output DP-3 --auto --output VGA-0 --auto --right-of DP-3 --primary

If you only have a single screen, you could try switching it off and on again:

xrandr --output VGA-1 --off; xrandr --output VGA-1 --auto;

You can see the names of your screens by running xrandr with no arguments. On the system I am using now (one VGA screen), I get:

$ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192
VGA-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm
   1920x1080      60.0*+
   1680x1050      60.0  
   1280x1024      75.0     60.0  
   1152x864       75.0  
   1024x768       75.1     60.0  
   800x600        75.0     60.3  
   640x480        75.0     60.0  
   720x400        70.1  
DVI-I-1 disconnected (normal left inverted right x axis y axis)

Once you find the right command, assign it a shortcut so you can run it even when the screen is blank.

share|improve this answer
    
I don't see how this could work. You get a black screen and have no interface...but you run a command? How? Doing alt+Fn won't work because even all X commands throw the error "Can't open display". Trying the export DISPLAY=:0 trick just results in a different error. –  Cerin Apr 22 at 4:50
    
@Cerin on my system, I've assigned a shortcut to that command so I can run it blindly by hitting Alt + F. –  terdon Apr 22 at 8:06

This seems to be a reported bug, check the link that follows.

In case of Ubuntu check this link

In case of Debian read this other link specially the Fixing corrupted video on resume part

In case the problem is in a text console: Have you tried refreshing the fonts cache?

fc-cache -f -v

share|improve this answer
    
Does not help... –  Robert Siemer Feb 22 at 20:34
    
This seems to be a reported bug, check the link that follows. If your distro is not Ubuntu, the bug may not be specific to a distro but some libraries that may affect other distros. Dig into the bug/s and see if it is solved for your distro... bugs.launchpad.net/ubuntu/+source/linux/+bug/659434 –  YoMismo Feb 25 at 15:33
    
Sorry I didn't see your distro was Debian. Check the next link: wiki.debian.org/Suspend specially the Fixing corrupted video on resume part. –  YoMismo Feb 25 at 15:35
    
I have Ubuntu 14.04. –  Robert Siemer Feb 25 at 16:23
    
OK, question stated "I am using Debian 6." before the first screenshot. Then I guess you will find your answer in launchpad's bugs... Anyway, Ubuntu is based on Debian so maybe a solution from the Debian's link can help you out. –  YoMismo Feb 25 at 16:30

Upgrade to Kernel 3.19. – I used the Ubuntu mainline kernel packages, which can be found here:

http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19-vivid/ (runs on Ubuntu 14.04 trusty as well)

The following bug report comment mentioned it

https://bugs.freedesktop.org/show_bug.cgi?id=45092#c37

...and tracked down the commit with the following message:

https://github.com/torvalds/linux/commit/656bfa3afc14e45e2d9e1624bf60d79b3beb12f2

“...since we've only ever seen this on gm45 and i965gm.”

I have that Intel GM45 mobile chipset with integrated graphics. The Acer laptop of the OP was also sold with that chipset (not all though).

(It had nothing to do with suspend.)

share|improve this answer

Try rotating or flipping your screen with xrandr, e.g. upside-down and then back to normal. This might be enough to have it fully redrawn.

share|improve this answer
    
Tried it, no luck. Thanks –  richard Sep 14 '11 at 11:24

Did you try the xrefresh command?

share|improve this answer
    
Yes, did not work, –  richard Nov 15 '13 at 8:49

If a driver is failing to resume a device properly, then I believe the only solution you will find will be in debugging and identifying where the problem is so you can decide what to do from there. For example, I don't see how you can refresh if the video card is not reinitialized.

ACPI handles suspend/resume and display. For example, the following ACPI issue that occurs on some ThinkPads may address the symptoms your are describing:

When resuming from suspend-to-ram the text console displays may show garbage instead of actual text. The machine is otherwise still responsive and X displays fine. If all of this is true, then adding the kernel option acpi_sleep=s3_bios,s3_mode in your menu.lst or lilo.conf may solve the problem.

Problems with ACPI suspend-to-ram - ThinkWiki

If you're using the thinkpad_acpi module that the above quote is addressing, that might be all you need. For more info on this solution, see Suspend2Ram - Powersave Documentation

First, there are several kernel parameters, that can be tried out. Just add them to your "kernel"-line in /boot/grub/menu.lst. More information about those can be found in /usr/src/linux/Documentation/power/video.txt.

From video.txt:

During S3 resume, hardware needs to be reinitialized. For most devices, this is easy, and kernel driver knows how to do it. Unfortunately there's one exception: video card. Those are usually initialized by BIOS, and kernel does not have enough information to boot video card. (Kernel usually does not even contain video card driver -- vesafb and vgacon are widely used).

More at video.txt Refer to the table here to see if a known acpi_sleep=<hack> is listed for your video card model.

Debian Suspend and KMS The Debian wiki suggests disabling KMS for a "corrupted video on resume" issue.1

A very common issue found after the computer resumes is corrupted video (or black screen, or no LCD backlight). The first step is to check whether the system is still running, which can be simply done by pressing the Capslock button and check whether the Capslock LED is changing accordingly. If the system is still running, in most cases we need to add a video quirk for your video card.

Debian now has kernel mode setting (KMS) enabled by default for most Intel, nVidia and ATI video cards. But pm-utils' video quirk does [not] support KMS yet. So in most cases you should try disabling KMS first. The detail steps for your specific video card can be found on the KernelModesetting page.

After disabled KMS, if the video after resume still corrupts, you can try to suspend the system by using some video quirks. Read the manpage of the pm-suspend program for a very detail explanation of all the quirks available, and try the combinations of them from commandline. If you successfully find one combination of quirks that works for your system, you can add them into /usr/lib/pm-utils/video-quirks to make them permanent. At the same time, please help to file a bug against the pm-utils package with a patch about your changes so it can benefit the mass.

A common issue found on systems upgrading from old versions of Debian is the enabling of quirk-s3-bios freezes the system during suspend. If your system freezes during suspend, check the pm-suspend.log carefully after enabled debugging and make sure quirk-s3-bios is not used.

If you think this is related to your issue, you can try disabling KMS as suggested. For insructions for your card see KernelModesetting - Debian Wiki

Debugging Suspend

The log of suspend and resume processes are in file /var/log/pm-suspend.log. It contains moderately verbose information by default. More information can be enabled for debugging by inserting line export PM_DEBUG=true into the beginning of file /usr/lib/pm-utils/pm-functions.

For more, check out the info on Kernel testing facility mentioned at Suspend - Debian Wiki as well. This can help you debug and isolate the problem.

Some examples and more in-depth debugging info that may help you "drivers that fail to suspend or resume their devices" is available at https://www.kernel.org/doc/Documentation/power/basic-pm-debugging.txt

Some more debugging ideas for pm-utils at pm-utils - ArchWiki and http://unix.stackexchange.com/a/29090/87728

Here's a full list of Kernel Parameters many being relevant to acpi and suspend.

Good luck.

share|improve this answer
    
X display is not fine; virtual text terminals are fine –  Robert Siemer Feb 19 at 16:25
    
Did you check /var/log/pm-suspend.log? Did you enable debugging in /usr/lib/pm-utils/pm-functions and check it after that? –  iyrin Feb 19 at 16:56
    
You can test suspend with quirks from the terminal using pm-suspend --quirk-s3-bios --quirk-s3-mode. See the options section in man pm-action. –  iyrin Feb 21 at 16:51
    
I checked /var/log/pm-suspend.log. Nothing unusual. I’m using KMS. – Disabling KMS is no option these days (xorg intel driver needs it); that wiki you pointed to was last updated 2012. –  Robert Siemer Feb 22 at 22:08
    
Just want to say that dmesg | tail -50 command can be useful for debugging. I actually discovered low memory corruption related to suspend that I was able to resolve with kernel parameters in grub memmap=64K$0 memory_corruption_check=0. I believe it will tell you if there is an error initializing the video card. –  iyrin Feb 27 at 19:07

In GNOME 3, AltF2renter refreshes the GUI. AltF2 launches the Run Command prompt, and the r command forces a refresh.

share|improve this answer
    
That sounds like you could also run r from the console. I have no r installed. – What should that run, you say? I.e. which package? What is the full name of that r program? –  Robert Siemer Feb 18 at 21:24
1  
@RobertSiemer that's not a program, it's an internal GNOME thing that restarts the DE. I am guessing it runs gnome --replace in the background but I don't know. –  terdon Feb 18 at 22:06
2  
r or restart (it's the same). The console equivalent would be gnome-shell --replace. –  don_crissti Feb 18 at 23:40
    
I run gnome-panel with metacity. –  Robert Siemer Feb 22 at 20:42
    
@richard, did this work? –  Severyn Kozak Feb 23 at 19:48

Try Crtlalt- then Crtlalt+. That changes the screen resolution back and forth.

share|improve this answer
    
nothing. May be the keys are not bound. –  richard Nov 15 '11 at 14:53

The Ctrl+Alt+F1… does not work

Well… then try issuing sudo chvt 1, then switch back to Xorg's vty using Ctrl_Alt_Fn or sudo chvt N (where N is usually 7 or 8). In case chvt would work, you can even try scripting it.

share|improve this answer
    
sorry I was not clear ctrl+alt+f1 works. It is the ctrl+alt+f1 solution that does not. I can switch virtual terminals, but it does not fix the corruption. Thanks. –  richard Apr 17 '12 at 14:41

I'm having this issue too (Debian Squeeze and Wheezy).

In my experience, it happens mainly when most of the memory is full and the system is using swap memory.

As a partial work-around: if I change the default fonts, the corruption goes away. (Not for good though, I have to change again when the corruption reappears.)

(On Debian Wheezy this is done by gnome-tweak-tool.)

Hope this helps, if someone finds a permanent fix, I'll be glad to hear about it!

share|improve this answer

This is almost certainly because the graphics driver has bugs for the display device. It probably won't matter too much which it is, because either way it's not something you can likely fix. But you should file a bug about the kernel driver for the device (once you figure out what it is (lspci may help here)).

Something you could try, though, as a work around: when coming out of hibernate, try hitting "ctrl-alt-F4" to switch to another virtual terminal and then switching back (which is likely either ctrl-alt-F1 or ctrl-alt-F7 or maybe F8). This may do enough of a screen refresh that it'll make the display recover. Maybe.

share|improve this answer
    
have tried ctrl-alt-F1 it did not work. –  richard Jun 23 '11 at 12:36

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.