scorpion-26 / gBar

Blazingly fast status bar written with GTK
MIT License
478 stars 17 forks source link

Unkown segmentation fault (removing tray icon?) #29

Open kragebein opened 1 year ago

kragebein commented 1 year ago

I exited slack from tray, which caused gBar to get a segmentation fault.

Can't really reproduce.

Steps to Reproduce Click on slack icon, and select quit.

Expected behavior Slack quits. gBar stays open.

Screenshots/Error logs SNI: Add org.kde.StatusNotifierItem-1702-1 to widget SNI: Add org.kde.StatusNotifierItem-1704-1 to widget PulseAudio: Update info PulseAudio: Update info 0x561d4571d070

(gBar:33073): LIBDBUSMENU-GLIB-CRITICAL **: 11:44:38.866: dbusmenu_menuitem_send_about_to_show: assertion 'DBUSMENU_IS_MENUITEM(mi)' failed /com/canonical/dbusmenu click

(gBar:33073): Gtk-CRITICAL **: 11:44:38.873: gtk_widget_set_accel_path: assertion 'GTK_IS_ACCEL_GROUP (accel_group)' failed

(gBar:33073): Gtk-CRITICAL **: 11:44:38.873: gtk_widget_add_accelerator: assertion 'GTK_IS_ACCEL_GROUP (accel_group)' failed 0x561d67069ab0

(gBar:33073): LIBDBUSMENU-GLIB-CRITICAL **: 11:44:50.631: dbusmenu_menuitem_send_about_to_show: assertion 'DBUSMENU_IS_MENUITEM(mi)' failed /com/canonical/dbusmenu click

(gBar:33073): Gtk-CRITICAL **: 11:44:50.637: gtk_widget_set_accel_path: assertion 'GTK_IS_ACCEL_GROUP (accel_group)' failed

(gBar:33073): Gtk-CRITICAL **: 11:44:50.637: gtk_widget_add_accelerator: assertion 'GTK_IS_ACCEL_GROUP (accel_group)' failed SNI: :1.121 vanished! SNI: Clearing old children

(gBar:33073): Gtk-CRITICAL **: 11:44:51.649: gtk_widget_remove_accelerator: assertion 'GTK_IS_ACCEL_GROUP (accel_group)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL **: 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed Destroy widget

(gBar:33073): Gtk-CRITICAL : 11:44:51.651: gtk_widget_destroy: assertion 'GTK_IS_WIDGET (widget)' failed SNI: Add :1.10 to widget SNI: Add :1.16 to widget SNI: Add :1.214 to widget SNI: Add :1.222 to widget SNI: Add :1.6 to widget SNI: Add :1.63 to widget SNI: Add :1.9 to widget SNI: Add org.kde.StatusNotifierItem-1702-1 to widget SNI: Add org.kde.StatusNotifierItem-1704-1 to widget SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 SNI: Cannot remove unregistered bus name :1.121 zsh: segmentation fault (core dumped) gBar bar 0 Information about your system and gBar**

scorpion-26 commented 1 year ago

Very strange... I too notice random crashes, but cannot pin point them to anything. Can you open the crash dump with gdb and run bt, so I know what to look for?

scorpion-26 commented 1 year ago

Okay, the wall of SNI: Cannot remove unregistered bus name xxx should now be fixed. I don't know whether this was the cause of the crash, though, so the crash dump is still appreciated.

kragebein commented 1 year ago

I can get you the dump over the weekend (its on my work laptop).

Mikilio commented 9 months ago

I may or may not have the same error. One reliable way for me to break it is by loading syncthingtray and starting gBar as a systemd service. I can also break it when starting gBar from the shell and interacting with any icon. I then get a similar behavior as @kragebein . When I start from systemd however it segfaults "cleanly" and I get a better log for whats happening.

gbar.log

I think the problem is similar to a problem that happens with the tray icon support in developement for eww. It has been adressed in this PR. Apparently we need to disable caching for IconName as per https://dbus2.github.io/zbus/faq.html#why-arent-property-values-updating-for-my-service-that-doesnt-notify-changes, as well as for the IconPixmap property. I don't know how this translates to C++ though.

scorpion-26 commented 9 months ago

The logs point towards a crash in gtk_widget_destroy (although the LOG I do before calling gtk_widget_destroy is not there, which is a bit weird). So this seems to be like there is some sort of memory corruption or double-free going on (Even though gtk_widget_destroy should check against that). Unfortunately I still can't reproduce this even with systemd + syncthingtray and valgrind also doesn't show something suspicous. So I'm out of ideas as to what can fix this.

I don't think this is similar to the linked PR, since the caching is something related to the library used, which I don't use (I use gio)