GNU bug report logs -
#76805
31.0.50; [PATH] Fix Emacs uses 100% CPU after switching graphic frame to inactive
Previous Next
Reported by: Lin Sun <sunlin7 <at> hotmail.com>
Date: Fri, 7 Mar 2025 08:23:01 UTC
Severity: normal
Found in version 31.0.50
Done: Stefan Kangas <stefankangas <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your message dated Fri, 14 Mar 2025 12:31:12 -0700
with message-id <CADwFkmkvZq1r8Mwd2nF6BVD-hwdeD4T5WV+rYBfd2WjZHkvnaw <at> mail.gmail.com>
and subject line Re: bug#76805: 31.0.50; [PATH] Fix Emacs uses 100% CPU after switching graphic frame to inactive
has caused the debbugs.gnu.org bug report #76805,
regarding 31.0.50; [PATH] Fix Emacs uses 100% CPU after switching graphic frame to inactive
to be marked as done.
(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)
--
76805: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=76805
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
[Message part 3 (text/plain, inline)]
Hi,
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
Best Regards, Lin
[0001-src-xterm.c-Mark-mouse_moved-to-false-in-x_fast_mous.patch (text/x-patch, attachment)]
[Message part 5 (message/rfc822, inline)]
Lin Sun <sunlin7 <at> hotmail.com> writes:
> Thank you all of you. Please feel free to close the ticket.
Done.
This bug report was last modified 67 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.