Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wayland: mate-panel needs restart after adding notification-area applet #1380

Open
Sunderland93 opened this issue Jul 4, 2023 · 7 comments

Comments

@Sunderland93
Copy link

Expected behaviour

notification-area applet should appears right after pressing Add button

Actual behaviour

After adding notification-area applet it does not appear in the panel, until panel is restarted (e.g. relogin to session)

Steps to reproduce the behaviour

  1. build mate-panel with --with-in-process-applets=all option
  2. run mate-panel on any wlroots compositor (I use LabWC)
  3. add notification-area applet to the panel

MATE general version

1.26

Package version

master

Linux Distribution

Debian 12

Link to bugreport of your Distribution (requirement)

n/a

@lukefromdc
Copy link
Member

First of all, THANK YOU for testing and finding this. In my own testing I wasn't able to duplicate this on adding the applet, but DID get the same problem some but not all of the time on removing the applet. I got this warning message on removing the notification area in wayland, implying one or more signals not being properly disconnected:

(mate-panel:11125): notification-area-applet-CRITICAL **: 13:26:03.140: na_grid_set_min_icon_size: assertion 'NA_IS_GRID (grid)' failed

@Sunderland93
Copy link
Author

Yes, I have this message too when I delete applet from the panel.

@raveit65
Copy link
Member

raveit65 commented Jul 24, 2023

In my installation the panel crashes when i remove the notification area. But gdb gives me a stacktrace.

[sb-wayland@mother ~]$ gdb mate-panel
GNU gdb (GDB) Fedora Linux 13.2-2.fc38
<cut>
Reading symbols from mate-panel...
Reading symbols from /usr/lib/debug/usr/bin/mate-panel-1.27.1-2.fc38.x86_64.debug...
(gdb) run
Starting program: /usr/bin/mate-panel 

This GDB supports auto-downloading debuginfo from the following URLs:
  <https://debuginfod.fedoraproject.org/>
Enable debuginfod for this session? (y or [n]) y
Debuginfod has been enabled.
To make this setting permanent, add 'set debuginfod enabled on' to .gdbinit.
Downloading separate debug info for system-supplied DSO at 0x7ffff7fc8000
Downloading separate debug info for /lib64/libSM.so.6                          
Downloading separate debug info for /lib64/libICE.so.6                         
<cut>

Thread 1 "mate-panel" received signal SIGSEGV, Segmentation fault.
0x00007ffff78b1709 in gtk_spin_button_set_value (spin_button=0xd1, value=24)
    at ../gtk/gtkspinbutton.c:2338
Downloading source file /usr/src/debug/gtk3-3.24.38-1.fc38.x86_64/redhat-linux-build/../gtk/gtkspinbutton.c
2338      g_return_if_fail (GTK_IS_SPIN_BUTTON (spin_button));                 
(gdb) thread apply all bt full

Thread 1 (Thread 0x7ffff5d6bac0 (LWP 46459) "mate-panel"):
#0  0x00007ffff78b1709 in gtk_spin_button_set_value (spin_button=0xd1, value=24) at ../gtk/gtkspinbutton.c:2338
        __inst = 0xd1
        __t = Python Exception <class 'TypeError'>: can only concatenate str (not "NoneType") to str

        __r = <optimized out>
        _g_boolean_var_26 = <optimized out>
        __func__ = "gtk_spin_button_set_value"
#1  0x00007fffe47d87eb in gsettings_changed_min_icon_size (settings=<optimized out>, key=key@entry=0x555555c53963 "min-icon-size", applet=0x5555561d9a70) at /usr/src/debug/mate-panel-1.27.1-2.fc38.x86_64/applets/notification_area/main.c:132
#2  0x00007ffff7215dab in g_cclosure_marshal_VOID__STRINGv (closure=0x5555565054a0, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x55555561df50) at ../gobject/gmarshal.c:1462
        data1 = <optimized out>
        data2 = <optimized out>
        callback = 0x7fffe47d87b0 <gsettings_changed_min_icon_size>
        arg0 = 0x555555c53963
        args_copy = {{gp_offset = 32, fp_offset = 48, overflow_arg_area = 0x7fffffffdaa0, reg_save_area = 0x7fffffffd9e0}}
#3  0x00007ffff7236dba in _g_closure_invoke_va (param_types=0x55555561df50, n_params=<optimized out>, args=0x7fffffffd9c0, instance=0x555556505450, return_value=0x0, closure=0x5555565054a0) at ../gobject/gclosure.c:895
        marshal = <optimized out>
        marshal_data = <optimized out>
        in_marshal = 0
        real_closure = 0x555556505480
        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}}}
        accumulator = 0x0
        emission = {next = 0x7fffffffdbc0, instance = 0x555556505450, ihint = {signal_id = 27, detail = 2468, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x55555561e640 [None]}
        instance_type = 0x55555561e640 [None]
        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>
        signal_return_type = <optimized out>
        param_values = <optimized out>
        node = <optimized out>
        i = <optimized out>
        n_params = <optimized out>
        __func__ = "g_signal_emit_valist"
#4  g_signal_emit_valist (instance=0x555556505450, signal_id=27, detail=2468, var_args=var_args@entry=0x7fffffffd9c0) at ../gobject/gsignal.c:3472
        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}}}
        accumulator = 0x0
        emission = {next = 0x7fffffffdbc0, instance = 0x555556505450, ihint = {signal_id = 27, detail = 2468, run_type = (G_SIGNAL_RUN_FIRST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x55555561e640 [None]}
        instance_type = 0x55555561e640 [None]
        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>
        signal_return_type = <optimized out>
        param_values = <optimized out>
        node = <optimized out>
        i = <optimized out>
        n_params = <optimized out>
        __func__ = "g_signal_emit_valist"
#5  0x00007ffff7236f33 in g_signal_emit (instance=instance@entry=0x555556505450, signal_id=<optimized out>, detail=detail@entry=2468) at ../gobject/gsignal.c:3622
        var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffdaa0, reg_save_area = 0x7fffffffd9e0}}
#6  0x00007ffff73589d3 in g_settings_real_change_event (settings=0x555556505450, keys=<optimized out>, n_keys=<optimized out>) at ../gio/gsettings.c:392
        key = 0x555555c53963 "min-icon-size"
        i = <optimized out>
#7  0x00007ffff72ddd39 in _g_cclosure_marshal_BOOLEAN__POINTER_INTv (closure=<optimized out>, return_value=0x7fffffffdc10, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x55555561e450) at ../gio/gmarshal-internal.c:428
        cc = <optimized out>
        data1 = <optimized out>
        data2 = <optimized out>
        callback = <optimized out>
        v_return = <optimized out>
        arg0 = 0x0
        arg1 = 1433650144
        args_copy = {{gp_offset = 40, fp_offset = 48, overflow_arg_area = 0x7fffffffdda0, reg_save_area = 0x7fffffffdce0}}
        __func__ = "_g_cclosure_marshal_BOOLEAN__POINTER_INTv"
#8  0x00007ffff7236dba in _g_closure_invoke_va (param_types=0x55555561e450, n_params=<optimized out>, args=0x7fffffffdcc0, instance=0x555556505450, return_value=0x7fffffffdc10, closure=0x55555561eb10) at ../gobject/gclosure.c:895
        marshal = <optimized out>
        marshal_data = <optimized out>
        in_marshal = 0
        real_closure = 0x55555561eaf0
        return_accu = 0x7fffffffdc10
        accu = {g_type = 0x14, 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}}}
        accumulator = 0x55555561ebb0
        emission = {next = 0x0, instance = 0x555556505450, ihint = {signal_id = 28, detail = 0, run_type = (G_SIGNAL_RUN_LAST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x55555561e640 [None]}
        instance_type = 0x55555561e640 [None]
        emission_return = {g_type = 0x14, 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 = 0x14
        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>
        signal_return_type = <optimized out>
        param_values = <optimized out>
        node = <optimized out>
        i = <optimized out>
        n_params = <optimized out>
        __func__ = "g_signal_emit_valist"
#9  g_signal_emit_valist (instance=0x555556505450, signal_id=28, detail=0, var_args=var_args@entry=0x7fffffffdcc0) at ../gobject/gsignal.c:3472
        return_accu = 0x7fffffffdc10
        accu = {g_type = 0x14, 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}}}
        accumulator = 0x55555561ebb0
        emission = {next = 0x0, instance = 0x555556505450, ihint = {signal_id = 28, detail = 0, run_type = (G_SIGNAL_RUN_LAST | G_SIGNAL_ACCUMULATOR_FIRST_RUN)}, state = EMISSION_RUN, chain_type = 0x55555561e640 [None]}
        instance_type = 0x55555561e640 [None]
        emission_return = {g_type = 0x14, 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 = 0x14
        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>
        signal_return_type = <optimized out>
        param_values = <optimized out>
        node = <optimized out>
        i = <optimized out>
        n_params = <optimized out>
        __func__ = "g_signal_emit_valist"
#10 0x00007ffff7236f33 in g_signal_emit (instance=instance@entry=0x555556505450, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3622
        var_args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffdda0, reg_save_area = 0x7fffffffdce0}}
#11 0x00007ffff7358aeb in settings_backend_path_changed (backend=<optimized out>, path=<optimized out>, origin_tag=<optimized out>, target=0x555556505450) at ../gio/gsettings.c:467
        ignore_this = 32767
#12 settings_backend_path_changed (target=0x555556505450, backend=<optimized out>, path=<optimized out>, origin_tag=<optimized out>) at ../gio/gsettings.c:458
#13 0x00007ffff7355cd6 in g_settings_backend_invoke_closure (user_data=user_data@entry=0x5555565068f0) at ../gio/gsettingsbackend.c:275
        closure = 0x5555565068f0
#14 0x00007ffff711248d in g_idle_dispatch (source=0x7fffc800b430, callback=0x7ffff7355cb0 <g_settings_backend_invoke_closure>, user_data=0x5555565068f0) at ../glib/gmain.c:6163
        idle_source = 0x7fffc800b430
        again = <optimized out>
#15 0x00007ffff711648c in g_main_dispatch (context=0x55555561d050) at ../glib/gmain.c:3460
        dispatch = 0x7ffff7112460 <g_idle_dispatch>
        prev_source = 0x0
        begin_time_nsec = 32571135480795
        was_in_call = 0
        user_data = 0x5555565068f0
        callback = 0x7ffff7355cb0 <g_settings_backend_invoke_closure>
        cb_funcs = 0x7ffff7201380 <g_source_callback_funcs>
        cb_data = 0x7fffc800b4e0
        need_destroy = <optimized out>
        source = 0x7fffc800b430
        current = 0x55555561d280
        i = 43
#16 g_main_context_dispatch (context=0x55555561d050) at ../glib/gmain.c:4200
#17 0x00007ffff7174648 in g_main_context_iterate.isra.0 (context=0x55555561d050, block=1, dispatch=1, self=<optimized out>) at ../glib/gmain.c:4276
        max_priority = 0
        timeout = 0
        some_ready = 1
        nfds = 5
        allocated_nfds = <optimized out>
        fds = <optimized out>
        begin_time_nsec = 32571135340843
#18 0x00007ffff7115a8f in g_main_loop_run (loop=0x5555558c1040) at ../glib/gmain.c:4479
        __func__ = "g_main_loop_run"
#19 0x00007ffff7806975 in gtk_main () at ../gtk/gtkmain.c:1329
        loop = 0x5555558c1040
#20 0x000055555557ceaa in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/mate-panel-1.27.1-2.fc38.x86_64/mate-panel/main.c:223
        desktopfile = <optimized out>
        context = <optimized out>
        error = 0x0
        display = <optimized out>
        screen = 0x555555611590
        css = 0x55555580d580
        provider = 0x55555580d580
        resource = 0x5555555ceeb8 "/org/mate/panel/theme/mate-panel.css"
        priority = 1

stacktrace for better reading in editor: https://www.dropbox.com/scl/fi/5ksvqlezj6t99itk6yf1x/debug_mate_panel?rlkey=xcjqtdnk64l9ki643ap10n4hc&dl=0
full stacktrace: https://www.dropbox.com/scl/fi/d60ul9mggudbnwz8lev81/debug_mate_panel_wayland_full?rlkey=qi8jlv0smq2uhb7aizxihjvqb&dl=0

@raveit65
Copy link
Member

Same crash happens in x11 too.
I will check in a VM if this happens with stable released 1.26.3 too.

@lukefromdc
Copy link
Member

I get only the warning, looks like we are not disconnecting signals properly as it's trying to do something with icon size after the applet has been destroyed

@lukefromdc
Copy link
Member

See #1393 for a fix. With this applied I could repeatedly add and remove the applet in x11 or wayland without getting warnings in a terminal the panel was running from or an unresponsive panel in wayland

@raveit65
Copy link
Member

Same crash with 1.26 branch :/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants