uswsusp and plymouth don't play nice together
Mikko Vinni
mmvinni at yahoo.com
Sun May 20 23:52:19 PDT 2012
Hi,
has any uswsusp[1] (aka suspend-utils) or plymouth[2] developer tested the
two together? It seems there is a hang during resume from s2disk, and the
resume can be continued by pressing ALT-SysRq-K or ALT-SysRq-E.
This is not hardware specific neither new. For example, there is a bug report
for Debian[3] opened in 2010 (don't get confused by the reference to the
blinking fb cursor bug). Personally, I have tested on Ubuntu 12.04 and
Arch Linux (stable and some rc kernel versions for some months now).
Easily reproduced also in a virtual machine, without graphical splash.
The hang does not occur if using the in-kernel hibernation, nor when
not starting plymouth before resume.
ALT-SysRq-T shows this backtrace for the 'plymouthd' and 'resume' processes:
[ 51.853427] plymouthd D 0000000000000000 0 55 1 0x00000004
[ 51.853427] ffff88000da6fd18 0000000000000086 ffff88000da58000 ffff88000da6ffd8
[ 51.853427] ffff88000da6ffd8 ffff88000da6ffd8 ffff88000da59000 ffff88000da58000
[ 51.853427] 0000000000000000 ffff88000da58490 ffff88000da6fc78 ffff88000d9bd500
[ 51.853427] Call Trace:
[ 51.853427] [<ffffffff8107d879>] ? finish_task_switch+0x49/0xd0
[ 51.853427] [<ffffffff8145daa1>] ? __schedule+0x431/0x900
[ 51.853427] [<ffffffff8145e0af>] schedule+0x3f/0x60
[ 51.853427] [<ffffffff8109b9b3>] __refrigerator+0x43/0xe0
[ 51.853427] [<ffffffff810bdb72>] ? cgroup_freezing+0x32/0x40
[ 51.853427] [<ffffffff8106499d>] get_signal_to_deliver+0x56d/0x600
[ 51.853427] [<ffffffff8118687c>] ? destroy_inode+0x3c/0x70
[ 51.853427] [<ffffffff81014278>] do_signal+0x68/0x750
[ 51.853427] [<ffffffff811b04f1>] ? ep_poll+0x2a1/0x360
[ 51.853427] [<ffffffff811b09ed>] ? sys_epoll_ctl+0xad/0x850
[ 51.853427] [<ffffffff8116dfeb>] ? fput+0x16b/0x210
[ 51.853427] [<ffffffff810149e5>] do_notify_resume+0x65/0x80
[ 51.853427] [<ffffffff81460122>] int_signal+0x12/0x17
[ 51.853427] resume S ffff88000da593c8 0 57 1 0x00000000
[ 51.853427] ffff88000da5fd48 0000000000000082 ffff88000da59000 ffff88000da5ffd8
[ 51.853427] ffff88000da5ffd8 ffff88000da5ffd8 ffffffff8180d020 ffff88000da59000
[ 51.853427] ffff88000da59000 ffff88000da5ffd8 ffff88000da5ffd8 ffff88000da5ffd8
[ 51.853427] Call Trace:
[ 51.853427] [<ffffffff8108014c>] ? ttwu_do_wakeup+0x2c/0x120
[ 51.853427] [<ffffffff8145eed8>] ? _raw_spin_unlock_irqrestore+0x38/0x50
[ 51.853427] [<ffffffff8145e0af>] schedule+0x3f/0x60
[ 51.853427] [<ffffffff812e20f7>] vt_event_wait+0xa7/0x130
[ 51.853427] [<ffffffff81072570>] ? abort_exclusive_wait+0xb0/0xb0
[ 51.853427] [<ffffffff812e225d>] vt_waitactive+0x2d/0x60
[ 51.853427] [<ffffffff8145cc26>] ? mutex_lock+0x16/0x30
[ 51.853427] [<ffffffff812e4886>] vt_move_to_console+0x56/0xc0
[ 51.853427] [<ffffffff81094388>] pm_prepare_console+0x18/0x40
[ 51.853427] [<ffffffff81095974>] hibernation_restore+0x14/0x130
[ 51.853427] [<ffffffff8109afe8>] snapshot_ioctl+0x218/0x4a0
[ 51.853427] [<ffffffff8117e787>] do_vfs_ioctl+0x97/0x530
[ 51.853427] [<ffffffff8118ae14>] ? mntput+0x24/0x40
[ 51.853427] [<ffffffff8116dfeb>] ? fput+0x16b/0x210
[ 51.853427] [<ffffffff8117ecb9>] sys_ioctl+0x99/0xa0
[ 51.853427] [<ffffffff8145fe69>] system_call_fastpath+0x16/0x1b
Does plymouthd register to listen for console change, or something else
that it can't do while refrigerated?
There was on May 18th a patch proposed for the vt_event_wait() function[4],
but that patch has no effect for this particular hang.
Apparently Mandriva has a patch[5] to add plymouth support to uswsusp, but one
would assume that s2disk/resume should not hang in its default state.
Any ideas?
Mikko
--
[1] http://suspend.sourceforge.net/
[2] http://cgit.freedesktop.org/plymouth/
[3] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=593795
[4] "Race in vt_event_wait() during suspend/resume": http://article.gmane.org/gmane.linux.kernel/1299487
[5] changelog e.g.: http://rpmfind.net//linux/RPM/mandriva/2011/x86_64/media/main/release/suspend-0.8-12.20080612.x86_64.html
More information about the plymouth
mailing list