GNOME Bugzilla – Bug 754677
crash when checking properties of an item in left sidebar
Last modified: 2015-09-09 12:30:39 UTC
nautilus 3.17.91 and gtk+ 3.17.8 nautilus prints this in terminal whjen it crashes: ERROR:nautilus-file.c:679:nautilus_file_get_internal: assertion failed: (location != NULL) To reproduce: 1) create a non xdg standard directory in $HOME, for example /home/hussam/mytestfiles/ 2) navigate to 'mytestfiles' folder. 3) right click on 'Pictures' in the left sidebar and then click on 'properties' in the popup menu. 4) Watch nautilus poof. systemd logged the following in journal PID: 2765 (nautilus) UID: 1000 (hussam) GID: 100 (users) Signal: 6 (ABRT) Timestamp: Mon 2015-09-07 16:31:38 EEST (56s ago) Command Line: nautilus Executable: /usr/bin/nautilus Control Group: /user.slice/user-1000.slice/session-c32.scope Unit: session-c32.scope Slice: user-1000.slice Session: c32 Owner UID: 1000 (hussam) Boot ID: 88246fb397fc4e16b61b4be043975f82 Machine ID: efb490e643e2436d9d1138df1745a008 Hostname: hades Message: Process 2765 (nautilus) of user 1000 dumped core. Stack trace of thread 2765: #0 0x00007f40ca0c291c raise (libc.so.6) #1 0x00007f40ca0c3fd1 abort (libc.so.6) #2 0x00007f40caf5b345 g_assertion_message (libglib-2.0.so.0) #3 0x00007f40caf5b3f2 g_assertion_message_expr (libglib-2.0.so.0) #4 0x00000000004afe51 nautilus_file_get_internal (nautilus) #5 0x0000000000473112 action_properties (nautilus) #6 0x00007f40cb20ad52 g_closure_invoke (libgobject-2.0.so.0) #7 0x00007f40cb21f50b n/a (libgobject-2.0.so.0) #8 0x00007f40cb2288cc g_signal_emit_valist (libgobject-2.0.so.0) #9 0x00007f40cb228c7b g_signal_emit (libgobject-2.0.so.0) #10 0x00007f40cb5196a5 n/a (libgio-2.0.so.0) #11 0x00007f40cd4423ba gtk_action_muxer_activate_action (libgtk-3.so.0) #12 0x00007f40cd4423ef gtk_action_muxer_activate_action (libgtk-3.so.0) #13 0x00007f40cd4423ef gtk_action_muxer_activate_action (libgtk-3.so.0) #14 0x00007f40cd4423ef gtk_action_muxer_activate_action (libgtk-3.so.0) #15 0x00007f40cd4423ef gtk_action_muxer_activate_action (libgtk-3.so.0) #16 0x00007f40cd4423ef gtk_action_muxer_activate_action (libgtk-3.so.0) #17 0x00007f40cd4423ef gtk_action_muxer_activate_action (libgtk-3.so.0) #18 0x00007f40cd4423ef gtk_action_muxer_activate_action (libgtk-3.so.0) #19 0x00007f40cd4423ef gtk_action_muxer_activate_action (libgtk-3.so.0) #20 0x00007f40cd4423ef gtk_action_muxer_activate_action (libgtk-3.so.0) #21 0x00007f40cd4423ef gtk_action_muxer_activate_action (libgtk-3.so.0) #22 0x00007f40cd4749d3 gtk_real_button_clicked (libgtk-3.so.0) #23 0x00007f40cb20ad52 g_closure_invoke (libgobject-2.0.so.0) #24 0x00007f40cb21f7b8 n/a (libgobject-2.0.so.0) #25 0x00007f40cb2288cc g_signal_emit_valist (libgobject-2.0.so.0) #26 0x00007f40cb228c7b g_signal_emit (libgobject-2.0.so.0) #27 0x00007f40cd47706d gtk_button_do_release (libgtk-3.so.0) #28 0x00007f40cd4770d8 gtk_real_button_released (libgtk-3.so.0) #29 0x00007f40cb20ad52 g_closure_invoke (libgobject-2.0.so.0) #30 0x00007f40cb21f036 n/a (libgobject-2.0.so.0) #31 0x00007f40cb2288cc g_signal_emit_valist (libgobject-2.0.so.0) #32 0x00007f40cb228c7b g_signal_emit (libgobject-2.0.so.0) #33 0x00007f40cd4763a3 multipress_released_cb (libgtk-3.so.0) #34 0x00007f40c519d150 ffi_call_unix64 (libffi.so.6) #35 0x00007f40c519cbbb ffi_call (libffi.so.6) #36 0x00007f40cb20bdb5 g_cclosure_marshal_generic_va (libgobject-2.0.so.0) #37 0x00007f40cb20af95 n/a (libgobject-2.0.so.0) #38 0x00007f40cb228578 g_signal_emit_valist (libgobject-2.0.so.0) #39 0x00007f40cb228c7b g_signal_emit (libgobject-2.0.so.0) #40 0x00007f40cd52de42 gtk_gesture_multi_press_end (libgtk-3.so.0) #41 0x00007f40cb20e2cc g_cclosure_marshal_VOID__BOXEDv (libgobject-2.0.so.0) #42 0x00007f40cb20af95 n/a (libgobject-2.0.so.0) #43 0x00007f40cb228578 g_signal_emit_valist (libgobject-2.0.so.0) #44 0x00007f40cb228c7b g_signal_emit (libgobject-2.0.so.0) #45 0x00007f40cd52acee _gtk_gesture_set_recognized (libgtk-3.so.0) #46 0x00007f40cd52c333 gtk_gesture_handle_event (libgtk-3.so.0) #47 0x00007f40cd52f4c2 gtk_gesture_single_handle_event (libgtk-3.so.0) #48 0x00007f40cd4faeeb gtk_event_controller_handle_event (libgtk-3.so.0) #49 0x00007f40cd6c222d _gtk_widget_run_controllers (libgtk-3.so.0) #50 0x00007f40cd577ae7 _gtk_marshal_BOOLEAN__BOXEDv (libgtk-3.so.0) #51 0x00007f40cb20af95 n/a (libgobject-2.0.so.0) #52 0x00007f40cb227fb8 g_signal_emit_valist (libgobject-2.0.so.0) #53 0x00007f40cb228c7b g_signal_emit (libgobject-2.0.so.0) #54 0x00007f40cd6c4384 gtk_widget_event_internal (libgtk-3.so.0) #55 0x00007f40cd574d0e propagate_event_up (libgtk-3.so.0) #56 0x00007f40cd576ae8 gtk_main_do_event (libgtk-3.so.0) #57 0x00007f40cd0ce0f2 gdk_event_source_dispatch (libgdk-3.so.0) #58 0x00007f40caf320ca g_main_context_dispatch (libglib-2.0.so.0) #59 0x00007f40caf32358 n/a (libglib-2.0.so.0) #60 0x00007f40caf32432 g_main_context_iteration (libglib-2.0.so.0) #61 0x00007f40cb5101e4 g_application_run (libgio-2.0.so.0) #62 0x0000000000429001 main (nautilus) #63 0x00007f40ca0ae734 __libc_start_main (libc.so.6) Stack trace of thread 2766: #0 0x00007f40ca179c3d poll (libc.so.6) #1 0x00007f40caf322f5 n/a (libglib-2.0.so.0) #2 0x00007f40caf32432 g_main_context_iteration (libglib-2.0.so.0) #3 0x00007f40caf32491 n/a (libglib-2.0.so.0) #4 0x00007f40caf5c26c n/a (libglib-2.0.so.0) #5 0x00007f40ca44766c start_thread (libpthread.so.0) #6 0x00007f40ca18394d __clone (libc.so.6) Stack trace of thread 2768: #0 0x00007f40ca17efe9 syscall (libc.so.6) #1 0x00007f40caf7cc7d g_cond_wait_until (libglib-2.0.so.0) #2 0x00007f40caf035c1 n/a (libglib-2.0.so.0) #3 0x00007f40caf03cf4 g_async_queue_timeout_pop (libglib-2.0.so.0) #4 0x00007f40caf5ce4c n/a (libglib-2.0.so.0) #5 0x00007f40caf5c26c n/a (libglib-2.0.so.0) #6 0x00007f40ca44766c start_thread (libpthread.so.0) #7 0x00007f40ca18394d __clone (libc.so.6) Stack trace of thread 2767: #0 0x00007f40ca179c3d poll (libc.so.6) #1 0x00007f40caf322f5 n/a (libglib-2.0.so.0) #2 0x00007f40caf32722 g_main_loop_run (libglib-2.0.so.0) #3 0x00007f40cb54e35d n/a (libgio-2.0.so.0) #4 0x00007f40caf5c26c n/a (libglib-2.0.so.0) #5 0x00007f40ca44766c start_thread (libpthread.so.0) #6 0x00007f40ca18394d __clone (libc.so.6) Stack trace of thread 2769: #0 0x00007f40ca179c3d poll (libc.so.6) #1 0x00007f40caf322f5 n/a (libglib-2.0.so.0) #2 0x00007f40caf32432 g_main_context_iteration (libglib-2.0.so.0) #3 0x00007f40b67872ad n/a (libdconfsettings.so) #4 0x00007f40caf5c26c n/a (libglib-2.0.so.0) #5 0x00007f40ca44766c start_thread (libpthread.so.0) #6 0x00007f40ca18394d __clone (libc.so.6)
It only crashes if I am not currently inside the folder whose properties I am opening.
gdb output. Just go to /usr, right click "Pictures" in the sidebar and choose properties and nautilus crashes. Type "apropos word" to search for commands related to "word"... Reading symbols from nautilus...done. (gdb) run Starting program: /usr/bin/nautilus [Thread debugging using libthread_db enabled] Using host libthread_db library "/usr/lib/libthread_db.so.1". [New Thread 0x7fffe72e4700 (LWP 24906)] [New Thread 0x7fffe6ae3700 (LWP 24908)] [New Thread 0x7fffe4bf5700 (LWP 24962)] [New Thread 0x7fffd7fff700 (LWP 24969)] [New Thread 0x7fffd5029700 (LWP 25124)] [New Thread 0x7fffd4828700 (LWP 25125)] [New Thread 0x7fffcffff700 (LWP 25126)] [New Thread 0x7fffcf7fe700 (LWP 25127)] [New Thread 0x7fffceffd700 (LWP 25128)] [New Thread 0x7fffce7fc700 (LWP 25129)] [Thread 0x7fffe4bf5700 (LWP 24962) exited] [Thread 0x7fffce7fc700 (LWP 25129) exited] [Thread 0x7fffceffd700 (LWP 25128) exited] [Thread 0x7fffcf7fe700 (LWP 25127) exited] [Thread 0x7fffcffff700 (LWP 25126) exited] [Thread 0x7fffd5029700 (LWP 25124) exited] [New Thread 0x7fffcf7fe700 (LWP 26308)] [Thread 0x7fffcf7fe700 (LWP 26308) exited] ** ERROR:nautilus-file.c:679:nautilus_file_get_internal: assertion failed: (location != NULL) Program received signal SIGABRT, Aborted. 0x00007ffff397791c in raise () from /usr/lib/libc.so.6 (gdb) bt
+ Trace 235428
Created attachment 310909 [details] [review] window: avoid crash for null sidebar location Currently if there is no row selected for the sidebar, its location is NULL. So when the properties actions is performed, the location is always NULL for no sidebar locations. Probably we want to fix that on the sidebar. But also protect ourselves about it.
Attachment 310909 [details] pushed as 72e8c48 - window: avoid crash for null sidebar location
Hi. It no longer crashes with this patch but if I go to /tmp/ and then right click on Pictures from the sidebar and then Properties, nothing happens. (right click on Pictures and open in a new tab works).
Should I open a new bug for that? Bu the way, it outputs this in a terminal when it fails to show properties: (nautilus:4485): GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
(In reply to Hussam Al-Tayeb from comment #5) > Hi. It no longer crashes with this patch but if I go to /tmp/ and then right > click on Pictures from the sidebar and then Properties, nothing happens. > (right click on Pictures and open in a new tab works). Yeah, it's because the sidebar doesn't have a location selected. It's a bug on the sidebar and separated.
(In reply to Hussam Al-Tayeb from comment #6) > Should I open a new bug for that? > > Bu the way, it outputs this in a terminal when it fails to show properties: > (nautilus:4485): GLib-GObject-CRITICAL **: g_object_unref: assertion > 'G_IS_OBJECT (object)' failed fixed, thanks for noticing.
(In reply to Carlos Soriano from comment #7) > (In reply to Hussam Al-Tayeb from comment #5) > > Hi. It no longer crashes with this patch but if I go to /tmp/ and then right > > click on Pictures from the sidebar and then Properties, nothing happens. > > (right click on Pictures and open in a new tab works). > > Yeah, it's because the sidebar doesn't have a location selected. It's a bug > on the sidebar and separated. Is there an open bug report or should I file one? Also nautilus or gtk+? Thank you.
Created attachment 310974 [details] [review] window: save selected item for sidebar properties action If not, we don't know the item that was selected and therefore can't show the properties window for locations different than the current one selected in the sidebar. Before was working because sidebar was using GtkTreeView and it always had an item selected when right click, therefore gtk_sidebar_get_location was actually the file of the item the user did right click.
Comment on attachment 310974 [details] [review] window: save selected item for sidebar properties action Just realized that we get the selected file on the signal from the sidebar, we were not using it before because sidebar was using GtkTreeView and it worked with the previous code, but not now. Now is more correct anyway. So everything should be fixed now. Thanks for reporting and following. Attachment 310974 [details] pushed as 52e4774 - window: save selected item for sidebar properties action