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=<optimized out>, 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=<optimized out>) 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=<synthetic pointer>, dhcp4_props=<synthetic pointer>, 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=<optimized out>, 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=<optimized out>, parent_device=parent_device@entry=0x9621f0 [NMDeviceEthernet], vpn_iface=<optimized out>, 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=<optimized out>, 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=<optimized out>, reason=<optimized out>, quitting=<optimized out>) 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)
This commit is contained in:
Lubomir Rintel 2015-08-19 15:32:13 +02:00
parent ced33345d3
commit 629a5396e4

View file

@ -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)