mate-desktop / caja

Caja, the file manager for the MATE desktop
https://mate-desktop.org/
Other
265 stars 143 forks source link

[Caja 1.26][Ubuntu MATE 22.04] Caja crashes WHEN clicking on "View -> Reset View to Default" HAVING default-sort-order='emblems' set #1753

Open FabioArceri opened 7 months ago

FabioArceri commented 7 months ago

Expected behaviour

Caja should just be applying the default settings and start ordering the icons by emblem.

Actual behaviour

Caja crashes after clicking.

Steps to reproduce the behaviour

1) Open "Edit -> Preferences" and set emblems in the default sort order dropdown menu. 2) Close the preferences window. 3) Go to "View -> Reset View to Default" and you will see Caja crashing after about one second.

MATE general version

1.26.0

Linux Distribution and Package version

~$ lsb_release -rd

Description:    Ubuntu 22.04 LTS
Release:    22.04

~$ apt-cache policy caja

caja:
  Installato: 1.26.0-1ubuntu1
  Candidato:  1.26.0-1ubuntu1
  Tabella versione:
 *** 1.26.0-1ubuntu1 500
        500 http://it.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
        100 /var/lib/dpkg/status

Link to bugreport of your Distribution (requirement)

raveit65 commented 6 months ago
  1. Last stable release is caja-1.26.3 , you're not using latest bugfixes and improvements.
  2. I can confirm the issue with fedora 39 and caja-1-26.3.

But not with fedora 38 and caja-1.27.2 plus latest commits from master branch. Here caja doesn't crash with your steps-to-reproduce. We need to find out what is different here.

Backtrace from fedora 39 with caja-1.26.3:

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `/usr/bin/caja'.
Program terminated with signal SIGSEGV, Segmentation fault.
warning: Section `.reg-xstate/3175' in core file too small.
#0  0x000056450162aee4 in update_layout_menus (view=0x564503aad4c0 [FMIconView]) at file-manager/fm-icon-view.c:758
758         action_name = is_auto_layout ? view->details->sort->action : FM_ACTION_MANUAL_LAYOUT;
[Current thread is 1 (Thread 0x7f5573a5ab00 (LWP 3175))]

Thread 1 (Thread 0x7f5573a5ab00 (LWP 3175)):
#0  0x000056450162aee4 in update_layout_menus (view=0x564503aad4c0 [FMIconView]) at file-manager/fm-icon-view.c:758
        action_name = <optimized out>
        is_auto_layout = 1
        action = <optimized out>
        file = 0x564503a79280 [CajaVFSFile]
#1  0x000056450162b139 in update_layout_menus (view=0x564503aad4c0 [FMIconView]) at file-manager/fm-icon-view.c:744
        file = 0x564503a79280 [CajaVFSFile]
        icon_container = 0x56450386b400 [FMIconContainer]
        icon_view = 0x564503aad4c0 [FMIconView]
#2  real_set_sort_criterion (clear=1, sort=0x0, icon_view=0x564503aad4c0 [FMIconView]) at file-manager/fm-icon-view.c:388
        file = 0x564503a79280 [CajaVFSFile]
        icon_container = 0x56450386b400 [FMIconContainer]
        icon_view = 0x564503aad4c0 [FMIconView]
#3  clear_sort_criterion (icon_view=0x564503aad4c0 [FMIconView]) at file-manager/fm-icon-view.c:408
        icon_container = 0x56450386b400 [FMIconContainer]
        icon_view = 0x564503aad4c0 [FMIconView]
#4  fm_icon_view_reset_to_defaults (view=0x564503aad4c0 [FMIconView]) at file-manager/fm-icon-view.c:2049
        icon_container = 0x56450386b400 [FMIconContainer]
        icon_view = 0x564503aad4c0 [FMIconView]
#5  0x0000564501623af7 in fm_directory_view_reset_to_defaults (view=0x564503aad4c0 [FMIconView]) at file-manager/fm-directory-view.c:9970
        mode = <optimized out>
        __func__ = "fm_directory_view_reset_to_defaults"
#6  0x00007f557543852a in g_closure_invoke (closure=0x5645037c5ba0, return_value=0x0, n_param_values=1, param_values=0x7ffd453c7680, invocation_hint=0x7ffd453c75d0) at ../gobject/gclosure.c:832
        marshal = 0x7f557543d510 <g_cclosure_marshal_VOID__VOID>
        marshal_data = 0x0
        in_marshal = 0
        real_closure = 0x5645037c5b80
        __func__ = "g_closure_invoke"
#7  0x00007f5575466fec in signal_emit_unlocked_R.isra.0 (node=node@entry=0x7ffd453c7750, detail=detail@entry=0, instance=instance@entry=0x5645037c5a60, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffd453c7680) at ../gobject/gsignal.c:3980
        tmp = <optimized out>
        handler = 0x5645037c5bf0
        accumulator = <optimized out>
        emission = {next = 0x7ffd453c7a50, instance = 0x5645037c5a60, ihint = {signal_id = 363, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x4 [void]}
        hlist = <optimized out>
        handler_list = 0x5645037c5bf0
        return_accu = <optimized out>
        accu = {g_type = 0x0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
        signal_id = <optimized out>
        max_sequential_handler_number = <optimized out>
        return_value_altered = <optimized out>
        n_params = <optimized out>
#8  0x00007f5575457d59 in signal_emit_valist_unlocked (instance=instance@entry=0x5645037c5a60, signal_id=signal_id@entry=363, detail=detail@entry=0, var_args=var_args@entry=0x7ffd453c78c0) at ../gobject/gsignal.c:3612
        instance_and_params = <optimized out>
        param_values = <optimized out>
        node = <optimized out>
        i = <optimized out>
        node_copy = {signal_id = 363, itype = 0x564502c75570 [GtkAction], name = 0x7f55755fbb5c "activate", destroyed = 0, flags = 9, n_params = 0, single_va_closure_is_valid = 1, single_va_closure_is_after = 0, param_types = 0x0, return_type = 0x4 [void], class_closure_bsa = 0x564503082ee0, accumulator = 0x0, c_marshaller = 0x7f557543d510 <g_cclosure_marshal_VOID__VOID>, va_marshaller = 0x7f5575436240 <g_cclosure_marshal_VOID__VOIDv>, emission_hooks = 0x0, single_va_closure = 0x56450307cf60}
        __func__ = "signal_emit_valist_unlocked"
#9  0x00007f5575457f91 in g_signal_emit_valist (instance=0x5645037c5a60, signal_id=363, detail=0, var_args=var_args@entry=0x7ffd453c78c0) at ../gobject/gsignal.c:3355
#10 0x00007f5575458053 in g_signal_emit (instance=instance@entry=0x5645037c5a60, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3675
        var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7ffd453c79a0, reg_save_area = 0x7ffd453c78e0}}
Python Exception <class 'gdb.error'>: value has been optimized out

Full backtrace is here: https://www.dropbox.com/scl/fi/t7322jxymmbo5q505v1iy/caja_backtrace.txt?rlkey=d603bmqynrw7xcebhzwpvno6z&dl=0

lukefromdc commented 6 months ago

I was just unable to duplicate this on 1.27.2 (plus git commits to current master), though test was on wayland because that's what I am running at the moment. I will have to retest on an x11 session to determine if this was fixed by something unique to the 1.27 series