linuxmint / mint20-beta

BETA Bug Squah Rush
20 stars 8 forks source link

Invalid .desktop Crashes Cinnamon #171

Closed hammy275 closed 4 years ago

hammy275 commented 4 years ago

If a valid .desktop file is modified to be an invalid one, Cinnamon will crash. I was able to produce this by installing VirtualBox, then adding text to its .desktop (/usr/share/applications/virtualbox.desktop) and adding a space followed by some text to the TryExec line.

xenopeek commented 4 years ago

I can reproduce this by editing the Exec line of any program and changing the command to a nonexistent one. It doesn't require a space.

For example by editing the .desktop file for Calculator:

  1. sudo nano /user/share/applications/org.gnome.Calculator.desktop
  2. Change the Exec line from Exec=gnome-calculator to Exec=dodognome-calculator
  3. Save the file and exit the editor, Cinnamon crashes
  4. After restarting Cinnamon the Calculator is no longer shown in the menu (undoing the changes to the .desktop file and restarting Cinnamon adds it back in the menu)

Removing the menu applet from the panel before doing the above still results in Cinnamon crashing. At the time of the crash I only have a terminal running, no other programs open.

The crash: image

xenopeek commented 4 years ago

dmesg shows:

cinnamon[2969]: segfault at c0 ip 00007fd5e46f7474 sp 00007ffee7684678 error 4 in libgio-2.0.so.0.6400.2[7fd5e4662000+113000]
Code: e7 48 89 ee e8 fd c6 ff ff 48 89 ef 89 c3 e8 03 f7 f6 ff 85 db 74 b0 4c 89 e0 5b 5d 41 5c c3 0f 1f 80 00 00 00 00 f3 0f 1e fa <0f> b6 87 c0 00 00 00 d0 e8 83 e0 01 c3 66 66 2e 0f 1f 84 00 00 00

Same messages are in the journal, along with a stacktrace from systemd-coredump for cinnamon[2969] process:

Stack trace of thread 2969:
#0  0x00007fd5e46f7474 g_desktop_app_info_get_is_hidden (libgio-2.0.so.0 + 0xcd474)
#1  0x00007fd5e416e9eb process_layout (libcinnamon-menu-3.so.0 + 0xd9eb)
#2  0x00007fd5e416eca9 process_layout (libcinnamon-menu-3.so.0 + 0xdca9)
#3  0x00007fd5e4171214 gmenu_tree_build_from_layout (libcinnamon-menu-3.so.0 + 0x10214)
#4  0x00007fd5e4be8778 on_apps_tree_changed_cb (libcinnamon.so + 0x27778)
#5  0x00007fd5e45dc802 g_closure_invoke (libgobject-2.0.so.0 + 0x14802)
#6  0x00007fd5e45f0814 n/a (libgobject-2.0.so.0 + 0x28814)
#7  0x00007fd5e45fbb9e g_signal_emit_valist (libgobject-2.0.so.0 + 0x33b9e)
#8  0x00007fd5e45fc0d3 g_signal_emit (libgobject-2.0.so.0 + 0x340d3)
#9  0x00007fd5e416a7f0 menu_layout_invoke_monitors (libcinnamon-menu-3.so.0 + 0x97f0)
#10 0x00007fd5e44f0e8e g_main_context_dispatch (libglib-2.0.so.0 + 0x51e8e)
#11 0x00007fd5e44f1240 n/a (libglib-2.0.so.0 + 0x52240)
#12 0x00007fd5e44f1533 g_main_loop_run (libglib-2.0.so.0 + 0x52533)
#13 0x00007fd5e4b3164a meta_run (libmuffin.so.0 + 0x4e64a)
#14 0x0000558eda947afc main (cinnamon + 0x2afc)
#15 0x00007fd5e429d0b3 __libc_start_main (libc.so.6 + 0x270b3)
#16 0x0000558eda947c1e _start (cinnamon + 0x2c1e)

Stack trace of thread 2971:
#0  0x00007fd5e438b96f __GI___poll (libc.so.6 + 0x11596f)
#1  0x00007fd5e44f11ae n/a (libglib-2.0.so.0 + 0x521ae)
#2  0x00007fd5e44f12e3 g_main_context_iteration (libglib-2.0.so.0 + 0x522e3)
#3  0x00007fd5e44f1331 n/a (libglib-2.0.so.0 + 0x52331)
#4  0x00007fd5e451a931 n/a (libglib-2.0.so.0 + 0x7b931)
#5  0x00007fd5e425c609 start_thread (libpthread.so.0 + 0x9609)
#6  0x00007fd5e4398103 __clone (libc.so.6 + 0x122103)

Stack trace of thread 2972:
#0  0x00007fd5e438b96f __GI___poll (libc.so.6 + 0x11596f)
#1  0x00007fd5e44f11ae n/a (libglib-2.0.so.0 + 0x521ae)
#2  0x00007fd5e44f1533 g_main_loop_run (libglib-2.0.so.0 + 0x52533)
#3  0x00007fd5e4748e9a n/a (libgio-2.0.so.0 + 0x11ee9a)
#4  0x00007fd5e451a931 n/a (libglib-2.0.so.0 + 0x7b931)
#5  0x00007fd5e425c609 start_thread (libpthread.so.0 + 0x9609)
#6  0x00007fd5e4398103 __clone (libc.so.6 + 0x122103)

Stack trace of thread 2973:
#0  0x00007fd5e438b96f __GI___poll (libc.so.6 + 0x11596f)
#1  0x00007fd5e44f11ae n/a (libglib-2.0.so.0 + 0x521ae)
#2  0x00007fd5e44f12e3 g_main_context_iteration (libglib-2.0.so.0 + 0x522e3)
#3  0x00007fd5dce3d99d n/a (libdconfsettings.so + 0xa99d)
#4  0x00007fd5e451a931 n/a (libglib-2.0.so.0 + 0x7b931)
#5  0x00007fd5e425c609 start_thread (libpthread.so.0 + 0x9609)
#6  0x00007fd5e4398103 __clone (libc.so.6 + 0x122103)

Stack trace of thread 2974:
#0  0x00007fd5e4263376 futex_wait_cancelable (libpthread.so.0 + 0x10376)
#1  0x00007fd5e122c4d8 n/a (libmozjs-52.so.0 + 0x1ce4d8)
#2  0x00007fd5e122c7a5 n/a (libmozjs-52.so.0 + 0x1ce7a5)
#3  0x00007fd5e16ac20c n/a (libmozjs-52.so.0 + 0x64e20c)
#4  0x00007fd5e16d4349 n/a (libmozjs-52.so.0 + 0x676349)
#5  0x00007fd5e425c609 start_thread (libpthread.so.0 + 0x9609)
#6  0x00007fd5e4398103 __clone (libc.so.6 + 0x122103)

Stack trace of thread 2975:
#0  0x00007fd5e4263376 futex_wait_cancelable (libpthread.so.0 + 0x10376)
#1  0x00007fd5e122c4d8 n/a (libmozjs-52.so.0 + 0x1ce4d8)
#2  0x00007fd5e122c7a5 n/a (libmozjs-52.so.0 + 0x1ce7a5)
#3  0x00007fd5e16ac20c n/a (libmozjs-52.so.0 + 0x64e20c)
#4  0x00007fd5e16d4349 n/a (libmozjs-52.so.0 + 0x676349)
#5  0x00007fd5e425c609 start_thread (libpthread.so.0 + 0x9609)
#6  0x00007fd5e4398103 __clone (libc.so.6 + 0x122103)

Stack trace of thread 2976:
#0  0x00007fd5e4263376 futex_wait_cancelable (libpthread.so.0 + 0x10376)
#1  0x00007fd5e122c4d8 n/a (libmozjs-52.so.0 + 0x1ce4d8)
#2  0x00007fd5e122c7a5 n/a (libmozjs-52.so.0 + 0x1ce7a5)
#3  0x00007fd5e16ac20c n/a (libmozjs-52.so.0 + 0x64e20c)
#4  0x00007fd5e16d4349 n/a (libmozjs-52.so.0 + 0x676349)
#5  0x00007fd5e425c609 start_thread (libpthread.so.0 + 0x9609)
#6  0x00007fd5e4398103 __clone (libc.so.6 + 0x122103)

Stack trace of thread 2977:
#0  0x00007fd5e4263376 futex_wait_cancelable (libpthread.so.0 + 0x10376)
#1  0x00007fd5e122c4d8 n/a (libmozjs-52.so.0 + 0x1ce4d8)
#2  0x00007fd5e122c7a5 n/a (libmozjs-52.so.0 + 0x1ce7a5)
#3  0x00007fd5e16ac20c n/a (libmozjs-52.so.0 + 0x64e20c)
#4  0x00007fd5e16d4349 n/a (libmozjs-52.so.0 + 0x676349)
#5  0x00007fd5e425c609 start_thread (libpthread.so.0 + 0x9609)
#6  0x00007fd5e4398103 __clone (libc.so.6 + 0x122103)

Stack trace of thread 2978:
#0  0x00007fd5e4263376 futex_wait_cancelable (libpthread.so.0 + 0x10376)
#1  0x00007fd5e122c4d8 n/a (libmozjs-52.so.0 + 0x1ce4d8)
#2  0x00007fd5e122c7a5 n/a (libmozjs-52.so.0 + 0x1ce7a5)
#3  0x00007fd5e16ac20c n/a (libmozjs-52.so.0 + 0x64e20c)
#4  0x00007fd5e16d4349 n/a (libmozjs-52.so.0 + 0x676349)
#5  0x00007fd5e425c609 start_thread (libpthread.so.0 + 0x9609)
#6  0x00007fd5e4398103 __clone (libc.so.6 + 0x122103)
clefebvre commented 4 years ago

wow :)

clefebvre commented 4 years ago

Fixed.