Slow response to keypresses in xorg-server-1.8.0-1

Jon TURNEY jon.turney@dronecode.org.uk
Wed Jun 30 17:40:00 GMT 2010


On 02/05/2010 21:52, Ken Brown wrote:
> On 5/1/2010 9:49 AM, Ken Brown wrote:
>> I'm often seeing a very slow response to keypresses under
>> xorg-server-1.8.0-1. The problem is intermittent, but it always happens
>> within a few minutes after starting the server (via the start menu
>> shortcut or a slight variant). Here are some examples:
>>
>> 1. Switching windows with Alt-Tab sometimes takes up to 15 seconds or
>> doesn't work at all (i.e., I get tired of waiting to see if the focus is
>> ever going to switch).
>>
>> 2. When using 'less' to view a file in an xterm window, there is
>> sometimes a delayed response to 'space' or 'q'.
>>
>> 3. When viewing a directory in emacs-X11, pressing 'v' to start viewing
>> a file can sometimes result in a long delay, pressing 'space' to scroll
>> in view mode can be slow, and pressing 'q' to exit view mode can be slow.
>>
>> In some of these cases, I sometimes don't get a response to the first
>> keypress until I press a second key. For example, if I'm viewing a file
>> with 'less', I may press 'q' and get no response. Then pressing 'q' a
>> second time exits 'less' and also produces an echoed 'q' in xterm.
>> Similarly, I'll sometimes press a key, see no echo, and then get two
>> characters echoed at once after pressing a second key.
>>
>> Reverting to xorg-server-1.7.6-2 solves the problem.
>>
>> I'm attaching cygcheck output and an XWin log.
>
> I found a test case that I can reproduce reliably on my system.
>
> 1. With no .Xdefaults or .startxwinrc, start the X server via the start
> menu shortcut.
>
> 2. Start xfig (with 'xfig &' in the xterm window).
>
> 3. Repeatedly press Alt-Tab to switch between the xterm and xfig
> windows. At some point the focus fails to switch. When this happens,
> press Alt and the focus switches.

Thanks for the clear reproduction steps.  And thanks to the other reporters of 
this problem :-)

This is fallout from a change [1] to the way we process Windows messages to 
handle large bursts of them overflowing the Xserver's internal event queue.

It seems that sometimes /dev/windows doesn't seem ready to select() even when 
there is still Windows messages to process.  I can't quite understand how this 
happens.  I don't think this is a bug in cygwin, but probably something subtle 
to do with message ordering and nonqueued messages (like WM_ACTIVATE).

Anyhow, I've cooked up a small additional change which should prevent this 
blocking behaviour and uploaded a build [2]. It seems to resolve the problem 
in this specific case. Perhaps you could try it out and see if it helps?

[1] http://cygwin.com/ml/cygwin-xfree/2010-02/msg00124.html
[2] ftp://cygwin.com/pub/cygwinx/XWin.20100630-git-bc2f74e105146c36.exe.bz2

-- 
Jon TURNEY
Volunteer Cygwin/X X Server maintainer

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://x.cygwin.com/docs/
FAQ:                   http://x.cygwin.com/docs/faq/



More information about the Cygwin-xfree mailing list