summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2020-05-12 13:47:32 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2020-05-12 23:05:46 +0200
commit100ed67a27e22b642c77b8fc0b47c0d9ea675271 (patch)
tree2a39ce9036eb59a58c22980c91ca18094fd811b0
parentc0997fa4f351b8b9d65b46aaea09f28d8c0ed9f0 (diff)
cli: unref main loop after destroying NMClient instance
Callbacks might reference the main loop when destroying the NMClient instance. Unref the main loop later. # G_DEBUG=fatal-warnings valgrind --num-callers=100 nmcli device wifi connect home ^C Error: nmcli terminated by signal Interrupt (2) Error: Connection activation failed: (0) No reason given. ==11050== Invalid read of size 4 ==11050== at 0x4C90D3D: g_main_loop_quit (in /usr/lib64/libglib-2.0.so.0.6200.6) ==11050== by 0x431435: quit (devices.c:934) ==11050== by 0x43272C: connected_state_cb (devices.c:1919) ==11050== by 0x4BF6741: g_closure_invoke (in /usr/lib64/libgobject-2.0.so.0.6200.6) ==11050== by 0x4C0A603: ??? (in /usr/lib64/libgobject-2.0.so.0.6200.6) ==11050== by 0x4C133AD: g_signal_emit_valist (in /usr/lib64/libgobject-2.0.so.0.6200.6) ==11050== by 0x4C139D2: g_signal_emit (in /usr/lib64/libgobject-2.0.so.0.6200.6) ==11050== by 0x4BFB1C3: ??? (in /usr/lib64/libgobject-2.0.so.0.6200.6) ==11050== by 0x4BFAAEC: ??? (in /usr/lib64/libgobject-2.0.so.0.6200.6) ==11050== by 0x4BFD86A: g_object_thaw_notify (in /usr/lib64/libgobject-2.0.so.0.6200.6) ==11050== by 0x48BA040: _nm_client_notify_event_emit (nm-client.c:937) ==11050== by 0x48CA01F: _dbus_handle_changes_commit (nm-client.c:2850) ==11050== by 0x48CC221: _dbus_handle_changes (nm-client.c:2864) ==11050== by 0x48CC833: _init_release_all (nm-client.c:6969) ==11050== by 0x48D2818: dispose (nm-client.c:7826) ==11050== by 0x4BFBC27: g_object_unref (in /usr/lib64/libgobject-2.0.so.0.6200.6) ==11050== by 0x43FF93: nmc_cleanup (nmcli.c:941) ==11050== by 0x4410AD: main (nmcli.c:1005) ==11050== Address 0x54738fc is 12 bytes inside a block of size 16 free'd ==11050== at 0x4839A0C: free (vg_replace_malloc.c:540) ==11050== by 0x4C9649C: g_free (in /usr/lib64/libglib-2.0.so.0.6200.6) ==11050== by 0x4410A3: main (nmcli.c:1004) ==11050== Block was alloc'd at ==11050== at 0x483AB1A: calloc (vg_replace_malloc.c:762) ==11050== by 0x4C96400: g_malloc0 (in /usr/lib64/libglib-2.0.so.0.6200.6) ==11050== by 0x4C90A45: g_main_loop_new (in /usr/lib64/libglib-2.0.so.0.6200.6) ==11050== by 0x441020: main (nmcli.c:987) https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/501 (cherry picked from commit 211c6fa795c6b34e616f4cb64125956ab38258ba) (cherry picked from commit f8452b48e92c657b491fc6ad0d49a3b0434c66f9)
-rw-r--r--clients/cli/nmcli.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/clients/cli/nmcli.c b/clients/cli/nmcli.c
index 5fbd6d7261..8b8648fa6d 100644
--- a/clients/cli/nmcli.c
+++ b/clients/cli/nmcli.c
@@ -983,8 +983,8 @@ main (int argc, char *argv[])
g_printerr ("%s\n", nm_cli.return_text->str);
}
- g_main_loop_unref (loop);
nmc_cleanup (&nm_cli);
+ g_main_loop_unref (loop);
return nm_cli.return_value;
}