mieqProcessDeviceEvent make calls to mieqEnque with signals enabled - freezes Xorg server - multi-screen
xorg at kayser.net
Tue May 17 13:34:22 PDT 2011
I am developing a system that include's the debian/squeeze
distribution of xorg-server, version 1.7.7. I have come across a
scenario where mouse movements on one screen and a touch on another
screen will cause the Xorg process to freeze in an infinite loop in
the function mieqProcessInputEvents(). I have traced the problem down
to a small window during which a call to mieqProcessDeviceEvent can be
interrupted by a signal and mess up the miEventQueue.head and tail. It
appears that in some place in this stack a new event is being enqueued
while the screen is changing and device messages get swapped to the
wrong screen and back and forth.
I put a global variable in mieqProcessDeviceEvent to indicate to
mieqEnqueue to ignore data until finished. This has solved the problem
as a test. I am now writing the code to ignore the SIGIO signal during
mieqProcessDeviceEvent and test this approach also.
Does anyone have a similar problem or advice?
xorg at kayser dot net
More information about the xorg