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?

Thanks
Donald Kayser
xorg at kayser dot net


_______________________________________________
[email protected]: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: http://lists.freedesktop.org/mailman/listinfo/xorg
Your subscription address: [email protected]

Reply via email to