GNOME Bugzilla – Bug 348803
gnome-panel doesn't exit if X connection is killed.
Last modified: 2006-07-28 17:15:49 UTC
Recently, if a user presses ctrl-alt-backspace the panel doesn't die. This is because ORBit sets up an atexit handler to flush its buffers. This results in panel-applet-frame's connection broken handler getting called. The handler tries to pop up a dialog (asking if the user wants to reload the applet) and in the process gtk now asks for the server time, which results in a round trip. It just spins at this point because the fd is closed. The downstream report is here: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=200149
Created attachment 69674 [details] [review] Don't try to pop up the dialog if the connection is dead.
confirming, I'm seeing this on Mandriva cooker. but patch doesn't seem to fix it here, it is looping in frame_applet_frame_xio_error_handler
I forgot to specify I've tested the patch on 2.15.90.
do you have a backtrace? of when it's looping? (or is it recursing?)
Created attachment 69833 [details] [review] better patch, doesn't recurse the issue with the initial patch was when panel was running several applets : each applet would call panel_applet_frame_activated, causing panel_applet_frame_old_xio_error_handler to be panel_applet_frame_xio_error_handler instead of the original X io error handler. the attached patch fixes this issue.
Good catch! I wonder why I don't hit the problem on my setup...
Thanks. I committed a modified version. 2006-07-28 Vincent Untz <vuntz@gnome.org> * panel-applet-frame.c: (panel_applet_frame_cnx_broken): check whether our X connection is still alive before displaying the dialog. (See bug #34803 for rationale) * xstuff.[ch]: (xstuff_xio_error_handler): new (xstuff_is_display_dead): new (xstuff_init): new, installs the xio error handler * main.c: (main): call xstuff_init() Based on patch by Ray Strode <rstrode@redhat.com> and Frédéric Crozat <fcrozat@mandriva.com> Fix bug #348803