Nautilus 46.0 Properties window indefinitely freezes/crashes for certain files

Greetings, this is my first time posting to Discourse. I wanted to ask about a possible bug, since I do not yet know how to gather useful information/output for a report, and I understand that accidentally cluttering the tracker would not be helpful on my part. Searching the Nautilus/GLib GitLab trackers and Red Hat’s Bugzilla over the past few days did not reveal anything relevant.

When I open a Properties window for any file in Nautilus 46 (46.0, 46.rc) there is a significant chance that Nautilus will become unresponsive forever, entering an inescapable loop. I must then wait for the “unresponsive application” modal from Mutter, or else end the process myself. I have tried waiting for the process extensively, even lengthening the “unresponsive” modal timeout to 5 minutes with gsettings. Some audio/video files can reliably freeze Nautilus after opening Properties only 1-2 times, never needing more than that. I am not using extensions/plugins to Nautilus nor gnome-shell itself, and have tried setting environment variables to ensure this, but observed no changes.

I first encountered the freeze on Arch Linux with Nautilus 46.0, and assumed it was specific to my use case, or something unsupported I had unknowingly done. However, when I test the official live media of Fedora 40 Workstation Beta, open Nautilus, and view properties of the same files on local storage, the same freeze quickly happens on any computer.

If anyone can replicate this or point me to relevant information about it, I would be extremely grateful. Unconditionally, thank you for your time.

Hi! This sounds like a serious bug, thanks for reporting it. You’re more than welcome to open an issue in Gitlab for it. It would be best if you can also provide a stacktrace of nautilus in a hanging state, by running it in gdb and stop the process while it’s hanging. You can check the handbook for more info on how to do that.

1 Like

I’m able to reliably reproduce it on Arch Linux with Nautilus 46.0 with any of my MP3 files. Also with the MP3 files from Sample MP3 audio files.

Opening Properties for a MP3 file once, twice sometimes three times causes Nautilus to become unresponsive and needs to be killed to get out of it.

The files are on my root filesystem which is ext4 formatted. But I copied a MP3 file to /tmp which is a tmpfs and opening Properties for the file there also cause the issue.

Thank you for the handbook link. It looks like the example uses a process that has already segfaulted and dumped core, but adapting for a hanging process like you said was straightforward. (I have used gdb before, albeit in much smaller projects.)

The bt full output is fairly long, so I hope it is okay to post it here to ensure that anything captured is actually correct/helpful. As new users cannot use attachments, I will need to use a collapsible Details block, so hopefully this is not considered spam.

Full backtrace from gdb
(gdb) bt full
#0  syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1  0x00007ffff7eef35b in g_mutex_lock_slowpath (mutex=0x55555743c038) at ../glib/glib/gthread-posix.c:1465
        saved_errno = 0
        res = <optimized out>
#2  0x00007ffff7eef397 in g_mutex_lock (mutex=<optimized out>) at ../glib/glib/gthread-posix.c:1494
#3  0x00007ffff25cc065 in uridecodebin_pad_removed_cb (uridecodebin=<optimized out>, pad=pad@entry=0x7fff240224e0 [GstGhostPad], dc=0x55555743c100 [GstDiscoverer]) at ../gstreamer/subprojects/gst-plugins-base/gst-libs/gst/pbutils/gstdiscoverer.c:793
        tmp = <optimized out>
        ps = <optimized out>
        sinkpad = <optimized out>
        __func__ = "uridecodebin_pad_removed_cb"
#8  0x00007ffff6ed1a94 in <emit signal '???' on instance 0x55555743cb40 [GstURIDecodeBin]> (instance=instance@entry=0x55555743cb40, signal_id=<optimized out>, detail=detail@entry=0) at ../glib/gobject/gsignal.c:3583
        var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffd7a0, reg_save_area = 0x7fffffffd6e0}}
    #4  0x00007ffff6eb0156 in g_cclosure_marshal_VOID__OBJECTv (closure=0x55555743d090, return_value=<optimized out>, instance=0x55555743cb40, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x5555574767b0) at ../glib/gobject/gmarshal.c:1910
                cc = <optimized out>
                data1 = <optimized out>
                data2 = <optimized out>
                callback = 0x7ffff25cbfc0 <uridecodebin_pad_removed_cb>
                arg0 = 0x7fff240224e0
                args_copy = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7fffffffd7a0, reg_save_area = 0x7fffffffd6e0}}
    #5  0x00007ffff6ed18d3 in _g_closure_invoke_va (param_types=0x5555574767b0, n_params=<optimized out>, args=0x7fffffffd6c0, instance=0x55555743cb40, return_value=0x0, closure=0x55555743d090) at ../glib/gobject/gclosure.c:897
                marshal = <optimized out>
                marshal_data = <optimized out>
                in_marshal = 0
                real_closure = 0x55555743d070
                real_closure = <optimized out>
                __func__ = {<optimized out> <repeats 21 times>}
                _g_boolean_var_67 = <optimized out>
                marshal = <optimized out>
                marshal_data = <optimized out>
                in_marshal = <optimized out>
                _g_boolean_var_68 = <optimized out>
                cunion = <optimized out>
                new_int = <optimized out>
                old_int = <optimized out>
                success = <optimized out>
                tmp = {closure = {ref_count = <optimized out>, meta_marshal_nouse = <optimized out>, n_guards = <optimized out>, n_fnotifiers = <optimized out>, n_inotifiers = <optimized out>, in_inotify = <optimized out>, floating = <optimized out>, derivative_flag = <optimized out>, in_marshal = <optimized out>, is_invalid = <optimized out>, marshal = <optimized out>, data = <optimized out>, notifiers = <optimized out>}, vint = <optimized out>}
                gaicae_oldval = <optimized out>
                cunion = <optimized out>
                new_int = <optimized out>
                old_int = <optimized out>
                success = <optimized out>
                tmp = {closure = {ref_count = <optimized out>, meta_marshal_nouse = <optimized out>, n_guards = <optimized out>, n_fnotifiers = <optimized out>, n_inotifiers = <optimized out>, in_inotify = <optimized out>, floating = <optimized out>, derivative_flag = <optimized out>, in_marshal = <optimized out>, is_invalid = <optimized out>, marshal = <optimized out>, data = <optimized out>, notifiers = <optimized out>}, vint = <optimized out>}
                gaicae_oldval = <optimized out>
    #6  signal_emit_valist_unlocked (instance=instance@entry=0x55555743cb40, signal_id=signal_id@entry=492, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffd6c0) at ../glib/gobject/gsignal.c:3424
                return_accu = 0x0
                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}}}
                emission = {next = 0x7fffffffd8b0, instance = 0x55555743cb40, ihint = {signal_id = 492, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x55555740cda0 [GstURIDecodeBin/GstBin/GstElement/GstObject/GInitiallyUnowned]}
                instance_type = <optimized out>
                emission_return = {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}}}
                rtype = 0x4
                static_scope = 0
                fastpath_handler = <optimized out>
                closure = <optimized out>
                run_type = <optimized out>
                hlist = <optimized out>
                l = <optimized out>
                fastpath = <optimized out>
                instance_and_params = <optimized out>
                param_values = <optimized out>
                node = <optimized out>
                i = <optimized out>
                node_copy = {signal_id = 492, itype = 0x555557454b30 [GstElement/GstObject/GInitiallyUnowned], name = 0x555555f722b7 "pad-removed", destroyed = 0, flags = 2, n_params = 1, single_va_closure_is_valid = 1, single_va_closure_is_after = 1, param_types = 0x5555574767b0, return_type = 0x4, class_closure_bsa = 0x5555582a06f0, accumulator = 0x0, c_marshaller = 0x7ffff6eb71f0 <g_cclosure_marshal_VOID__OBJECT>, va_marshaller = 0x7ffff6eb00e0 <g_cclosure_marshal_VOID__OBJECTv>, emission_hooks = 0x0, single_va_closure = 0x55555802ad10}
                __func__ = "signal_emit_valist_unlocked"
    #7  0x00007ffff6ed19d7 in g_signal_emit_valist (instance=0x55555743cb40, signal_id=492, detail=0, var_args=var_args@entry=0x7fffffffd6c0) at ../glib/gobject/gsignal.c:3263
#9  0x00007ffff171025d in gst_element_remove_pad (element=0x55555743cb40 [GstURIDecodeBin], pad=0x7fff240224e0 [GstGhostPad]) at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:926
        peer = <optimized out>
        __func__ = "gst_element_remove_pad"
--Type <RET> for more, q to quit, c to continue without paging--c
#14 0x00007ffff6ed1a94 in <emit signal '???' on instance 0x555557ff61a0 [GstDecodeBin]> (instance=instance@entry=0x555557ff61a0, signal_id=<optimized out>, detail=detail@entry=0) at ../glib/gobject/gsignal.c:3583
        var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffdb20, reg_save_area = 0x7fffffffda60}}
    #10 0x00007ffff6eb0156 in g_cclosure_marshal_VOID__OBJECTv (closure=0x555557ff83e0, return_value=<optimized out>, instance=0x555557ff61a0, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x5555574767b0) at ../glib/gobject/gmarshal.c:1910
                cc = <optimized out>
                data1 = <optimized out>
                data2 = <optimized out>
                callback = 0x7fffeb04f260 <pad_removed_cb>
                arg0 = 0x7fff28003b40
                args_copy = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7fffffffdb20, reg_save_area = 0x7fffffffda60}}
    #11 0x00007ffff6ed18d3 in _g_closure_invoke_va (param_types=0x5555574767b0, n_params=<optimized out>, args=0x7fffffffda40, instance=0x555557ff61a0, return_value=0x0, closure=0x555557ff83e0) at ../glib/gobject/gclosure.c:897
                marshal = <optimized out>
                marshal_data = <optimized out>
                in_marshal = 0
                real_closure = 0x555557ff83c0
                real_closure = <optimized out>
                __func__ = {<optimized out> <repeats 21 times>}
                _g_boolean_var_67 = <optimized out>
                marshal = <optimized out>
                marshal_data = <optimized out>
                in_marshal = <optimized out>
                _g_boolean_var_68 = <optimized out>
                cunion = <optimized out>
                new_int = <optimized out>
                old_int = <optimized out>
                success = <optimized out>
                tmp = {closure = {ref_count = <optimized out>, meta_marshal_nouse = <optimized out>, n_guards = <optimized out>, n_fnotifiers = <optimized out>, n_inotifiers = <optimized out>, in_inotify = <optimized out>, floating = <optimized out>, derivative_flag = <optimized out>, in_marshal = <optimized out>, is_invalid = <optimized out>, marshal = <optimized out>, data = <optimized out>, notifiers = <optimized out>}, vint = <optimized out>}
                gaicae_oldval = <optimized out>
                cunion = <optimized out>
                new_int = <optimized out>
                old_int = <optimized out>
                success = <optimized out>
                tmp = {closure = {ref_count = <optimized out>, meta_marshal_nouse = <optimized out>, n_guards = <optimized out>, n_fnotifiers = <optimized out>, n_inotifiers = <optimized out>, in_inotify = <optimized out>, floating = <optimized out>, derivative_flag = <optimized out>, in_marshal = <optimized out>, is_invalid = <optimized out>, marshal = <optimized out>, data = <optimized out>, notifiers = <optimized out>}, vint = <optimized out>}
                gaicae_oldval = <optimized out>
    #12 signal_emit_valist_unlocked (instance=instance@entry=0x555557ff61a0, signal_id=signal_id@entry=492, detail=detail@entry=0, var_args=var_args@entry=0x7fffffffda40) at ../glib/gobject/gsignal.c:3424
                return_accu = 0x0
                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}}}
                emission = {next = 0x0, instance = 0x555557ff61a0, ihint = {signal_id = 492, detail = 0, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x55555740c9b0 [GstDecodeBin/GstBin/GstElement/GstObject/GInitiallyUnowned]}
                instance_type = <optimized out>
                emission_return = {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}}}
                rtype = 0x4
                static_scope = 0
                fastpath_handler = <optimized out>
                closure = <optimized out>
                run_type = <optimized out>
                hlist = <optimized out>
                l = <optimized out>
                fastpath = <optimized out>
                instance_and_params = <optimized out>
                param_values = <optimized out>
                node = <optimized out>
                i = <optimized out>
                node_copy = {signal_id = 492, itype = 0x555557454b30 [GstElement/GstObject/GInitiallyUnowned], name = 0x555555f722b7 "pad-removed", destroyed = 0, flags = 2, n_params = 1, single_va_closure_is_valid = 1, single_va_closure_is_after = 1, param_types = 0x5555574767b0, return_type = 0x4, class_closure_bsa = 0x5555582a06f0, accumulator = 0x0, c_marshaller = 0x7ffff6eb71f0 <g_cclosure_marshal_VOID__OBJECT>, va_marshaller = 0x7ffff6eb00e0 <g_cclosure_marshal_VOID__OBJECTv>, emission_hooks = 0x0, single_va_closure = 0x55555802ad10}
                __func__ = "signal_emit_valist_unlocked"
    #13 0x00007ffff6ed19d7 in g_signal_emit_valist (instance=0x555557ff61a0, signal_id=492, detail=0, var_args=var_args@entry=0x7fffffffda40) at ../glib/gobject/gsignal.c:3263
#15 0x00007ffff171025d in gst_element_remove_pad (element=0x555557ff61a0 [GstDecodeBin], pad=pad@entry=0x7fff28003b40 [GstDecodePad]) at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:926
        peer = <optimized out>
        __func__ = "gst_element_remove_pad"
#16 0x00007fffeb03f90d in gst_decode_chain_free_internal (chain=0x7fff28003950, hide=hide@entry=1) at ../gstreamer/subprojects/gst-plugins-base/gst/playback/gstdecodebin2.c:3507
        l = 0x0
        set_to_null = <optimized out>
        __func__ = "gst_decode_chain_free_internal"
#17 0x00007fffeb03ee8a in gst_decode_group_free_internal (group=0x7fff28003060, hide=hide@entry=1) at ../gstreamer/subprojects/gst-plugins-base/gst/playback/gstdecodebin2.c:3661
        chain = <optimized out>
        l = 0x7fff28003270 = {0x7fff28003950}
        __func__ = "gst_decode_group_free_internal"
#18 0x00007fffeb03f1c0 in gst_decode_chain_free_internal (chain=chain@entry=0x7fff48006760, hide=hide@entry=1) at ../gstreamer/subprojects/gst-plugins-base/gst/playback/gstdecodebin2.c:3420
        l = <optimized out>
        set_to_null = 0x0
        __func__ = "gst_decode_chain_free_internal"
#19 0x00007fffeb03fc0b in gst_decode_bin_change_state (element=0x555557ff61a0 [GstDecodeBin], transition=<optimized out>) at ../gstreamer/subprojects/gst-plugins-base/gst/playback/gstdecodebin2.c:5515
        ret = <optimized out>
        dbin = 0x555557ff61a0 [GstDecodeBin]
        chain_to_free = 0x7fff48006760
        __func__ = "gst_decode_bin_change_state"
#20 0x00007ffff17139bf in gst_element_change_state (element=element@entry=0x555557ff61a0 [GstDecodeBin], transition=transition@entry=GST_STATE_CHANGE_PAUSED_TO_READY) at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:3101
        oclass = 0x5555574193a0
        ret = GST_STATE_CHANGE_SUCCESS
        __func__ = "gst_element_change_state"
#21 0x00007ffff1714286 in gst_element_set_state_func (element=0x555557ff61a0 [GstDecodeBin], state=GST_STATE_READY) at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:3055
        current = GST_STATE_PAUSED
        next = <optimized out>
        old_pending = <optimized out>
        ret = <optimized out>
        transition = GST_STATE_CHANGE_PAUSED_TO_READY
        old_ret = <optimized out>
        __func__ = "gst_element_set_state_func"
#22 0x00007ffff16eb634 in gst_bin_element_set_state (next=<optimized out>, current=<optimized out>, start_time=0 [0:00:00.000000000], base_time=0 [0:00:00.000000000], element=0x555557ff61a0 [GstDecodeBin], bin=<optimized out>) at ../gstreamer/subprojects/gstreamer/gst/gstbin.c:2582
        child_current = <optimized out>
        found = <optimized out>
        ret = <optimized out>
        locked = <optimized out>
        child_pending = GST_STATE_VOID_PENDING
        ret = <optimized out>
        child_current = <optimized out>
        child_pending = <optimized out>
        locked = <optimized out>
        found = <optimized out>
        locked = <optimized out>
        __func__ = {<optimized out> <repeats 26 times>}
        no_preroll = <optimized out>
        do_state = <optimized out>
        unneeded = <optimized out>
        was_busy = <optimized out>
        _g_boolean_var_106 = <optimized out>
        _g_boolean_var_107 = <optimized out>
        _g_boolean_var_108 = <optimized out>
        _g_boolean_var_109 = <optimized out>
        __inst = <optimized out>
        __t = <optimized out>
        __r = <optimized out>
        message = <optimized out>
        _g_boolean_var_110 = <optimized out>
        _g_boolean_var_111 = <optimized out>
        _g_boolean_var_112 = <optimized out>
        _g_boolean_var_113 = <optimized out>
        _g_boolean_var_114 = <optimized out>
        _g_boolean_var_115 = <optimized out>
#23 gst_bin_change_state_func (element=0x55555743cb40 [GstURIDecodeBin], transition=GST_STATE_CHANGE_PAUSED_TO_READY) at ../gstreamer/subprojects/gstreamer/gst/gstbin.c:2934
        child = 0x555557ff61a0 [GstDecodeBin]
        _g_boolean_var_134 = <optimized out>
        bin = 0x55555743cb40 [GstURIDecodeBin]
        ret = <optimized out>
        current = GST_STATE_PAUSED
        next = GST_STATE_READY
        have_async = <optimized out>
        have_no_preroll = <optimized out>
        base_time = 0 [0:00:00.000000000]
        start_time = <optimized out>
        it = <optimized out>
        done = 0
        data = {g_type = 0x555557454b30 [GstElement/GstObject/GInitiallyUnowned], data = {{v_int = 1476354464, v_uint = 1476354464, v_long = 93825036935584, v_ulong = 93825036935584, v_int64 = 93825036935584, v_uint64 = 93825036935584, v_float = 5.61589523e+14, v_double = 4.635572746965812e-310, v_pointer = 0x555557ff61a0}, {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}}}
        __func__ = "gst_bin_change_state_func"
#24 0x00007fffeb055bed in gst_uri_decode_bin_change_state (element=0x55555743cb40 [GstURIDecodeBin], transition=GST_STATE_CHANGE_PAUSED_TO_READY) at ../gstreamer/subprojects/gst-plugins-base/gst/playback/gsturidecodebin.c:2937
        ret = <optimized out>
        decoder = 0x55555743cb40 [GstURIDecodeBin]
        setup_failed = <optimized out>
        __func__ = "gst_uri_decode_bin_change_state"
#25 0x00007ffff17139bf in gst_element_change_state (element=element@entry=0x55555743cb40 [GstURIDecodeBin], transition=transition@entry=GST_STATE_CHANGE_PAUSED_TO_READY) at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:3101
        oclass = 0x55555740d560
        ret = GST_STATE_CHANGE_SUCCESS
        __func__ = "gst_element_change_state"
#26 0x00007ffff1714286 in gst_element_set_state_func (element=0x55555743cb40 [GstURIDecodeBin], state=GST_STATE_READY) at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:3055
        current = GST_STATE_PAUSED
        next = <optimized out>
        old_pending = <optimized out>
        ret = <optimized out>
        transition = GST_STATE_CHANGE_PAUSED_TO_READY
        old_ret = <optimized out>
        __func__ = "gst_element_set_state_func"
#27 0x00007ffff16eb634 in gst_bin_element_set_state (next=<optimized out>, current=<optimized out>, start_time=0 [0:00:00.000000000], base_time=0 [0:00:00.000000000], element=0x55555743cb40 [GstURIDecodeBin], bin=<optimized out>) at ../gstreamer/subprojects/gstreamer/gst/gstbin.c:2582
        child_current = <optimized out>
        found = <optimized out>
        ret = <optimized out>
        locked = <optimized out>
        child_pending = GST_STATE_VOID_PENDING
        ret = <optimized out>
        child_current = <optimized out>
        child_pending = <optimized out>
        locked = <optimized out>
        found = <optimized out>
        locked = <optimized out>
        __func__ = {<optimized out> <repeats 26 times>}
        no_preroll = <optimized out>
        do_state = <optimized out>
        unneeded = <optimized out>
        was_busy = <optimized out>
        _g_boolean_var_106 = <optimized out>
        _g_boolean_var_107 = <optimized out>
        _g_boolean_var_108 = <optimized out>
        _g_boolean_var_109 = <optimized out>
        __inst = <optimized out>
        __t = <optimized out>
        __r = <optimized out>
        message = <optimized out>
        _g_boolean_var_110 = <optimized out>
        _g_boolean_var_111 = <optimized out>
        _g_boolean_var_112 = <optimized out>
        _g_boolean_var_113 = <optimized out>
        _g_boolean_var_114 = <optimized out>
        _g_boolean_var_115 = <optimized out>
#28 gst_bin_change_state_func (element=0x55555743c3e0 [GstPipeline], transition=GST_STATE_CHANGE_PAUSED_TO_READY) at ../gstreamer/subprojects/gstreamer/gst/gstbin.c:2934
        child = 0x55555743cb40 [GstURIDecodeBin]
        _g_boolean_var_134 = <optimized out>
        bin = 0x55555743c3e0 [GstPipeline]
        ret = <optimized out>
        current = GST_STATE_PAUSED
        next = GST_STATE_READY
        have_async = <optimized out>
        have_no_preroll = <optimized out>
        base_time = 0 [0:00:00.000000000]
        start_time = <optimized out>
        it = <optimized out>
        done = 0
        data = {g_type = 0x555557454b30 [GstElement/GstObject/GInitiallyUnowned], data = {{v_int = 1464060736, v_uint = 1464060736, v_long = 93825024641856, v_ulong = 93825024641856, v_int64 = 93825024641856, v_uint64 = 93825024641856, v_float = 2.1527772e+14, v_double = 4.6355721395749456e-310, v_pointer = 0x55555743cb40}, {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}}}
        __func__ = "gst_bin_change_state_func"
#29 0x00007ffff17139bf in gst_element_change_state (element=element@entry=0x55555743c3e0 [GstPipeline], transition=transition@entry=GST_STATE_CHANGE_PAUSED_TO_READY) at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:3101
        oclass = 0x5555580d8d10
        ret = GST_STATE_CHANGE_SUCCESS
        __func__ = "gst_element_change_state"
#30 0x00007ffff1714286 in gst_element_set_state_func (element=0x55555743c3e0 [GstPipeline], state=GST_STATE_READY) at ../gstreamer/subprojects/gstreamer/gst/gstelement.c:3055
        current = GST_STATE_PAUSED
        next = <optimized out>
        old_pending = <optimized out>
        ret = <optimized out>
        transition = GST_STATE_CHANGE_PAUSED_TO_READY
        old_ret = <optimized out>
        __func__ = "gst_element_set_state_func"
#31 0x00007ffff25cdd14 in gst_discoverer_stop (discoverer=0x55555743c100 [GstDiscoverer]) at ../gstreamer/subprojects/gst-plugins-base/gst-libs/gst/pbutils/gstdiscoverer.c:2539
        __func__ = {<optimized out> <repeats 20 times>}
        _g_boolean_var_108 = <optimized out>
        __inst = <optimized out>
        __t = <optimized out>
        __r = <optimized out>
#32 gst_discoverer_stop (discoverer=0x55555743c100 [GstDiscoverer]) at ../gstreamer/subprojects/gst-plugins-base/gst-libs/gst/pbutils/gstdiscoverer.c:2519
        __func__ = "gst_discoverer_stop"
        _g_boolean_var_109 = <optimized out>
        _g_boolean_var_110 = <optimized out>
        _g_boolean_var_111 = <optimized out>
#33 0x00007ffff2ad01fb in totem_properties_view_finalize (object=0x55555743bf70 [TotemPropertiesView]) at ../nautilus/extensions/audio-video-properties/totem-properties-view.c:428
        props = 0x55555743bf70 [TotemPropertiesView]
#34 0x00007ffff6ec072a in g_object_unref (_object=0x55555743bf70) at ../glib/gobject/gobject.c:4459
        object = 0x55555743bf70 [TotemPropertiesView]
        old_ref = 1
        toggle_notify = <optimized out>
        toggle_data = 0x5555574499f0
        nqueue = 0x5555575b5e70
        do_retry = <optimized out>
        obj_gtype = <optimized out>
        retry_beginning = <optimized out>
        retry_decrement = <optimized out>
        __func__ = "g_object_unref"
#35 0x00007ffff6ebb217 in weak_refs_notify (data=0x555557448a40) at ../glib/gobject/gobject.c:3643
        wstack = 0x555557448a40
        i = 0
#36 0x00007ffff7e741e2 in g_data_set_internal (datalist=<optimized out>, key_id=<optimized out>, new_data=<optimized out>, new_destroy_func=<optimized out>, dataset=0x0) at ../glib/glib/gdataset.c:468
        d_to_free = 0x5555575b5e04
        d = 0x5555575b5e00
        new_d = 0x0
        old = {key = <optimized out>, data = 0x555557448a40, destroy = 0x7ffff6ebb1e0 <weak_refs_notify>}
        data = <optimized out>
        idx = <optimized out>
#37 0x00007ffff6ebd505 in g_object_real_dispose (object=0x55555743bff0 [NautilusPropertiesModel]) at ../glib/gobject/gobject.c:1752
#38 0x00007ffff6ec04ee in g_object_unref (_object=0x55555743bff0) at ../glib/gobject/gobject.c:4381
        object = 0x55555743bff0 [NautilusPropertiesModel]
        old_ref = 1
        toggle_notify = <optimized out>
        toggle_data = 0x0
        nqueue = 0x5555575b6090
        do_retry = <optimized out>
        obj_gtype = <optimized out>
        retry_beginning = <optimized out>
        retry_decrement = <optimized out>
        __func__ = "g_object_unref"
#39 0x00007ffff7eb5020 in real_node_free (node=0x55555743dbc0, seq=0x55555743baa0) at ../glib/glib/gsequence.c:1836
#40 0x00007ffff7eb4ffa in real_node_free (node=0x55555743bad0, seq=0x55555743baa0) at ../glib/glib/gsequence.c:1832
#41 0x00007ffff7eb5074 in node_free (seq=0x55555743baa0, node=<optimized out>) at ../glib/glib/gsequence.c:1848
#42 g_sequence_free (seq=0x55555743baa0) at ../glib/glib/gsequence.c:249
        __func__ = "g_sequence_free"
#43 0x00007ffff6fafd8f in g_list_store_dispose (object=0x55555743ba50 [GListStore]) at ../glib/gio/gliststore.c:92
        _pp = 0x55555743ba70
        _ptr = <optimized out>
        store = 0x55555743ba50 [GListStore]
#44 0x00007ffff6ec04ee in g_object_unref (_object=0x55555743ba50) at ../glib/gobject/gobject.c:4381
        object = 0x55555743ba50 [GListStore]
        old_ref = 1
        toggle_notify = <optimized out>
        toggle_data = 0x0
        nqueue = 0x5555575b6070
        do_retry = <optimized out>
        obj_gtype = <optimized out>
        retry_beginning = <optimized out>
        retry_decrement = <optimized out>
        __func__ = "g_object_unref"
#45 0x00007ffff735e8b6 in gtk_list_box_bind_model (box=0x55555749ec10 [GtkListBox], model=model@entry=0x555557eae340, create_widget_func=0x555555582650 <add_extension_model_page>, user_data=user_data@entry=0x555556ee9430, user_data_free_func=user_data_free_func@entry=0x0) at ../gtk/gtk/gtklistbox.c:3743
        _pp = 0x55555749ece8
        _ptr = <optimized out>
        iter = <optimized out>
        __func__ = "gtk_list_box_bind_model"
#46 0x000055555558bfb1 in refresh_extension_model_pages (self=0x555556ee9430 [NautilusPropertiesWindow]) at ../nautilus/src/nautilus-properties-window.c:3580
        extensions_list = 0x555557eae340
        all_models = <optimized out>
        providers = <optimized out>
#47 0x000055555558d2ce in create_properties_window (startup_data=0x555558043630) at ../nautilus/src/nautilus-properties-window.c:3756
        window = 0x555556ee9430 [NautilusPropertiesWindow]
        l = <optimized out>
        window = <optimized out>
        l = <optimized out>
        file = <optimized out>
        attributes = <optimized out>
#48 is_directory_ready_callback (file=<optimized out>, data=0x555558043630) at ../nautilus/src/nautilus-properties-window.c:3867
        new_window = <optimized out>
        startup_data = <optimized out>
        startup_data = <optimized out>
        new_window = <optimized out>
#49 is_directory_ready_callback (file=<optimized out>, data=0x555558043630) at ../nautilus/src/nautilus-properties-window.c:3854
        startup_data = 0x555558043630
        new_window = <optimized out>
#50 0x00005555556103cb in call_ready_callbacks_at_idle (callback_data=0x555558002a80) at ../nautilus/src/nautilus-directory-async.c:1812
        directory = 0x555558002a80 [NautilusVFSDirectory]
        node = Python Exception <class 'gdb.MemoryError'>: Cannot access memory at address 0x1
#51 0x00007ffff7e95199 in g_main_dispatch (context=0x5555556fa120) at ../glib/glib/gmain.c:3344
        dispatch = 0x7ffff7e92630 <g_idle_dispatch>
        prev_source = 0x0
        begin_time_nsec = 33272773592090
        was_in_call = 0
        user_data = 0x555558002a80
        callback = 0x555555610300 <call_ready_callbacks_at_idle>
        cb_funcs = 0x7ffff7f86380 <g_source_callback_funcs>
        cb_data = 0x555556fa37a0
        need_destroy = <optimized out>
        source = 0x55555700e7f0
        current = 0x555555702410
        i = 0
        __func__ = "g_main_dispatch"
#52 0x00007ffff7ef43bf in g_main_context_dispatch_unlocked (context=0x5555556fa120) at ../glib/glib/gmain.c:4152
#53 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x5555556fa120, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4217
        max_priority = 200
        timeout = 0
        some_ready = 1
        nfds = 2
        allocated_nfds = 3
        fds = 0x55555750dad0
        begin_time_nsec = 33272773588653
#54 0x00007ffff7e94712 in g_main_context_iteration (context=context@entry=0x5555556fa120, may_block=may_block@entry=1) at ../glib/glib/gmain.c:4282
        retval = <optimized out>
#55 0x00007ffff6fd6ed6 in g_application_run (application=application@entry=0x5555556e1f60 [NautilusApplication], argc=argc@entry=1, argv=argv@entry=0x7fffffffe6e8) at ../glib/gio/gapplication.c:2712
        arguments = 0x55555575c9e0
        status = 0
        context = 0x5555556fa120
        acquired_context = <optimized out>
        __func__ = "g_application_run"
#56 0x000055555557ca8d in main (argc=1, argv=0x7fffffffe6e8) at ../nautilus/src/nautilus-main.c:78
        retval = <optimized out>
        application = 0x5555556e1f60 [NautilusApplication]

Thanks, that stacktrace looks good, but it seems there is a deadlock situation, meaning the thread you observed in the stacktrace is blocked by another one. Can you do the same thing and run thread apply all bt full instead?

Putting the stacktrace in a collapsible section would be perfect for Gitlab too :slight_smile:

3 Likes

Thanks again for stepping me through this process, and for the commits/MR to resolve the bug. I forgot to post an update acknowledging this, but for anyone who finds this thread, I did properly report the issue on GitLab.

Since I am not doing production work on my Arch install, I have downloaded the MR changes as a .patch and modified Arch’s official build script for Nautilus to apply it. As a stopgap solution until the next official release, it’s been working great.

1 Like