diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2015-08-19 10:07:14 +0200 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2015-08-19 15:27:13 +0200 |
commit | 1b4e0f816e25d02838cea866af9bc8e880bbc831 (patch) | |
tree | 7ecf2c3c2589230fc38f7f37df0bf79ea10b2d94 | |
parent | 9a65f63cb9d9e857e04c79ee93b11abc3f0086e0 (diff) | |
download | NetworkManager-1b4e0f816e25d02838cea866af9bc8e880bbc831.tar.gz |
nm-vpn-connection: hold a NMDefaultRouteManager reference
NetworkManager[24845]: <info> (eth2): device state change: disconnected -> unmanaged (reason 'unmanaged') [30 10 3]
NetworkManager[24845]: <info> exiting (success)
**
NetworkManager:ERROR:nm-default-route-manager.c:63:nm_default_route_manager_get: assertion failed: (!_already_created || (NM_DEFINE_SINGLETON_ALLOW_MULTIPLE))
Program received signal SIGABRT, Aborted.
0x00007ffff443fbb8 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55
55 return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
(gdb) bt
#0 0x00007ffff443fbb8 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55
#1 0x00007ffff44417ba in __GI_abort () at abort.c:89
#2 0x00007ffff48469a5 in g_assertion_message (domain=domain@entry=0x5a2979 "NetworkManager", file=file@entry=0x5b0f35 "nm-default-route-manager.c", line=line@entry=63, func=func@entry=0x5b1580 <__FUNCTION__.28571> "nm_default_route_manager_get", message=message@entry=0x982c20 "assertion failed: (!_already_created || (NM_DEFINE_SINGLETON_ALLOW_MULTIPLE))") at gtestutils.c:2356
#3 0x00007ffff4846a3a in g_assertion_message_expr (domain=domain@entry=0x5a2979 "NetworkManager", file=file@entry=0x5b0f35 "nm-default-route-manager.c", line=line@entry=63, func=func@entry=0x5b1580 <__FUNCTION__.28571> "nm_default_route_manager_get", expr=expr@entry=0x5a41d8 "!_already_created || (NM_DEFINE_SINGLETON_ALLOW_MULTIPLE)") at gtestutils.c:2371
#4 0x00000000004b7093 in nm_default_route_manager_get () at nm-default-route-manager.c:63
#5 0x0000000000571592 in _set_vpn_state (connection=0x8a21e0 [NMVpnConnection], vpn_state=STATE_DEACTIVATING, reason=NM_VPN_CONNECTION_STATE_REASON_SERVICE_STOPPED, quitting=1) at vpn-manager/nm-vpn-connection.c:340
#6 0x0000000000576537 in nm_vpn_connection_deactivate (connection=connection@entry=0x8a21e0 [NMVpnConnection], reason=reason@entry=NM_VPN_CONNECTION_STATE_REASON_SERVICE_STOPPED, quitting=quitting@entry=1) at vpn-manager/nm-vpn-connection.c:1922
#7 0x00000000005775e8 in nm_vpn_service_stop_connections (service=0x9abd70 [NMVpnService], quitting=1, reason=NM_VPN_CONNECTION_STATE_REASON_SERVICE_STOPPED) at vpn-manager/nm-vpn-service.c:147
#8 0x0000000000576e02 in dispose (object=0x930ca0 [NMVpnManager]) at vpn-manager/nm-vpn-manager.c:284
#9 0x00007ffff4b24fec in g_object_unref (_object=0x930ca0) at gobject.c:3137
#10 0x00000000004d0f05 in dispose (object=0x88a2c0 [NMManager]) at nm-manager.c:5061
#11 0x00007ffff4b24fec in g_object_unref (_object=0x88a2c0) at gobject.c:3137
#12 0x0000000000444e08 in _nm_singleton_instance_destroy () at NetworkManagerUtils.c:138
#13 0x00007ffff7de97b7 in _dl_fini () at dl-fini.c:252
#14 0x00007ffff4444778 in __run_exit_handlers (status=status@entry=0, listp=0x7ffff47d0618 <__exit_funcs>, run_list_atexit=run_list_atexit@entry=true) at exit.c:82
#15 0x00007ffff44447c5 in __GI_exit (status=status@entry=0) at exit.c:104
#16 0x0000000000445b80 in main (argc=1, argv=0x7fffffffdf08) at main.c:458
(gdb)
-rw-r--r-- | src/vpn-manager/nm-vpn-connection.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/vpn-manager/nm-vpn-connection.c b/src/vpn-manager/nm-vpn-connection.c index ed3666328a..30e2d9f659 100644 --- a/src/vpn-manager/nm-vpn-connection.c +++ b/src/vpn-manager/nm-vpn-connection.c @@ -93,6 +93,7 @@ typedef struct { /* Firewall */ NMFirewallPendingCall fw_call; + NMDefaultRouteManager *default_route_manager; GDBusProxy *proxy; GCancellable *cancellable; GVariant *connect_hash; @@ -337,8 +338,8 @@ _set_vpn_state (NMVpnConnection *connection, dispatcher_cleanup (connection); - nm_default_route_manager_ip4_update_default_route (nm_default_route_manager_get (), connection); - nm_default_route_manager_ip6_update_default_route (nm_default_route_manager_get (), connection); + nm_default_route_manager_ip4_update_default_route (priv->default_route_manager, connection); + nm_default_route_manager_ip6_update_default_route (priv->default_route_manager, connection); /* The connection gets destroyed by the VPN manager when it enters the * disconnected/failed state, but we need to keep it around for a bit @@ -971,8 +972,8 @@ nm_vpn_connection_apply_config (NMVpnConnection *connection) apply_parent_device_config (connection); - nm_default_route_manager_ip4_update_default_route (nm_default_route_manager_get (), connection); - nm_default_route_manager_ip6_update_default_route (nm_default_route_manager_get (), connection); + nm_default_route_manager_ip4_update_default_route (priv->default_route_manager, connection); + nm_default_route_manager_ip6_update_default_route (priv->default_route_manager, connection); nm_log_info (LOGD_VPN, "VPN connection '%s' (IP Config Get) complete.", nm_connection_get_id (priv->connection)); @@ -2193,6 +2194,7 @@ nm_vpn_connection_init (NMVpnConnection *self) priv->vpn_state = STATE_WAITING; priv->secrets_idx = SECRETS_REQ_SYSTEM; + priv->default_route_manager = g_object_ref (nm_default_route_manager_get ()); } static void @@ -2234,6 +2236,7 @@ dispose (GObject *object) g_clear_object (&priv->ip6_config); g_clear_object (&priv->proxy); g_clear_object (&priv->connection); + g_clear_object (&priv->default_route_manager); fw_call_cleanup (NM_VPN_CONNECTION (object)); |