Description of problem: When an XCompose file contains a sequence mapping to a backslash character, parse_compose_table in gtk/gtkcomposetable.c:107 hits a "not reached" assertion, terminating the GTK+-using program. Firefox (on startup) and virt-manager (upon navigating to the VM details tab) are examples of affected programs. Version-Release number of selected component (if applicable): gtk3-3.19.7-1.fc24.x86_64 firefox-44.0-1.fc24.x86_64 virt-manager-1.3.2-1.fc24.noarch How reproducible: 100% Steps to Reproduce: 1. Add the following line to your ~/.XCompose: <Multi_key> <X> <0> <0> <5> <c> : "\" U005C 2. Start firefox or open VM details in virt-manager. Other GTK+ programs will probably do, too. 3. Enjoy! Actual results: Program dumps core, might print the following: Gtk:ERROR:gtkcomposetable.c:107:parse_compose_value: code should not be reached Expected results: The user is able to enter a backslash using the specified compose sequence. Alternatively, if a backslash at this position is invalid for XCompose files (I think it is fine, but not quite sure), it should be handled like any other old error. Additional info: Backtrace from coredumpctl: (if you need a full one with line info, just say so) 0x00007fd55dec5618 __GI_raise (libc.so.6) 0x00007fd55dec721a __GI_abort (libc.so.6) 0x00007fd55ef76ee5 g_assertion_message (libglib-2.0.so.0) 0x00007fd55ef76f7a g_assertion_message_expr (libglib-2.0.so.0) 0x00007fd560a272ed gtk_compose_table_new_with_file (libgtk-3.so.0) 0x00007fd560a275f8 gtk_compose_table_list_add_file (libgtk-3.so.0) 0x00007fd560ada5c3 gtk_im_context_simple_add_compose_file (libgtk-3.so.0) 0x00007fd560ada87b init_compose_table_thread_cb (libgtk-3.so.0) 0x00007fd55f4f708d g_task_thread_pool_thread (libgio-2.0.so.0) 0x00007fd55ef786ce g_thread_pool_thread_proxy (libglib-2.0.so.0) 0x00007fd55ef77d35 g_thread_proxy (libglib-2.0.so.0) 0x00007fd56147a6da start_thread (libpthread.so.0) 0x00007fd55df9614d __clone (libc.so.6)
I believe your example is probably invalid. man xcompose talks about octal or hex esacpes in "", like "\300". If anything, you'd have to quote the backslash: "\\". But GTK+ won't parse that either. I've now made it not abort on such lines in git master.