GNOME Bugzilla – Bug 169917
Cancelling password authentication during ftp:// connection results in nautilus crash
Last modified: 2005-05-11 01:52:40 UTC
In JDS 3 (libgnomeui - 2.6.2, nautilus - 2.6.1) Steps to reproduce 1. Open a nautilus window 2. Type ftp://ff:ff:ff:ff (a valid ip address) and click enter 3. An authentication dialog comes up. Click on Esc 4. An error dialog comes up, click on the ok button 5. repeat steps 2,3,4 for 3 to 5 times nautilus crashes after step 3. (In the current head sources, clicking on Esc when the authentication dialog comes up, the authentication dialog is presented again, clicking on Esc for around 10 to 15 times makes nautilus crash). This crash does not happen if the authentication dialog is cancelled by clicking on the cancel button. Below is the stack trace
+ Trace 56692
Created attachment 38542 [details] [review] patch for this problem Since clicking on Esc button will close(destroy) the dialog, if it has a cancel button. I guess there is no need to add a user level call back to just destroy the dialog. The patch just removes the gtk_wdiget_destroy () in the "close" signal callback. Thanks
Created attachment 38751 [details] [review] Patch for this problem With the above steps to reproduce the problem clicking on Esc either crashes nautilus or gives the following critical message (nautilus:30168): Gtk-CRITICAL **: file gtkcontainer.c: line 1285 (gtk_container_foreach): assertion `GTK_IS_CONTAINER (container)' failed For gtk dialogs, the "close" signal handler(gtk_dialog_canel) does a dialog_has_cancel(). This is done to simulate a delete_event in case there is a Cancel button in the dialog. In libgnomeui/gnome-authentication-manager.c, the authentication dialog is connected to the close signal and in the handler of the close signal gtk_widget_destroy () is done. Since the widget is destroyed before the dialog_has_cancel () function is called, the crash happens. Removing the g_signal_connect of the close signal fixes the issue. Attaching a new patch.
In Head dialog_has_cancel() is replaced by dialog_find_button (). Attaching the stack trace got with the recent sources from HEAD.
+ Trace 56902
Please review the patch and give your comments. Thanks
*** Bug 171799 has been marked as a duplicate of this bug. ***
*** Bug 302375 has been marked as a duplicate of this bug. ***
This is a dup of bug 134985 (or vice versa). We even came up with the same patch :)
Thanks for the patch. Marking this as the dupe since the other one is older and has more dupes already. *** This bug has been marked as a duplicate of 134985 ***
*** Bug 303740 has been marked as a duplicate of this bug. ***