core/manager: do not pop gc_unit_queue before unit_gc_sweep()

Follow-up for 52e3671bf7

unit_gc_sweep() might try to add the unit to gc queue again.
While that becomes no-op as Unit.in_gc_queue is not cleared
yet, it induces minor inconsistency of states.
This commit is contained in:
Mike Yuan
2025-05-18 05:33:09 +09:00
committed by Yu Watanabe
parent d766c75acd
commit 741a184a31
+3 -2
View File
@@ -1367,7 +1367,6 @@ good:
static unsigned manager_dispatch_gc_unit_queue(Manager *m) {
unsigned n = 0, gc_marker;
Unit *u;
assert(m);
@@ -1379,11 +1378,13 @@ static unsigned manager_dispatch_gc_unit_queue(Manager *m) {
gc_marker = m->gc_marker;
while ((u = LIST_POP(gc_queue, m->gc_unit_queue))) {
Unit *u;
while ((u = m->gc_unit_queue)) {
assert(u->in_gc_queue);
unit_gc_sweep(u, gc_marker);
LIST_REMOVE(gc_queue, m->gc_unit_queue, u);
u->in_gc_queue = false;
n++;