NULL pointer deference in g_desktop_app_info_get_is_hidden().
Originally reported at https://bugzilla.gnome.org/show_bug.cgi?id=744431. Copying context from that bug over to gitlab since gnome-menus does not show up on https://bugzilla.gnome.org/enter_bug.cgi?classification=__all.
Symbolized stack trace:
#0 0x00007f53ebf43570 in g_desktop_app_info_get_is_hidden () at /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
#1 0x00007f53ec407b2a in process_layout () at /usr/lib/x86_64-linux-gnu/libgnome-menu-3.so.0
#2 0x00007f53ec4079c1 in process_layout () at /usr/lib/x86_64-linux-gnu/libgnome-menu-3.so.0
#3 0x00007f53ec40b3da in gmenu_tree_load_sync () at /usr/lib/x86_64-linux-gnu/libgnome-menu-3.so.0
#4 0x000055c8848dc897 in handle_gmenu_tree_changed ()
#5 0x00007f53ebc0ff9d in g_closure_invoke () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#6 0x00007f53ebc22c9e in signal_emit_unlocked_R () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#7 0x00007f53ebc2b475 in g_signal_emit_valist () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#8 0x00007f53ebc2be8f in g_signal_emit () at /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
#9 0x00007f53ec40c288 in menu_layout_invoke_monitors () at /usr/lib/x86_64-linux-gnu/libgnome-menu-3.so.0
#10 0x00007f53eb936e35 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007f53eb937200 in g_main_context_iterate.isra () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#12 0x00007f53eb937512 in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#13 0x00007f53ed8ff4c5 in gtk_main () at /usr/lib/x86_64-linux-gnu/libgtk-3.so.0
#14 0x000055c8848cb5ea in main ()
Here is the crashing instruction:
(gdb) x/i $pc
=> 0x7f53ebf43570 <g_desktop_app_info_get_is_hidden>: movzbl 0xc0(%rdi),%eax
(gdb) p/a $rdi
$1 = 0x0
The cause of the segfault is g_desktop_app_info_get_is_hidden
being called with a NULL argument.
This is most likely the same bug as this one in Cinnamon:
https://github.com/linuxmint/Cinnamon/issues/5882
which was fixed in https://github.com/linuxmint/cinnamon-menus/commit/7516e8d138072d167ea93b37a2ffcbcf5b250756.
I do not fully understand that commit, but I can see that it would have prevented the null pointer dereference that happened here. Perhaps that fix could be ported over to GNOME as well?