From 549761b0adfc0ce1ceb1fd101ae458e1720f23b6 Mon Sep 17 00:00:00 2001 From: Wen Liang Date: Tue, 8 Mar 2022 15:58:38 -0500 Subject: [PATCH] libnm: fix crash during the restart after killed When cloud-init job (metadata service crawler) starts, it sends the SIGTERM signal to nm-cloud-setup and force the nm-cloud-setup to restart, however, because the error is not initialized as NULL in `_init_start_cancelled_cb()` before it is set, nm-cloud-setup will hit a dumped core. TO fix it, initialize the error as NULL in `_init_start_cancelled_cb()`. https://bugzilla.redhat.com/show_bug.cgi?id=2027674 Fixes: ce0e898fb476 ('libnm: refactor caching of D-Bus objects in NMClient') Backtrace: #0 g_logv (log_domain=0x7f833a872071 "GLib", log_level=G_LOG_LEVEL_WARNING, format=, args=) at ../glib/gmessages.c:1413 #1 0x00007f833a81f043 in g_log (log_domain=, log_level=, format=) at ../glib/gmessages.c:1451 #2 0x00007f833ab97230 in nm_utils_error_set_cancelled (is_disposing=, instance_name=, error=0x7ffff79cb980) at src/libnm-glib-aux/nm-shared-utils.c:2599 #3 nm_utils_error_set_cancelled (is_disposing=0, instance_name=0x0, error=0x7ffff79cb980) at src/libnm-glib-aux/nm-shared-utils.c:2590 #4 _init_start_cancelled_cb (cancellable=, user_data=0x5640ca292150) at src/libnm-client-impl/nm-client.c:7324 #5 _init_start_cancelled_cb (cancellable=, user_data=0x5640ca292150) at src/libnm-client-impl/nm-client.c:7307 #6 0x00007f833a93094a in _g_closure_invoke_va (param_types=0x0, n_params=, args=0x7ffff79cbb40, instance=0x5640ca267020, return_value=0x0, closure=0x5640ca29d430) at ../gobject/gclosure.c:873 #7 g_signal_emit_valist (instance=0x5640ca267020, signal_id=, detail=0, var_args=var_args@entry=0x7ffff79cbb40) at ../gobject/gsignal.c:3406 #8 0x00007f833a930a93 in g_signal_emit (instance=instance@entry=0x5640ca267020, signal_id=, detail=detail@entry=0) at ../gobject/gsignal.c:3553 #9 0x00007f833a9a6475 in g_cancellable_cancel (cancellable=0x5640ca267020) at ../gio/gcancellable.c:513 #10 g_cancellable_cancel (cancellable=0x5640ca267020) at ../gio/gcancellable.c:487 #11 0x00005640ca1a8bd4 in sigterm_handler (user_data=0x5640ca267020) at src/nm-cloud-setup/main.c:599 #12 0x00007f833a819d4f in g_main_dispatch (context=0x5640ca268ef0) at ../glib/gmain.c:3337 #13 g_main_context_dispatch (context=0x5640ca268ef0) at ../glib/gmain.c:4055 #14 0x00007f833a86e608 in g_main_context_iterate.constprop.0 (context=0x5640ca268ef0, block=block@entry=1, dispatch=dispatch@entry=1, self=) at ../glib/gmain.c:4131 #15 0x00007f833a819463 in g_main_loop_run (loop=0x5640ca24fdb0) at ../glib/gmain.c:4329 #16 0x00005640ca1a6d04 in nmc_client_new_waitsync (cancellable=0x5640ca267020, out_nmc=0x7ffff79cbfa0, error=0x7ffff79cbf98, first_property_name=0x5640ca1b11db "instance-flags", first_property_name=0x5640ca1b11db "instance-flags") at src/libnm-client-aux-extern/nm-libnm-aux.c:129 #17 0x00005640ca1a3863 in main (argc=1, argv=) at src/nm-cloud-setup/main.c:639 --- src/libnm-client-impl/nm-client.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libnm-client-impl/nm-client.c b/src/libnm-client-impl/nm-client.c index 123c44c500..f2081aaa25 100644 --- a/src/libnm-client-impl/nm-client.c +++ b/src/libnm-client-impl/nm-client.c @@ -7305,9 +7305,9 @@ _init_start_check_complete(NMClient *self) static void _init_start_cancelled_cb(GCancellable *cancellable, gpointer user_data) { - NMClient *self = user_data; - NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE(self); - GError *error; + NMClient *self = user_data; + NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE(self); + GError *error = NULL; nm_assert(NM_IS_CLIENT(self)); nm_assert(priv->init_data);