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 781991 - Crash after entering location
Crash after entering location
Status: RESOLVED OBSOLETE
Product: nautilus
Classification: Core
Component: Crashers
3.26.x
Other Linux
: Normal critical
: ---
Assigned To: Nautilus Maintainers
Nautilus Maintainers
Depends on:
Blocks:
 
 
Reported: 2017-04-30 18:03 UTC by Hussam Al-Tayeb
Modified: 2017-11-25 13:27 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Hussam Al-Tayeb 2017-04-30 18:03:20 UTC
I was typing ~/.config/evolution/ and I may have clicked the "Enter key" and nautilus crashed.
I can't seem to reproduce this again because I'm not entirely sure of the exact steps but:

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Core was generated by `/usr/bin/nautilus --gapplication-service'.
Program terminated with signal SIGSEGV, Segmentation fault.

Thread 1 (Thread 0x7fdfe661f9c0 (LWP 23997))

  • #0 gtk_widget_set_visible
    at gtkwidget.c line 8991
  • #1 ffi_call_unix64
    at ../src/x86/unix64.S line 76
  • #2 ffi_call
    at ../src/x86/ffi64.c line 525
  • #7 <emit signal action-enabled-changed:stop on instance 0x1b56530 [NautilusWindow]>
    at gsignal.c line 3447
  • #8 ffi_call_unix64
    at ../src/x86/unix64.S line 76
  • #9 ffi_call
    at ../src/x86/ffi64.c line 525
  • #14 <emit signal action-enabled-changed:stop on instance 0x1ae55d0 [GtkApplicationWindowActions]>
    at gsignal.c line 3447
  • #18 <emit signal notify:enabled on instance 0x7fdfcc005140 [GSimpleAction]>
    at gsignal.c line 3447
  • #19 g_object_dispatch_properties_changed
    at gobject.c line 1064
  • #20 g_object_notify_by_spec_internal
    at gobject.c line 1157
  • #21 g_object_notify
    at gobject.c line 1205
  • #22 g_simple_action_set_enabled
    at gsimpleaction.c line 559
  • #23 nautilus_window_sync_allow_stop
    at ../nautilus/src/nautilus-window.c line 851
  • #24 begin_location_change
    at ../nautilus/src/nautilus-window-slot.c line 1099
  • #25 nautilus_window_slot_open_location_full
    at ../nautilus/src/nautilus-window-slot.c line 960
  • #26 nautilus_window_open_location_full
  • #27 ffi_call_unix64
    at ../src/x86/unix64.S line 76
  • #28 ffi_call
    at ../src/x86/ffi64.c line 525
  • #33 <emit signal ??? on instance 0x198a3d0 [NautilusLocationEntry]>
    at gsignal.c line 3447
  • #34 emit_location_changed
    at ../nautilus/src/nautilus-location-entry.c line 114

        location = 0x1a9d240
Python Exception <class 'gdb.error'> There is no member named v_pointer.:
Comment 1 António Fernandes 2017-10-29 11:26:32 UTC
I accidentaly found the steps to reproduce this crash:

1) Launch nautilus
2) Open new tab.
3) Drag that tab to the headerbar to detach it into a new window.
4) Close the new window.
5) At this point any action that triggers a location change will crash nautilus.

The cause are the signal handlers to swap "Reload" and "Stop" in the popover menu of new tab's view, which the original window keeps around even after detaching the tab. When the new window is closed, it tries to remove the signal handler but it's the wrong window so the handler is not found, which is reported in the command line. Later, when the signal is emitted, it will try to update the menu of a view which doesn't exist anymore, crashing nautilus.

I don't know how to properly fix this. I managed to avoid the crash using:
> g_signal_handlers_disconnect_matched (window,
>                                       G_SIGNAL_MATCH_DATA,
>                                       0, 0, NULL, NULL,
>                                       view);
on notebook_page_removed_cb, but I don't know if this is too hacky.
Comment 2 António Fernandes 2017-11-25 13:27:01 UTC
There is a merge request with a fix for this bug on GitLab. Closing here in favor of the GitLab issue.