When the smart scheduler is enabled, the VT ioctls (particularly
VT_WAITACTIVE) can be interrupted by the smart scheduler's SIGALRMs.
Previously, this caused the server to immediately continue on to
ScreenInit, almost certainly causing a crash or failure because the X
server that owned the VT hadn't finished cleaning up. As of commit
7ee965a300c9eddcc1acacf9414cfe3e589222a8, it causes a FatalError
instead.
Retrying the ioctl as long as it fails with errno == EINTR fixes the
problem and allows server regenerations to trigger VT switches that
actually succeed.
Problem should be fixed by this commit, not sure if it was backported to ubuntu/natty.
commit 88c4622b594a172 5d0cee86bc82ad6 40d241c520
Author: Aaron Plattner <email address hidden>
Date: Mon Apr 18 08:23:48 2011 -0700
linux: Retry VT ioctls while errno == EINTR
When the smart scheduler is enabled, the VT ioctls (particularly 9eddcc1acacf941 4cfe3e589222a8, it causes a FatalError
VT_WAITACTIVE) can be interrupted by the smart scheduler's SIGALRMs.
Previously, this caused the server to immediately continue on to
ScreenInit, almost certainly causing a crash or failure because the X
server that owned the VT hadn't finished cleaning up. As of commit
7ee965a300c
instead.
Retrying the ioctl as long as it fails with errno == EINTR fixes the
problem and allows server regenerations to trigger VT switches that
actually succeed.
Signed-off-by: Aaron Plattner <email address hidden>
Reviewed-by: Peter Hutterer <email address hidden>
Reviewed-by: Cyril Brulebois <email address hidden>
Signed-off-by: Keith Packard <email address hidden>