Bug 1301254 - Execution hits g_assert_not_reached with certain XCompose files
Summary: Execution hits g_assert_not_reached with certain XCompose files
Keywords:
Status: CLOSED UPSTREAM
Alias: None
Product: Fedora
Classification: Fedora
Component: gtk3
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Matthias Clasen
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2016-01-23 03:16 UTC by Lars Seipel
Modified: 2016-01-28 04:23 UTC (History)
2 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2016-01-28 04:23:28 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Lars Seipel 2016-01-23 03:16:52 UTC
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)

Comment 1 Matthias Clasen 2016-01-28 04:21:51 UTC
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.


Note You need to log in before you can comment on or make changes to this bug.