On Thu, Mar 06, 2025 at 11:27:07 +0100, Kirill Shchetiniuk wrote:
Move monitor object unreference from virCHStartEventHandler
to virCHEventHandlerLoop. Put VM unreference after debug
print in virCHEventHandlerLoop.
Please use the commit message mainly to describe the problem you're
fixiing. You only described what you changed; not why.
Signed-off-by: Kirill Shchetiniuk <kshcheti(a)redhat.com>
---
src/ch/ch_events.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/ch/ch_events.c b/src/ch/ch_events.c
index 1cce30836a..20e7fbd705 100644
--- a/src/ch/ch_events.c
+++ b/src/ch/ch_events.c
@@ -286,9 +286,10 @@ virCHEventHandlerLoop(void *data)
}
}
- g_clear_pointer(&mon->event_buffer.buffer, g_free);
Okay so ...
- virObjectUnref(vm);
+ g_clear_pointer(&(mon->event_buffer.buffer), g_free);
... this was taking reference of 'mon' instead of the buffer.
VIR_DEBUG("%s: Event handler loop thread exiting",
vm->def->name);
and this debug technically accesses 'vm' which you no longer have
reference for ...
+ virObjectUnref(vm);
+ virObjectUnref(mon);
But that doesn't explain why this is needed.
return;
}
@@ -308,7 +309,6 @@ virCHStartEventHandler(virCHMonitor *mon)
virObjectUnref(mon);
and it is weird because you do unref it here ...
return -1;
}
- virObjectUnref(mon);
... but remove it from here.
g_atomic_int_set(&mon->event_handler_stop, 0);
return 0;