https://bugs.gentoo.org/901775 --- a/src/util/uevent.c +++ b/src/util/uevent.c @@ -158,5 +158,8 @@ struct uevent *ev = uevent_new(buf, len); if (ev) { - for (GList *l = notifiers; l; l = l->next) { + /* we might remove elements in the callback so a copy is needed */ + GList *list = g_list_copy(notifiers); + + for (GList *l = list; l; l = l->next) { struct uevent_notify *nb = l->data; @@ -170,4 +173,5 @@ } + g_list_free(list); uevent_free(ev); }