From 629a5396e4db7ddb8c3bdd84ea5a83fafae6af91 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Wed, 19 Aug 2015 15:32:13 +0200 Subject: [PATCH] dispatcher: don't send object path for devices which are no longer exported They may be unexported upon shutdown. Program received signal SIGTRAP, Trace/breakpoint trap. 0x00007ffff48271db in _g_log_abort (breakpoint=1) at gmessages.c:316 316 G_BREAKPOINT (); (gdb) bt #0 0x00007ffff48271db in g_logv (breakpoint=1) at gmessages.c:316 #1 0x00007ffff48271db in g_logv (log_domain=0x7ffff488d8ce "GLib", log_level=G_LOG_LEVEL_CRITICAL, format=, args=args@entry=0x7fffffffd4d0) at gmessages.c:1073 #2 0x00007ffff482734f in g_log (log_domain=log_domain@entry=0x7ffff488d8ce "GLib", log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x7ffff48971dd "%s: assertion '%s' failed") at gmessages.c:1111 #3 0x00007ffff4827389 in g_return_if_fail_warning (log_domain=log_domain@entry=0x7ffff488d8ce "GLib", pretty_function=pretty_function@entry=0x7ffff48e7d00 <__func__.5406> "g_variant_is_object_path", expression=expression@entry=0x7ffff48e9af2 "string != NULL") at gmessages.c:1120 #4 0x00007ffff485511a in g_variant_is_object_path (string=) at gvariant.c:1351 #5 0x00007ffff4855129 in g_variant_new_object_path (object_path=0x0) at gvariant.c:1325 #6 0x00000000004b9567 in _dispatcher_call (dhcp6_props=, dhcp4_props=, ip6_builder=0x7fffffffd7b0, ip4_builder=0x7fffffffd730, dev_builder=0x7fffffffd6b0, device=0x9621f0 [NMDeviceEthernet]) at nm-dispatcher.c:242 #7 0x00000000004b9567 in _dispatcher_call (action=action@entry=DISPATCHER_ACTION_VPN_DOWN, blocking=blocking@entry=1, connection=, device=device@entry=0x9621f0 [NMDeviceEthernet], vpn_iface=0x9e2650 "tun1", vpn_ip4_config=vpn_ip4_config@entry=0x0, vpn_ip6_config=0x0, callback=0x0, user_data=0x0, out_call_id=0x0) at nm-dispatcher.c:545 #8 0x00000000004b98c2 in nm_dispatcher_call_vpn_sync (action=action@entry=DISPATCHER_ACTION_VPN_DOWN, connection=, parent_device=parent_device@entry=0x9621f0 [NMDeviceEthernet], vpn_iface=, vpn_ip4_config=vpn_ip4_config@entry=0x0, vpn_ip6_config=vpn_ip6_config@entry=0x0) at nm-dispatcher.c:740 #9 0x0000000000571986 in _set_vpn_state (connection=0xa08270 [NMVpnConnection], vpn_state=, reason=NM_VPN_CONNECTION_STATE_REASON_SERVICE_STOPPED, quitting=1) at vpn-manager/nm-vpn-connection.c:427 #10 0x00000000005764b6 in nm_vpn_connection_disconnect (connection=, reason=, quitting=) at vpn-manager/nm-vpn-connection.c:1909 #11 0x000000000057759e in nm_vpn_service_stop_connections (service=0x9aa1c0 [NMVpnService], quitting=1, reason=NM_VPN_CONNECTION_STATE_REASON_SERVICE_STOPPED) at vpn-manager/nm-vpn-service.c:149 #12 0x0000000000576e12 in dispose (object=0x9175a0 [NMVpnManager]) at vpn-manager/nm-vpn-manager.c:284 #13 0x00007ffff4b24fec in g_object_unref (_object=0x9175a0) at gobject.c:3137 #14 0x00000000004d0e75 in dispose (object=0x88a2c0 [NMManager]) at nm-manager.c:5061 #15 0x00007ffff4b24fec in g_object_unref (_object=0x88a2c0) at gobject.c:3137 #16 0x0000000000444e08 in _nm_singleton_instance_destroy () at NetworkManagerUtils.c:138 #17 0x00007ffff7de97b7 in _dl_fini () at dl-fini.c:252 #18 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 #19 0x00007ffff44447c5 in __GI_exit (status=status@entry=0) at exit.c:104 #20 0x0000000000445b80 in main (argc=1, argv=0x7fffffffdee8) at main.c:458 (gdb) --- src/nm-dispatcher.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/nm-dispatcher.c b/src/nm-dispatcher.c index 60560da705..0a39ed7995 100644 --- a/src/nm-dispatcher.c +++ b/src/nm-dispatcher.c @@ -239,8 +239,9 @@ fill_device_props (NMDevice *device, g_variant_new_uint32 (nm_device_get_device_type (device))); g_variant_builder_add (dev_builder, "{sv}", NMD_DEVICE_PROPS_STATE, g_variant_new_uint32 (nm_device_get_state (device))); - g_variant_builder_add (dev_builder, "{sv}", NMD_DEVICE_PROPS_PATH, - g_variant_new_object_path (nm_exported_object_get_path (NM_EXPORTED_OBJECT (device)))); + if (nm_exported_object_is_exported (NM_EXPORTED_OBJECT (device))) + g_variant_builder_add (dev_builder, "{sv}", NMD_DEVICE_PROPS_PATH, + g_variant_new_object_path (nm_exported_object_get_path (NM_EXPORTED_OBJECT (device)))); ip4_config = nm_device_get_ip4_config (device); if (ip4_config)