Package: vlock
Version: 2.2.2-3
control: tag -1 + patch
Ok may be a kernel problem search
Race in vt_event_wait() during suspend/resume
Nevertheless they are other problem with vlock:
- VT_WAITACTIVATE has select semantic ie
accroding to xfree86/os-support/linux/lnx_init.
There's a race here, in that if someone else does a VT_ACTIVATE
between our ACTIVATE/WAITACTIVE, we might never get the VT.
So, just spin until we do. There's really no fixing this,
it's a racy protocol.
May be time to get kernel support ?
Bastien
--
Dr-Ing Bastien ROUCARIÈS Université de Cergy/SATIE ENS Cachan
--- new.c.old 2008-05-18 11:10:54.000000000 +0200
+++ new.c 2013-09-18 13:46:53.961467522 +0200
@@ -103,9 +103,23 @@
* file descriptor. */
static int activate_console(int consfd, int vtno)
{
- int c = ioctl(consfd, VT_ACTIVATE, vtno);
+ int c;
- return c < 0 ? c : ioctl(consfd, VT_WAITACTIVE, vtno);
+ c = ioctl(consfd, VT_ACTIVATE, vtno);
+ if (c < 0)
+ goto error;
+
+ do {
+ /* this ioctl has select behavior */
+ c = ioctl(consfd, VT_WAITACTIVE, vtno);
+ } while (c < 0 && errno == EINTR);
+
+ if (c < 0)
+ goto error;
+
+ return c;
+ error:
+ return c;
}
struct new_console_context {