BuddiesOfBudgie / budgie-desktop

Budgie Desktop is a familiar, modern desktop environment.
https://buddiesofbudgie.org
GNU General Public License v2.0
957 stars 50 forks source link

[Bug] Panel crash when starting TeamViewer #429

Closed EbonJaeger closed 1 year ago

EbonJaeger commented 1 year ago

Description

After installing teamviewer, system crashed with error "Oh no, something has gone wrong" and then log out.

Reported on the Solus forum here.

Budgie version

10.8

Operating System

Solus 4.4 Harmony

Steps to reproduce the issue

  1. Install TeamViewer from https://www.teamviewer.com/en-us/download/linux/
  2. Launch TeamViewer from menu

Actual result

TeamViewer starts before crashing to the Oops screen.

Expected result

No Oops screen.

Additional information

I was able to generate a core dump from this to get the following gdb trace:

(budgie-panel:11493): GLib-GIO-WARNING **: 12:39:56.009: Received property ToolTip with type s does not match expected type (sa(iiay)ss) in the expected interface
**
GLib:ERROR:../glib/gvariant-serialiser.c:1551:g_variant_serialised_n_children: code should not be reached
Bail out! GLib:ERROR:../glib/gvariant-serialiser.c:1551:g_variant_serialised_n_children: code should not be reached

Thread 1 "budgie-panel" received signal SIGABRT, Aborted.
0x00007ffff6e91c2b in pthread_kill () from /usr/lib/haswell/libc.so.6
(gdb) bt full
#0  0x00007ffff6e91c2b in pthread_kill () at /usr/lib/haswell/libc.so.6
#1  0x00007ffff6e3b8f6 in raise () at /usr/lib/haswell/libc.so.6
#2  0x00007ffff6e227fa in abort () at /usr/lib/haswell/libc.so.6
#3  0x00007ffff7bc2094 in  () at /usr/lib/libglib-2.0.so.0
#4  0x00007ffff7c29e8c in g_assertion_message_expr () at /usr/lib/libglib-2.0.so.0
#5  0x00007ffff7c4f755 in  () at /usr/lib/libglib-2.0.so.0
#6  0x00007ffff7c49dcd in g_variant_n_children () at /usr/lib/libglib-2.0.so.0
#7  0x00007ffff7c44f09 in g_variant_iter_init () at /usr/lib/libglib-2.0.so.0
#8  0x00007fffe4048596 in  () at /usr/lib64/budgie-desktop/plugins/org.budgie-desktop.applet.tray/libtrayapplet.so
#9  0x00007fffe404a29e in  () at /usr/lib64/budgie-desktop/plugins/org.budgie-desktop.applet.tray/libtrayapplet.so
#10 0x00007fffe404bf9e in tray_item_construct () at /usr/lib64/budgie-desktop/plugins/org.budgie-desktop.applet.tray/libtrayapplet.so
#11 0x00007fffe404383d in  () at /usr/lib64/budgie-desktop/plugins/org.budgie-desktop.applet.tray/libtrayapplet.so
#12 0x00007ffff7cfff70 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#13 0x00007ffff7d13218 in  () at /usr/lib/libgobject-2.0.so.0
#14 0x00007ffff7d19eea in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#15 0x00007ffff7d1a2dc in g_signal_emit_by_name () at /usr/lib/libgobject-2.0.so.0
#16 0x00007fffe4043e59 in  () at /usr/lib64/budgie-desktop/plugins/org.budgie-desktop.applet.tray/libtrayapplet.so
#17 0x00007ffff7cfff70 in g_closure_invoke () at /usr/lib/libgobject-2.0.so.0
#18 0x00007ffff7d13347 in  () at /usr/lib/libgobject-2.0.so.0
#19 0x00007ffff7d19eea in g_signal_emit_valist () at /usr/lib/libgobject-2.0.so.0
#20 0x00007ffff7d1a0c0 in g_signal_emit () at /usr/lib/libgobject-2.0.so.0
#21 0x00007ffff7e67abf in  () at /usr/lib/libgio-2.0.so.0
#22 0x00007ffff7e54f24 in  () at /usr/lib/libgio-2.0.so.0
#23 0x00007ffff7bfe1c0 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#24 0x00007ffff7bfe5b9 in  () at /usr/lib/libglib-2.0.so.0
#25 0x00007ffff7bfe87f in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#26 0x00007ffff75b37c7 in gtk_main () at /usr/lib/libgtk-3.so.0
#27 0x0000555555566202 in main ()

Seems to indicate that there was a problem creating a StatusNotifierItem for the tray. Unfortunately, causing the crash again when running gdb doesn't give anything more useful, either, at least in my VM.

serebit commented 1 year ago

3x

bubba66 commented 1 year ago

If it helps, I tested TeamViewer on the Solus Gnome version (wayland) in virt-manager and could not reproduce similar behavior. As I prefer Budgie, I am using TV in Firefox, but this has reduced functionality. I will keep poking around, and if I come across a fix or workaround I will update this thread.

serebit commented 1 year ago

You won't find a fix on your own, and I'd be surprised if you found a workaround. The issue here (and the reason I posted tiredge) is almost certainly that Teamviewer isn't following the DBusMenu spec correctly, which causes the session to crash because my code rightfully expects all the data sent by applications to be laid out correctly. I can't tell from the stacktrace where exactly needs a check, but I'll poke around and see what I can find.