After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 314530 - CPU-sucking X-server-hosing infinite loop
CPU-sucking X-server-hosing infinite loop
Status: RESOLVED FIXED
Product: gnome-screensaver
Classification: Deprecated
Component: daemon
CVS HEAD
Other Linux
: Urgent critical
: ---
Assigned To: gnome-screensaver maintainers
gnome-screensaver maintainers
Depends on:
Blocks:
 
 
Reported: 2005-08-26 02:32 UTC by Dan Winship
Modified: 2005-08-26 23:33 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Dan Winship 2005-08-26 02:32:07 UTC
Distribution/Version: SUSE 10.0 beta 2

Several times now when I've resumed my laptop from sleep, gnome-screensaver
has started sucking up all available CPU, in tandem with the X server. (The
first time it happened I ended up having to powercycle my machine. The
second time I realized it was the same bug happening again and managed to
do a "top" and kill it before it got too far out of control.) After
rebuilding gnome-screensaver with symbols, I found this:

  • #13 check_for_clock_skew
    at gs-watcher-x11.c line 923
  • #14 check_pointer_timer
    at gs-watcher-x11.c line 981
  • #15 idle_timer
    at gs-watcher-x11.c line 816
  • #16 check_for_clock_skew
    at gs-watcher-x11.c line 923
  • #17 check_pointer_timer
    at gs-watcher-x11.c line 981
  • #18 idle_timer
    at gs-watcher-x11.c line 816

and so on, for at least another 30000 stack frames. Looking at the code,
it's clear that there's an infinite loop there. I think the fix might be
for check_for_clock_skew() to set watcher->priv->last_wall_clock_time
*before* it calls idle_timer().
Comment 1 William Jon McCann 2005-08-26 14:26:20 UTC
Great catch.  I have committed a change that should fix this.  Can you please
confirm?  Thanks.

2005-08-26  William Jon McCann  <mccann@jhu.edu>

	* src/gs-watcher-x11.c (maybe_send_signal, idle_timer):
	Don't check the pointer position when doing an
	emergency locking.  Fixes #314530.
Comment 2 Dan Winship 2005-08-26 23:33:06 UTC
Yup, now I get a password dialog instead of an infinite loop.