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 754677 - crash when checking properties of an item in left sidebar
crash when checking properties of an item in left sidebar
Status: RESOLVED FIXED
Product: nautilus
Classification: Core
Component: Sidebar
3.17.x
Other Linux
: Normal major
: 3.18
Assigned To: Nautilus Maintainers
Nautilus Maintainers
Depends on:
Blocks:
 
 
Reported: 2015-09-07 13:34 UTC by Hussam Al-Tayeb
Modified: 2015-09-09 12:30 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
window: avoid crash for null sidebar location (1.37 KB, patch)
2015-09-08 14:57 UTC, Carlos Soriano
committed Details | Review
window: save selected item for sidebar properties action (3.27 KB, patch)
2015-09-09 12:28 UTC, Carlos Soriano
committed Details | Review

Description Hussam Al-Tayeb 2015-09-07 13:34:36 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)
Comment 1 Hussam Al-Tayeb 2015-09-07 21:19:08 UTC
It only crashes if I am not currently inside the folder whose properties I am opening.
Comment 2 Hussam Al-Tayeb 2015-09-08 08:56:51 UTC
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
  • #0 raise
    from /usr/lib/libc.so.6
  • #1 abort
    from /usr/lib/libc.so.6
  • #2 g_assertion_message
    from /usr/lib/libglib-2.0.so.0
  • #3 g_assertion_message_expr
    from /usr/lib/libglib-2.0.so.0
  • #4 nautilus_file_get_internal
    at nautilus-file.c line 679
  • #5 nautilus_file_get
    at nautilus-file.c line 731
  • #6 action_properties
    at nautilus-window.c line 1074
  • #7 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #8 ??
    from /usr/lib/libgobject-2.0.so.0
  • #9 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #10 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #11 ??
    from /usr/lib/libgio-2.0.so.0
  • #12 gtk_action_muxer_activate_action
    at gtkactionmuxer.c line 411
  • #13 gtk_action_muxer_activate_action
  • #14 gtk_action_muxer_activate_action
    at gtkactionmuxer.c line 413
  • #15 gtk_action_muxer_activate_action
    at gtkactionmuxer.c line 413
  • #16 gtk_action_muxer_activate_action
    at gtkactionmuxer.c line 413
  • #17 gtk_action_muxer_activate_action
    at gtkactionmuxer.c line 413
  • #18 gtk_action_muxer_activate_action
    at gtkactionmuxer.c line 413
  • #19 gtk_action_muxer_activate_action
    at gtkactionmuxer.c line 413
  • #20 gtk_action_muxer_activate_action
    at gtkactionmuxer.c line 413
  • #21 gtk_action_muxer_activate_action
    at gtkactionmuxer.c line 413
  • #22 gtk_action_muxer_activate_action
    at gtkactionmuxer.c line 413
  • #23 gtk_real_button_clicked
    at gtkbutton.c line 2029
  • #24 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #25 ??
    from /usr/lib/libgobject-2.0.so.0
  • #26 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #27 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #28 gtk_button_do_release
    at gtkbutton.c line 1899
  • #29 gtk_real_button_released
    at gtkbutton.c line 2017
  • #30 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #31 ??
    from /usr/lib/libgobject-2.0.so.0
  • #32 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #33 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #34 multipress_released_cb
    at gtkbutton.c line 613
  • #35 ffi_call_unix64
    from /usr/lib/libffi.so.6
  • #36 ffi_call
    from /usr/lib/libffi.so.6
  • #37 g_cclosure_marshal_generic_va
    from /usr/lib/libgobject-2.0.so.0
  • #38 ??
    from /usr/lib/libgobject-2.0.so.0
  • #39 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #40 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #41 gtk_gesture_multi_press_end
    at gtkgesturemultipress.c line 273
  • #42 g_cclosure_marshal_VOID__BOXEDv
    from /usr/lib/libgobject-2.0.so.0
  • #43 ??
    from /usr/lib/libgobject-2.0.so.0
  • #44 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #45 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #46 _gtk_gesture_set_recognized
    at gtkgesture.c line 345
  • #47 _gtk_gesture_check_recognized
    at gtkgesture.c line 386
  • #48 gtk_gesture_handle_event
    at gtkgesture.c line 773
  • #49 gtk_gesture_single_handle_event
    at gtkgesturesingle.c line 221
  • #50 gtk_event_controller_handle_event
    at gtkeventcontroller.c line 230
  • #51 _gtk_widget_run_controllers
    at gtkwidget.c line 7321
  • #52 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #53 ??
    from /usr/lib/libgobject-2.0.so.0
  • #54 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #55 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #56 gtk_widget_event_internal
    at gtkwidget.c line 7670
  • #57 propagate_event_up
    at gtkmain.c line 2511
  • #58 propagate_event
    at gtkmain.c line 2613
  • #59 gtk_main_do_event
    at gtkmain.c line 1844
  • #60 gdk_event_source_dispatch
    at gdkeventsource.c line 364
  • #61 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #62 ??
    from /usr/lib/libglib-2.0.so.0
  • #63 g_main_context_iteration
    from /usr/lib/libglib-2.0.so.0
  • #64 g_application_run
    from /usr/lib/libgio-2.0.so.0
  • #65 main
    at nautilus-main.c line 103

Comment 3 Carlos Soriano 2015-09-08 14:57:58 UTC
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.
Comment 4 Carlos Soriano 2015-09-08 14:58:21 UTC
Attachment 310909 [details] pushed as 72e8c48 - window: avoid crash for null sidebar location
Comment 5 Hussam Al-Tayeb 2015-09-08 18:05:08 UTC
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).
Comment 6 Hussam Al-Tayeb 2015-09-08 18:13:36 UTC
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
Comment 7 Carlos Soriano 2015-09-09 11:44:59 UTC
(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.
Comment 8 Carlos Soriano 2015-09-09 11:45:32 UTC
(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.
Comment 9 Hussam Al-Tayeb 2015-09-09 11:55:29 UTC
(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.
Comment 10 Carlos Soriano 2015-09-09 12:28:32 UTC
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 11 Carlos Soriano 2015-09-09 12:30:39 UTC
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