Subject: Re: bug#76805: 31.0.50; [PATH] Fix Emacs uses 100% CPU after switching graphic frame to inactive

From: Po Lu <[email-masked]>
Date: Thu, 13 Mar 2025 20:03:09 +0800

Eli Zaretskii <[email-masked]> writes:

>> From: Po Lu <[email-masked]>
>> Cc: Lin Sun <[email-masked]>,  [email-masked]
>> Date: Sun, 09 Mar 2025 21:58:38 +0800
>> 
>> Eli Zaretskii <[email-masked]> writes:
>> 
>> >> From: Lin Sun <[email-masked]>
>> >> Date: Fri, 7 Mar 2025 08:17:31 +0000
>> >> 
>> >> Emacs sometimes takes 100% CPU after I switch emacs graphic frame to inactive.
>> >> This patch will fix the issue.
>> >> 
>> >> Reproduce steps:
>> >> 1. Build Emacs with gtk3 and xinput2 on Ubuntu 22.04.
>> >> 2. (setq x-use-fast-mouse-position 'really-fast) in early-init.el.
>> >> 3. On a windows-host start a X11 server, and ssh -XY
>> >> ubuntu-host:emacs to Start emacs with X11 forwared-frame, and open
>> >> emacs "src/eval.c", enable the show-paren-mode in emacs.
>> >> 4. On the windows host, move the mouse out of emacs-graphic frame
>> >> first, the move the mouse in emacs-graphic frame and click.
>> >> 5. On the windows host, switch the emacs-graphic frame to inactive (switch a native windows app to active).
>> >> Repeat steps 4,5 sometimes the emacs will takes 100% CPU.
>> >> 
>> >> The issue won't happen if set the x-use-fast-mouse-position to `t` or `nil` instead of the 'really-fast.
>> >> 
>> >> According to my debugging and tracking the variables, I found that
>> >> 1. the xterm.c:21710 will let "dpyinfo->last_mouse_motion_frame = NULL;", then 
>> >> 2. later calls `x_fast_mouse_position` will no chance to let "XX->mouse_moved = false", then 
>> >> 3. the function some_mouse_moved() in keyboard.c always return true; then
>> >> 4. the function timer_start_idle() in keyboard.c will be called again and again, which leads 100% CPU usage.
>> >> 
>> >> As contrast when setting the x-use-fast-mouse-position to `t`, the
>> >> "XX->mouse_moved = false;" always run, then the issue won't happen.
>> >> 
>> >> Please help review the patch. Thanks
>> >
>> > Thanks.
>> >
>> > Po Lu, any comments?
>> 
>> I'll investigate this issue tomorrow.  Thank you for reporting it.
>
> Did you have a chance to look into this?

I fixed it but neglected to report the fact here, my apologies.