From 941ab712796b0061dd7179e8a89355ffa3f1dd51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= Date: Thu, 27 Jun 2013 12:46:33 +0200 Subject: [PATCH] dbus: fix dbus_connection_changed_cb() definition to take DBusConnection dbus_connection_changed_cb() is called by DBUS_CONNECTION_CHANGED signal that emits DBusConnection, not DBusGConnection. The code was introduced by bd636ffb4068a75b204d99e798b5714f1bd5f24b; see it for more information. Reproducer: restart D-Bus daemon (gdb) bt #0 0xb7d40837 in pthread_mutex_lock () from /lib/libpthread.so.0 #1 0xb7cf946c in _dbus_platform_rmutex_lock () from /lib/libdbus-1.so.3 #2 0xb7ceba78 in _dbus_rmutex_lock () from /lib/libdbus-1.so.3 #3 0xb7cd5f2e in dbus_connection_add_filter () from /lib/libdbus-1.so.3 #4 0x080c40b5 in dbus_connection_changed_cb (dbus_mgr=0x8161b28, connection=0x81badc0, user_data=0x8189010) at nm-manager.c:4499 #5 0xb7a6bfaa in g_cclosure_marshal_VOID__POINTER () from /lib/libgobject-2.0.so.0 #6 0xb7a69007 in g_closure_invoke () from /lib/libgobject-2.0.so.0 #7 0xb7a7afad in signal_emit_unlocked_R () from /lib/libgobject-2.0.so.0 #8 0xb7a83261 in g_signal_emit_valist () from /lib/libgobject-2.0.so.0 #9 0xb7a833e4 in g_signal_emit () from /lib/libgobject-2.0.so.0 #10 0x080b4136 in nm_dbus_manager_reconnect (user_data=0x8161b28) at nm-dbus-manager.c:568 #11 0xb7969e50 in g_timeout_dispatch () from /lib/libglib-2.0.so.0 #12 0xb796915b in g_main_context_dispatch () from /lib/libglib-2.0.so.0 #13 0xb7969500 in g_main_context_iterate.isra.22 () from /lib/libglib-2.0.so.0 #14 0xb7969963 in g_main_loop_run () from /lib/libglib-2.0.so.0 #15 0x08065e67 in main (argc=1, argv=0xbffff814) at main.c:629 --- src/nm-manager.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/nm-manager.c b/src/nm-manager.c index 05375ab562..52bab8147e 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -4482,16 +4482,12 @@ periodic_update_active_connection_timestamps (gpointer user_data) static void dbus_connection_changed_cb (NMDBusManager *dbus_mgr, - DBusGConnection *connection, + DBusConnection *dbus_connection, gpointer user_data) { NMManager *self = NM_MANAGER (user_data); - DBusConnection *dbus_connection; - - if (connection) { - dbus_connection = dbus_g_connection_get_connection (connection); - g_assert (dbus_connection); + if (dbus_connection) { /* Register property filter on new connection; there's no reason this * should fail except out-of-memory or program error; if it does fail * then there's no Manager property access control, which is bad.