freeze break request: fix at-spi2-atk crashes/warnings (BGO#684434)
- From: Mike Gorse <mgorse suse com>
- To: release-team gnome org
- Subject: freeze break request: fix at-spi2-atk crashes/warnings (BGO#684434)
- Date: Thu, 20 Sep 2012 13:51:04 -0500 (CDT)
Hi all,
atk_bridge_adaptor_cleanup has a couple of problems that can cause
crashes/aborts when a gtk+ application exits. It tries to free the wrong
pointer, causing a crash (see
https://bugzilla.gnome.org/show_bug.cgi?id=684434). It also derefernces
libdbus connections without closing them, causing a SIGABRT if an AT is
running.
While testing this, I also found that, if an AT is running, then a
DBusObjectPath is deregistered without having ever been registered,
resulting in libdbus printing a warning, so I would like to fix this as
well; I have attached a fix as a separate patch. It is a regression that I
introduced recently when delaying initialization of the cache so that it
will only be initialized when an AT is running.
Thanks,
-Mike
From b3210d247daa9480d3037bac4d7cc1963883abea Mon Sep 17 00:00:00 2001
From: Mike Gorse <mgorse suse com>
Date: Thu, 20 Sep 2012 13:26:12 -0500
Subject: [PATCH 1/2] Fix crashes in atk_bridge_adaptor_cleanup
When freeing data, atk_bridge_adaptor_cleanup frees the wrong pointer,
resulting in a crash. Also, we need to close D-Bus connections before
removing the last reference, or libdbus will abort.
https://bugzilla.gnome.org/show_bug.cgi?id=684434
---
atk-adaptor/bridge.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/atk-adaptor/bridge.c b/atk-adaptor/bridge.c
index 99a6a36..74f0431 100644
--- a/atk-adaptor/bridge.c
+++ b/atk-adaptor/bridge.c
@@ -963,13 +963,14 @@ atk_bridge_adaptor_cleanup (void)
droute_context_unregister (spi_global_app_data->droute, connection);
droute_unintercept_dbus (connection);
+ dbus_connection_close (connection);
dbus_connection_unref (connection);
}
g_list_free (spi_global_app_data->direct_connections);
spi_global_app_data->direct_connections = NULL;
for (ls = clients; ls; ls = ls->next)
- g_free (l->data);
+ g_free (ls->data);
g_slist_free (clients);
clients = NULL;
--
1.7.10.4
From d7489952dbe62aa4b7b6eaa2c993e2154a576783 Mon Sep 17 00:00:00 2001
From: Mike Gorse <mgorse suse com>
Date: Thu, 20 Sep 2012 13:28:00 -0500
Subject: [PATCH 2/2] Register the cache on the main D-Bus connection
In atk_bridge_adaptor_cleanup, droute will deregister the cache object
path from the main DBusConnection, causing libdbus to complain since it
was not registered. Fixes a regression introduced when deferring
registration of the cache.
---
atk-adaptor/bridge.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/atk-adaptor/bridge.c b/atk-adaptor/bridge.c
index 74f0431..2df9889 100644
--- a/atk-adaptor/bridge.c
+++ b/atk-adaptor/bridge.c
@@ -781,6 +781,8 @@ spi_atk_activate ()
return;
}
spi_initialize_cache (treepath);
+ if (spi_global_app_data->bus)
+ droute_path_register (treepath, spi_global_app_data->bus);
}
}
--
1.7.10.4
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]