public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/ibus] autotool: Resolves #1797726 bus_engine_proxy_new_internal() SIGTRAP
@ 2026-05-31  2:07 Takao Fujiwara
  0 siblings, 0 replies; only message in thread
From: Takao Fujiwara @ 2026-05-31  2:07 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/ibus
Branch : autotool
Commit : d8723bd2ffff185bc83878a211d9c9803de3f823
Author : Takao Fujiwara <tfujiwar@redhat.com>
Date   : 2020-05-15T21:49:02+09:00
Stats  : +72/-15 in 2 file(s)
URL    : https://src.fedoraproject.org/rpms/ibus/c/d8723bd2ffff185bc83878a211d9c9803de3f823?branch=autotool

Log:
Resolves #1797726 bus_engine_proxy_new_internal() SIGTRAP

---
diff --git a/ibus-1385349-segv-bus-proxy.patch b/ibus-1385349-segv-bus-proxy.patch
index fd7b713..0b8fc9a 100644
--- a/ibus-1385349-segv-bus-proxy.patch
+++ b/ibus-1385349-segv-bus-proxy.patch
@@ -1,6 +1,6 @@
-From 180ee9ce8d8f839db3e30803be5846c794416cbe Mon Sep 17 00:00:00 2001
+From 023d50db40912e4f7ee333543e05995a9c730bae Mon Sep 17 00:00:00 2001
 From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Fri, 15 May 2020 19:17:03 +0900
+Date: Fri, 15 May 2020 21:44:16 +0900
 Subject: [PATCH] Fix SEGV in bus_panel_proxy_focus_in()
 
 rhbz#1350291 SEGV in BUS_IS_CONNECTION(skip_connection) in
@@ -41,12 +41,12 @@ BUG=rhbz#1767976
 BUG=rhbz#1797120
 ---
  bus/dbusimpl.c         | 47 ++++++++++++++++++++++++---
- bus/engineproxy.c      | 11 ++++++-
+ bus/engineproxy.c      | 51 ++++++++++++++++++++++-------
  client/x11/main.c      |  8 ++++-
  src/ibusbus.c          |  5 +++
  ui/gtk3/extension.vala |  4 +++
  ui/gtk3/switcher.vala  | 73 +++++++++++++++++++++++++-----------------
- 6 files changed, 112 insertions(+), 36 deletions(-)
+ 6 files changed, 141 insertions(+), 47 deletions(-)
 
 diff --git a/bus/dbusimpl.c b/bus/dbusimpl.c
 index 59787a80..af2fbde2 100644
@@ -137,10 +137,10 @@ index 59787a80..af2fbde2 100644
      if (incoming) {
          /* is incoming message */
 diff --git a/bus/engineproxy.c b/bus/engineproxy.c
-index 2d98995c..ec17900f 100644
+index 2d98995c..bbbe5532 100644
 --- a/bus/engineproxy.c
 +++ b/bus/engineproxy.c
-@@ -660,11 +660,13 @@ bus_engine_proxy_g_signal (GDBusProxy  *proxy,
+@@ -660,20 +660,33 @@ bus_engine_proxy_g_signal (GDBusProxy  *proxy,
      g_return_if_reached ();
  }
  
@@ -148,29 +148,44 @@ index 2d98995c..ec17900f 100644
  static BusEngineProxy *
  bus_engine_proxy_new_internal (const gchar     *path,
                                 IBusEngineDesc  *desc,
-                                GDBusConnection *connection)
+-                               GDBusConnection *connection)
++                               GDBusConnection *connection,
++                               GError         **error)
  {
-+    GError *error = NULL;
++    GDBusProxyFlags flags;
++    BusEngineProxy *engine;
++
      g_assert (path);
      g_assert (IBUS_IS_ENGINE_DESC (desc));
      g_assert (G_IS_DBUS_CONNECTION (connection));
-@@ -673,7 +675,7 @@ bus_engine_proxy_new_internal (const gchar     *path,
-     BusEngineProxy *engine =
++    g_assert (error && *error == NULL);
+ 
+-    GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START;
+-    BusEngineProxy *engine =
++    /* rhbz#1601577 engine == NULL if connection is closed. */
++    if (g_dbus_connection_is_closed (connection)) {
++        *error = g_error_new (G_DBUS_ERROR,
++                              G_DBUS_ERROR_FAILED,
++                              "Connection is closed.");
++        return NULL;
++    }
++    flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START;
++    engine =
          (BusEngineProxy *) g_initable_new (BUS_TYPE_ENGINE_PROXY,
                                             NULL,
 -                                           NULL,
-+                                           &error,
++                                           error,
                                             "desc",              desc,
                                             "g-connection",      connection,
                                             "g-interface-name",  IBUS_INTERFACE_ENGINE,
-@@ -681,12 +683,19 @@ bus_engine_proxy_new_internal (const gchar     *path,
+@@ -681,12 +694,19 @@ bus_engine_proxy_new_internal (const gchar     *path,
                                             "g-default-timeout", g_gdbus_timeout,
                                             "g-flags",           flags,
                                             NULL);
 +    /* FIXME: rhbz#1601577 */
-+    if (error) {
++    if (!engine) {
 +        /* show abrt local variable */
-+        gchar *message = g_strdup (error->message);
++        gchar *message = g_strdup ((*error)->message);
 +        g_error ("%s", message);
 +    }
      const gchar *layout = ibus_engine_desc_get_layout (desc);
@@ -183,6 +198,45 @@ index 2d98995c..ec17900f 100644
  
  typedef struct {
      GTask           *task;
+@@ -748,23 +768,30 @@ create_engine_ready_cb (BusFactoryProxy    *factory,
+                         GAsyncResult       *res,
+                         EngineProxyNewData *data)
+ {
++    GError *error = NULL;
++    gchar *path;
++    BusEngineProxy *engine;
++
+     g_return_if_fail (data->task != NULL);
+ 
+-    GError *error = NULL;
+-    gchar *path = bus_factory_proxy_create_engine_finish (factory,
+-                                                          res,
+-                                                          &error);
++    path = bus_factory_proxy_create_engine_finish (factory, res, &error);
+     if (path == NULL) {
+         g_task_return_error (data->task, error);
+         engine_proxy_new_data_free (data);
+         return;
+     }
+ 
+-    BusEngineProxy *engine =
+-            bus_engine_proxy_new_internal (path,
+-                                           data->desc,
+-                                           g_dbus_proxy_get_connection ((GDBusProxy *)data->factory));
++    engine = bus_engine_proxy_new_internal (
++            path,
++            data->desc,
++            g_dbus_proxy_get_connection ((GDBusProxy *)data->factory),
++            &error);
+     g_free (path);
++    if (!engine) {
++        g_task_return_error (data->task, error);
++        engine_proxy_new_data_free (data);
++        return;
++    }
+ 
+     /* FIXME: set destroy callback ? */
+     g_task_return_pointer (data->task, engine, NULL);
 diff --git a/client/x11/main.c b/client/x11/main.c
 index c9ee174d..768b91f0 100644
 --- a/client/x11/main.c

diff --git a/ibus.spec b/ibus.spec
index 7da98af..2d1b442 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -35,7 +35,7 @@
 
 Name:           ibus
 Version:        1.5.22
-Release:        6%{?dist}
+Release:        7%{?dist}
 Summary:        Intelligent Input Bus for Linux OS
 License:        LGPLv2+
 URL:            https://github.com/ibus/%name/wiki
@@ -463,6 +463,9 @@ dconf update || :
 %{_datadir}/installed-tests/ibus
 
 %changelog
+* Fri May 15 2020 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.22-7
+- Resolves #1797726 bus_engine_proxy_new_internal() SIGTRAP
+
 * Fri May 15 2020 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.22-6
 - Update HEAD.patch to make parallel dict build
 - Update 1385349-segv-bus-proxy.patch

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-05-31  2:07 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-05-31  2:07 [rpms/ibus] autotool: Resolves #1797726 bus_engine_proxy_new_internal() SIGTRAP Takao Fujiwara

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox