Page MenuHomeClusterLabs Projects

Manage libxml2 private data better
Closed (Merged)Public

Assigned To
Authored By
kgaillot
Jul 1 2024, 1:21 PM
Tags
  • Restricted Project
  • Restricted Project
  • Restricted Project
Referenced Files
None
Subscribers

Description

Pacemaker currently uses xmlRegisterNodeDefault() and xmlDeregisterNodeDefault() to ensure private data is added and freed to xmlNode objects. These functions are deprecated in libxml2, and prevent external apps from using libxml2 private data on their own if they link with Pacemaker libraries.

Most likely we'll need to require using Pacemaker wrappers for libxml2 APIs when manipulating Pacemaker XML (at least for functions that can create or destroy an xmlNode). The wrappers can all call pcmk__xml_init() before doing anything, so we wouldn't need to do that in any other initialization function.

Event Timeline

kgaillot triaged this task as Normal priority.Jul 1 2024, 1:21 PM
kgaillot created this task.
kgaillot created this object with edit policy "Restricted Project (Project)".

This is a bigger deal now that libxml2 has tagged these with the deprecated compiler attribute, causing building on debian-experimental to fail (and surely rawhide before too long). As a stopgap we could ignore deprecation compiler warnings.