mieqProcessDeviceEvent make calls to mieqEnque with signals enabled - freezes Xorg server - multi-screen
jeremyhu at freedesktop.org
Tue May 17 14:49:38 PDT 2011
Ignoring SIGIO will just result in dropped events. I seem to vaguely recall that this issue was addressed at some point in the past year or two since 1.7.x was active. Have you tried 1.10.x or master?
On May 17, 2011, at 13:34, Donald Kayser wrote:
> 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?
> Donald Kayser
> xorg at kayser dot net
> xorg at lists.freedesktop.org: X.Org support
> Archives: http://lists.freedesktop.org/archives/xorg
> Info: http://lists.freedesktop.org/mailman/listinfo/xorg
> Your subscription address: jeremyhu at freedesktop.org
More information about the xorg