Comment 0 for bug 194214

Revision history for this message
In , Bernhard R. Link (brlink) wrote :

When some window is opened by some grabbed key, grabbing all keys and they destroyed (like the window ratpoison opened uppon C-t :, or the window icewm shows when doing Alt-Tab), the xserver is caught in an endless loop within PlayReleasedEvents in dix/events.c.
(For every even in the queue, qe->device->public.processInputProc is called,
which is EnqueueEvent, which just puts it at the end of the same queue, where
the loop continues).

A sample backtrace in this case is:
 0x080996bb in ComputeFreezes () at ../../dix/events.c:1161
 1161 ../../dix/events.c: No such file or directory.
         in ../../dix/events.c
 (gdb) bt
 #0 0x080996bb in ComputeFreezes () at ../../dix/events.c:1161
 #1 0x08099d62 in DeactivateKeyboardGrab (keybd=0x8233930) at ../../dix/events.c:1431
 #2 0x0809456c in ProcUngrabKeyboard (client=0x83a4750) at ../../dix/events.c:4296
 #3 0x0814d60e in XaceCatchDispatchProc (client=0x83a4750) at ../../Xext/xace.c:281
 #4 0x0808d1ff in Dispatch () at ../../dix/dispatch.c:502
 #5 0x0807474b in main (argc=4, argv=0xbfcf0c64, envp=Cannot access memory at address 0x9
 ) at ../../dix/main.c:452

(Note that PlayReleaseEvents is inlined within ComputeFreeze).
Debian bugs reports: http://bugs.debian.org/452981 http://bugs.debian.org/454205 http://bugs.debian.org/454215