Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 650388

Summary: x11-libs/gtk+:3: app-office/gnucash segfaults on keyboard input (GTK_IM_MODULE, gdk_window_has_impl)
Product: Gentoo Linux Reporter: Cyp <cyp561>
Component: Current packagesAssignee: Gentoo Linux Gnome Desktop Team <gnome>
Status: RESOLVED WONTFIX    
Severity: major CC: titanofold, tsmksubc
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
URL: https://gitlab.gnome.org/GNOME/gtk/issues/61
See Also: https://bugs.gnucash.org/show_bug.cgi?id=795014
Whiteboard:
Package list:
Runtime testing required: ---

Description Cyp 2018-03-13 15:03:12 UTC
All available un-hard-masked versions of app-office/gnucash (2.7.4-r1 and 2.7.5) are currently completely unusable, as they crash consistently when doing almost anything, such as entering a number, pressing Ctrl or pressing Alt.

Updating from x11-libs/gtk+-3.22.19 to -3.22.26 doesn't help, no other versions of x11-libs/gtk+:3 are available. Recompiling gnucash after updating gtk+ doesn't help.

Reported elsewhere, x11-libs/gtk+:3 is assigned the blame:
http://gnucash.1415818.n4.nabble.com/Fwd-gnucash-2-7-5-segfault-when-typing-in-account-field-td4697805.html
https://gitlab.gnome.org/GNOME/gtk/issues/61

————————————————————————————————————————————————————————————————
Thread 1 "gnucash" received signal SIGSEGV, Segmentation fault.
#0  0x00007ffff42d9aa2 in gdk_window_has_impl (window=<optimized out>) at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/gdk/gdkwindow.c:677
#1  _gdk_window_has_impl (window=window@entry=0x0) at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/gdk/gdkwindow.c:678
#2  0x00007ffff431030e in gdk_x11_window_get_xid (window=0x0) at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/gdk/x11/gdkwindow-x11.c:5560
#3  0x00007fffbf469f2a in gtk_im_context_xim_filter_keypress (context=0x5555557dcb40, event=0x5555557d1c00)
    at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/modules/input/gtkimcontextxim.c:673
#4  0x00007ffff6d33d63 in gtk_im_multicontext_filter_keypress (context=0x555557b35570, event=0x5555557d1c00)
    at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/gtk/gtkimmulticontext.c:359
#5  0x00007ffff4780d2b in gnucash_sheet_key_press_event (widget=0x5555577167f0, event=0x5555557d1c00)
    at /var/tmp/portage/app-office/gnucash-2.7.5/work/gnucash-2.7.5/gnucash/register/register-gnome/gnucash-sheet.c:1866
#6  0x00007ffff6d53fca in _gtk_marshal_BOOLEAN__BOXEDv (closure=0x555555883870, return_value=0x7fffffffc410, instance=0x5555577167f0, args=<optimized out>, 
    marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x555555881e40)
    at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/gtk/gtkmarshalers.c:128
#7  0x00007ffff65430a2 in _g_closure_invoke_va (closure=closure@entry=0x555555883870, return_value=return_value@entry=0x7fffffffc410, 
    instance=instance@entry=0x5555577167f0, args=args@entry=0x7fffffffc4e0, n_params=1, param_types=0x555555881e40)
    at /var/tmp/portage/dev-libs/glib-2.52.3/work/glib-2.52.3/gobject/gclosure.c:867
#8  0x00007ffff655d341 in g_signal_emit_valist (instance=0x5555577167f0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffc4e0)
    at /var/tmp/portage/dev-libs/glib-2.52.3/work/glib-2.52.3/gobject/gsignal.c:3300
#9  0x00007ffff655df67 in g_signal_emit (instance=instance@entry=0x5555577167f0, signal_id=<optimized out>, detail=detail@entry=0)
    at /var/tmp/portage/dev-libs/glib-2.52.3/work/glib-2.52.3/gobject/gsignal.c:3447
#10 0x00007ffff6ea04bc in gtk_widget_event_internal (widget=0x5555577167f0, event=0x5555557d1c00)
    at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/gtk/gtkwidget.c:7732
#11 0x00007ffff6ec0ddb in gtk_window_propagate_key_event (window=window@entry=0x555555a9a2d0, event=event@entry=0x5555557d1c00)
    at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/gtk/gtkwindow.c:8154
#12 0x00007ffff6ec492b in gtk_window_key_press_event (widget=0x555555a9a2d0, event=0x5555557d1c00)
    at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/gtk/gtkwindow.c:8187
#13 0x00007ffff6d53fca in _gtk_marshal_BOOLEAN__BOXEDv (closure=0x555555883870, return_value=0x7fffffffc800, instance=0x555555a9a2d0, args=<optimized out>, 
    marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x555555881e40)
    at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/gtk/gtkmarshalers.c:128
#14 0x00007ffff6543154 in _g_closure_invoke_va (closure=closure@entry=0x555555883870, return_value=return_value@entry=0x7fffffffc800, 
    instance=instance@entry=0x555555a9a2d0, args=args@entry=0x7fffffffc8d0, n_params=<optimized out>, param_types=0x555555881e40)
    at /var/tmp/portage/dev-libs/glib-2.52.3/work/glib-2.52.3/gobject/gclosure.c:867
#15 0x00007ffff655d341 in g_signal_emit_valist (instance=0x555555a9a2d0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fffffffc8d0)
    at /var/tmp/portage/dev-libs/glib-2.52.3/work/glib-2.52.3/gobject/gsignal.c:3300
#16 0x00007ffff655df67 in g_signal_emit (instance=instance@entry=0x555555a9a2d0, signal_id=<optimized out>, detail=detail@entry=0)
    at /var/tmp/portage/dev-libs/glib-2.52.3/work/glib-2.52.3/gobject/gsignal.c:3447
#17 0x00007ffff6ea04bc in gtk_widget_event_internal (widget=0x555555a9a2d0, event=0x5555557d1c00)
    at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/gtk/gtkwidget.c:7732
#18 0x00007ffff6d51029 in propagate_event (widget=0x555555a9a2d0, event=0x5555557d1c00, captured=<optimized out>, topmost=0x0)
    at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/gtk/gtkmain.c:2671
#19 0x00007ffff6d52ffe in gtk_main_do_event (event=0x5555557d1c00) at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/gtk/gtkmain.c:1911
#20 0x00007ffff42c9ab5 in _gdk_event_emit (event=event@entry=0x5555557d1c00) at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/gdk/gdkevents.c:73
#21 0x00007ffff42face2 in gdk_event_source_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>)
    at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/gdk/x11/gdkeventsource.c:367
#22 0x00007ffff748a5c7 in g_main_dispatch (context=0x5555557daf00) at /var/tmp/portage/dev-libs/glib-2.52.3/work/glib-2.52.3/glib/gmain.c:3234
#23 g_main_context_dispatch (context=context@entry=0x5555557daf00) at /var/tmp/portage/dev-libs/glib-2.52.3/work/glib-2.52.3/glib/gmain.c:3899
#24 0x00007ffff748a830 in g_main_context_iterate (context=0x5555557daf00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at /var/tmp/portage/dev-libs/glib-2.52.3/work/glib-2.52.3/glib/gmain.c:3972
#25 0x00007ffff748ab52 in g_main_loop_run (loop=0x5555559d5ce0) at /var/tmp/portage/dev-libs/glib-2.52.3/work/glib-2.52.3/glib/gmain.c:4168
#26 0x00007ffff6d521b5 in gtk_main () at /var/tmp/portage/x11-libs/gtk+-3.22.26/work/gtk+-3.22.26/gtk/gtkmain.c:1322
#27 0x00007ffff6298a7d in gnc_ui_start_event_loop () at /var/tmp/portage/app-office/gnucash-2.7.5/work/gnucash-2.7.5/gnucash/gnome-utils/gnc-gnome-utils.c:652
Comment 1 Mart Raudsepp gentoo-dev 2018-03-13 22:03:31 UTC
Based on the external links, my first question would be - what input method do you use? Like any ibus stuff going or, or just your usual latin?
Comment 2 Mart Raudsepp gentoo-dev 2018-03-13 22:04:01 UTC
Also would be good to know what version of wxGTK:3.0-gtk3 you have installed
Comment 3 Cyp 2018-03-14 07:17:12 UTC
I think it's the normal input method, whatever that is. I don't have ibus installed. I have a .XCompose file, but renaming it and starting gnucash didn't make a difference.

Doing “echo $GTK_IM_MODULE” gives “xim”.

Installed x11-libs/wxGTK:3.0-gtk3 is 3.0.3-r300, which is currently the only available version. I tried recompiling it in case – didn't help, though.
Comment 4 Cyp 2018-03-14 07:24:49 UTC
(In reply to Cyp from comment #3)
> Doing “echo $GTK_IM_MODULE” gives “xim”.

Running “GTK_IM_MODULE='' gnucash” seems to suppress the crash.

grepping /etc finds
/etc/env.d/99local:export GTK_IM_MODULE=xim

I think that might have had something to do with fixing the compose key in openoffice, don't remember.
Comment 5 Aaron W. Swenson gentoo-dev 2018-03-22 11:22:53 UTC
Anything I've been able to find regarding xim indicates that it was already obsolete years ago[1].

You could give app-i18n/uim a go, and see how that works out for you. As I understand it, uim supports the .XCompose file.

[1]: https://unix.stackexchange.com/questions/260601/understanding-setting-up-different-input-methods
Comment 6 Mart Raudsepp gentoo-dev 2018-03-25 08:09:35 UTC
You shouldn't need any of that with gtk3.

I believe this is the default method, in lack of any overrides via the envvar (and almost certainly is, as the new emoji stuff comes by default via there):

https://developer.gnome.org/gtk3/stable/GtkIMContextSimple.html
Comment 7 Bodo Graumann 2018-06-24 13:14:36 UTC
I have been experiencing the same issue.
My tests have confirmed, that it is caused by this setting:

> export GTK_IM_MODULE=xim

The reason I have this setting, is to allow complex compose key sequences in gtk+:2 applications. Without them the official firefox binary would warn:
> [...] The max number of sequences is 7: <Multi_key> <u> <u> <KP_2> <KP_7> <KP_1> <KP_3> <space> : "✓" U2713 # CHECK MARK
See also https://wiki.neo-layout.org/ticket/100 (german).

I can also confirm that installing app-i18n/uim and setting
> export GTK_IM_MODULE=uim
is a suitable work-around. It allows the usage of long compose sequences and it does not cause gnucash to crash.

It is also true, that the long compose sequences from .XCompose work out-of-the-box in gtk+:3 applications. For the time being we still have to content with some gtk+:2 applications though.

Can somebody please add https://gitlab.gnome.org/GNOME/gtk/issues/61 as upstream URL. It gets easily overlooked in the report above.
Comment 8 Aaron W. Swenson gentoo-dev 2020-05-21 13:54:18 UTC
Upstream has determined the bug lies in GTK.
Comment 9 Mart Raudsepp gentoo-dev 2020-05-21 14:10:34 UTC
I wouldn't expect any solution anytime soon, if ever. The "fix" is to stop using xim.
Comment 10 Aaron W. Swenson gentoo-dev 2020-11-15 18:27:12 UTC
(In reply to Mart Raudsepp from comment #9)
> I wouldn't expect any solution anytime soon, if ever. The "fix" is to stop
> using xim.

This is a good enough reason to close the bug.

Since first reporting, xim has just gotten even more obsolete.

Use app-i18n/uim.