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:00:01 +0200
commit211c6fa795c6b34e616f4cb64125956ab38258ba (patch)
treee0a18b32d17da3f5867cfd75093e7d30f5133e25
parent1c216ca3be88223c80b1da0baceb6ec4ccd4be81 (diff)
downloadNetworkManager-211c6fa795c6b34e616f4cb64125956ab38258ba.tar.gz
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
-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 ee5ef0153f..e23212eb02 100644
--- a/clients/cli/nmcli.c
+++ b/clients/cli/nmcli.c
@@ -1001,8 +1001,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;
}