This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: The timerfd functions slow down emacs
- From: Ken Brown <kbrown at cornell dot edu>
- To: "cygwin at cygwin dot com" <cygwin at cygwin dot com>
- Date: Sat, 23 Feb 2019 16:05:03 +0000
- Subject: Re: The timerfd functions slow down emacs
- References: <04048cc3-091a-b55c-372b-bde29273d952@cornell.edu>
On 2/21/2019 6:52 PM, Ken Brown wrote:
> When emacs is built, it detects the timerfd functions and uses them if they're
> found. Now that Cygwin has these functions, the resulting build of emacs is
> very slow to respond to user input. If I press a key, there is a 1-2 second
> delay before emacs responds.
>
> I can work around this by configuring emacs with emacs_cv_have_timerfd=no, but
> it would be nice to find the cause. I'll try to make an STC, but I thought I'd
> report it here in the meantime, in case anyone has ideas or debugging suggestions.
I don't have an STC yet, but if I start emacs and then attach gdb to it at
random times, the backtrace always look like this:
#0 0x00007ffbb192b4f4 in ntdll!ZwWaitForMultipleObjects ()
from /c/WINDOWS/SYSTEM32/ntdll.dll
#1 0x00007ffbadf56099 in WaitForMultipleObjectsEx ()
from /c/WINDOWS/System32/KERNELBASE.dll''
#2 0x00007ffbadf55f8e in WaitForMultipleObjects ()
from /c/WINDOWS/System32/KERNELBASE.dll
#3 0x0000000180159f9d in timerfd_tracker::wait (this=this@entry=0x1803a22c0,
nonblocking=false)
at /usr/src/debug/cygwin-3.0.1-1/winsup/cygwin/timerfd.cc:448
#4 0x00000001800a7b0e in fhandler_timerfd::read (this=<optimized out>,
ptr=0xffffba30, len=@0xffffb9b0: 8)
at /usr/src/debug/cygwin-3.0.1-1/winsup/cygwin/fhandler_timerfd.cc:134
[...]
This suggests to me that the slowdown comes from timerfd_tracker::wait.
The context is that emacs creates a timerfd timer that expires every 2 seconds,
'select' waits for the timer's file descriptor to be ready for reading, and then
emacs calls 'read'.
Ken
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple