[network-manager-openvpn] service: keep reference to plugin while main loop is running



commit 9f45977058f7c8cf1fb0c67636cab43e2c85f228
Author: Beniamino Galvani <bgalvani redhat com>
Date:   Mon Jan 15 11:46:47 2018 +0100

    service: keep reference to plugin while main loop is running
    
    pids_pending_wait_for_processes() runs the main loop, where queued
    D-Bus events could be processed. Ensure the plugin is still
    alive. Fixes the following:
    
     nm-openvpn-serv[7900]: g_dbus_method_invocation_take_error: assertion 'error != NULL' failed
     NetworkManager[4823]: nm-openvpn[7900] <info>  openvpn[7912]: send SIGKILL
    
     #0  nm_vpn_service_plugin_disconnect (plugin=0x91b8e0, err=err@entry=0x7ffce3dc80c8) at 
libnm/nm-vpn-service-plugin.c:236
     #1  0x00007fe1a361aae6 in impl_vpn_service_plugin_disconnect (plugin=<optimized out>, context=0x92f6c0, 
user_data=<optimized out>) at libnm/nm-vpn-service-plugin.c:857
     #2  0x00007fe1a01b8d1e in ffi_call_unix64 () from target:/lib64/libffi.so.6
     #3  0x00007fe1a01b868f in ffi_call () from target:/lib64/libffi.so.6
     #4  0x00007fe1a1570f39 in g_cclosure_marshal_generic () from target:/lib64/libgobject-2.0.so.0
     #5  0x00007fe1a35f59fe in _nm_dbus_method_meta_marshal (closure=<optimized out>, 
return_value=0x7ffce3dc84d0, n_param_values=<optimized out>, param_values=<optimized out>,
         invocation_hint=<optimized out>, marshal_data=<optimized out>) at libnm/nm-dbus-helpers.c:203
     #6  0x00007fe1a157073d in g_closure_invoke () from target:/lib64/libgobject-2.0.so.0
     #7  0x00007fe1a15834de in signal_emit_unlocked_R () from target:/lib64/libgobject-2.0.so.0
     #8  0x00007fe1a158b270 in g_signal_emitv () from target:/lib64/libgobject-2.0.so.0
     #9  0x00007fe1a3683034 in _nmdbus_vpn_plugin_skeleton_handle_method_call (connection=<optimized out>, 
sender=<optimized out>, object_path=<optimized out>,
         interface_name=0x7fe18c012b80 "org.freedesktop.NetworkManager.VPN.Plugin", 
method_name=0x7fe18c00f7b0 "Disconnect", parameters=<optimized out>, invocation=0x92f6c0, user_data=0x916e20)
         at introspection/org.freedesktop.NetworkManager.VPN.Plugin.c:2946
     #10 0x00007fe1a18890d7 in g_dbus_interface_method_dispatch_helper () from target:/lib64/libgio-2.0.so.0
     #11 0x00007fe1a18713dc in call_in_idle_cb () from target:/lib64/libgio-2.0.so.0
     #12 0x00007fe1a1294597 in g_idle_dispatch () from target:/lib64/libglib-2.0.so.0
     #13 0x00007fe1a1297bb7 in g_main_context_dispatch () from target:/lib64/libglib-2.0.so.0
     #14 0x00007fe1a1297f60 in g_main_context_iterate.isra () from target:/lib64/libglib-2.0.so.0
     #15 0x00007fe1a1297fec in g_main_context_iteration () from target:/lib64/libglib-2.0.so.0
     #16 0x0000000000403645 in pids_pending_wait_for_processes (main_loop=0x933470) at 
src/nm-openvpn-service.c:417
    
    https://bugzilla.gnome.org/show_bug.cgi?id=792252

 src/nm-openvpn-service.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)
---
diff --git a/src/nm-openvpn-service.c b/src/nm-openvpn-service.c
index edf5b48..b6de5c3 100644
--- a/src/nm-openvpn-service.c
+++ b/src/nm-openvpn-service.c
@@ -2309,9 +2309,8 @@ main (int argc, char *argv[])
        g_unix_signal_add (SIGINT, signal_handler, loop);
 
        g_main_loop_run (loop);
-       g_object_unref (plugin);
-
        pids_pending_wait_for_processes (loop);
+       g_object_unref (plugin);
 
        g_main_loop_unref (loop);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]