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
then beat up James Morris and co, if it happens with selinux off too beat
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.