Bug 61202
| Summary: | GTK4/IBus: SIGSEGV при создании GtkEntry, рекурсивное создание контекстов ввода | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Vitaly Lipatov <lav> |
| Component: | ibus-gtk4 | Assignee: | Anton V. Boyarshinov <boyarsh> |
| Status: | CLOSED DUPLICATE | QA Contact: | qa-sisyphus |
| Severity: | major | ||
| Priority: | P5 | CC: | aris, boyarsh |
| Version: | unstable | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
Исправление в upstream IBus: https://github.com/ibus/ibus/pull/2929 Коммит c534999 (client/gtk4: Fix infinite ibus_im_context_set_client_widget): https://github.com/ibus/ibus/commit/c534999 проблема перестала воспроизводиться после обновления ibus и ibus-gtk4 с 1.5.34-alt1 до: ibus-1.5.35-alt0.5.rc1.x86_64 ibus-gtk4-1.5.35-alt0.5.rc1.x86_64 libgtk4 остался прежним: libgtk4-4.24.0-alt1.x86_64. Закрываю как исправленную обновлением до ibus-gtk4-1.5.35-alt0.5.rc1 |

Description
Vitaly Lipatov 2026-10-23 22:45:27 MSKПри создании GtkEntry возникает SIGSEGV с рекурсивным созданием объектов GTK4/IBus. Воспроизводится отдельной программой на C, без показа окна и без основного цикла GTK. Окружение: Sisyphus x86_64, графическая сессия niri/Wayland, X11 через XWayland. Установленные пакеты на машине воспроизведения: libgtk4-4.24.0-alt1.x86_64 ibus-gtk4-1.5.34-alt1.x86_64 glibc-core-2.43.0.35.fe0ccc-alt1.x86_64 Минимальный пример gtk-ibus-repro.c: #include <gtk/gtk.h> #include <stdio.h> int main(void) { gtk_init(); puts("GTK initialized"); fflush(stdout); GtkWidget *entry = gtk_entry_new(); printf("GtkEntry: %p\n", (void *)entry); g_object_ref_sink(entry); g_object_unref(entry); return 0; } Сборка: cc -Wall -Wextra -Werror -g -O0 gtk-ibus-repro.c -o gtk-ibus-repro $(pkg-config --cflags --libs gtk4) Шаги воспроизведения в графической сессии: env -u GTK_IM_MODULE GDK_BACKEND=x11 ./gtk-ibus-repro Фактический результат: GTK initialized Segmentation fault Код завершения 139; падение в gtk_entry_new(). Повторено 3 раза, каждый раз SIGSEGV. Явный выбор IBus также приводит к падению (3/3): GDK_BACKEND=x11 GTK_IM_MODULE=ibus ./gtk-ibus-repro Контрольный запуск проходит успешно (3/3): GDK_BACKEND=x11 GTK_IM_MODULE=gtk-im-context-simple ./gtk-ibus-repro Выводится адрес GtkEntry, код завершения 0. Ожидаемый результат: успешное создание GtkEntry с модулем IBus. Стек падения C-примера: #0 ?? () from /lib64/libgtk-4.so.1 #1 ?? () from /lib64/libgtk-4.so.1 #2 g_type_create_instance () from /lib64/libgobject-2.0.so.0 #3 ?? () from /lib64/libgobject-2.0.so.0 #4 g_object_new_with_properties () from /lib64/libgobject-2.0.so.0 #5 g_object_new () from /lib64/libgobject-2.0.so.0 #6 ?? () from /lib64/libgtk-4.so.1 #7 g_type_create_instance () from /lib64/libgobject-2.0.so.0 #8 ?? () from /lib64/libgobject-2.0.so.0 #9 g_object_new_with_properties () from /lib64/libgobject-2.0.so.0 #10 g_object_new () from /lib64/libgobject-2.0.so.0 #11 ?? () from /usr/lib64/gtk-4.0/4.0.0/immodules/libim-ibus.so #12 ?? () from /lib64/libgtk-4.so.1 #13 ?? () from /lib64/libgtk-4.so.1 #14 ?? () from /lib64/libgtk-4.so.1 #15 ?? () from /lib64/libgtk-4.so.1 #16 g_type_create_instance () from /lib64/libgobject-2.0.so.0 #17 ?? () from /lib64/libgobject-2.0.so.0 #18 g_object_new_with_properties () from /lib64/libgobject-2.0.so.0 #19 g_object_new () from /lib64/libgobject-2.0.so.0 #20 ?? () from /usr/lib64/gtk-4.0/4.0.0/immodules/libim-ibus.so Далее повторяется последовательность кадров #12–#20. Команда получения стека: env -u GTK_IM_MODULE GDK_BACKEND=x11 gdb -q -batch -ex run -ex 'bt 35' --args ./gtk-ibus-repro