Menu bar goes out after update today

Hello!

What I am experiencing is similar to last August, but bit different. The top menu bar of Wayfire shows for a few seconds and then disappears, never to appear again, after the apt updating today.

It was rather many updates today, but did not warn any possible bugs on any of the items…

1 Like

I see this too; if you run it from the terminal you can see it’s segfaulting. I’ve been doing while true; do waybar; done in the terminal for now as a workaround, presumably will be fixed upstream at some point?

1 Like

Confirming the same issue - pocket reform imx8mp. apt-mark hold waybar did not prevent the issue.

Possibly related github issue?

The segfault happens when I click on any interactive widgets, like the Wifi one or the “…” menu.

seems like the issue has been fixed after upgrading with apt

2 Likes

I can confirm that.

It seems that the update done in the last hour corrected the issue. Maybe was issue with GTK?

shigeru@mntpr-0:~$ sudo apt upgrade
Upgrading:                      
  gir1.2-gtklayershell-0.1   libgstreamer-plugins-base1.0-0  libpulse0
  gstreamer1.0-gl            libgtk-layer-shell0             libpulsedsp
  gstreamer1.0-plugins-base  libltdl-dev                     libtool
  gstreamer1.0-x             libltdl7                        libtre5
  libgstreamer-gl1.0-0       libpulse-mainloop-glib0         pulseaudio-utils

Yes, the issue was this one, which you might remember from last year where we had exactly the same issue with waybar:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1079292

Debian Developer and GTK maintainer Simon McVittie summarizes the situation like this:

This seems amazingly fragile: if I’m reading correctly, gtk-layer-shell
is using undocumented and unstable GTK3-internal data structures?

I hope it goes without saying that this is not an intended interface
provided by GTK.

gtk-layer-shell can continue to work around this by updating its
assumptions with each new GTK 3 version that gets released, but GTK is not going to commit to any amount of stability for something that is
explicitly a private data structure.

The problem was “fixed” by a new upload of gtk-layer-shell yesterday: Debian Package Tracker

For details, see this bug: #1094442 - gtk-layer-shell: Panels crash under xfce-wayland (labwc) with GTK >= 3.24.44 - Debian Bug report logs

Also, for the next time that this happens, this is the backtrace from the waybar segfault:

#0  0x0000fffff6ba1e20 in gdk_window_get_toplevel (window=0x900000080)
    at ../../../gdk/gdkwindow.c:2488
#1  0x0000fffff602c68c in gdk_window_move_to_rect_impl_override (
    window=0xaaaaab1fa180, rect=0xffffffffd8c0, 
    rect_anchor=GDK_GRAVITY_SOUTH_EAST, window_anchor=GDK_GRAVITY_NORTH_WEST, 
    anchor_hints=63, rect_anchor_dx=0, rect_anchor_dy=0)
    at ../src/gtk-priv-access.c:146
#2  0x0000fffff70eb940 in gtk_menu_position (menu=menu@entry=0xaaaaaaf7fba0, 
    set_scroll_offset=set_scroll_offset@entry=1)
    at ../../../gtk/gtkmenu.c:5325
#3  0x0000fffff70ec290 in gtk_menu_popup_internal (menu=0xaaaaaaf7fba0, 
    device=<optimized out>, parent_menu_shell=0x0, 
    parent_menu_item=<optimized out>, func=<optimized out>, 
    data=<optimized out>, destroy=0x0, button=<optimized out>, 
    activate_time=<optimized out>) at ../../../gtk/gtkmenu.c:1992
#4  0x0000fffff70ecab8 in gtk_menu_popup_at_rect (
    menu=menu@entry=0xaaaaaaf7fba0, 
    rect_window=rect_window@entry=0xaaaaaaff2df0, 
    rect=rect@entry=0xffffffffdab0, 
    rect_anchor=rect_anchor@entry=GDK_GRAVITY_SOUTH_EAST, 
    menu_anchor=menu_anchor@entry=GDK_GRAVITY_NORTH_WEST, 
    trigger_event=<optimized out>, trigger_event@entry=0xaaaaab0f7690)
    at ../../../gtk/gtkmenu.c:2269
#5  0x0000fffff70ed040 in gtk_menu_popup_at_pointer (menu=0xaaaaaaf7fba0, 
    trigger_event=<optimized out>) at ../../../gtk/gtkmenu.c:2430
#6  0x0000aaaaaac55d68 in waybar::modules::SNI::Item::handleClick (
    this=0xaaaaaafb1c10, ev=@0xffffffffdbf8: 0xaaaaab0f7690)
    at ../src/modules/sni/item.cpp:416
#7  0x0000fffff7c26650 in sigc::slot1<bool, _GdkEvent*>::operator() (
    this=0xaaaaab0874a8, _A_a1=@0xffffffffdbf8: 0xaaaaab0f7690)
    at /usr/include/sigc++-2.0/sigc++/functors/slot.h:675
#8  (anonymous namespace)::Widget_signal_event_callback (
    self=<optimized out>, p0=<optimized out>, data=0xaaaaab0874a0)
    at gtk/gtkmm/widget.cc:1227
#9  0x0000fffff6f529e0 in _gtk_marshal_BOOLEAN__BOXED (
    closure=0xaaaaab0709f0, return_value=0xffffffffdda0, 
    n_param_values=<optimized out>, param_values=0xffffffffde50, 
    invocation_hint=<optimized out>, marshal_data=<optimized out>)
    at gtk/gtkmarshalers.c:84
#10 0x0000fffff6798764 in g_closure_invoke (closure=0xaaaaab0709f0, 
    return_value=0xffffffffdda0, n_param_values=2, 
    param_values=0xffffffffde50, invocation_hint=0xffffffffdd80)
    at ../../../gobject/gclosure.c:833
#11 0x0000fffff67afe9c in signal_emit_unlocked_R (
    node=node@entry=0xffffffffdf48, detail=detail@entry=0, 
    instance=instance@entry=0xaaaaaafe8a40, 
    emission_return=emission_return@entry=0xffffffffdfc0, 
    instance_and_params=instance_and_params@entry=0xffffffffde50)
    at ../../../gobject/gsignal.c:3960
#12 0x0000fffff67b0dfc in signal_emit_valist_unlocked (
    instance=instance@entry=0xaaaaaafe8a40, signal_id=signal_id@entry=93, 
    detail=detail@entry=0, var_args=...) at ../../../gobject/gsignal.c:3532
#13 0x0000fffff67b7038 in g_signal_emit_valist (instance=0xaaaaaafe8a40, 
    signal_id=93, detail=0, var_args=...) at ../../../gobject/gsignal.c:3262
#14 0x0000fffff67b70e0 in g_signal_emit (
    instance=instance@entry=0xaaaaaafe8a40, signal_id=<optimized out>, 
    detail=detail@entry=0) at ../../../gobject/gsignal.c:3582
#15 0x0000fffff724cd0c in gtk_widget_event_internal (
    widget=widget@entry=0xaaaaaafe8a40, event=event@entry=0xaaaaab0f7690)
    at ../../../gtk/gtkwidget.c:7822
#16 0x0000fffff724f9e8 in gtk_widget_event_internal (widget=0xaaaaaafe8a40, 
    event=0xaaaaab0f7690) at ../../../gtk/gtkwidget.c:7393
#17 0x0000fffff70e257c in propagate_event_up (widget=0xaaaaaafe8a40, 
    event=<optimized out>, topmost=<optimized out>)
    at ../../../gtk/gtkmain.c:2598
#18 propagate_event (widget=<optimized out>, event=0xaaaaab0f7690, 
    captured=<optimized out>, topmost=0x0) at ../../../gtk/gtkmain.c:2701
#19 0x0000fffff70e4648 in gtk_main_do_event (event=0xaaaaab0f7690)
    at ../../../gtk/gtkmain.c:1921
#20 gtk_main_do_event (event=<optimized out>) at ../../../gtk/gtkmain.c:1691
#21 0x0000fffff6b90e98 in _gdk_event_emit (event=event@entry=0xaaaaab0f7690)
    at ../../../gdk/gdkevents.c:73
#22 0x0000fffff6bc81fc in gdk_event_source_dispatch (base=<optimized out>, 
    callback=<optimized out>, data=<optimized out>)
    at ../../../gdk/wayland/gdkeventsource.c:124
#23 0x0000fffff665eb88 in g_main_dispatch (
    context=context@entry=0xaaaaaadc9a80) at ../../../glib/gmain.c:3357
#24 0x0000fffff66610fc in g_main_context_dispatch_unlocked (
    context=0xaaaaaadc9a80) at ../../../glib/gmain.c:4208
#25 g_main_context_iterate_unlocked (context=context@entry=0xaaaaaadc9a80, 
    block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at ../../../glib/gmain.c:4273
#26 0x0000fffff66619a4 in g_main_context_iteration (
    context=context@entry=0xaaaaaadc9a80, may_block=may_block@entry=1)
    at ../../../glib/gmain.c:4338
#27 0x0000fffff6a1dcac in g_application_run (application=0xaaaaaadb7d90, 
    argc=<optimized out>, argv=0xfffffffff2d8)
    at ../../../gio/gapplication.c:2715
#28 0x0000aaaaaaade144 in waybar::Client::main (
    this=this@entry=0xaaaaaad48cc0, argc=<optimized out>, argc@entry=1, 
    argv=<optimized out>, argv@entry=0xfffffffff2d8)
    at /usr/include/glibmm-2.4/glibmm/refptr.h:259
#29 0x0000aaaaaaadc300 in main (argc=1, argv=0xfffffffff2d8)
    at ../src/main.cpp:107

This looks just like it did last time: Last night's update hides menu bar for good

3 Likes

Huh, I was just looking at gtk-layer-shell for another project, good to know. Thanks for digging into it!