Fix cgroup-network spawn server cleanup on fatal exit (#21080)
Costa Tsaousis committed
Oct 3, 2025 at 12:48 UTC
09a2bd54b021822a8645f180286fe5000b55ac6f
1 file changed
+9
src/collectors/cgroups.plugin/cgroup-network.c
+9
@@ -724,6 +724,13 @@ char *fix_path_variable(void) {
724
// ----------------------------------------------------------------------------
725
// main
726
727
+static void cleanup_spawn_server_on_fatal(void) {
728
+ if(spawn_server) {
729
+ spawn_server_destroy(spawn_server);
730
+ spawn_server = NULL;
731
+ }
732
+}
733
+
734
void usage(void) {
735
fprintf(stderr, "%s [ -p PID | --pid PID | --cgroup /path/to/cgroup ]\n", program_name);
736
exit(1);
@@ -737,6 +744,7 @@ int main(int argc, const char **argv) {
744
745
nd_log_initialize_for_external_plugins("cgroup-network");
746
spawn_server = spawn_server_create(SPAWN_SERVER_OPTION_EXEC | SPAWN_SERVER_OPTION_CALLBACK, NULL, spawn_callback, argc, argv);
747
+ nd_log_register_fatal_final_cb(cleanup_spawn_server_on_fatal);
748
749
// since cgroup-network runs as root, prevent it from opening symbolic links
750
procfile_open_flags = O_RDONLY|O_NOFOLLOW;
@@ -819,6 +827,7 @@ int main(int argc, const char **argv) {
827
int found = send_devices();
828
829
spawn_server_destroy(spawn_server);
830
+ spawn_server = NULL;
831
832
if(found <= 0) return 1;
833
return 0;