Same problem here:
[ 58.504] Fatal server error: [ 58.504] xf86OpenConsole: VT_WAITACTIVE failed: Interrupted system call
hw/xfree86/os-support/linux/lnx_init.c:
62 static void 63 switch_to(int vt, const char *from) 64 { 65 if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, vt) < 0) 66 FatalError("%s: VT_ACTIVATE failed: %s\n", from, strerror(errno)); 67 68 if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, vt) < 0) 69 FatalError("%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno)); 70 }
lines 68 is interrupt by signal ... and ioctl(VT_WAITACTIVE) return -1, errno == EINTR. Xserver must retry operation again! See kernel sources, VT_WAITACTIVE ioctl() handler does wait interruptable() and can return EINTR.
Patch like this might help:
diff --git a/hw/xfree86/os-support/linux/lnx_init.c b/hw/xfree86/os-support/linux/lnx_init.c index 9c71a42..d17e039 100644 --- a/hw/xfree86/os-support/linux/lnx_init.c +++ b/hw/xfree86/os-support/linux/lnx_init.c @@ -62,10 +62,13 @@ drain_console(int fd, void *closure) static void switch_to(int vt, const char *from) { + int result; + if (ioctl(xf86Info.consoleFd, VT_ACTIVATE, vt) < 0) FatalError("%s: VT_ACTIVATE failed: %s\n", from, strerror(errno));
- if (ioctl(xf86Info.consoleFd, VT_WAITACTIVE, vt) < 0) + SYSCALL(result = ioctl(xf86Info.consoleFd, VT_WAITACTIVE, vt)); + if (result < 0) FatalError("%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno)); }
Same problem here:
[ 58.504] Fatal server error:
[ 58.504] xf86OpenConsole: VT_WAITACTIVE failed: Interrupted system call
hw/xfree86/ os-support/ linux/lnx_ init.c:
62 static void xf86Info. consoleFd, VT_ACTIVATE, vt) < 0) xf86Info. consoleFd, VT_WAITACTIVE, vt) < 0)
63 switch_to(int vt, const char *from)
64 {
65 if (ioctl(
66 FatalError("%s: VT_ACTIVATE failed: %s\n", from, strerror(errno));
67
68 if (ioctl(
69 FatalError("%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno));
70 }
lines 68 is interrupt by signal ... and ioctl(VT_ WAITACTIVE) return -1, errno == EINTR.
Xserver must retry operation again! See kernel sources, VT_WAITACTIVE ioctl() handler
does wait interruptable() and can return EINTR.
Patch like this might help:
diff --git a/hw/xfree86/ os-support/ linux/lnx_ init.c b/hw/xfree86/ os-support/ linux/lnx_ init.c os-support/ linux/lnx_ init.c os-support/ linux/lnx_ init.c xf86Info. consoleFd, VT_ACTIVATE, vt) < 0)
FatalError( "%s: VT_ACTIVATE failed: %s\n", from, strerror(errno));
index 9c71a42..d17e039 100644
--- a/hw/xfree86/
+++ b/hw/xfree86/
@@ -62,10 +62,13 @@ drain_console(int fd, void *closure)
static void
switch_to(int vt, const char *from)
{
+ int result;
+
if (ioctl(
- if (ioctl( xf86Info. consoleFd, VT_WAITACTIVE, vt) < 0) consoleFd, VT_WAITACTIVE, vt));
FatalError( "%s: VT_WAITACTIVE failed: %s\n", from, strerror(errno));
+ SYSCALL(result = ioctl(xf86Info.
+ if (result < 0)
}