API: libcrmcommon: New PCMK_XE_ITEM string constant
API: libcrmcommon: New PCMK_XE_LIST string constant
API: libcrmcommon: New PCMK_XE_CHECK string constant
API: libcrmcommon: New PCMK_XA_CIB_NODE string constant
Fix: tools: crm_mon segfaults when fencer connection is lost
On Fedora 38/39, the issue starts with commit bc91cc5 (Pacemaker 2.1.0). Previously, removed all stonith client notifications and disconnected the client, but it didn't delete the client object. As of that commit, it also deletes the client object.
Not reproducible on RHEL 9.3 with the latest packages. Also not reproducible on Fedora 37.
API: libcrmcommon: New PCMK_VALUE_DEFAULT string constant
API: libcrmcommon: New PCMK_VALUE_MINIMAL string constant
API: libcrmcommon: New PCMK_VALUE_UTILIZATION string constant
API: libcrmcommon: New PCMK_VALUE_BALANCED string constant
API: libcrmcommon: New PCMK_XA_EXTENDED_STATUS string constant
API: libcrmcommon: New PCMK_VALUE_PENDING string constant
API: libcrmcommon: New PCMK_XA_PENDING string constant
API: libcrmcommon: New PCMK_VALUE_FAILED string constant
API: libcrmcommon: New PCMK_XA_COMPLETED string constant
API: libcrmcommon: New PCMK_XA_ONLINE string constant
API: libcrmcommon: New PCMK_VALUE_SUCCESS string constant
API: libcrmcommon: New PCMK_VALUE_ONLINE string constant
API: libcrmcommon: New PCMK_XA_STANDBY_ONFAIL string constant
API: libcrmcommon: New PCMK_XA_UNCLEAN string constant
API: libcrmcommon: New PCMK_XA_FEATURE_SET string constant
API: libcrmcommon: New PCMK_XA_HEALTH string constant
API: libcrmcommon: New PCMK_XA_SHUTDOWN string constant
API: libcrmcommon: New PCMK_XA_RESOURCES_RUNNING string constant
API: libcrmcommon: New PCMK_XA_IS_DC string constant
API: libcrmcommon: New PCMK_XA_EXPECTED_UP string constant
API: libcrmcommon: New PCMK_XA_MAINTENANCE string constant
API: libcrmcommon: New PCMK_VALUE_UNKNOWN string constant
API: libcrmcommon: New PCMK_XA_STANDBY string constant
API: libcrmcommon: New PCMK_VALUE_REVOKED string constant
API: libcrmcommon: New PCMK_VALUE_GRANTED string constant
Refactor: libcrmcommon: New PCMK__XA_GRANTED string constant
API: libcrmcommon: New PCMK_XA_LAST_GRANTED string constant
API: libcrmcommon: New PCMK_XA_UNIQUE string constant
API: libcrmcommon: New PCMK_XA_RESOURCE string constant
API: libcrmcommon: New PCMK_XE_RESOURCE string constant
API: libcrmcommon: New PCMK_XA_MANAGED string constant
API: libcrmcommon: New PCMK_XA_MULTI_STATE string constant
API: libcrmcommon: New PCMK_XA_FAILURE_IGNORED string constant
API: libcrmcommon: New PCMK_XA_DISABLED string constant
API: libcrmcommon: New PCMK_XA_TARGET_ROLE string constant
API: libcrmcommon: New PCMK_XA_LOCKED_TO string constant
API: libcrmcommon: New PCMK_XA_ORPHANED string constant
API: libcrmcommon: New PCMK_XA_RESOURCE_AGENT string constant
API: libcrmcommon: New PCMK_XA_ACTIVE string constant
API: libcrmcommon: New PCMK_XA_NODES_RUNNING_ON string constant
API: libcrmcommon: New PCMK_XA_BLOCKED string constant
API: libcrmcommon: New PCMK_XA_NEXT_ROLE string constant
API: libcrmcommon: New PCMK_XA_RELOADABLE string constant
API: libcrmcommon: New PCMK_XE_RSC_ACTION string constant
API: libcrmcommon: New PCMK_XA_SOURCE string constant
API: libcrmcommon: New PCMK_XA_DEST string constant
API: libcrmcommon: New PCMK_XA_PROGRAM string constant
API: libcrmcommon: New PCMK_XA_AUTHOR string constant
API: libcrmcommon: New PCMK_XA_BUILD string constant
API: libcrmcommon: New PCMK_XA_FEATURES string constant
API: libcrmcommon: New PCMK_XE_FEATURES string constant
API: libcrmcommon: New PCMK_XE_FEATURE string constant
API: libcrmcommon: New PCMK_XE_PACEMAKERD string constant
Refactor: libcrmcommon: Bounds-check crm_get_msec()
Refactor: fencer, libstonithd: Bounds-check stonith-watchdog-timeout
Test: libcrmcommon: Test decimals in crm_get_msec()
Test: libcrmcommon: Test multiple units in crm_get_msec()
Refactor: libcrmcommon: Clean up crm_get_msec()
On second thought, although the ref count might be the easiest way to fix this, it would be totally reasonable to say "no function that's registered as a stonith notify callback should ever free the object."
I need to verify this, but here's what I think is happening:
I've reproduced this on 2.1.0, 2.1.2, and 2.1.7, so it doesn't appear to be a regression. Additionally, it only happens at shutdown, so there's no tangible impact except that it won't reconnect when the cluster starts back... which is not great.
Refactor: libcrmcommon: New PCMK__XA_NODE_FENCED string constant
Refactor: libcrmcommon: New PCMK__XA_REMOTE_NODE string constant
API: libcrmcommon: Deprecate XML_NODE_IS_REMOTE
API: libcrmcommon: Deprecate XML_NODE_IS_FENCED
Refactor: libcrmcommon: Include xml_internal.h in acl_internal.h
Refactor: libcrmcommon: New PCMK__XA_NODE_IN_MAINTENANCE string constant
API: libcrmcommon: Deprecate XML_NODE_IS_MAINTENANCE
Refactor: libcrmcommon: New xml_names_internal.h file
API: libcrmcommon: Deprecate XML_CIB_ATTR_SHUTDOWN
Refactor: libcrmcommon: New PCMK__NODE_ATTR_SHUTDOWN string constant
Refactor: libcrmcommon: New PCMK__XE_SHUTDOWN string constant
Feature: CIB: Deprecate resource-discovery-enabled node attribute
API: libcrmcommon: New PCMK_VALUE_ALWAYS string constant
API: libcrmcommon: New PCMK_VALUE_EXCLUSIVE string constant
API: libcrmcommon: Deprecate XML_NODE_ATTR_RSC_DISCOVERY string constant
API: libcrmcommon: New PCMK_VALUE_NEVER string constant
API: libcrmcommon: New PCMK_VALUE_AND string constant
Log: libpe_rules, libpacemaker: Warn on invalid boolean-op
API: libcrmcommon: New PCMK_VALUE_OR string constant
Log: libpe_rules: Warn on invalid value-source in expressions
API: libcrmcommon: New PCMK_VALUE_LITERAL string constant
Refactor: libcrmcommon: New PCMK__XE_META string constant
API: libcrmcommon: New PCMK_VALUE_META string constant
API: libcrmcommon: New PCMK_XA_SEQUENTIAL string constant
API: libcrmcommon: New PCMK_VALUE_PARAM string constant
API: libcrmcommon: New PCMK_XA_ACTION string constant
Refactor: tools: Split table entries into two lines
API: libcrmcommon: New PCMK_XE_ACTIONS string constant
API: libcrmcommon: New PCMK_XE_ACTION string constant
API: libcrmcommon: New PCMK_XA_PRESENT string constant