Alan Cox wrote:
On Tue, Sep 26, 2006 at 03:37:20PM -0400, Adam Jackson wrote:Alan Cox wrote:The X server is stuck in vt_waitactive(), in TASK_INTERRUPTIBLE. Somehow it's getting onto the wait queue and then never coming off it.Amusingly, if I try to attach with gdb or strace, I get -EPERM, the syscall interrupts, we don't retry the VT_WAITACTIVE ioctl (which is a bug I suppose) and X carries on loading just fine. So it feels like there's some path where we've switched VT without updating fg_console.
This is actually a lie. If i interrupt the waitactive, I get no keyboard. Which sort of makes sense, since I don't really have the VT, I'm not going to get any input from it. But if I don't really have the VT then I shouldn't be able to do any of the subsequent ioctls on the VT fd either. Creepy.
Can't help on the gdb stuff, if it happens as root and selinux is on then beat up James Morris and co, if it happens with selinux off too beat up DaveJ Does the waitactive sleep happen only rarely when switching or regularly /
VT_WAITACTIVE only ever gets called from xf86OpenConsole, which is in the server generation path (and _not_ in normal EnterVT, which is sort of disturbing). This appears to only be possible to trigger during server init, and specifically in the handoff from rhgb's X server to gdm's.
- ajax