Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.5:Update
pacemaker.32036
rh#2166967-0002-Fix-fencer-Avoid-double-source-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File rh#2166967-0002-Fix-fencer-Avoid-double-source-remove-of-op_timer_to.patch of Package pacemaker.32036
From 0291db4750322ec7f01ae6a4a2a30abca9d8e19e Mon Sep 17 00:00:00 2001 From: Reid Wahl <nrwahl@protonmail.com> Date: Wed, 15 Feb 2023 22:30:27 -0800 Subject: [PATCH] Fix: fencer: Avoid double source remove of op_timer_total remote_op_timeout() returns G_SOURCE_REMOVE, which tells GLib to remove the source from the main loop after returning. Currently this function is used as the callback only when creating op->op_timer_total. If we don't set op->op_timer_total to 0 before returning from remote_op_timeout(), then we can get an assertion and core dump from GLib when the op's timers are being cleared (either during op finalization or during fencer shutdown). This is because clear_remote_op_timers() sees that op->op_timer_total != 0 and tries to remove the source, but the source has already been removed. Note that we're already (correctly) zeroing op->op_timer_one and op->query_timeout as appropriate in their respective callback functions. Fortunately, GLib doesn't care whether the source has already been removed before we return G_SOURCE_REMOVE from a callback. So it's safe to call finalize_op() (which removes all the op's timer sources) from within a callback. Fixes RHBZ#2166967 Signed-off-by: Reid Wahl <nrwahl@protonmail.com> --- daemons/fenced/fenced_remote.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index b7426ff88..adea3d7d8 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -718,6 +718,8 @@ remote_op_timeout(gpointer userdata) { remote_fencing_op_t *op = userdata; + op->op_timer_total = 0; + if (op->state == st_done) { crm_debug("Action '%s' targeting %s for client %s already completed " CRM_XS " id=%.8s", -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor