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 358963 - gnome-screensaver dies on activation
gnome-screensaver dies on activation
Status: RESOLVED FIXED
Product: gnome-screensaver
Classification: Deprecated
Component: general
2.16.x
Other Linux
: Normal critical
: ---
Assigned To: gnome-screensaver maintainers
gnome-screensaver maintainers
Depends on:
Blocks:
 
 
Reported: 2006-10-02 11:02 UTC by Don Scorgie
Modified: 2006-10-02 17:05 UTC
See Also:
GNOME target: ---
GNOME version: 2.15/2.16


Attachments
xdpyinfo output (59.95 KB, text/plain)
2006-10-02 16:19 UTC, Don Scorgie
  Details
patch (4.42 KB, patch)
2006-10-02 16:49 UTC, William Jon McCann
committed Details | Review
Attached debug output (82.78 KB, text/plain)
2006-10-02 16:59 UTC, Don Scorgie
  Details

Description Don Scorgie 2006-10-02 11:02:21 UTC
When gnome-screensaver is activated, the screen fades out then it dies with n X error.  The screen is left black and the X server must be restarted.  The mouse cursor is drawn and all windows on the desktop are still selectable etc. (the mouse cursor changes to drag / resize style).  Don't know if this is a gnome-screensaver issue or an X server issue, but it didn't happen in gnome-screensaver < 2.14.

Ubuntu Edgy, nvidia graphics card (variety of drivers), dual head non-xinerama.

The program 'gnome-screensaver' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadMatch (invalid parameter attributes)'.
  (Details: serial 1741 error_code 8 request_code 1 minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)

Breaking on gdk_x_error (with sync) results in the stacktrace:
  • #0 gdk_x_error
    at gdkmain-x11.c line 608
  • #1 _XError
    at ../../src/XlibInt.c line 2890
  • #2 _XReply
    at ../../src/XlibInt.c line 1819
  • #3 XSync
    at ../../src/Sync.c line 48
  • #4 _XSyncFunction
    at ../../src/Synchro.c line 37
  • #5 XCreateWindow
    at ../../src/Window.c line 137
  • #6 IA__gdk_window_new
    at gdkwindow-x11.c line 868
  • #7 gtk_window_realize
    at gtkwindow.c line 4332
  • #8 gs_window_clear
  • #9 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #10 g_type_class_meta_marshal
    at gclosure.c line 567
  • #11 IA__g_closure_invoke
    at gclosure.c line 490
  • #12 signal_emit_unlocked_R
    at gsignal.c line 2368
  • #13 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #14 IA__g_signal_emit
    at gsignal.c line 2241
  • #15 IA__gtk_widget_realize
    at gtkwidget.c line 2496
  • #16 gtk_window_show
    at gtkwindow.c line 4045
  • #17 gs_window_clear
  • #18 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #19 g_type_class_meta_marshal
    at gclosure.c line 567
  • #20 IA__g_closure_invoke
    at gclosure.c line 490
  • #21 signal_emit_unlocked_R
    at gsignal.c line 2368
  • #22 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #23 IA__g_signal_emit
    at gsignal.c line 2241
  • #24 IA__gtk_widget_show
    at gtkwidget.c line 2222
  • #25 gs_listener_set_session_idle
  • #26 gs_listener_set_session_idle
  • #27 gs_grab_move_to_window
  • #28 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #29 IA__g_closure_invoke
    at gclosure.c line 490
  • #30 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #31 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #32 IA__g_signal_emit
    at gsignal.c line 2241
  • #33 gs_fade_finish
  • #34 gs_fade_async
  • #35 g_timeout_dispatch
    at gmain.c line 3422
  • #36 IA__g_main_context_dispatch
    at gmain.c line 2045
  • #37 g_main_context_iterate
    at gmain.c line 2677
  • #38 IA__g_main_context_iteration
    at gmain.c line 2736
  • #39 IA__gtk_main_iteration
    at gtkmain.c line 1107
  • #40 gs_manager_set_active
  • #41 gs_monitor_new
  • #42 gs_marshal_BOOLEAN__BOOLEAN
  • #43 IA__g_closure_invoke
    at gclosure.c line 490
  • #44 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #45 IA__g_signal_emit_valist
    at gsignal.c line 2207
  • #46 IA__g_signal_emit
    at gsignal.c line 2241
  • #47 gs_listener_set_active
  • #48 gs_monitor_new
  • #49 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #50 IA__g_closure_invoke
    at gclosure.c line 490
  • #51 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #52 IA__g_signal_emit_valist
    at gsigna l.c line 2197
  • #53 IA__g_signal_emit
    at gsignal.c line 2241
  • #54 gs_listener_set_session_idle
  • #55 gs_listener_set_session_idle
  • #56 dbus_connection_dispatch
    from /usr/lib/libdbus-1.so.3
  • #57 dbus_server_setup_with_g_main
    from /usr/lib/libdbus-glib-1.so.2
  • #58 IA__g_main_context_dispatch
    at gmain.c line 2045
  • #59 g_main_context_iterate
    at gmain.c line 2677
  • #60 IA__g_main_loop_run
    at gmain.c line 2881
  • #61 IA__gtk_main
    at gtkmain.c line 1024
  • #62 main

Comment 1 William Jon McCann 2006-10-02 14:04:31 UTC
I haven't been able to reproduce this but it was also reported here:
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=208199

And the stack traces are very similar.

Could you install the debuginfo package for gnome-screensaver and get a new backtrace?  It will have a bit more info for us.  If you could do it as soon as possible it would be great since I'd like to get this fixed today for the release.

http://live.gnome.org/GettingTraces#head-62fed2004a51381957ab279a3e38f685a11ea0a8

Thanks.
Comment 2 William Jon McCann 2006-10-02 14:27:11 UTC
I suspect that an error from the visual guessing is coming up after we remove the error handler.

I've committed the following to CVS, can you please test it:

2006-10-02  William Jon McCann  <mccann@jhu.edu>

	* src/gs-grab-x11.c: (xorg_lock_smasher_set_active),
	(gs_grab_nuke_focus):
	* src/gs-visual-gl.c: (gs_visual_gl_get_best_for_screen):
	* src/gs-watcher-x11.c: (notice_events),
	(init_mit_saver_extension):
	* src/gs-window-x11.c: (clear_all_children), (select_popup_events):
	Sync X11 display before removing error handlers.
	Hopefully fixes #358963
Comment 3 Don Scorgie 2006-10-02 14:52:41 UTC
Testing CVS from today (including the above commit).  Unfortunately, the commit doesn't seem to help.  Same behavior as before, same stacktrace.

Complete stacktrace from running 'gnome-screensaver --no-daemon --debug --sync':

Thread 1 (Thread -1222603920 (LWP 5058))

  • #0 gdk_x_error
    at gdkmain-x11.c line 608
  • #1 _XError
    at ../../src/XlibInt.c line 2890
  • #2 _XReply
    at ../../src/XlibInt.c line 1819
  • #3 XSync
    at ../../src/Sync.c line 48
  • #4 _XSyncFunction
    at ../../src/Synchro.c line 37
  • #5 XCreateWindow
    at ../../src/Window.c line 137
  • #6 IA__gdk_window_new
    at gdkwindow-x11.c line 868
  • #7 gtk_window_realize
    at gtkwindow.c line 4332
  • #8 gs_window_real_realize
    at gs-window-x11.c line 434
  • #9 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #10 g_type_class_meta_marshal
    at gclosure.c line 567
  • #11 IA__g_closure_invoke
    at gclosure.c line 490
  • #12 signal_emit_unlocked_R
    at gsignal.c line 2368
  • #13 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #14 IA__g_signal_emit
    at gsignal.c line 2241
  • #15 IA__gtk_widget_realize
    at gtkwidget.c line 2496
  • #16 gtk_window_show
    at gtkwindow.c line 4045
  • #17 gs_window_real_show
    at gs-window-x11.c line 609
  • #18 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #19 g_type_class_meta_marshal
    at gclosure.c line 567
  • #20 IA__g_closure_invoke
    at gclosure.c line 490
  • #21 signal_emit_unlocked_R
    at gsignal.c line 2368
  • #22 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #23 IA__g_signal_emit
    at gsignal.c line 2241
  • #24 IA__gtk_widget_show
    at gtkwidget.c line 2222
  • #25 show_windows
    at gs-manager.c line 1399
  • #26 fade_done_cb
    at gs-manager.c line 1419
  • #27 gs_fade_async_callback
    at gs-fade.c line 559
  • #28 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #29 IA__g_closure_invoke
    at gclosure.c line 490
  • #30 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #31 IA__g_signal_emit_valist
    at gsignal.c line 2197
  • #32 IA__g_signal_emit
    at gsignal.c line 2241
  • #33 gs_fade_finish
    at gs-fade.c line 476
  • #34 fade_out_timer
    at gs-fade.c line 490
  • #35 g_timeout_dispatch
    at gmain.c line 3422
  • #36 IA__g_main_context_dispatch
    at gmain.c line 2045
  • #37 g_main_context_iterate
    at gmain.c line 2677
  • #38 IA__g_main_context_iteration
    at gmain.c line 2736
  • #39 IA__gtk_main_iteration
    at gtkmain.c line 1107
  • #40 gs_manager_activate
    at gs-manager.c line 1464
  • #41 gs_manager_set_active
    at gs-manager.c line 1516
  • #42 listener_active_changed_cb
    at gs-monitor.c line 245
  • #43 gs_marshal_BOOLEAN__BOOLEAN
    at gs-marshal.c line 159
  • #44 IA__g_closure_invoke
    at gclosure.c line 490
  • #45 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #46 IA__g_signal_emit_valist
    at gsignal.c line 2207
  • #47 IA__g_signal_emit
    at gsignal.c line 2241
  • #50 listener_lock_cb
    at gs-monitor.c line 217
  • #51 IA__g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 77
  • #52 IA__g_closure_invoke
    at gclosure.c line 490
  • #53 signal_emit_unlocked_R
    at gsignal.c line 2438
  • #54 IA__g_signal_emit_valist
  • #55 IA__g_signal_emit
    at gsignal.c line 2241
  • #56 listener_dbus_handle_session_message
    at gs-listener-dbus.c line 1203
  • #57 listener_dbus_filter_function
    at gs-listener-dbus.c line 1423
  • #58 dbus_connection_dispatch
    from /usr/lib/libdbus-1.so.3
  • #59 dbus_server_setup_with_g_main
    from /usr/lib/libdbus-glib-1.so.2
  • #60 IA__g_main_context_dispatch
    at gmain.c line 2045
  • #61 g_main_context_iterate
    at gmain.c line 2677
  • #62 IA__g_main_loop_run
    at gmain.c line 2881
  • #63 IA__gtk_main
    at gtkmain.c line 1024
  • #64 main
    at gnome-screensaver.c line 111

The relevent part of the log: (Prior to this, its a series of "killing idle_timer.  Starting idle_timer.  Been idle for 0s" etc.)

[add_idle_timer] gs-watcher-x11.c:393 (15:39:23):        starting idle_timer (590000, 37)
[listener_service_deleted] gs-listener-dbus.c:858 (15:39:23):    DBUS service deleted: 
[gs_manager_set_lock_active] gs-manager.c:403 (15:39:23):        Setting lock active: 1
[gs_grab_grab_root] gs-grab-x11.c:481 (15:39:23):        Grabbing the root window
[gs_grab_get_keyboard] gs-grab-x11.c:165 (15:39:23):     Grabbing keyboard widget=2EA
[gs_grab_get_mouse] gs-grab-x11.c:194 (15:39:23):        Grabbing mouse widget=2EA
[gs_manager_activate] gs-manager.c:1457 (15:39:23):      fading out
[_gs_watcher_notice_activity] gs-watcher-x11.c:485 (15:39:23):   Activity detected: resetting timers
[remove_idle_timer] gs-watcher-x11.c:380 (15:39:23):     killing idle_timer  (600000, 37)
[add_idle_timer] gs-watcher-x11.c:393 (15:39:23):        starting idle_timer (590000, 39)
[_gs_watcher_check_pointer_position] gs-watcher-x11.c:1309 (15:39:23):   Idle 0 seconds
[check_for_clock_skew] gs-watcher-x11.c:1229 (15:39:23):         checking wall clock for hibernation, changed: 0:00:01
[_gs_watcher_check_pointer_position] gs-watcher-x11.c:1309 (15:39:24):   Idle 1 seconds
[check_for_clock_skew] gs-watcher-x11.c:1229 (15:39:24):         checking wall clock for hibernation, changed: 0:00:01
[fade_done_cb] gs-manager.c:1418 (15:39:24):     fade completed, showing windows
[get_best_visual] gs-window-x11.c:386 (15:39:24):        Found best visual for GL: 0x21
[window_map_cb] gs-manager.c:1179 (15:39:24):    Handling window map event
[gs_window_clear] gs-window-x11.c:267 (15:39:24):        Clearing window
[clear_all_children] gs-window-x11.c:241 (15:39:24):     Clearing all child windows
[window_show_cb] gs-manager.c:1228 (15:39:25):   Handling window show
[get_best_visual] gs-window-x11.c:386 (15:39:25):        Found best visual for GL: 0x21
The program 'gnome-screensaver' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadMatch (invalid parameter attributes)'.
  (Details: serial 1765 error_code 8 request_code 1 minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
Comment 4 William Jon McCann 2006-10-02 15:44:46 UTC
Darn.  Can you please attach the output of xdpyinfo?
Comment 5 Don Scorgie 2006-10-02 16:19:47 UTC
Created attachment 73857 [details]
xdpyinfo output

xdpyinfo attached.
Comment 6 William Jon McCann 2006-10-02 16:49:46 UTC
Created attachment 73863 [details] [review]
patch

OK, I see the problem.  Does this patch fix it for you?
Comment 7 William Jon McCann 2006-10-02 16:53:00 UTC
Oh, and please attach a debug log after restarting with that patch applied.  Thank you.
Comment 8 Don Scorgie 2006-10-02 16:59:20 UTC
Created attachment 73866 [details]
Attached debug output

Yes, with the patch applied, things work as expected.

Attached is the debug log as requested.  Thanks.
Comment 9 William Jon McCann 2006-10-02 17:05:31 UTC
Sweet.  Thanks so much for your help and quick testing!