Crash with certain IME due to a bug in gtk_im_multicontext_set_slave()
We're seeing a significant amount of these crashes in our product in combination with a very popular Chinese IME fcitx
Steps to reproduce
- Install
fcitx
IME from https://pinyin.sogou.com/linux/ - Run attached snippet
Version information
To my understanding, the problem affects all GTK versions since commit a1fe2ac1 (2001-11-01)
Warnings
GLib-GObject-WARNING **: 17:53:40.894: ../../../../gobject/gsignal.c:3492: signal name 'retrieve-surrounding' is invalid for instance '0x7f83c11b7130' of type 'GtkStyleContext'
GLib-GObject-WARNING **: 19:18:23.610: instance with invalid (NULL) class pointer
GLib-GObject-CRITICAL **: 19:18:23.610: g_signal_emit_by_name: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
Backtrace
#0 g_type_check_instance (type_instance=type_instance@entry=0x7fff9b6fefe0) at ../gobject/gtype.c:4129
#1 0x00007ffff7863f46 in g_signal_emit_by_name (instance=0x7fff9b6fefe0, detailed_signal=detailed_signal@entry=0x7ffff7c8f9f0 "retrieve-surrounding") at ../gobject/gsignal.c:3473
#2 0x00007ffff7aa8b88 in gtk_im_multicontext_retrieve_surrounding_cb (slave=slave@entry=0x7fff9b334f70, multicontext=<optimized out>) at gtkimmulticontext.c:532
#3 0x00007ffff7c5a9d6 in _gtk_marshal_BOOLEAN__VOID (closure=0x7fff98aecfd8, return_value=0x7fffffffd810, n_param_values=<optimized out>, param_values=<optimized out>, invocation_hint=<optimized out>, marshal_data=<optimized out>) at gtkmarshalers.c:1901
#4 0x00007ffff7846cfd in g_closure_invoke (closure=0x7fff98aecfd8, return_value=0x7fffffffd810, n_param_values=1, param_values=0x7fffffffd870, invocation_hint=0x7fffffffd7f0) at ../gobject/gclosure.c:810
#5 0x00007ffff785a585 in signal_emit_unlocked_R (node=<optimized out>, detail=detail@entry=0, instance=instance@entry=0x7fff9b334f70, emission_return=emission_return@entry=0x7fffffffd970, instance_and_params=instance_and_params@entry=0x7fffffffd870) at ../gobject/gsignal.c:3635
#6 0x00007ffff7862ebb in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffda20) at ../gobject/gsignal.c:3401
#7 0x00007ffff7863e8f in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3447
#8 0x00007fff9b3e4768 in _request_surrounding_text (context=0x7fffffffdb28) at /home/vm_user/Downloads/OpenSource/fcitx/src/frontend/gtk3/fcitximcontext.c:1564
#9 _request_surrounding_text (context=0x7fffffffdb28) at /home/vm_user/Downloads/OpenSource/fcitx/src/frontend/gtk3/fcitximcontext.c:1555
#10 0x00007fff9b3e4903 in _request_surrounding_text_after_focus (fcitxcontext=<optimized out>) at /home/vm_user/Downloads/OpenSource/fcitx/src/frontend/gtk3/fcitximcontext.c:1035
#11 0x00007ffff741bac8 in gdk_threads_dispatch (data=0x7fff87a89fe8) at gdk.c:768
#12 0x00007ffff7766b78 in g_main_dispatch (context=0x7ffff1242f50) at ../glib/gmain.c:3182
#13 g_main_context_dispatch (context=context@entry=0x7ffff1242f50) at ../glib/gmain.c:3847
#14 0x00007ffff7766f68 in g_main_context_iterate (context=0x7ffff1242f50, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:3920
#15 0x00007ffff7767262 in g_main_loop_run (loop=0x7fff8ab27ff0) at ../glib/gmain.c:4116
#16 0x00007ffff7ac7955 in gtk_main () at gtkmain.c:1323
#17 0x00005555555554d5 in main (argc=1, argv=0x7fffffffdda8) at SWT_558438_Crash_Fcitx.cpp:66