diff options
author | Costa Tsaousis <costa@netdata.cloud> | 2024-01-12 15:56:54 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-12 15:56:54 +0200 |
commit | cac1e1f30b832fb7000107ba82dfadcf509281ee (patch) | |
tree | e20d032fc8e5d1b9eddbcc397283a170781f802f /collectors | |
parent | ab576694f7acbaaa01023a49eb00af591660e051 (diff) |
fix thread name on fatal and cgroup netdev rename crash (#16771)
* fix thread name on fatal
* fix cgroup missing reference counter dup
Diffstat (limited to 'collectors')
-rw-r--r-- | collectors/cgroups.plugin/cgroup-top.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/collectors/cgroups.plugin/cgroup-top.c b/collectors/cgroups.plugin/cgroup-top.c index aa158a0102..de794d8811 100644 --- a/collectors/cgroups.plugin/cgroup-top.c +++ b/collectors/cgroups.plugin/cgroup-top.c @@ -15,17 +15,17 @@ void cgroup_netdev_link_init(void) { } const DICTIONARY_ITEM *cgroup_netdev_get(struct cgroup *cg) { - if(cg->cgroup_netdev_link) - return cg->cgroup_netdev_link; - - - struct cgroup_netdev_link t = { + if(!cg->cgroup_netdev_link) { + struct cgroup_netdev_link t = { .read_slot = 0, - .received = { NAN, NAN }, - .sent = { NAN, NAN }, - }; + .received = {NAN, NAN}, + .sent = {NAN, NAN}, + }; + + cg->cgroup_netdev_link = + dictionary_set_and_acquire_item(cgroup_netdev_link_dict, cg->id, &t, sizeof(struct cgroup_netdev_link)); + } - cg->cgroup_netdev_link = dictionary_set_and_acquire_item(cgroup_netdev_link_dict, cg->id, &t, sizeof(struct cgroup_netdev_link)); return dictionary_acquired_item_dup(cgroup_netdev_link_dict, cg->cgroup_netdev_link); } @@ -34,6 +34,7 @@ void cgroup_netdev_delete(struct cgroup *cg) { dictionary_acquired_item_release(cgroup_netdev_link_dict, cg->cgroup_netdev_link); dictionary_del(cgroup_netdev_link_dict, cg->id); dictionary_garbage_collect(cgroup_netdev_link_dict); + cg->cgroup_netdev_link = NULL; } } |