I am not sure which process spins up the new 'Status Tray Plugin'. Please let me know where to look and I am happy to provide more information.
This error only occurred after an update to 14.16.0, in which the old 'system notification' is replaced by 'Status Tray Plugin'.
System is Arch Linux, up-to-date.
This error is reproducible with teamviewer 15.13.6.
Steps to reproduce:
Add the 'Status Tray Plugin' to the pannel
Start Teamviewer (installed from AUR - the arch user repository)
As long as the Teamviewer main window is open, the error window will persist if you hit 'Execute'. I suppose as long as the main Teamviewer window is open, it tries to add an icon to the notification area, causing the crash.
If you close the Teamviewer main window, and hit 'Execute' in the screenshot, then the Status Tray Plugin will start fine.
Edited
Designs
Child items
0
Show closed items
No child items are currently assigned. Use child items to break down this issue into smaller parts.
I can reproduce on archlinux too by installing teamviewer:
(wrapper-2.0:1551594): GLib-CRITICAL **: 17:39:05.682: the GVariant format string '(a{sv})' has a type of '(a{sv})' but the given value has a type of '()'(wrapper-2.0:1551594): GLib-CRITICAL **: 17:39:05.682: g_variant_get: assertion 'valid_format_string (format_string, TRUE, value)' failed
Ok, so at least I know now that this should be the StatusNotifierItem, not a systray item.
Could you do a really simple test and use the xfce4-statusnotifier-plugin instead of the statustray plugin to see if the crash happens there too? Just to make sure the problem didn't start to occur when merging the plugin into the panel code...
Thanks!
I tried with teamviewer 15.13 on Ubuntu 20.04 (installed from https://www.teamviewer.com/download/linux/) and it worked fine for me - no crash of the panel whatsoever. So maybe this is a packaging error in Arch somehow?
I however tried to catch the error you reported in a branch - please test if you can. It's quite possible though that this doesn't fully catch the crash and that the crash simply happens later...
I'm running Arch and noticed the systray crash with teamviewer when I updated to 4.16 (it did not crash for me with 4.14.4). I applied your patch and my systray no longer crashes when launching teamviewer (15.13.6). No teamviewer icon appears in the systray, but that's okay with me.
Currently it should show a warning in the terminal, but I wonder whether you as users would expect more? (A popup dialog? An infobar in the plugin settings?)
i found the issue after launch xfce4-panel with environnement var PANEL_DEBUG=1, it appears libdbusmenu-gtk3.so and libdbusmenu-glib.so.4 from package libdbusmenu are missing. all work after installing the new package libdbusmenu.
I seem to have both of these files. Messages in terminal when the fault occurs:
(wrapper-2.0:158519): libsystray-CRITICAL **: 17:25:05.864: sn_item_invalidate: assertion 'item->properties_proxy != NULL' failed(wrapper-2.0:158519): GLib-CRITICAL **: 17:25:05.899: the GVariant format string '(a{sv})' has a type of '(a{sv})' but the given value has a type of '()'(wrapper-2.0:158519): GLib-CRITICAL **: 17:25:05.899: g_variant_get: assertion 'valid_format_string (format_string, TRUE, value)' failedxfce4-panel-Message: 17:25:06.139: Plugin systray-23 has been automatically restarted after crash.(wrapper-2.0:158534): libsystray-CRITICAL **: 17:25:06.331: sn_item_invalidate: assertion 'item->properties_proxy != NULL' failed(wrapper-2.0:158534): GLib-CRITICAL **: 17:25:06.355: the GVariant format string '(a{sv})' has a type of '(a{sv})' but the given value has a type of '()'(wrapper-2.0:158534): GLib-CRITICAL **: 17:25:06.355: g_variant_get: assertion 'valid_format_string (format_string, TRUE, value)' failed(xfce4-panel:158393): GLib-CRITICAL **: 17:25:23.024: g_child_watch_add_full: assertion 'pid > 0' failed(xfce4-panel:158393): Gtk-CRITICAL **: 17:25:23.033: gtk_icon_theme_load_icon: assertion 'icon_name != NULL' failed(xfce4-panel:158393): Gtk-CRITICAL **: 17:25:23.040: gtk_icon_theme_load_icon: assertion 'icon_name != NULL' failed
(wrapper-2.0:212871): libsystray-CRITICAL **: 22:41:23.449: sn_item_invalidate: assertion 'item->properties_proxy != NULL' failed(wrapper-2.0:212871): GLib-CRITICAL **: 22:41:23.474: the GVariant format string '(a{sv})' has a type of '(a{sv})' but the given value has a type of '()'(wrapper-2.0:212871): GLib-CRITICAL **: 22:41:23.475: g_variant_get: assertion 'valid_format_string (format_string, TRUE, value)' failedxfce4-panel(external): systray-6: child exited with status 139xfce4-panel-Message: 22:41:23.723: Plugin systray-6 has been automatically restarted after crash.xfce4-panel(external): systray-6: scheduled a respawn of the childxfce4-panel(external): systray-6: child is unembeddedxfce4-panel(external): systray-6: child spawned; pid=212886, argc=7xfce4-panel(external): systray-6: child is embedded; 7 properties in queuexfce4-panel(systray): rgba visual is 0x561e62bcfc50xfce4-panel(systray): registered manager on screen 0(wrapper-2.0:212886): libsystray-CRITICAL **: 22:41:23.929: sn_item_invalidate: assertion 'item->properties_proxy != NULL' failed(wrapper-2.0:212886): GLib-CRITICAL **: 22:41:23.949: the GVariant format string '(a{sv})' has a type of '(a{sv})' but the given value has a type of '()'(wrapper-2.0:212886): GLib-CRITICAL **: 22:41:23.949: g_variant_get: assertion 'valid_format_string (format_string, TRUE, value)' failedxfce4-panel(external): systray-6: child exited with status 139xfce4-panel(external): systray-6: child is unembedded