Comment 26 for bug 754470

Revision history for this message
Emmanuel Thomé (emmanuel-thome) wrote :

There still seems to be something quite fishy going on with XRecord and async events. I don't know much of it underneath, so my understanding might be quite bad. Here are some random thoughts.

The problem is that there is an event queue which fills up and is never drained by the application. Here, the culprit event has code 34, which is X_UngrabKey. Despite the hint, this is not related to the screen saver, since ``echo mem > /sys/power/state'' reaches the same situation.

Once this event is on top of the queue, it is _never_ processed by the application. Probably because the XRecord context doesn't want it (there's an event range passed to the async context constructor).

I don't know why this event shows up here. Here's a dump of the event which reaches the end of handle_response in xcb_io.c (libX11), just before _XEnq:

0000: 22 20 0b 00 01 08 f8 00 90 94 c6 a9 ff 7f 00 00
0010: f3 00 00 00 00 00 00 00 4d 44 50 00 00 00 00 00

This is never eaten by the application.

The xcb_io.c source file is in sync with the git HEAD.